① 網上的那個夢幻古龍的源碼,怎麼編譯,最好能詳細墊
ACE是個很有用的開放源代碼的C++網路編程開發包,利用它比直接用API更有利於代碼的健壯性,可移植性,並相對簡單。估計大家剛接觸ACE時,都有一定難度,說不定就半途放棄了,這是我學ACE兩天中的總結,基本上不成文,但我想研究到ACE的你一定會明白下文的意思。一、ACE官方主頁:我下載的是LatestBetaKit中的ACE.zip(LatestRelease中的壓縮包好像有問題,我有WinRAR3.30解壓縮報錯)二、解壓縮後放在D盤D:\ACE_wrappers三、在D:\ACE_wrappers\ace目錄下新建文件config.h加入一行#include"ace/config-win32.h"四、編譯:用VC6.0打開D:\ACE_wrappers\ace\ace.dsw左側顯示ACEDLLclassesACELIBclasses或1、從菜單上選擇「編譯」,「放置可遠行配置」,選擇你需要的工程配置「編譯」,「重建全部」(或任一,如ACEDLL-Win32MFCDebug)此過程可能持續半小時至一個小時不等或2、從菜單上選擇「編譯」,「批構建」,選擇你需要的工程配置此過程可能持續二至四個鍾頭產生的.lib文件位於D:\ACE_wrappers\ace\下,產生的.dll文件位於D:\ACE_wrappers\bin\下同樣打開ace_static.dsw編譯ACEs.libACEsd.libACE_RMCasts.libACE_RMCastsd.libTMCasts.libTMCastsd.libACE生成的dll和lib文件的命名規則:(d=debug,s=static)debug-aced.lib、debug+static-acesd.lib、release-ace.lib、release+static-aces.lib五、樣例程序的編譯用VC打開D:\ACE_wrappers\tests\tests.dsw「編譯」,「批構建」六、自寫程序的工程配置中篇:ACE程序員教程.pdf中的樣常式序:網址:將網頁上的原代碼復制到一新建文件,並命名為server.cpp用VC打開,編譯,重建全部,彈出對話框,「Thisbuildcommandrequire「,點」是「會出現以下錯誤如果有「Cannotopenincludefile:'ace/SOCK_Acceptor.h':Nosuchfileordirectory」工程-設置-C/C++:Preprocessor,附加包含路徑:D:/ACE_wrappers如果有「Youmustlinkagainstmulti-threadedlibrarieswhenusingACE(checkyourprojectsettings)」工程-設置-C/C++:CodeGeneration-Userun-timelibrary:DebugMultithreadedDll如果有「errorC2065:'ACE_ERROR':undeclaredidentifier」errorC2065:'ACE_DEBUG':undeclaredidentifier#include"ace/Log_Msg.h"errorC4716:'ace_main_i':mustreturnavalue在main中加入return0;「errorLNK2001:unresolvedexternalsymbol"__declspec(dllimport)int__cdecl」工程-設置-Link-Input:對象/庫模塊:添加aced.lib附加庫路徑:D:\ACE_wrappers\ace編譯client中遇到的問題1、errorC2039:'sprintf':isnotamemberof'ACE_OS'#include"ace/OS_NS_stdio.h"2、errorC2039:'strlen':isnotamemberof'ACE_OS'#include"ace/OS_NS_string.h"3、errorC2059:syntaxerror:'?'錯誤在這一句:ACE_DEBUG((LM_DEBUG,?UsageegX\n?));將?改為"4、無法找到動態鏈接庫aced.dll於指定的路徑為系統變數PATH加上D:\ACE_wrappers\bin靜態包含:工程-設置-C/C++-預處理程序定義中加入,ACE_AS_STATIC_LIBS例1server編譯後生成server.exe16Kserverd.exe97Kservers.exe124Kserversd.exe669K(servers.exe較適合發布)例2client編譯後生成client.exe16Kclientd.exe97Kclients.exe124Kclientsd.exe669K(clients.exe較適合發布)測試clients127.0.0.11919servers1919下面是馬維達老師寫的:(轉自huihoo)發表於:3/31/2003-04:24翻譯的一點小東西,希望能對大家有幫助。其實也不敢稱為是翻譯的,水平太爛了,大家將就著看吧:)使用MicrosoftVisualC++在win32平台上生成和安裝ACE:注意:關於MSVC5.0和ServicePack3的使用有一些問題,過去一些用戶在sp2中使用良好的代碼在sp3種卻會引發一些問題。感謝Bill的細心查找,這一神秘的問題被解決了。答案?(哦,這兒有一個好答案。。。)這可能是因為有多個版本的sp3較早版本的sp3有一些bug,而後來的版本修正了這些錯誤,從微軟網站上下載的1998年6月16日版本的sp3是一個良好的版本。如果X03-50158是那些擁有sp3的光碟序列號的一部分,那麼這些版本也是良好的。但是不管任何版本的sp3,其STL的實現都有錯誤,詳細情況請瀏覽。感謝BenEng對這些錯誤的修正。現在的SP4(希望只有一個版本)已經修正了STL中的死鎖問題。我們現在將不再積極的支持MSVC4.X以及以前的版本,ACE可和這些編譯器一起工作但是可能會丟失一些好處。1.將ACE分發包界壓縮到一個目錄中,這將在那個目錄中生成一個包含ACE的目錄ACE_wrappers。接下來的步驟中假設ACE分發包被解壓縮到ACE_ROOT=C:\ACE_wrappers中,因此ACE將會存在於ACE_ROOT\ace目錄中。2.在ACE_ROOT\ace目錄中創建一個文件,命名為config.h,其內容為:#include"ace/config-win32.h"3.在VC++中載入ACE的工程文件(ACE_ROOT\ace\ace.dsw)4.每個工程都會包含多個配置,這些配置是Debug/Release,MFC/Non-MFCh和Static/Dynamic庫版本等選項的混合。確定你所需要的構造(例如,調試代碼需要ACE的調試版本)。所有這些不同的配置可以為你提供一些便利,你可以或者採用不同的模式以構造不同配置的應用,或者通過改變ace\config.h來改變在NT上的不同配置。注意:如果你使用動態連接,請保證ACE_ROOT\bin被添加到你的path環境變數中,否則你將在運行程序的時候碰到尋找ace.dll或者aced.dll的問題。5.如果你在WindowsNT或者Windows2k上構建ACE,你可以馬上開始構造她而不需任何改變,如果你在Windows9x/me上構建,那麼你必須在ACE_ROOT\ace\config.h.的#include塊之前添加一行:#defineACE_HAS_WINNT40這將在ACE中移掉一些WinNT/Win2K中特有的代碼。6.如果你希望使用MSVC自帶的標准C++頭文件(C++StandardDraft2種定義的iostream,cstdio…..),則應該在ACE_ROOT\ace\config.h.的#include塊之前添加一行:#defineACE_HAS_STANDARD_CPP_LIBRARY17.如果需要和MFC一起使用,增加如下定義到你的config.h文件中,注意,如果你想使用spawn一個新的線程,則必須保證使用THR_USE_AFX標志來spawn線程。#defineACE_HAS_MFC1預設的,ACE工程使用MSVC運行時的動態DLL版本,你也可以選擇使用ACE的不關心運行時庫的靜態(LIB)版本。我們選擇僅與動態運行時庫連接的原因在於基本上所有的NT機器上都會安裝這些庫,而我們則可以因此而減小代碼的大小。如果你希望ACE與MFC的靜態版本連接,則可以在config.h中定義ACE_USES_STATIC_MFC。然而,如果你希望靜態的連接所有的庫(包括MSVC運行時庫),就需要自己修改工程文件了。8.如果要構建ACE的靜態版本,則需要在config.h中定義ACE_AS_STATIC_LIBS,此宏在那些希望使用ACE的靜態版本的應用工程中也必須定義。作為一個可選項,你可以在#includestatementinACE_ROOT\ace\config.h.之前添加一行:#defineACE_NO_INLINE來取消函數內聯從而減小靜態庫(和你的運行碼)的大小。9.ACEDLL和LIB庫的命名規則:我們使用如下的規則明明使用MSVC的ACE的DLL和LIB文件。"Library/DLLname"+(是靜態庫嗎?"s":"")+(包含調試信息?"d":"")+{".dll"|".lib"}在MSVC環境中使用ACE的信息可以在這里找到。-----------------------------------------------------------------------一、安裝TAO,需要先編譯並安裝ACE。二、ACE的編譯和安裝步驟見。如果你英文程度還可以的話,最好直接閱讀這兩篇文檔。說到底,中文文檔只是「權宜之計」;漢語並不太適合進行邏輯性的表述。但我還是把其中的一些段落編譯如下(VC6.0+ACE-5.2.1+TAO-1.2.1):ACE的編譯與安裝一般規則ACE中的許多特性可以通過在$ACE_ROOT/ace/config.h中定義一些宏來進行修改。這些宏應該總是在包括針對你的平台的配置文件之前出現。但是,如果你想要取消/重定義在針對特定平台的配置文件中定義的宏,#undef應該在配置文件之後出現。如果你計劃在多種平台上編譯ACE,你也許需要考慮克隆源碼樹。步驟:1.將ACE發布文件解壓縮到某個目錄中,在其中將會創建含有所有文件的ACE_wrappers目錄。在下面的步驟中,ACE_wrappers目錄將以ACE_ROOT為名來指稱。2.在ACE_ROOT\ace目錄中創建一個名為config.h的文件,在其中包含:#include「ace/config-win32.h」3.現在載入ACE的項目文件(ACE_ROOT\ace\ace.dsw)。4.其中的每個項目都含有若干不同的配置(可混合Debug/Release、MFC/Non-MFC、Static/Dynamiclibrary版本)。你可以從中選擇你所需的配置,或是使用ace/config.h來進行調整。注意:如果你使用動態鏈接庫,在運行使用ACE的程序時,確定你在PATH中包括了ACE_ROOT\bin。5.如果你的系統平台是WinNT或2000,那麼無需任何改動你就可以開始編譯了。如果是Windows9x/Me,你需要在ACE_ROOT\ace\config.h中的#include語句之前增加:#defineACE_HAS_WINNT406.如果你想要使用MSVC標准C++頭(iostream、cstdio……),在ACE_ROOT\ace\config.h中的#include語句之前增加:#defineACE_HAS_STANDARD_CPP_LIBRARY17.要與MFC一起使用ACE,再增加下面的定義:#defineACE_HAS_MFC1注意如果你想要通過CWinThread派生新線程,一定要設置THR_USE_AFX。在預設情況下,所有的ACE項目都使用DLL版本的MSVC運行時庫。盡管如此,你仍然可以選擇使用static(LIB)版本的ACE庫。如果你想要將MFC作為靜態庫鏈接進ACE,你可以在config.h文件中定義ACE_USES_STATIC_MFC。但如果你想要靜態鏈接所有的東西(包括MSVC運行時庫),你就需要自己修改ACE的項目文件。8.ACE的靜態版本是通過定義ACE_AS_STATIC_LIBS來編譯的。在鏈接靜態ACE庫的應用項目中也應該使用這個宏。你也可以在config.h文件中增加#defineACE_NO_INLINE來取消函數內聯並減小靜態庫(和你的可執行程序)的大小。9.ACEDLL和LIB的命名方案:"Library/DLL名"+(是否為靜態庫?"s":"")+(是否啟用了Debugging?"d":"")+{".dll"|".lib"}10.配置完畢後編譯即可。選擇dll版本,編譯生成的dll文件在ACE_ROOT\bin中,相應的lib文件在ACE_ROOT\ace中。ACE測試各測試程序在ACE_ROOT\tests中。在其中也有一個工作空間文件可用來編譯所有的測試程序(tests.dsw)。一旦你編譯了所有測試程序(可使用批編譯),你可以運行tests目錄中的perl腳本run_test.pl或批處理文件run_tests.bat來進行所有測試。TAO的編譯與安裝確定VC的CL.EXE在你的訪問路徑上。設置ACE_ROOT或TAO_ROOT環境變數。例如:setACE_ROOT=C:\ACE_wrappersTAO最好放置在ACE_wrappers(這也是預設情況)。1.確定ACE已經編譯和安裝。2.確定ACE_wrappers\bin已在「Tools|Options」中的「ExecutableDirectories」中列出。如果在MSVC下使用TAO_IDL編譯器就需要進行此設置。3.載入tao\TAO.dsw,並編譯TAO庫。4.要編譯Cubit測試,載入performance-tests\Cubit\TAO\IDL_Cubit\IDL_Cubit.dsw,並編譯客戶和伺服器。TAOACE.dswTAOACE.dsw是一個VisualC++5.0/6.0工作空間文件,它載入的項目包括ACE、TAO、TAO_IDL(編譯器)、gperf、orb服務庫,以及一些單獨的可執行程序(比如NamingService,等等)。它可以用於編譯所有的用於編譯/運行TAO應用的文件。三、我選擇編譯的是dll版本(Release),並在ACE的config.h文件中定義了「#defineACE_HAS_STANDARD_CPP_LIBRARY1」。編譯後我所得到的ace.dll的大小是1.13MB,相應的ace.lib的大小是1.77MB;TAO.dll的大小是1.47MB,相應的TAO.lib的大小是2.74MB。所有文件約有MB,包括源程序、編譯生成的中間文件,等等,但有些例子及服務我沒有編譯。祝學有所成!馬維達-------------------------------------將ACE與VC6集成在一起一.打開Tools>Options>Directories加入以下內容:ExecutableFile:C:\ACE_wrappers\binIncludeFile:C:\ACE_wrappers\C:\ACE_wrappers\TAOC:\ACE_wrappers\TAO\orbsvcsLibraryFiles:C:\ACE_wrappers\aceC:\ACE_wrappers\TAO\taoC:\ACE_wrappers\TAO\orbsvcs\orbsvcsSourceFiles:C:\ACE_wrappers\aceC:\ACE_wrappers\TAO\taoC:\ACE_wrappers\TAO\orbsvcs\orbsvcs二.加入C:\ACE_wrappers\bin到系統環境變數path中三.設置系統變數ACE_ROOT=C:\ACE_wrappersTAO_ROOT=C:\ACE_wrappers\TAO
② 學習編程的一般步驟是什麼
學習編程,從何入手?x0dx0ax0dx0a1、計算機語言的種類非常的多,總的來說可以分成機器語言,匯編語言,高級語言三大類。x0dx0a2、電腦每做的一次動作,一個步驟,都是按照以經用計算機語言編好的程序來執行的,程序是計算機要執行的指令的集合,而程序全部都是用我們所掌握的語言來編寫的。所以人們要控制計算機一定要通過計算機語言向計算機發出命令。x0dx0a3、計算機所能識別的語言只有機器語言,即由0和1構成的代碼。但通常人們編程時,不採用機器語言,因為它非常難於記憶和識別。x0dx0a4、目前通用的編程語言有兩種形式:匯編語言和高級語言。x0dx0a5、匯編語言的實質和機器語言是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的標識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。匯編程序通常由三部分組成:指令、偽指令和宏指令。匯編程序的每一句指令只能對應實際操作過程中的一個很細微的動作,例如移動、自增,因此匯編源程序一般比較冗長、復雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業知識,但匯編語言的優點也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能實現的,而且源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。x0dx0a6、高級語言是目前絕大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由於省略了很多細節,編程者也就不需要有太多的專業知識。x0dx0a7、高級語言主要是相對於匯編語言而言,它並不是特指某一種具體的語言,而是包括了很多編程語言,如目前流行的VB、VC、FoxPro、Delphi等,這些語言的語法、命令格式都各不相同。x0dx0a8、高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類:x0dx0a解釋類:執行方式類似於我們日常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可以動態地調整、修改應用程序。x0dx0a9、編譯類:編譯是指在應用源程序執行之前,就將程序源代碼「翻譯」成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(* .OBJ)才能執行,只有目標文件而沒有源代碼,修改很不方便。現在大多數的編程語言都是編譯型的,例如Visual C++、Visual Foxpro、Delphi等。x0dx0ax0dx0a《編程語言,你選哪一個》x0dx0ax0dx0a 雖然不是每個人都會成為編程高手,但你在使用軟體的時候,也許會冷不丁地冒出個問號:這些神奇的軟體是怎麼編出來的?而對那些將投身於此的「大蝦小蝦」們,接下去的可能是:我什麼時候也能編出個更好的軟體來?好吧,那從哪裡開始呢?編程語言名錄繁多,選擇一個適合自己的編程語言,是你首先要邁出的一步。x0dx0a 你了解最常見的編程語言嗎?你知道最流行的程序開發環境嗎?x0dx0a 你知道Basic、Pascal、C、C++和Jave家族這些常見的編程語言各自都有什麼優點嗎?如果你對這些都不是很清楚的話,那麼下面這一部分你可不能錯過。x0dx0a 基礎篇x0dx0a Basic:x0dx0a Basic是一種非常適合初學者學習的編程語言。它簡單易懂,其命令和語句一般都是英文單詞或縮寫,易於理解,便於記憶。只要具有一些英語知識的人都可以很快地掌握它。擴展地Basic語言常見地有:BASICA、GWBASIC、Quick Basic、Ture Basic和Turbo Basic。其中比較好的是Turbo Basic,它是一種可編譯的語言,所以它的速度更快、效率更高。Turbo Basic不僅保持了Basic語言一貫的比較容易學習的特點,還具有像PASCAL語言那樣嚴謹的基本控制結構。x0dx0ax0dx0a Pascal:x0dx0a Pascal語言是一門結構化的語言,它具有豐富的數據類型和控制結構,簡明易懂,所以特別適合與教學。Pascal語言還是一種自編譯的語言,這就使它的可靠性大大提高了。在Pascal的各個版本中,尤以Turbo Pascal的功能最為強大。如今,在許多學校的計算機語言課上,學的都是Pascal語言,用的都是Turbo Pascal。x0dx0ax0dx0a C:x0dx0a C語言作為系統描述語言,既可以用來寫系統軟體,有可以用來寫應用軟體,自然受到廣大用戶的喜愛。C語言有許多優點,它靈活性好、效率高、實用性強,而且對硬體的控制能力很強。人們常把C語言稱作中級語言,意指它是一門介於高級語言和匯編語言之間的語言。x0dx0ax0dx0a C++:x0dx0a 隨著軟體規模的不斷擴大,人們發現,使用傳統的「數據結構+演算法」的結構化編程模式已經難以適應軟體的發展了。這時,「面向對象+消息」的程序設計思想便逐漸被人們所注意。對於C語言,人們發現當C語言程序的規模超過5萬行時,程序就變得難以調試和維護。這時,將面向對象的思想引入C語言變成了程序員的共同心願。於是,C++語言便應運而生了,它以C語言為基礎,引入了面向對象的思想,成為目前最流行的編程語言之一。x0dx0ax0dx0a Java:x0dx0a 如果要用一句話來描述Java,那就是「一種簡單的、面向對象的、解釋型的、健壯的、安全的、結構中立的、可移植的、高性能的、多線程的、動態的語言」。同是面向對象的語言,Java與C++相比更加安全而且具有更高的可移植性。Java程序需要在安裝有Java虛擬機的平台上執行。要求在Java應用程序運行時每一步都強制執行安全措施,這必然會導致編譯執行速度下降,但魚與熊掌不可兼得,畢竟Java已經如此強大了。x0dx0ax0dx0a JavaScript & Java Applet:x0dx0a Java是一種具有獨立功能得強大得語言,與網路沒有必然得聯系;相比之下,JavaScript和Java Applet就更適合在網頁中開發和使用。JavaScript被稱為Java的腳本程序,是Java程序的簡化。通過編程,你可以根據需要動態地創建你的主頁。JavaScript是一種解釋型的語言,所以程序不需要進行預編譯,只有當程序被執行時才被轉化為可執行代碼。x0dx0a 與前者相比,Java Applet才更像是一個程序。它是一類被嵌入到Web頁中的由與Java兼容的瀏覽器控制執行的程序,Java Applet程序需要事先被編譯成class文件,然後將它導入到網頁中由瀏覽器控制執行。x0dx0a 如果能熟練地掌握這兩種語言,你的網頁一定會增色不少。x0dx0ax0dx0a SQL語言:x0dx0a SQL語言簡稱「結構化查詢語言」,它結構簡潔、功能強大、簡單易學,如今無論是像Oracle、Sybace、Informix、SQL Server這些大型的資料庫管理系統,還是像Visual Foxpro、PowerBuilder這些微機上資料庫開發系統,都支持SQL語言作為查詢語言。x0dx0ax0dx0a 開發篇x0dx0a 當前在不同的程序設計領域都有各自的一些著名的軟體開發工具,我們今天就先把目光投向VB、VC、Delphi、C++ Builder、PowerBuilder這些大哥大級的開發工具上吧。x0dx0ax0dx0a Visual Basic:x0dx0a VB除了有強大得資料庫編程能力,還引入了面向對象得程序設計思想。它功能強大,學習簡單。而且,VB還引入「控制項」的概念,使得大量已經編好得VB程序可以被我們直接拿來使用,就像搭積木一樣簡單。如今,VB已經有了6.0版。對於初學者來說,用VB編程是一件很容易上手的事。x0dx0ax0dx0a Visual C++:x0dx0a Visual C++可以說是為專門的程序設計人員而推出的。它的功能在當前的程序設計工具中可以說是最強大的,可以說沒有VC做不到的,只有你想不到的。x0dx0ax0dx0a Delphi:x0dx0a 以Object Pascle為基礎,擴充了面向對象的能力,並且完美地結合了可視化的開發手段。Delphi使用了本地編譯器直接生成技術,使程序的執行性能遠遠高於其它產品生成的程序。它還是真正的面向對象的編程語言,人們預測Delphi將會成為可視化編程的主流環境。x0dx0ax0dx0a C++ Builderx0dx0a CB是將C++的面向對象與可視化緊密結合起來的一個強大的、開發效率高的集成開發環境。CB的兼容性極強,它支持OWL 、VCL和MFC這三種常見的類庫。在BC和VC下通過的程序幾乎不用做任何修改就可以在CB下編譯通過。可以說CB是VC強有力的競爭者。x0dx0ax0dx0a PowerBuilder:x0dx0a PowerBuilder是新一代資料庫應用開發工具,它支持應用系統同時訪問多種資料庫。PowerBuilder是完全可視化的資料庫開發工具,它提供了大量控制項,大大加快了項目的開發速度。其編程語言叫做PowerScript,也是一種高級的、結構化的編程語言。PowerBuilder適合初學者快速學習資料庫開發,是一種適用面非常廣的開發工具。x0dx0ax0dx0a方案一 Basic語言 & Visual Basicx0dx0ax0dx0a優點 x0dx0a(1)Basic 簡單易學,很容易上手。 x0dx0a(2)Visual Basic 提供了強大的可視化編程能力,可以讓你輕松地做出漂亮的程序。 x0dx0a(3)眾多的控制項讓編程變得象壘積木一樣簡單。 x0dx0a(4)Visual Basic 的全部漢化讓我們這些見了English就頭大的人喜不自禁。x0dx0ax0dx0a缺點 x0dx0a(1)Visual Basic 不是真正的面向對象的開發工具。 x0dx0a(2)Visual Basic 的數據類型太少,而且不支持指針,這使得它的表達能力很有限。 x0dx0a(3)Visual Basic 不是真正的編譯型語言,它產生的最終代碼不是可執行的,是一種偽代碼。它需要一個動態鏈接庫去解釋執行,這使得Visual Basic 的編譯速度大大變慢。x0dx0ax0dx0a結論:方案一適合初涉編程的朋友,它對學習者的要求不高,幾乎每個人都可以在一個比較短的時間里學會vB編程,並用VB 做出自己的作品。對於那些把編程當做游戲的朋友來說,VB 是您最佳的選擇。x0dx0ax0dx0a方案二 Pascal語言 & Delphix0dx0ax0dx0a優點 x0dx0a(1)Pascal語言結構嚴謹,可以很好地培養一個人的編程思想。 x0dx0a(2)Delphi是一門真正的面向對象的開發工具,並且是完全的可視化。 x0dx0a(3)Delphi使用了真編譯,可以讓你的代碼編譯成為可執行的文件,而且編譯速度非常快。 x0dx0a(4)Delphi具有強大的資料庫開發能力,可以讓你輕松地開發資料庫。x0dx0ax0dx0a缺點 x0dx0aDelphi幾乎可以說是完美的,只是Pascal語言的過於嚴謹讓人感覺有點煩。x0dx0ax0dx0a結論: 方案二比較適合那些具有一定編程基礎並且學過Pascal語言的朋友。x0dx0ax0dx0a方案三 C語言 & Visual C++x0dx0ax0dx0a優點 x0dx0a(1)C語言靈活性好,效率高,可以接觸到軟體開發比較底層的東西。 x0dx0a(2)微軟的MFC庫博大精深,學會它可以讓隨心所欲地進行編程。 x0dx0a(3)VC是微軟製作的產品,與操作系統的結合更加緊密。x0dx0a缺點 x0dx0a對使用者的要求比較高,既要具備豐富的C語言編程經驗,又要具有一定的WINDOWS編程基礎,它過於專業x0dx0ax0dx0a結論: VC是程序員用的東西。如果你是一個永不滿足的人,而且可以在編程上投入很大的精力和時間,那麼學習VC你一定不會後悔的。x0dx0ax0dx0a方案四 C++語言 & C++ Builderx0dx0ax0dx0a優點 x0dx0a(1)C++語言的優點全部得以繼承。 x0dx0a(2)完全的可是化。 x0dx0a(3)極強的兼容性,支持OWL、VCL和MFC三大類庫。 x0dx0a(4)編譯速度非常快。x0dx0a缺點 x0dx0a由於推出的時間太短,關於它的各種資料還不太多。x0dx0ax0dx0a結論:我認為C++ Builder 是最好的編程工具。它既保持了C++語言編程的優點,又做到了完全的可視化。x0dx0ax0dx0a方案五 SQL語言 & Power Builderx0dx0ax0dx0a對於一些傳統的數據開發人員來說,Foxpro系列也許讓他們感到更加熟悉。但是對於初學者來說,PowerBuilder也許是最好的資料庫開發工具。各種各樣的控制項,功能強大的PowerBuilder語言都會幫助你開發出自己的資料庫應用程序。
③ 怎麼學習C++設計模式舉例說明
說起C++ 的系統和網路編程開源庫,恐怕沒有人敢否認ACE的王者地位。其實ACE不光是一個實用的程序庫和框架集,它更是一個設計模式的典範應用。ACE在線索引文檔:http://www.dre.vanderbilt.e/Doxygen/Stable/ace/index.html
ACE具有極其明顯的分層體系結構,一般劃分為三個層次:
1. 操作系統適配層
2. C++包裝層
3. 構架和模式層
前面的兩層都是對各個平台的底層OS API進行包裝,最後化身成通用的C++類或者函數。舉個簡單的例子,比如ACE_OS::sleep(1)在任何平台下都是休眠一秒,這樣就很方便寫出跨平台的代碼了。更好玩的是第三層,ACE把設計模式玩到了極致,設計出了許多實用的組件。比如任務和主動對象(Active Object),反應堆(Reactor),接受器(Acceptor)和連接器(Connector)。下面簡單講一下這三類模式的應用。
1. 任務和主動對象(Active Object)
那麼到底什麼是主動對象呢?傳統上,所有的對象都是被動的代碼段,對象中的代碼是在對它發出方法調用的線程中執行的。也就是,調用線程(calling threads)被「借出」,以執行被動對象的方法。
而主動對象卻不一樣。這些對象持有它們自己的線程(甚或多個線程),並將這個線程用於執行對它們的任何方法的調用。因而,如果你想像一個傳統對象,在裡面封裝了一個線程(或多個線程),你就得到了一個主動對象。
ACE中的主動對象的實現核心是ACE_Task。要實現一個主動對象,只需繼承自ACE_TASK。ACE_Task有幾個虛函數比較重要。open(), close()分別是對應服務初始化和關閉。可以在open()調用activate()來創建線程執行任務。而ACE_TASK中的所有主動線程的執行入口是虛函數svc()。只需在svc()中加入你的主動對象需要執行的任務代碼即可。
2. 反應堆(ACE_Reactor)
在設計模式教科書中這么描述反應堆模式:反應堆本質上提供一組更高級的編程抽象,簡化了事件驅動的分布式應用的設計和實現。除此而外,反應堆還將若干不同種類的事件的多路分離集成到易於使用的API中。特別地,反應堆對基於定時器的事件、信號事件、基於I/O埠監控的事件和用戶定義的通知進行統一地處理。
描述地比較抽象,簡單來講就是:
a.創建事件處理器,以處理感興趣的事件。比如handle_input()函數處理可能收到的輸入。
int CMyACETask::handle_input (ACE_HANDLE fd);
b.把事件處理器指針和感興趣的事件登記到反應堆,具體來說就是
m_reactor->register_handler(this, ACE_Event_Handler::READ_MASK | ACE_Event_Handler::WRITE_MASK );
c.在用戶已登記的某個事件發生時,反應堆發出對處理器中相應方法的回調。
3. 接受器(Acceptor)和連接器(Connector)
ACE_Acceptor工廠允許應用開發者改變「助手」對象,以用於:
被動連接建立
連接建立後的處理
同樣地,ACE_Connector工廠允許應用開發者改變「助手」對象,以用於:
主動連接建立
連接建立後的處理
接受器和連接器的具體代碼比較簡單,請見索引文檔
④ 考c++程序員應看哪些書
《The C++ Standard Library: A Tutorial and
Reference》原文版
中文版:《C++標准程序庫:自修教程與參考手冊》
這是一本網路全書式的C++標准庫著作,是一本需要一再查閱的參考大全。它在完備性、細致性以及精確性方面都是無與倫比的。本書詳細介紹了每一標准庫組件的規格和用法,內容涵蓋包括流和本地化在內的整個標准庫而不僅僅是STL。正如本書副標題所示,它首先適合作為教程閱讀,爾後又可用作參考手冊。
淺顯易懂的寫作風格使得這本書非常易讀。如果你希望學習標准庫的用法並盡可能地發揮其潛能,那你必須擁有這本書。正如網路上所言,這本書不僅僅應該擺在你的書櫥中,更應該放到你的電腦桌上。我向每一位職業C++程序員強烈推薦。
《Standard C++ IOStreams and Locales: Advanced
Programmer's Guide and Reference》原文版
中文版《標准C++輸入輸出流與本地化》
C++標准庫由STL、流和本地化三部分構成。關於STL的書市面上已經有不少,但罕見流和本地化方面的專著。本書是這兩個領域中最優秀的一本,迄今為止沒有任何一本書比這一本更全面詳盡地討論了流和本地化。如果你不滿足於停留在「會用」流庫的層面,千萬不要錯過它。
2001年夏天,我草草翻閱過這本書的中文版,從內容到包裝都給我留下了比較深刻的印象——不過負面的居多一些。2003年秋天,無意中得知某網路書店正以超低價格甩賣這本書的中譯本,情不自禁,一陣唏噓。
《Effective STL》影印版、中文版
讀完Scott 的《Effective C++》和《More Effective
C++》的中譯本之後,我一直期待這本書的中文版。我從潘愛民先生的個人主頁上了解到,他和他的合作夥伴似乎早已完成了這本書的翻譯工作,可惜至今市面上仍不得見。幸運的是,我們可以看到它的原版。
本書是使用STL的程序員必讀之作。在這本書中,Scott向我們講述STL容器和演算法的工作機制以及如何以最佳方式使用它們。和Scott的其他作品一樣,這本書的寫作風格清晰、精確,具有極佳的可讀性。看過這本書以後,我想你也許會和我以及其他C++程序員一樣產生這樣的想法:Scott什麼時候會寫出一本「More
Effective STL」?
《Generic Programming and the STL: Using and Extending the C++
Standard Template Library》影印版、中文版《泛型編程與STL》
關於STL,我還提醒你留心Matthew H. Austern的《Generic Programming and the STL: Using and
Extending the C++ Standard Template
Library》(《泛型編程與STL》,中國電力出版社)。這本書散發著濃厚的學院氣息。Andrew Koenig和Barbara
Moo在《Accelerated C++: Practical Programming by
Example》一書末尾鄭重推薦另外兩本進階好書(除了他們自己的《Ruminations on C++》外),其中一本是TCPL,另外一本就是本書!
網路編程
在網路編程時代,C++應該扮演著怎樣的角色,讓ACE(Adaptive Communications Environment)來告訴你。
Douglas C. Schmidt, Stephen D. Huston,《C++ Network Programming》Volume 1:
Mastering Complexity with ACE and Patterns、Volume 2: Systematic Reuse with ACE
and Frameworks
中文版:,《C++網路編程》卷1:運用ACE和模式消除復雜性、卷2:基於 ACE 和框架的系統化復用
採用C++進行企業級網路編程,目前ACE(以及這兩本書)是一個值得考慮的選擇。ACE是一個面向對象、跨平台、開放源碼的網路編程框架,目標在於構建高性能網路應用和中間件。Douglas是ACE的創始人,Stephen則已為ACE提供了數年的技術支持和顧問服務,兩位都是ACE社群(是的,ACE的影響和實際應用的程度已經形成了一個社群)的專家。
ACE並不單單被大學和研究所追捧,它已經被成功地應用於世界上成千上萬個商業應用中。在電信、宇航、醫葯和財經領域的網路系統中,ACE已經並繼續發揮著重要的作用。如果你准備開發高性能通訊系統,你應該考慮考慮這一匯集世界頂尖專家智慧的成果。
除了使用C++面向對象設計技術和模板等高級語言特性外,ACE還運用了大量的模式。《C++網路編程》卷1和卷2並不僅僅教你關於ACE的方方面面,它還會教給你模式和通用框架設計等高級技術等。所以,作為一名中、高級C++程序員,即使你很少進行正兒八經的C++網路程序設計,閱讀這兩本書同樣可以從中受益。
是的,並非所有網路應用都要使用Web伺服器(以及其他應用伺服器)和重量級組件模型,換個思路,它們或許也可以從輕量級的ACE組件中獲益。
雜項
以下幾本書所以被列入「雜項」單元,是因為我沒有考慮到合適的歸類方法,它們和上面的書籍一樣,值得一讀。
Bruce Eckel,《Thinking in C++》影印版二版、三版(又名卷二)
中文《C++編程思想》二版、卷一:標准C++導引 卷二:實用編程技術
《Thinking in
C++》的第1版於1996年榮獲「軟體研發」雜志評選的圖書震撼大獎。最新推出的第2版對內容進行了大幅改寫和調整,以反映C++標准化帶來的影響以及近幾年面向對象領域最新研究和實踐成果。「輸入輸入流」、「多重繼承」、「異常處理」和「運行時類型識別」等高級主題連同C++標准化以後增加的一些內容則被放入第二卷中。Bruce是一名經驗豐富的C++講師和顧問,其培訓和寫作經驗都是世界一流水準,他的作品比那些「玩票」的技術人員寫的東西更能吸引讀者。事實上,在同類圖書中,對於大多數讀者而言,這本書的可讀性要超過TCPL和《C++
Primer》。順帶一提,訪問作者的站點,你可以先睹第二卷的風采。
Andrew Koenig, Barbara E. Moo,,《Ruminations on C++: A Decade of Programming
Insight and Experience》原版、中文版《C++沉思錄》
Andrew是世界上屈指可數的C++專家。這是一本關於C++編程思想和程序設計技術而非語言細節的著作。如果你已經具有一定的基礎,這本書將教你在進行C++編程時應該怎樣思考,應該如何表達解決方案。整本書技術表達透徹,文字通俗易懂。Bjarne這樣評價這本書:本書遍布「C++是什麼、C++能夠做什麼」的真知灼見。
Stanley B. Lippman,《Inside The C++ Object Model》影印版、中文版《深度探索C++對象模型》
從編譯器的角度觀察C++可以使你知其然並知其所以然。本書探討了大量的C++面向對象程序設計的底層運作機制,包括構造函數、函數、臨時對象、繼承、虛擬、模板的實例化、異常處理、運行期類型識別等,另外還介紹了一些在實現C++對象模型過程中做出的權衡折衷。喜歡刨根問底的C++程序員不要錯過這本書。
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns:
Elements of Reusable Object-Oriented software
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides,《Design Patterns:
Elements of Reusable Object-Oriented software》影印版、中文版《設計模式:可復用面向對象軟體的基礎》
設計可復用的面向對象的軟體,你需要掌握設計模式。本書並非專為C++程序員而寫,但它採用了C++(以及Smalltalk)作為主要示例語言,C++程序員尤其易於從中受益。四位作者都是國際公認的面向對象軟體領域專家,他們將面向對象軟體的設計經驗作為設計模式詳細記錄下來。這本書影響是如此深遠,以至於四位作者以及本書都被昵稱為GoF(Gang
of
Four)。本書學院氣息濃厚,行文風格嚴謹簡潔,雖然它不如某些講解模式的書籍易讀,但真正要精準地理解設計模式,本書是終極權威。學習設計模式,這本書需要一而再、再而三的咀嚼。順帶一句:請將設計模式化作開拓思維的鑰匙,切莫成為封閉思維的枷鎖。
John Lakos,《Large-Scale C++ Software Design》中文版《大規模C++程序設計》、候捷:《STL 源碼剖析》
還有一些C++好書值得一讀,恕此處無法一一列出。例如John Lakos的著作《Large-Scale C++ Software
Design》(《大規模C++程序設計》,中國電力出版社)和侯捷先生的《STL 源碼剖析》(華中科技大學出版社)等。
《STL
源碼剖析》是一本很有特色的書,但我認為它還可以更好。我個人期待侯捷先生自第一版發行以來經過對模板技術的沉澱和再思考之後,再寫一本剖析得更深入、更透徹並且更全面的「第二版」。遺憾的是,侯捷先生在完成《C++
Templates: The Complete Guide》一書的翻譯後似乎決定暫時告別模板、泛型編程和STL領域。
使用C++成功開發大規模軟體系統,不僅需要很好地理解大多數C++書籍中講述的邏輯設計問題,更需要掌握《大規模C++程序設計》中講述的物理設計技術。當然,這本書的確有點過時了,不過,如果你的精力和金錢都比較寬綽,買一本看看並無壞處。
至此,我想有必要聲明一下,有一些(好)書沒有得到推薦,主要原因如下:
以上這些書已經足夠多、足夠好了。
我不會推薦通過正常渠道很難購買到的書籍 ——不管是中文版還是英文版。
作(譯)者名氣大小不影響我的推薦。我們是在看書,不是看人。
我不會推薦我從來沒有看過的書。我至少要看過其中的某個版本(包括電子檔)。這個「看」,一般指「認真閱讀」,不過有一些也只能算是「瀏覽」。
結語
作為一名普通技術寫譯者,我深知技術創作和翻譯的艱辛(和快樂),並多多少少了解一些有關技術書籍創作、翻譯、製作、出版以及市場推介背後的細節。今天,我不會再對一本看上去差強人意的圖書信口開河。羅列同一本書的各種版本的用意只在於為你多提供一些信息,讓你多一種選擇。
在本文成文的後期,我給Bjarne寫了一封信,請教如果他來寫這篇文章會怎麼寫。他給了我簡明扼要的建議。在肯定以上列出的絕大部分圖書都是世界頂尖水平的C++著作的同時,Bjarne提醒我別忘了向專家級程序員推薦《The
C++ Standard : Incorporating Technical Corrigenm No. 1》
《The C++ Standard : Incorporating Technical Corrigenm No. 1》
Bjarne還友好地提醒我,在我的推薦列表中沒有哪一本有助於C++程序員進行Windows編程——這正是我的本意。在這篇文章中,我只推薦、點評平台中立的C++著作(網路編程除外)——和操作系統無關,和集成開發環境無關,我甚至幻想它們和編譯器也無關。你可以根據業務開發需要,選讀自己喜愛的領域相關的C++書籍。
說到「系統無關、平台中立」,我不由得想起了「抽象層」的概念。開發實際應用的C++程序員通常工作於特定操作系統、特定開發環境和特定業務領域之中,而對標准C++和C++標准庫扎實而深刻的把握,無疑是你得以在不同的操作系統、不同的開發環境以及不同的業務領域之間縱橫馳騁的「抽象」本錢。
⑤ 求C++ 網路編程最好的書籍 謝謝了
學習編程基礎也很重要的,路要一步一步地走。不要老是想到看一本書就成為高手。我給你推薦一些書吧,你可以選一些看。其中很多都是經典之作。C++是以C為基礎的,所以你最好看一下C語言,網路方面,《計算機網路》和《TCP/IP詳解》是必看的。望採納。
1、演算法
計算機程序設計藝術-------Donald.E.Knuth----------演算法「倚天屠龍」雙劍
演算法導論-----------------Thomas H. Cormen--------演算法「倚天屠龍」雙劍
離散數學及其應用----------Kenneth H.Rosen
具體數學—計算機科學基礎--------Donald.E.Knuth
2、數據結構
數據結構 C++
數據結構演算法與應用
3、C語言
C程序設計語言(第2版·新版)---C語言「倚天屠龍雙劍」---Brian W.Kernighan「C語言之父」
C Primer Plus中文版(第五版)--------C語言「倚天屠龍雙劍」---Stephen Prata
C程序設計(第三版)---------------------------譚浩強
C語言大全(第四版)---------------------------HERBERT SCHILDT
C語言介面與實現:創建可重用軟體的技術-------------DAVID R.HANSON
C語言參考手冊(原書第5版)--------------------------Samuel P.Harbison
C程序設計教程---------------------------------H.M.Deitel/P.J.Deitel
C陷阱與缺陷-----------------------------------Andrew Koenig
5、C++
C++程序設計語言(特別版)---c++八大金剛----Bjarne Stroustrup「C++之父」
C++ Primer (第3版)中文版----c++八大金剛---Stanley B.Lippman
C++ Primer (第4版)中文版----c++八大金剛---Stanley B.Lippman
C++標准程序庫—自修教程與參考手冊--c++八大金剛--Nicolai M.Josuttis
C++語言的設計和演化-----c++八大金剛----Bjarne Stroustrup「C++之父」
深度探索C++對象模型---c++八大金剛----Stanley B.Lippman
Essential C++中文版---c++八大金剛---Stanley B.Lippman
Effective C++中文版 2nd Edition-----c++八大金剛------Scott Meyers
More Effective C++中文版----c++八大金剛------Scott Meyers
C++編程思想(第2版) 第1卷:標准C++導引--------Bruce Eckel
C++編程思想(第2版)第2卷:實用編程技術 --------Bruce Eckel
C++程序設計--------------------------譚浩強
C++ 程序設計教程(第2版)--------------錢能
C++ Primer Plus(第五版)中文版---Stephen Prata
6、操作系統
深入理解計算機系統(修訂版)-------RANDAL E.BRYANT
計算機操作系統(第六版)
7、編譯原理
跟我一起寫makefile
《編譯原理技術和工具》------- Alfred ------- 龍書
《現代編譯原理-C語言描述》 ----------- Andrew W. Appel ----------- 虎書
《高級編譯器設計與實現》 ----------- Steven S.Muchnick ----------- 鯨書
8、網路
計算機網路第四版中文版-----------Andrew S.Tanenbaum -------網路編程三劍客
TCP/IP詳解3卷本--------------------Richard Stevens----網路編程三劍客
UNIX網路編程2卷本--------------------Richard Stevens----網路編程三劍客
用TCP/IP進行網際互聯-----------Douglas E. Comer
高級TCP/IP編程-------------------Jon C. Snader
C++網路編程-----------------------Douglas Schmidt
UNIX環境高級編程(第2版)--------------------Richard Stevens
9、Linux
Linux內核設計與實現
Linux內核完全注釋
LINUX內核分析及編程