导航:首页 > 编程语言 > 最早编程加工语言

最早编程加工语言

发布时间: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。读书很重要,但古人说“行万里路,读万卷书”,还是把“行路”放在“读书”前面。尤其对于技术书籍,如果它不能帮我解决问题、不能给我带来非常实际的利益,那么我是不会去读它的。恶魔说得对,我们这个社会很快餐,我们这个行业尤其很快餐,我们也只能努力适应它。

阅读全文

与最早编程加工语言相关的资料

热点内容
区块链属性加密 浏览:993
小米k30怎么创建文件夹 浏览:383
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