導航:首頁 > 編程語言 > 最早編程加工語言

最早編程加工語言

發布時間:2024-07-02 06:23:49

Ⅰ 程序設計語言通常有哪些

程序設計語言通常分為:機器語言、匯編語言、高級語言三類。

機器語言是最底層的語言,只有「0」和「1」,二進制語言,就像開關一樣,0是關,1是通過。匯編語言指令是機器指令的符號化,與機器指令存在著直接的對應關系。

高級語言面向用戶的、基本上獨立於計算機種類和結構的語言。高級語言的一個命令可以代替幾條、幾十條甚至幾百條匯編語言的指令。

(1)最早編程加工語言擴展閱讀:

主要語言

1、習語言,即中文版的C語言

2、O語言,O語言是一款中文計算機語言(或稱套裝:O匯編語言、O中間語言、O高級語言)

3、APT( Automatically Pro-grammed Tools)——自動數控程序。第一個專用語言,用於數控機床加工,1956。

4、FORTRAN(FORmula TRANslation)——公式翻譯程序設計語言。第一個廣泛使用的高級語言,為廣大科學和工程技術人員使用計算機創造了條件,1956。

Ⅱ 鏈烘拌璦/奼囩紪璇璦/浣庣駭璇璦/楂樼駭璇璦鍚勬槸鎸囩殑浠涔

紼嬪簭璁捐¤璦錛岄氬父綆縐頒負緙栫▼璇璦錛屾槸涓緇勭敤鏉ュ畾涔夎$畻鏈虹▼搴忕殑璇娉曡勫垯銆傚畠鏄涓縐嶈鏍囧噯鍖栫殑浜ゆ祦鎶宸э紝鐢ㄦ潵鍚戣$畻鏈哄彂鍑烘寚浠ゃ備竴縐嶈$畻鏈鴻璦璁╃▼搴忓憳鑳藉熷噯紜鍦板畾涔夎$畻鏈烘墍闇瑕佷嬌鐢ㄧ殑鏁版嵁錛屽苟綺劇『鍦板畾涔夊湪涓嶅悓鎯呭喌涓嬫墍搴斿綋閲囧彇鐨勮屽姩銆
紼嬪簭璁捐¤璦鍘熸湰鏄琚璁捐℃垚涓撻棬浣跨敤鍦ㄨ$畻鏈轟笂鐨勶紝浣嗗畠浠涔熷彲浠ョ敤鏉ュ畾涔夌畻娉曟垨鑰呮暟鎹緇撴瀯銆傛f槸鍥犱負濡傛わ紝紼嬪簭鍛樻墠浼氳瘯鍥句嬌紼嬪簭浠g爜鏇村規槗闃呰匯
璁捐¤璦寰寰浣跨▼搴忓憳鑳藉熸瘮浣跨敤鏈哄櫒璇璦鏇村噯紜鍦拌〃杈句粬浠鎵鎯寵〃杈劇殑鐩鐨勩傚歸偅浜涗粠浜嬭$畻鏈虹戝︾殑浜烘潵璇達紝鎳傚緱紼嬪簭璁捐¤璦鏄鍗佸垎閲嶈佺殑錛屽洜涓哄湪褰撲粖鎵鏈夌殑璁$畻閮介渶瑕佺▼搴忚捐¤璦鎵嶈兘瀹屾垚銆
鍦ㄨ繃鍘葷殑鍑犲嶮騫撮棿錛屽ぇ閲忕殑紼嬪簭璁捐¤璦琚鍙戞槑銆佽鍙栦唬銆佽淇鏀規垨緇勫悎鍦ㄤ竴璧楓傚敖綆′漢浠澶氭¤瘯鍥懼壋閫犱竴縐嶉氱敤鐨勭▼搴忚捐¤璦錛屽嵈娌℃湁涓嬈″皾璇曟槸鎴愬姛鐨勩備箣鎵浠ユ湁閭d箞澶氱嶄笉鍚岀殑緙栫▼璇璦瀛樺湪鐨勫師鍥犳槸錛岀紪鍐欑▼搴忕殑鍒濊》鍏跺疄涔熷悇涓嶇浉鍚岋紱鏂版墜涓庤佹墜涔嬮棿鎶鏈鐨勫樊璺濋潪甯稿ぇ錛岃屾湁璁稿氳璦騫跺規柊鎵嬫潵璇村お闅懼︼紱榪樻湁錛屼笉鍚岀▼搴忎箣闂寸殑榪愯屾垚鏈錛坮untime cost錛夊悇涓嶇浉鍚屻
鏈夎稿氱敤浜庣壒孌婄敤閫旂殑璇璦錛屽彧鍦ㄧ壒孌婃儏鍐典笅浣跨敤銆備緥濡傦紝php涓撻棬鐢ㄦ潵鏄劇ず緗戦〉錛汸erl鏇撮傚悎鏂囨湰澶勭悊錛汣璇璦琚騫挎硾鐢ㄤ簬鎿嶄綔緋葷粺鍜岀紪璇戝櫒鐨勫紑鍙戱紙鎵璋撶殑緋葷粺緙栫▼錛夈
楂樼駭紼嬪簭璁捐¤璦錛堜篃縐伴珮綰ц璦錛夌殑鍑虹幇浣垮緱璁$畻鏈虹▼搴忚捐¤璦涓嶅啀榪囧害鍦板氳禆鏌愮嶇壒瀹氱殑鏈哄櫒鎴栫幆澧冦傝繖鏄鍥犱負楂樼駭璇璦鍦ㄤ笉鍚岀殑騫沖彴涓婁細琚緙栬瘧鎴愪笉鍚岀殑鏈哄櫒璇璦錛岃屼笉鏄鐩存帴琚鏈哄櫒鎵ц屻傛渶鏃╁嚭鐜扮殑緙栫▼璇璦涔嬩竴FORTRAN鐨勪竴涓涓昏佺洰鏍囷紝灝辨槸瀹炵幇騫沖彴鐙絝嬨
鉶界劧澶у氭暟鐨勮璦鍙浠ユ棦鍙琚緙栬瘧錛坈ompiled錛夊張鍙琚瑙h瘧錛坕nterpreted錛夛紝浣嗗ぇ澶氭暟鍙鍦ㄤ竴縐嶆儏鍐典笅鑳藉熻壇濂借繍琛屻傚湪涓浜涚紪紼嬬郴緇熶腑錛岀▼搴忚佺粡榪囧嚑涓闃舵電殑緙栬瘧錛屼竴鑸鑰岃█錛屽悗闃舵電殑緙栬瘧寰寰鏇存帴榪戞満鍣ㄨ璦銆傝繖縐嶅父鐢ㄧ殑浣跨敤鎶宸ф渶鏃╁湪1960騫翠唬鏈鐢ㄤ簬BCPL錛岀紪璇戠▼搴忓厛緙栬瘧涓涓鍙鍋氣0浠g爜鈥濈殑杞鎹㈢▼搴忥紙representation錛夛紝鐒跺悗鍐嶄嬌鐢ㄨ櫄鎷熷櫒杞鎹㈠埌鍙浠ヨ繍琛屼簬鏈哄櫒涓婄殑鐪熷疄浠g爜銆傝繖縐嶆垚鍔熺殑鎶宸т箣鍚庡張鐢ㄤ簬Pascal鍜孭-code錛屼互鍙奡malltalk鍜屼簩榪涘埗鐮侊紝鉶界劧鍦ㄥ緢澶氭椂鍊欙紝涓闂磋繃娓$殑浠g爜寰寰鏄瑙h瘧錛岃屼笉鏄緙栬瘧鐨勩
濡傛灉鎵浣跨敤鐨勭炕璇戠殑鏈哄埗鏄灝嗘墍瑕佺炕璇戠殑紼嬪簭浠g爜浣滀負涓涓鏁翠綋緲昏瘧錛屽苟涔嬪悗榪愯屽唴閮ㄦ牸寮忥紝閭d箞榪欎釜緲昏瘧榪囩▼灝辯О涓虹紪璇戙傚洜姝わ紝涓涓緙栬瘧鍣ㄦ槸涓涓灝嗗彲闃呰葷殑紼嬪簭鏂囨湰錛堝彨鍋氭簮浠g爜錛変綔涓鴻緭鍏ョ殑鏁版嵁錛岀劧鍚庤緭鍑哄彲鎵ц屾枃浠訛紙object code錛夈傛墍杈撳嚭鐨勫彲鎵ц屾枃浠跺彲浠ユ槸鏈哄櫒璇璦錛岀敱璁$畻鏈虹殑涓澶澶勭悊鍣ㄧ洿鎺ヨ繍琛岋紝鎴栬呮槸鏌愮嶆ā鎷熷櫒鐨勪簩榪涘埗浠g爜銆
濡傛灉紼嬪簭浠g爜鏄鍦ㄨ繍琛屾椂鎵嶅嵆鏃剁炕璇戱紝閭d箞榪欑嶇炕璇戞満鍒跺氨琚縐頒綔瑙h瘧銆傜粡瑙h瘧鐨勭▼搴忚繍琛岄熷害寰寰姣旂紪璇戠殑紼嬪簭鎱錛屼絾寰寰鏇村叿鐏墊椿鎬э紝鍥犱負瀹冧滑鑳藉熶笌鎵ц岀幆澧冧簰鐩鎬綔鐢ㄣ傚弬瑙佽В璇戣璦銆
鐩褰
1 鐗圭偣
1.1 鏁版嵁鍜屾暟鎹緇撴瀯
1.2 鎸囦護鍙婃祦紼嬫帶鍒
1.3 寮曠敤鏈哄埗鍜岄噸鐢
2 紼嬪簭璁捐¤璦鐨勫巻鍙
3 甯歌佺殑紼嬪簭璁捐¤璦
4 鍙傝
鐗圭偣
姣忎竴縐嶇▼搴忚捐¤璦鍙浠ヨ鐪嬩綔鏄涓濂楀寘鍚璇娉曘佽瘝奼囧拰鍚涔夌殑姝e紡瑙勮寖銆
榪欎簺瑙勮寖閫氬父鍖呮嫭錛
鏁版嵁鍜屾暟鎹緇撴瀯
鎸囦護鍙婃祦紼嬫帶鍒
寮曠敤鏈哄埗鍜岄噸鐢
璁捐″摬瀛
澶у氭暟琚騫挎硾浣跨敤鎴栫粡涔呬笉琛扮殑璇璦錛屾嫢鏈夎礋璐f爣鍑嗗寲鐨勭粍緇囷紝緇忓父浼氭櫎鏉ュ壋閫犲強鍙戝竷璇ヨ璦鐨勬e紡瀹氫箟錛屽苟璁ㄨ烘墿灞曟垨璐褰葷幇鏈夌殑瀹氫箟銆
鏁版嵁鍜屾暟鎹緇撴瀯
鐜頒唬璁$畻鏈哄唴閮ㄧ殑鏁版嵁閮藉彧浠ヤ簩鍏冩柟寮忓偍瀛橈紝鍗沖紑-鍏蟲ā寮(on-off)銆傜幇瀹炰笘鐣屼腑浠h〃淇℃伅鐨勫悇縐嶆暟鎹錛屼緥濡傚悕瀛椼侀摱琛岃處鍙楓佸害閲忎互鍙婂悓鏍蜂綆絝鐨勪簩鍏冩暟鎹錛岄兘緇忕敱紼嬪簭璁捐¤璦鏁寸悊錛屾垚涓洪珮絝鐨勬傚康銆
涓涓紼嬪簭涓涓撻棬澶勭悊鏁版嵁鐨勯偅涓緋葷粺琚縐頒負紼嬪簭璇璦鐨勫瀷鎬佺郴緇(type system)錛涘瑰瀷鎬佺郴緇熺殑鐮旂┒鍜岃捐¤縐頒負鍨嬫佺悊璁(type theory)銆傝璦鍙浠ヨ鍒嗕負闈欐佸瀷鎬佺郴緇(statically typed systems)錛屼緥濡侰++鍜孞ava錛屽拰鍔ㄦ佸瀷鎬佺郴緇(dynamically typed systems)錛屼緥濡侺isp錛孞avaScript錛孴cl鍜孭rolog銆傚墠鑰呭彲琚榪涗竴姝ュ垎涓哄寘鍚瀹e憡鍨嬫(manifest type)鐨勮璦錛屽嵆姣忎竴涓鍙橀噺鍜屽嚱鏁扮殑鍨嬫侀兘娓呮氬湴瀹e憡錛屾垨type-inferred璇璦錛堜緥濡侻UMPS錛孧L錛夈
澶у氭暟璇璦榪樿兘澶熷湪鍐呯疆鐨勫瀷鎬佸熀紜涓婄粍鍚堝嚭澶嶆潅鐨勬暟鎹緇撴瀯鍨嬫侊紙浣跨敤鏁扮粍錛屽垪琛錛屽爢鏍堬紝鏂囦歡絳夌瓑錛夈傞潰鍚戝硅薄璇璦錛圤bject Oriented Language錛屽張璇戜綔鈥滅墿浠跺煎悜璇璦鈥濓級鍏佽哥▼搴忓憳瀹氫箟鏂扮殑鏁版嵁鍨嬫侊紝鍗斥滃硅薄鈥濇垨鈥滅墿浠垛濓紙objects錛夛紝浠ュ強榪愯屼簬璇ュ硅薄鐨勫嚱鏁幫紙functions錛夊拰鏂規硶錛坢ethods錛夈
闄や簡浣曟椂浠ュ強濡備綍紜瀹氳〃杈懼紡鍜屽瀷鎬佺殑鑱旂郴錛屽彟澶栦竴涓閲嶈佺殑闂棰樺氨鏄璇璦鍒板簳瀹氫箟浜嗗摢浜涘瀷鎬侊紝浠ュ強鍏佽稿摢浜涘瀷鎬佷綔涓鴻〃杈懼紡鐨勫箋傝稿侰緙栫▼璇璦涔嬬被鐨勪綆絝璇璦鍏佽哥▼搴忓懡鍚嶅唴瀛樹綅緗銆佸唴瀛樺尯鍩熶互鍙婄紪璇戞椂鐨勫父閲忥紱ANSI C鐢氳嚦鍏佽歌〃杈懼紡榪斿洖緇撴瀯鍊礆紙struct values錛夈傚姛鑳芥х殑璇璦涓鑸鍏佽稿彉閲忕洿鎺ヤ嬌鐢ㄨ繍琛屾椂璁$畻鍑虹殑鍊礆紝鑰屼笉鏄鎸囧嚭璇ュ煎彲鑳藉偍瀛樼殑鍐呭瓨鍦板潃銆
鎸囦護鍙婃祦紼嬫帶鍒
涓鏃︽暟鎹琚紜瀹氾紝鏈哄櫒蹇呴』琚鍛婄煡濡備綍瀵硅繖浜涙暟鎹榪涜屽勭悊銆傝緝綆鍗曠殑鎸囦護鍙浠ヤ嬌鐢ㄥ叧閿瀛楁垨瀹氫箟濂界殑璇娉曠粨鏋勬潵瀹屾垚銆備笉鍚岀殑璇璦鍒╃敤搴忓垪緋葷粺鏉ュ彇寰楁垨緇勫悎榪欎簺璇鍙ャ傞櫎姝や箣澶栵紝涓涓璇璦涓鐨勫叾浠栨寚浠や篃鍙浠ョ敤鏉ユ帶鍒跺勭悊鐨勮繃紼嬶紙渚嬪傚垎鏀銆佸驚鐜絳夛級銆
寮曠敤鏈哄埗鍜岄噸鐢
寮曠敤鐨勪腑蹇冩濇兂鏄蹇呴』鏈変竴縐嶉棿鎺ヨ捐″偍瀛樼┖闂寸殑鏂規硶銆傛渶甯歌佺殑鏂規硶鏄閫氳繃鍛藉悕鍙橀噺銆傛牴鎹涓嶅悓鐨勮璦錛岃繘涓姝ョ殑寮曠敤鍙浠ュ寘鎷鎸囧悜鍏朵粬鍌ㄥ瓨絀洪棿鐨勬寚閽堛傝繕鏈変竴縐嶇被浼肩殑鏂規硶灝辨槸鍛藉悕涓緇勬寚浠ゃ傚ぇ澶氭暟紼嬪簭璁捐¤璦浣跨敤瀹忚皟鐢ㄣ佽繃紼嬭皟鐢ㄦ垨鍑芥暟璋冪敤銆備嬌鐢ㄨ繖浜涗唬鏇跨殑鍚嶅瓧鑳借╃▼搴忔洿鐏墊椿錛屽苟鏇村叿閲嶇敤鎬с
紼嬪簭璁捐¤璦鐨勫巻鍙
浜屽嶮涓栫邯鍥涘嶮騫翠唬褰撹$畻鏈哄垰鍒氶棶涓栫殑鏃跺欙紝紼嬪簭鍛樺繀欏繪墜鍔ㄦ帶鍒惰$畻鏈恆傚綋鏃剁殑璁$畻鏈哄嶮鍒嗘槀璐碉紝鍞涓鎯沖埌鍒╃敤紼嬪簭璁捐¤璦鏉ヨВ鍐抽棶棰樼殑浜烘槸寰峰浗宸ョ▼甯堟氭辰錛圞onrad Zuse錛夈
鍑犲嶮騫村悗錛岃$畻鏈虹殑浠鋒牸澶у箙搴︿笅璺岋紝鑰岃$畻鏈虹▼搴忎篃瓚婃潵瓚婂嶆潅銆備篃灝辨槸璇達紝寮鍙戞椂闂村凡緇忚繙姣旇繍琛屾椂闂存潵寰楀疂璐點
浜庢槸錛屾柊鐨勯泦鎴愩佸彲瑙嗙殑寮鍙戠幆澧冭秺鏉ヨ秺嫻佽屻傚畠浠鍑忓皯浜嗘墍浠樺嚭鐨勬椂闂淬侀噾閽憋紙浠ュ強鑴戠粏鑳烇級銆傚彧瑕佽交鏁插嚑涓閿錛屼竴鏁存典唬鐮佸氨鍙浠ヤ嬌鐢ㄤ簡銆傝繖涔熷緱鐩婁簬鍙浠ラ噸鐢ㄧ殑紼嬪簭浠g爜搴撱
甯歌佺殑紼嬪簭璁捐¤璦
ActionScript
APL銆丄錛嬪拰J
Ada
奼囩紪璇璦
AWK
Basic銆丗ortran
VBScript
Brainfuck
C銆丆++
C錛
Clipper
COBOL
dBase
PASCAL銆丏elphi
Forth
FoxPro
F錛
Fava
IDL
Java
JavaScript
J#
LISP
Lua
LOGO
Mola
Nuva
Perl
PHP
PL/I
Prolog
Python
R
Ruby
Scheme
Smalltalk
SQL
Tcl/Tk
Visual Basic
Visual FoxPro
XML
[緙栬緫] 鍙傝
璁$畻鏈虹戝﹁劇▼鍒楄〃
紼嬪簭璁捐¤璦鍒楄〃
緙栬瘧鍣
Hello World紼嬪簭
鑴氭湰璇璦
緇村熀紼嬪簭鍛
紼嬪簭璁捐¤璦緙栬緫
宸ヤ笟緙栫▼璇璦錛 A+ | Ada | 奼囩紪璇璦 | Basic | Brainfuck | C璇璦 | C++ | C++/CLI | Cg | COBOL | Eiffel | Erlang | FORTRAN |Fuxi| IronPython | Java | JRuby | Jython | LISP | Lua | Nuva | Oberon | Objective-C | Ocaml | Pascal | Perl | Powerbuilder | Python | QBASIC | R璇璦 | REXX | Ruby | Self | Smalltalk | SQL | Tcl璇璦 | Visual Basic | PHP | Lua | C# | F# | J# | Visual Basic .NET| 鏈哄櫒璇璦
鑴氭湰緙栫▼璇璦錛 ActionScript | JavaScript | JScript | Nuva | PostScript | VBScript
瀛︽湳緙栫▼璇璦錛 APL/J | Haskell | Logo | ML | Prolog | Scheme | SAC
鍏朵粬緙栫▼璇璦錛 ALGOL | BASIC | Clipper | Forth | Fuxi|Mola-2/Mola-3 | MUMPS | PL/I | Simula
鍙栬嚜https://secure.wikimedia.org/wikipedia/zh/w/index.php?title=%E7%A8%8B%E5%BA%8F%E8%AE%BE%E8%AE%A1%E8%AF%AD%E8%A8%80&variant=zh-cn [緇忚繃淇鏀廣
欏甸潰鍒嗙被: 紼嬪簭璁捐¤璦 | 浜哄伐璇璦
紼嬪簭璁捐¤璦
programming language
鐢ㄤ簬涔﹀啓璁$畻鏈虹▼搴忕殑璇璦銆傝璦鐨勫熀紜鏄涓緇勮板彿鍜屼竴緇勮勫垯銆傛牴鎹瑙勫垯鐢辮板彿鏋勬垚鐨勮板彿涓茬殑鎬諱綋灝辨槸璇璦銆傚湪紼嬪簭璁捐¤璦涓錛岃繖浜涜板彿涓插氨鏄紼嬪簭銆傜▼搴忚捐¤璦鏈3涓鏂歸潰鐨勫洜緔狅紝鍗寵娉曘佽涔夊拰璇鐢ㄣ傝娉曡〃紺虹▼搴忕殑緇撴瀯鎴栧艦寮忥紝浜﹀嵆琛ㄧず鏋勬垚璇璦鐨勫悇涓璁板彿涔嬮棿鐨勭粍鍚堣勫緥錛屼絾涓嶆秹鍙婅繖浜涜板彿鐨勭壒瀹氬惈涔夛紝涔熶笉娑夊強浣跨敤鑰呫傝涔夎〃紺虹▼搴忕殑鍚涔夛紝浜﹀嵆琛ㄧず鎸夌収鍚勭嶆柟娉曟墍琛ㄧず鐨勫悇涓璁板彿鐨勭壒瀹氬惈涔夛紝浣嗕笉娑夊強浣跨敤鑰呫傝鐢ㄨ〃紺虹▼搴忎笌浣跨敤鑰呯殑鍏崇郴銆
鍩烘湰鎴愬垎 璇璦鐨勭嶇被鍗冨樊涓囧埆銆備絾鏄錛屼竴鑸璇存潵錛屽熀鏈鎴愬垎涓嶅4縐嶃傗憼鏁版嵁鎴愬垎銆傜敤浠ユ弿榪扮▼搴忎腑鎵娑夊強鐨勬暟鎹銆傗憽榪愮畻鎴愬垎銆傜敤浠ユ弿榪扮▼搴忎腑鎵鍖呭惈鐨勮繍綆椼傗憿鎺у埗鎴愬垎銆傜敤浠ヨ〃杈劇▼搴忎腑鐨勬帶鍒舵瀯閫犮傗懀浼犺緭鎴愬垎銆傜敤浠ヨ〃杈劇▼搴忎腑鏁版嵁鐨勪紶杈撱
鍒嗙被 鎸夎璦綰у埆錛屾湁浣庣駭璇璦鍜岄珮綰ц璦涔嬪垎銆備綆綰ц璦鍖呮嫭瀛椾綅鐮併佹満鍣ㄨ璦鍜屾眹緙栬璦銆傚畠鐨勭壒鐐規槸涓庣壒瀹氱殑鏈哄櫒鏈夊叧錛屽姛鏁堥珮錛屼絾浣跨敤澶嶆潅銆佺箒鐞愩佽垂鏃躲佹槗鍑哄樊閿欍傚叾涓錛屽瓧浣嶇爜鏄璁$畻鏈哄敮涓鍙鐩存帴鐞嗚В鐨勮璦錛屼絾鐢變簬瀹冩槸涓榪炰覆鐨勫瓧浣嶏紝澶嶆潅銆佺箒鐞愩佸啑闀匡紝鍑犱箮鏃犱漢鐩存帴浣跨敤銆傛満鍣ㄨ璦鏄琛ㄧず鎴愭暟鐮佸艦寮忕殑鏈哄櫒鍩烘湰鎸囦護闆嗭紝鎴栬呮槸鎿嶄綔鐮佺粡榪囩﹀彿鍖栫殑鍩烘湰鎸囦護闆嗐傛眹緙栬璦鏄鏈哄櫒璇璦涓鍦板潃閮ㄥ垎絎﹀彿鍖栫殑緇撴灉錛屾垨榪涗竴姝ュ寘鎷瀹忔瀯閫犮
楂樼駭璇璦鐨勮〃紺烘柟娉曡佹瘮浣庣駭璇璦鏇存帴榪戜簬寰呰В闂棰樼殑琛ㄧず鏂規硶錛屽叾鐗圭偣鏄鍦ㄤ竴瀹氱▼搴︿笂涓庡叿浣撴満鍣ㄦ棤鍏籌紝鏄撳︺佹槗鐢ㄣ佹槗緇存姢銆傚綋楂樼駭璇璦紼嬪簭緲昏瘧鎴愮浉搴旂殑浣庣駭璇璦紼嬪簭鏃訛紝涓鑸璇存潵錛屼竴涓楂樼駭璇璦紼嬪簭鍗曚綅瑕佸瑰簲澶氭潯鏈哄櫒鎸囦護錛岀浉搴旂殑緙栬瘧紼嬪簭鎵浜х敓鐨勭洰鏍囩▼搴忓線寰鍔熸晥杈冧綆銆
鎸夌収鐢ㄦ埛瑕佹眰錛屾湁榪囩▼寮忚璦鍜岄潪榪囩▼寮忚璦涔嬪垎銆傝繃紼嬪紡璇璦鐨勪富瑕佺壒寰佹槸錛岀敤鎴峰彲浠ユ寚鏄庝竴鍒楀彲欏哄簭鎵ц岀殑榪愮畻錛屼互琛ㄧず鐩稿簲鐨勮$畻榪囩▼銆備緥濡傦紝FORTRAN錛孋OBOL錛孉LGOL60絳夐兘鏄榪囩▼寮忚璦銆傞潪榪囩▼寮忚璦鐨勫惈涔夋槸鐩稿圭殑錛屽嚒鏄鐢ㄦ埛鏃犳硶鎸囨槑琛ㄧず璁$畻榪囩▼鐨勪竴鍒楀彲欏哄簭鎵ц岀殑榪愮畻鐨勮璦錛岄兘鏄闈炶繃紼嬪紡璇璦銆傝憲鍚嶇殑渚嬪瓙鏄琛ㄦ牸鐨勭敓鎴愮▼搴忥紙RPG錛夈傚畠瀹炶川涓婁笉鏄璇璦錛屼嬌鐢ㄨ呭彧欏繪寚鏄庤緭鍏ュ拰棰勬湡鐨勮緭鍑猴紝鏃犻』鎸囨槑涓轟簡寰楀埌杈撳嚭鎵闇鐨勮繃紼嬨
鎸夌収搴旂敤鑼冨洿錛屾湁閫氱敤璇璦鍜屼笓鐢ㄨ璦涔嬪垎銆傜洰鏍囬潪鍗曚竴鐨勮璦縐頒負閫氱敤璇璦錛屼緥濡侳ORTRAN銆丆OBOL銆丄LGOL60絳夐兘鏄閫氱敤璇璦銆傜洰鏍囧崟涓鐨勮璦縐頒負涓撶敤璇璦錛屽侫PT絳夈
鎸夌収浣跨敤鏂瑰紡錛屾湁浜や簰寮忚璦鍜岄潪浜や簰寮忚璦涔嬪垎銆傚叿鏈夊弽鏄犱漢�鏈轟氦浜掍綔鐢ㄧ殑璇璦鎴愬垎鐨勭О涓轟氦浜掑紡璇璦錛屽侭ASIC璇璦灝辨槸浜や簰寮忚璦銆傝璦鎴愬垎涓嶅弽鏄犱漢-鏈轟氦浜掍綔鐢ㄧ殑縐伴潪浜や簰寮忚璦錛屽侳ORTRAN銆丆OBOL銆丄LGOL60銆丳ASCAL絳夐兘鏄闈炰氦浜掑紡璇璦銆
鎸夌収鎴愬垎鎬ц川錛屾湁欏哄簭璇璦銆佸苟鍙戣璦鍜屽垎甯冭璦涔嬪垎銆傚彧鍚欏哄簭鎴愬垎鐨勮璦縐頒負欏哄簭璇璦,濡侳ORTRAN銆丆OBOL絳夐兘灞為『搴忚璦銆傚惈鏈夊苟鍙戞垚鍒嗙殑璇璦縐頒負騫跺彂璇璦錛屽傚苟鍙慞ASCAL銆丮ODULA鍜孉DA絳夐兘灞炲苟鍙戣璦銆傝冭檻鍒板垎甯冭$畻瑕佹眰鐨勮璦縐頒負鍒嗗竷璇璦錛屽侻ODULA*渚垮睘鍒嗗竷璇璦銆
浼犵粺鐨勭▼搴忚捐¤璦澶ч兘浠ヨ轟紛鏇煎紡鐨勮$畻鏈轟負璁捐¤儗鏅錛屽洜鑰屽張縐頒負璇轟紛鏇煎紡璇璦銆侸.宸村厠鏂浜1977騫存彁鍑虹殑鍑芥暟寮忚璦錛屽垯浠ラ潪璇轟紛鏇煎紡鐨勮$畻鏈轟負璁捐¤儗鏅錛屽洜鑰屽張縐頒負闈炶轟紛鏇煎紡璇璦銆
涓昏佽璦 鈶 APT錛 Automatically Pro-grammed Tools錛夆斺旇嚜鍔ㄦ暟鎺х▼搴忋傜涓涓涓撶敤璇璦錛岀敤浜庢暟鎺ф満搴婂姞宸ワ紝1956銆
鈶FORTRAN錛團ORmula TRANslation錛夆斺斿叕寮忕炕璇戠▼搴忚捐¤璦銆傜涓涓騫挎硾浣跨敤鐨勯珮綰ц璦錛屼負騫垮ぇ縐戝﹀拰宸ョ▼鎶鏈浜哄憳浣跨敤璁$畻鏈哄壋閫犱簡鏉′歡錛1956銆
鈶 FLOW-MATIC 銆傜涓涓閫傜敤浜庡晢鐢ㄦ暟鎹澶勭悊鐨勮璦錛屽叾璇娉曚笌鑻辮璇娉曠被浼礆紝1956銆
鈶IPL-V(Information Processing Language V)鈥斺斾俊鎮澶勭悊璇璦銆傜涓涓琛ㄥ勭悊璇璦錛屽彲鐪嬫垚鏄涓縐嶉傜敤浜庤〃澶勭悊鐨勫亣鎯寵$畻鏈轟笂鐨勬眹緙栬璦錛1958銆
鈶 COMIT錛圕Ompiler Massachusetts Institute foTechnology錛 鈥斺 椹钀ㄨ稿炲窞鐞嗗伐瀛﹂櫌緙栬瘧紼嬪簭銆傜涓涓鐜板疄鐨勪覆澶勭悊鍜屾ā寮忓尮閰嶈璦錛1957銆
鈶COBOL(COmmon Business Oriented Language)鈥斺旈潰鍚戝晢涓氱殑閫氱敤璇璦銆備嬌鐢ㄦ渶騫挎硾鐨勫晢鐢ㄨ璦錛屽畠鏄閫傜敤浜庢暟鎹澶勭悊鐨勯珮綰х▼搴忚捐¤璦錛1960銆
鈶ALGOL60錛圓LGOrithmic language60錛 鈥斺旂畻娉曡璦60銆傜▼搴忚捐¤璦鐢辨妧鑹鴻漿鍚戠戝︾殑閲嶈佹爣蹇楋紝鍏剁壒鐐規槸灞閮ㄦс佸姩鎬佹с侀掑綊鎬у拰涓ヨ皚鎬э紝1960銆
鈶LISP錛圠ISt Proceessing鈥斺旇〃澶勭悊璇璦銆傚紩榪涘嚱鏁板紡紼嬪簭璁捐℃傚康鍜岃〃澶勭悊璁炬柦錛屽湪浜哄伐鏅鴻兘鐨勯嗗煙鍐呭箍娉涗嬌鐢錛1960銆
鈶↗OVIAL錛圝ules Own Version of IAL錛夆斺斿浗闄呯畻娉曡璦鐨勬湵灝旀柉鏂囨湰銆傜涓涓鍏鋒湁澶勭悊縐戝﹁$畻銆佽緭鍏-杈撳嚭閫昏緫淇℃伅銆佹暟鎹瀛樺偍鍜屽勭悊絳夌患鍚堝姛鑳界殑璇璦銆傚氭暟JOVIAL緙栬瘧紼嬪簭閮芥槸鐢↗OVIAL涔﹀啓鐨勶紝1960銆
鈶〨PSS(General-purpose Systems Simulator)鈥斺旈氱敤緋葷粺妯℃嫙璇璦 銆傜涓涓浣挎ā鎷熸垚涓哄疄鐢ㄥ伐鍏風殑璇璦 錛1961銆
�JOSS錛圝ohnniac Open-Shop System 鈥斺斻傜涓涓浜や簰寮忚璦錛屽畠鏈夊緢澶氭柟璦錛屾浘浣垮垎鏃舵垚涓哄疄鐢錛1964銆
�FORMAC錛團ORmula MAnipulation Compiler錛夆斺斿叕寮忕炕璇戠▼搴忚捐¤璦鍏寮忓勭悊緙栬瘧紼嬪簭銆傜涓涓騫挎硾鐢ㄤ簬闇瑕佸艦寮忎唬鏁板勭悊鐨勬暟瀛﹂棶棰橀嗗煙鍐呯殑璇璦錛1964銆
�SIMULA 錛圫IMUlation LAnguage錛夆斺 妯℃嫙璇璦 銆備富瑕佺敤浜庢ā鎷熺殑璇璦錛屾槸ALGOL60鐨勬墿鍏咃紝1966銆係IMULA67鏄1967騫碨IMULA鐨勬敼榪涖傚叾涓寮曡繘鐨勨滅被鈥濇傚康錛屾槸鐜頒唬紼嬪簭璁捐¤璦涓鈥滄ā鍧椻濇傚康鐨勫厛澹般
�APL錛360 錛圓 Programming Language錛夆斺旂▼搴忚捐¤璦360銆備竴縐嶆彁渚涘緢澶氶珮綰ц繍綆楃︾殑璇璦錛屽彲浣跨▼搴忎漢鍛樺啓鍑虹敋涓虹揣鍑戠殑紼嬪簭 錛岀壒鍒鏄娑夊強鍒扮煩闃佃$畻鐨勭▼搴 錛1967銆
� PASCAL ( Philips Automatic Sequence CALcul-ator)鈥斺旇彶鍒╂鄲鑷鍔ㄩ『搴忚$畻鏈鴻璦銆傚湪ALGOL60鐨勫熀紜涓婂彂灞曡搗鏉ョ殑閲嶈佽璦 錛屽叾鏈澶х壒鐐規槸綆鏄庢т笌緇撴瀯鍖栵紝1971銆
�PROLOG錛圥ROgrammingin LOGic錛夈 涓縐嶅勭悊閫昏緫闂棰樼殑璇璦銆傚畠宸茬粡騫挎硾搴旂敤浜庡叧緋繪暟鎹搴撱佹暟鐞嗛昏緫銆佹娊璞¢棶棰樻眰瑙c佽嚜鐒惰璦鐞嗚В絳夊氱嶉嗗煙涓錛1973銆
�ADA銆備竴縐嶇幇浠fā鍧楀寲璇璦銆傚睘浜嶢LGOLPASCAL璇璦鏃忥紝浣嗘湁杈冨ぇ鍙樺姩銆傚叾涓昏佺壒寰佹槸寮虹被鍨嬪寲鍜屾ā鍧楀寲錛屼究浜庡疄鐜頒釜鍒緙栬瘧錛屾彁渚涚被灞炶炬柦錛屾彁渚涘紓甯稿勭悊錛岄備簬宓屽叆寮忓簲鐢錛1979銆
闄や簡涓婇潰鍒椾婦鐨勮璦澶栵紝榪樻湁涓浜涜緝涓洪氱敤鐨勮璦錛岀壒鍒鏄疊ASIC銆丳L錛1銆丼NOBOL銆丄LGOL68絳夈侭ASIC鉶界劧綆鍗曟槗瀛︼紝浣跨敤騫挎硾錛屼絾鍏朵腑娌℃湁浠涔堟柊姒傚康錛岃屼笖騫朵笉鏄絎涓涓浜や簰寮忚璦銆侾L錛1鐨勮捐 鎬濇兂鏉ユ簮浜嶫OVIAL錛屽叾鍔熻兘鏉ユ簮浜嶧ORTRAN銆丆OBOL銆丄LGOL60錛屽叿鏈変腑鏂琛ㄥ勭悊絳夎炬柦銆係NOBOL鏄涓縐嶅ソ 鐨勮璦錛屽笴OMIT涓鑻ュ共姒傚康鍋氫簡鏄庢樉鐨勬敼榪涖侫LGOL68鍦ㄨ璦鎴愬垎鍜 鎻忚堪鏂規硶鏂歸潰鉶芥湁鎵鍒涙柊錛屼絾搴旂敤灝氫笉騫挎硾銆
鍙戝睍瓚嬪娍 紼嬪簭璁捐¤璦鏄杞浠剁殑閲嶈佹柟闈銆傚畠鐨勫彂灞曡秼鍔挎槸妯″潡鍖栥佺畝鏄庢у拰褰㈠紡鍖栥傗憼妯″潡鍖栥備笉浠呰璦鍏鋒湁妯″潡鎴愬垎錛岀▼搴忕敱妯″潡緇勬垚錛岃屼笖璇璦鏈韜鐨勭粨鏋勪篃鏄妯″潡鍖栫殑銆傗憽綆鏄庢с傛秹鍙婄殑鍩烘湰姒傚康涓嶅氾紝鎴愬垎綆鍗曪紝緇撴瀯娓呮櫚錛屾槗瀛︽槗鐢ㄣ傗憿褰㈠紡鍖栥傚彂灞曞悎閫傜殑褰㈠紡浣撶郴錛屼互鎻忚堪璇璦鐨勮娉曘佽涔夈佽鐢ㄣ

Ⅲ 匯編語言發展史及過程

計算機編程語言的發展,經歷了從機器語言,匯編語言,高級語言課程。
機器語言
電子計算機。使用由「0」和「1」的二進制數,二進制的計算機語言。開始發明的計算機,只能放下你的谷租嗯計算機語言命令計算機做這做那,一句話,是寫一個字元串為「0」和「1」組成的序列,指令由計算機來執行這種語言是機器語言。機器語言是很痛苦的,尤其是在程序中需要的錯誤,特別是。在計算機程序中的每一台計算機指揮系統經常變化,以運行在另一台計算機上,必須有另一種編程,從而導致工作重復。然而,由於使用的語言為特定的計算機模型,因此計算效率是最高的,所有的語言。機器語言,這是一個第一代的計算機語言。
匯編語言
為了減輕使用機器語言編程的痛苦,這是一個有用的改進二進制字元串:簡潔的字母,符號的字元串,而不是一個特定的指令,如「ADD」代表加法器的「mov」表示數據傳輸,等等,因此,它很容易閱讀和理解方案做,誤差校正和維護變得容易,這種編程語言被稱為匯編語言中,第二代的計算機語言。但是,計算機是不知道這些符號的,這就需要一個專門的程序,專門負責這些符號被翻譯成機器語言的二進制數,這個翻譯程序稱為匯編。
匯編語言是同樣依賴於機器的硬體,便攜性不是很好,但效率還是非常高的,特定於計算機的硬體和匯編語言編程,准確地發揮計算機硬體的功能和專業知識准備完善的程序和高品質,它仍然是一種流行和??強大的軟體開發工具。
3。高級語言
從最初的交流與電腦的慘痛經歷,人們認識到,你應該設計一種語言,這種語言接近於數學語言或自然語言,而不依賴於計算機硬體,通用的編譯程序對所有機。於1954年,經過艱苦的努力,第一個完全脫離機器硬體的高級語言-FO RT RAN問世40多年來,數百個高層次的語言,幾十個重要的影響比大,比較常見的使用FO RT RAN,ALGOL,COBOL,BASIC,LISP,SNOBOL,PL / 1,P ascal,C,PROLOG,A DA,C + +,VC,VB,D elphi,J AVA等。
高級語言的發展也經歷了從早期的語言結構化編程語言,面向過程的編程語言的過程中,非程序。因此,軟體的發展,由最初的個體手工作坊式發展的工業化,工業生產流水線封閉式生產。
6晚了,越來越多,規模越來越大的軟體,軟體的生產基本上是從戰爭中,缺乏科學規范的系統規劃與測試,評估標准,其後果是大量的花巨資建立的軟體系統,不能使用,因為它包含的錯誤,甚至是一個巨大的損失,給人的印象是,軟體是越來越不可靠,所以很少或沒有的軟體錯誤。極大地震撼了計算機行業,被稱為「軟體危機」。意識:大型程序的准備,而不是寫一個小程序,它應該是一個新的技術應該是一樣的污水處理廠處理軟體開發的全過程。方案設計應易於保證正確性,也便於驗證正確性。 1969年,提出了結構化程序設計方法,在1970年,第一個結構化的編程語言-P ascal語言,標志著結構化程序設計開始的時期。
8月初開始,在軟體設計的思想,產生了革命,其結果是一個面向對象的編程。幾乎所有的面向過程的高級語言的程序在執行前,是一個的管道像一個模塊執行完成前,人們不能做任何事情,不能動態地改變方向的實施方案。這是不符合的一天到一天的事情,人們希望發生的一件事,一件事,那就是,而不是面向過程的,而應該是面向應用程序的功能,是對象(object)。方法集成軟體,作為硬體的一些通用的IC,生產,密切的功能模塊的包稱為軟體歧管,它具有與特定的應用程序無關,但可以結合對方,以執行特定應用程序的功能,而反復使用。用戶只關心介面(輸入和輸出),並能實現,如何實現,這是一個內部問題,用戶完全不關心,
C + +,VB,D elphi是一個典型的代表。
下一個高層次的語言發展目標的應用程序,換句話說,只需要告訴你想要做的程序,該程序可以自動生成演算法,自動處理,這是程序的編程語言。 (VC + +是一個高層次的面向對象的語言,VISUAL C + +是不是一種語言,只是開發工具,C和C + +是他的語言)

Ⅳ 10年前的編程用的語言是不是都是c語言

程序員》推薦C++ 圖書三人談

主持人:熊節(透明),《程序員》雜志編輯,C-View成員
嘉 賓:孟岩(夢魘),聯想公司掌上設備事業部應用開發處任職,C-View成員。與侯捷先生合譯《C++ Standard Library》一書
金尹(惡魔),上海天宇公司CTO,在《程序員》連載有「自由與繁榮的國度」系列文章

透明:「學C++用哪本書入門」,這是被問得最多的一個問題。但是哪一本書是最好的入門書?似乎很難找到答案。《C++ Primer》太厚,《Effective C++》對讀者要求比較高,《Essential C++》又常常被批評為「太淺」。
其實說穿了:no silver bullet。想從一本書學會C++,那是不可能的。有朋友問我如何學C++,我會建議他先去找本數據結構書,把裡面的習題全部用C++做一遍,然後再去看《Effective C++》。myan經常說「要在學習初期養成好習慣」,我對此頗不以為然。
個人認為,《Essential C++》適合作教材,《C++ Primer》適合作參考書,《Effective C++》適合作課外讀物。

惡魔:很後悔當初買了《C++ Primer》。因為從我個人角度來看,它的功能效用基本是和《The C++ Programming Language》重合。當然對於入門來說,它還是很不錯的。但是《C++ Primer》太厚,一來導致看書極其不方便,二來系統學習需要花比較長的時間。對於目前這個越來越快餐化的時代來說,的確有很多不適合的地方,不過可以作為初學者的參考書。現在我以一塊K3 CPU的代價把它借給了別人,希望我那位同事能夠從中得到一些益處。
如果已經具備了C基礎,我建議看國內的書,例如錢能的《 C++大學教程(第二版) 》。(如果沒有C的基礎還是看譚浩強的C語言)。這本書對C講得還算比較清晰,有很多習題值得一做,特別是最後的struct和union兩個部分。其中的一些演算法比較拖沓和繁瑣(比如樹和鏈表的遍歷演算法),讀者可以嘗試修改這些例子,作為最後對C語言的一些總結測試。

夢魘:這個問題讓我想起四五年前的情形。今天對於C++有一點認識的人,多半是從那幾年就開始學C++了。那時根本沒有品牌觀念。從書店裡找一本C++書,如果看著還算明白,就買下來。我記得那時候宛延闓、張國鋒、麥中凡教授的書都受到很高的贊譽。我個人最早的一本C++書是Greg Perry的一本書,今天想起來,其實是一本打著C++旗號的C語言教程。對我作用最大的一本書是國防科技出版社出版的一本書,書名記不得了,作者叫斯蒂芬·布萊哈。
透明:還記得以前曾批評過一本C++書,是北航出的,整本書就沒有出現過class關鍵字。那本書,說穿了其實只是介紹了C語言和iostream庫的用法,根本不能算C++。而當時我常常推薦的一本書是電子科技大學張松梅老師的C++教程。那本書,直到今天來看也沒有太大的問題,唯一的缺憾就是由於年代久遠,許多東西已經過時了。而對於一本技術書籍來說,「過時」是最不可接受的。
總體來說,那時使用C++的人真是在「盲人摸象」。不過這也有好處,就是對C++的很多細節能搞清楚,以後看到經典好書時比較容易理解;當然壞處就是概念不清,甚至都不知道C++和Visual C++、Borland C++到底有什麼不一樣。

夢魘:整個90年代,其實大部分人對於C++的認識都似是而非。一開始是等同於Borland C++,後來是等同於Visual C++和MFC。所以一般來說,打著BC和VC旗號的書賣得很好,人們覺得這就是C++。而我比較幸運,布萊哈的那本書雖然從現在的眼光來看談不上高超,但基本路子是對的。可能是因為原書是給UNIX程序員的培訓教材,所以沒有讓我一開始就形成「C++ == VC++」的認識。
其實一直到1996年,我們那裡搞計算機的都是唯Borland C++馬首是瞻的,到了VC 4.0出來,一下子格局全變了。1997年VC5推出之後,書店裡MFC書鋪天蓋地,學MFC的人,頭抬得都比別人高一些。不過現在看來,那時候大部分的MFC書都是三流貨色。我曾經有一段時間認為,那一批程序員中間有不少被誤導了。根本原因就是相對的封閉。

透明:我覺得一本書的價值有兩方面:第一,教給你實用的技術;第二,促使你去思考。對於一本介紹VC(或者說MFC)使用方法的書,我根本不希望它能促使我有什麼思考,所以我就一定要求它在技術上精益求精完美無瑕。我剛開始用VC的時候,買的第一本書就是潘愛民老師翻譯的《VC技術內幕》(第四版),沒有受到那些「三流貨色」的誤導,應該說是很幸運的。

夢魘:1999年機械工業出版社開始出版「計算機科學叢書」,其中的《Thinking in C++》第一版受到了廣泛的歡迎。其實我一直不認為這本書很出色,雖然拿過一次大獎。然而我們都得承認,這本書在C++書籍領域里第一次建立了品牌觀念,很多初學者開始知道,不是隨便買哪一本都一樣的。再往後就是2000年的《 深入淺出MFC(第二版) 》第二版,以及侯先生在《程序員》上發表的那一篇《C++/OOP大系》,加上整個大環境的變化,品牌觀念深入人心,C++書籍市場終於開始逐漸與世界同步。
回想往事,我的感覺是,那個需要戰戰兢兢選擇入門書的時代已經過去,今天的C++初學者,大可以放心地買口碑好、自己讀起來思路順暢的書,入門不再是太大的問題。還有一些程序員已經學了幾年C++,但看到今天出版的一些新書,感覺比較陌生,這也不是什麼問題。侯先生經常說「凡走過必留下足跡」,所謂「走彎路」,未必不是一件好事。
至於具體的推薦表,就不好一概而論了。總之在我的印象里,《Essential C++》、《C++ Primer》、錢能教授的C++教程,都不錯。甚至有人一上來就看Bjarne Stroustrup的《The C++ Programming Language》,只要他喜歡,也沒什麼不可以。

透明:我同意你的觀點。不管怎麼說,編程是門實踐性非常強的學問。要想對C++對象模型有深入的了解,最好的辦法就是寫一串程序去看結果;要想學會OOP,也只能從項目中學。對於初學者,最好的學習方法就是不停地寫程序,寫真正有用的程序,寫到有問題的時候就去查書,於是自然就會知道哪本書好哪本書不好。不過我們的教育制度能不能讓大學里的學生們有這樣的學習機會,我表示懷疑。
以我的經驗,學C++有兩個門檻:入門和使用。完全看不懂C++,這是一個門檻,但是只要有一本合適的入門書,很快就能跨過。要想真正用上C++,卻不是件很容易的事情。尤其對於學生來說,接觸到的東西多是「玩具」,很難有實戰的機會。所以經常看見有人問「C++到底能做什麼」,這是C++學習中一個比較麻煩的問題。我們都是做了相當長時間的C++程序之後才看到一些真正經典的書,也正是因為走了相當長的彎路之後才知道這些書的經典之所在。所謂彎路,我想也是一種必須的積累。就算一開始就看《Essential C++》和《C++ Primer》,沒有兩三年的時間恐怕還是難有所得。

惡魔:有兩句十分有道理的話,一是我大學的C語言老師說的「寫程序不如說是抄程序」,另一句是一網友說的「好的設計來自借鑒,天才的設計來自剽竊」。對於我這個理性批判主義者來說,這兩句話的確不太適合。但是無論從哪個角度來講,對於初學者來說,剽竊大師的作品是通向成功的最快捷徑。
我個人認為,對於C++的初學者來說,首先要確定自己專業領域內主要使用的特性的方向。因為C++的特性如此眾多,初學者想貪多基本是不可能成功的。C++的編程範式基本可以分為ADT+PP、GP和OO三個方向。對於ADT+PP範式來說,初學者的主要問題不是學習C++,而是學習C的使用。對於這樣的初學者,國內的幾本書還是寫得比較清楚,符合中國人的習慣,比如譚浩強的《C語言教程》、錢能的《C++語言大學教程》。這兩本書我首推第一本,因為這一本我潛心研究了一年,這本書當中很多程序是可以剽竊的,而且可以對這些程序進行加工和提升。比如結構這一章中,它所給出的用struct來實現鏈表、二叉樹的演算法是相當蹩腳的。學習ADT+PP的初學者將這本書揣摩透以後可以嘗試修改這兩個程序。另外這本書的第二版稍微涉及了一些關於「類」的內容。學習ADT+PP的初學者,可以不被OO中的一些專有特性擾亂自己的思路,對於類層次扁平、無繼承、無多態的程序編寫是有很大好處的。

透明:你好象比較推崇國內教授寫的書。現在社會上有種不好的風氣:一捧就捧上天,一貶就貶下地。就好象對待譚教授的書,前幾年是奉為經典,這幾年又有很多人使勁批評。學C++更是有點「崇洋媚外」,總是覺得初學就應該看《Essential C++》。我看這種觀點也是片面的。

惡魔:當然《Essential C++》也值得看看。但是我個人覺得這本書沒有譚浩強的《C語言教程》來得好。主要原因是:第一,C++的所有特性都點到了,但是不深,看了以後會三心二意沒有方向;第二,可以抄襲借鑒的例子太少。《C語言教程》中有很多有趣的問題,比如猴子吃桃、漢諾塔等等,這些例子對於剛剛涉及C/C++語言編程的人來說是學習編程很好的例子。《Essential C++》只能是前兩本書看透以後,作為學習C++特性的一個過渡性的書籍。讓讀者真正領略到什麼是C++的編程、和C編程的不同點在哪裡。

透明:我發現一個很有趣的現象:初學者往往喜歡問「哪本書比較好」,這讓我很是不解。這有點像一個剛學打籃球的人問「王治郅和科比誰比較厲害」。當然科比更厲害一些。但如果你是想學打籃球,這兩個人都非常非常有資格教你,你跟誰學都能學得很強——關鍵不是在於你選哪個老師,而是在於你自己用多少功夫去學。

透明:回到原來話題。學會了C++的語法,能看懂C++代碼之後,必須有些書來指導進階(或者叫指點迷津)。我覺得《設計模式》很好,能夠讓讀者看到一些精妙的用法。不過正如我經常說的,模式帶來的麻煩和好處一樣多,甚至麻煩還要更多。而且,C++本身的問題使得在C++中使用GoF模式愈加麻煩。

夢魘:《Design Patterns》這本書絕對是不可以沒有的,而且中英文版都不可少。最初我看中文版,說實話看不懂,但是也不覺得人家翻譯得不好,所以就想,大概是原文就很難懂,加上自己水平有限。於是總是想著再找幾本patterns的書來看。後來找到幾本書,口碑還不錯,不過水平高下,一比就出來了,還是那本《Design Patterns》最經典,最耐看。英文版出來之後,兩個版本對照看,明白多了。現在覺得,其實就設計模式來講,把這本看明白了就很不錯了,不用再花費很多心思找其他的書。我現在的包里始終夾著這本書,隨身攜帶,有備無患。
至於說設計模式的副作用,和可能帶來的弊端,我的體會也挺多。不過是這樣,我們想一想,究竟什麼情況下設計模式可以用得很好呢?一種是有經驗豐富的人引導,比如要是Robert Martin帶隊,你在某個地方用錯了設計模式,他就會指出來,說這里不對,將來會產生什麼樣的弊端。對於他來說,豐富的實踐經驗足以支持他進行「預測型」設計。但是大部分人沒這個能力,因此我們只好走第二條路和第三條路,就是「試探型」設計和「重構型」設計。遇到一個問題,你覺得用某種模式挺合適的,就大膽地用了,成功是積累經驗,發現不好,出了問題了,只好改回來,那也是積累教訓。這叫做「試探型」。至於重構,應該算是最有組織、成功率最高的工程化方法。先把問題「quick and dirty」地解決了,所有的暗礁都暴露出來,然後再根據實際情況採用合適的模式優化設計。現在XP和UP都高度重視refactory,UP在Elaboration和Construction階段都鼓勵抽出專門的iterations進行重構。所以說如果組織快速的軟體開發,當然比較傾向於這條路——打成功率嘛。

透明:講到重構,我順便說說《Refactoring》這本書的影響。從工程本身的角度來說,你所謂的「重構型設計」是沒有什麼問題的。但中國的開發者(也包括我在內)往往比較沖動,比較容易相信銀彈的存在。曾經有那麼一段時間,我在Java中嘗試過了重構的方法之後,又拿到C++中去嘗試。結果發現,在Java中速度非常快的重構過程,到C++中就被減慢了。究其原因,就是因為C++和Java的約束條件不同。拿著Java中成功的案例直接套C++,不失敗才怪。
所以,我必須說:《Refactoring》這本書很有價值。但對於C++程序員來說,它的價值是讓你思考,思考這種方法的可行性。如果一個C++程序員沒有打算遷移到Java,那麼我必須告訴他:《Refactoring》這本書不是讓你照著它用的,甚至不是讓你去相信它的。對於C++程序員,《Refactoring》全書可以放心相信的只有第13章,其他的部分,都必須非常謹慎地對待。

夢魘:我還要就「試探型」的方法多說兩句,我覺得對於個人發展來講,「試探」也是必不可少的,撞牆不可怕,高水平的人不都是撞出來的嗎?你失敗了一次,就知道這個模式有什麼潛在的問題,下次再用,就會多看幾步,像下棋似的。撞的多了,路數就出來了。
我不知道你們是否有這個感覺:用錯了模式,吃了虧,再回過頭去翻翻《Design Patterns》,看到人家早就指出來這個問題,不過就是那麼幾句話,原來看上去乾巴巴的,現在覺得句句都講到心坎上,GoF的形象馬上就高大起來,還帶著光環,感覺是既興奮又懊悔。

透明:現在回頭來看,我更欣賞myan推薦給我的《Designing Object-Oriented C++ Applications Using Booch Method》。這本書能夠幫助C++程序員理清思路培養習慣,可惜國內沒有引進。相比後來商業味濃厚的UML系列書籍,我覺得這本書對於面向對象的闡釋精闢獨到,至今未有能出其右者。

夢魘:剛才我們兩人都說到Robert Martin,他可是我的榜樣。那本1995年的《Designing Object Oriented C++ Application》,我覺得是每一個C++軟體工程師都應該反復研讀的書。可惜不僅國內沒有引進,在國外的名氣也不大。如果你覺得面向對象的那些道理你好像都明白,可就是一遇到實際問題就使不上勁,那這本書就是你的最佳導師。
提到理清思路,還有一本書不得不提,就是Andrew Koenig的《Ruminations On C++》。每個人都應該問自己,我學了這么多年的C++,究竟什麼是C++最基本的設計理念?遇到問題我第一個直覺是什麼?第一個試探型的解決方案應該具有那些特點?如果你不能給出明確的答案,就應該認真地去讀這本書,讀完了你就有了「主心骨」。

透明:插一句話,談談「推薦書」的問題。入門書基本上是放之四海而皆準的,所以推薦的意義也不大。而入門後的發展方向,每個人不同,這個時候就需要「高人」的指點。舉個例子:我學C++的時候,myan還不認識我,所以也沒有給我推薦書,我還是學過來了,所以即使你當時向我推薦了《Essential C++》或者《C++ Primer》,我也不會太感謝你;但在我認真研究OO的時候,你推薦Robert Martin那本書給我,對我幫助就特別大,而且我從別的地方也很難找到類似的推薦,所以我就很感謝你。
一個程序員,必須有framework的意識,要學會用framework,還要主動去分析framework(在這方面,《Design Patterns》能有一定的幫助)。但是,真正高質量、成氣候的framework的書恐怕也就只有針對MFC的。從這個角度來說,MFC縱有千般不是,C++程序員都非常有必要先去用它、熟悉它、研究它,甚至藉助《深入淺出MFC》這樣的書來剖析它。不然,很難有framework的意識和感覺。
當然,另一個framework也很好,那就是STL。不管用不用MFC、STL,對這兩個東西的掌握和理解都是極有幫助的。最近我又在看《深入淺出MFC》,雖然已經不用MFC編程了,但幫助是一定有的。

夢魘:MFC和STL方面,我還是比較推崇侯先生的兩本書《深入淺出MFC》和《STL源碼解析》。
《深入淺出MFC》這本書,名氣自然是大得不得了,不過也有不少人批評。其實書也沒有十全十美的,批評當然是少不了的,不過有的時候我看到有人評論這本書,把它跟Inside VC相比,真的是牛頭不對馬嘴。
你剛才其實說得很對,程序員應該有一點framework意識。而這本《深入淺出MFC》與其說是在講MFC編程,不如說通篇是在拿MFC為例分析Application Framework的架構和脈絡。所以無論你對於MFC本身是什麼態度,這本書對每一個C++程序員都有很大的益處。

透明:是的。《VC技術內幕》會告訴你「DYNAMIC_CREATE這個宏怎麼用」,《深入淺出MFC》則告訴你「DYNAMIC_CREATE這個宏是怎麼實現的」。所以,如果你只需要在VC下寫一些小應用程序,《深入淺出MFC》的價值並不太大;但是,如果你需要設計一個稍微大一點的東西(不一定是framework),MFC的設計思想就會有所幫助。

夢魘:另外,我覺得對於MFC也應該有一個公允的評價。過去是吹捧得天上有地下無,書店裡鋪天蓋地都是MFC的書,搞得大家只知有MFC,不知有C++,甚至直到現在還有人問:「我是學MFC呢,還是學C++?VC++是不是比C++更高級的語言?」MFC成了一尊神像,阻礙了人們的視線。所以得把它從神壇上拉下來。這就是過去一兩年有很多人,包括我在內批評MFC的一個目的。可是現在大家視野開闊了,.NET也出來了,MFC不再是神像了,少數人就開始以貶損MFC為樂了。我覺得這種態度是不對的。
什麼叫好的框架?我覺得在十幾年的時間能夠象MFC這樣保持穩定並且不斷進步的框架就是好的框架。可能我們在一些具體的設計問題上有不同看法,覺得「這個地方這么設計不是更漂亮嗎?」很多時候是的,但是這不重要,重要的是MFC成熟穩定、有十幾年的成功經驗,這是最了不起的東西。
另外一點,MFC中間包括著學習Win32 API編程的最佳資料。這是除了其framework方面之外的另一個亮點。我現在使用Win32 API開發,但是經常參考MFC的源代碼,收獲很大。

透明:STL方面,我對於剖析它的源代碼興趣並不大,畢竟裡面源代碼多是演算法問題。所以,《STL源碼剖析》我也只是隨便翻翻就束之高閣了。我覺得這本書用來做計算機系的數據結構和演算法教材不錯,不知道有沒有老師樂意這樣做。
對於STL,我的態度一向都是「應用至上」。不過,我一直認為SGI STL本身就是一本精彩的書,一本數據結構和演算法的經典參考書,同時也是泛型技術的參考書。想知道一個演算法是如何實現的,看看STL源代碼就行;想知道如何使用type traits,STL源代碼裡面也有例子。看別人寫的書,總覺得隔著一層紗,有點撓不到癢處的感覺。SGI STL的代碼寫得非常漂亮,一個C++程序員如果不看看這本書,實在是可惜。

夢魘:至於STL,除了《STL源碼解析》之外,我舉賢不避親,強烈推薦侯先生與我合譯的那本《The C++ Standard Library》。這本書質量之高是無需懷疑的。我現在手邊常備此書,隨時查閱,對我幫助很大。

透明:C++和Java相比,最大的優勢就是它沒有一個專門的公司來管它,最大的弱點也是它沒有一個專門的公司來管它。Java程序員在學會簡單的語法之後,立刻進入SUN提供的framework,一邊用這個現成的framework做實際開發,一邊在開發過程中繼續學習Java一些幽深的特性。而這個時候,C++程序員恐怕還在問「VC和BCB哪個好」呢。這無疑是浪費時間。

夢魘:剛才你說Java和C++的優劣,這個話題已經成了我們這個年代永不消失的聲波了。我也不想再談這個。不過有一點我得說清楚:現在我們很多用C++的人吃了不少苦頭,探過脖子去看看Java,覺得它真是太可愛了,這種印象是不準確的。另外,Java也不簡單,而且會越來越龐大復雜。在很多場合,Java還不具有競爭力。至於將來如何,我看有些Java愛好者也過分樂觀了,似乎計算機科學界幾十年解決不了的問題都可以借著Java的東風解決掉,恐怕沒那麼容易。

透明:那當然。我再次強調:No Silver Bullet。讀書很重要,但古人說「行萬里路,讀萬卷書」,還是把「行路」放在「讀書」前面。尤其對於技術書籍,如果它不能幫我解決問題、不能給我帶來非常實際的利益,那麼我是不會去讀它的。惡魔說得對,我們這個社會很快餐,我們這個行業尤其很快餐,我們也只能努力適應它。

閱讀全文

與最早編程加工語言相關的資料

熱點內容
2355解壓軟體 瀏覽:817
php有多線程嗎 瀏覽:446
程序員的七 瀏覽:284
淘寶app的主頁為什麼是灰色的 瀏覽:885
安卓手機怎麼給抖音升級 瀏覽:594
matlab圖形命令 瀏覽:927
app中國國稅發票哪裡轉發 瀏覽:522
usb給單片機充電電路 瀏覽:445
java刪除上傳 瀏覽:748
泉城辦app如何辦理房產證 瀏覽:794
android動態改變高度 瀏覽:88
spss命令 瀏覽:491
雲終端伺服器連接 瀏覽:215
androidsqlite3加密 瀏覽:317
python判斷二維數組 瀏覽:770
於右任標准草書pdf 瀏覽:384
哪裡下載素材庫app 瀏覽:648
pc控制單片機 瀏覽:543
php並發多少 瀏覽:574
php中crypt 瀏覽:162