編程
編程,是編定程序的中文簡稱,就是讓計算機代為解決某個問題,對某個計算體系規定一定的運算方式,使計算體系按照該計算方式運行,並最終得到相應結果的過程。
編程 | |
---|---|
為了使計算機能夠理解(understand)人的意圖,人類就必須將需解決的問題的思路、方法和手段通過計算機能夠理解的形式告訴計算機,使得計算機能夠根據人的指令一步一步去工作,完成某種特定的任務。這種人和計算體系之間交流的過程就是編程。[1]
編程:設計具備邏輯流動作用的一種"可控體系"【注:編程不一定是針對計算機程序而言的,針對具備邏輯計算力的體系,都可以算編程。】
目錄
編程語言
在計算機系統中,一條機器指令規定了計算機系統的一個特定動作。一個系列的計算機在硬件設計製造時就用了若干指令規定了該系列計算機能夠進行的基本操作,這些指令一起構成了該系列計算機的指令系統。在計算機應用的初期,程序員使用機器的指令系統來編寫計算機應用程序,這種程序稱為機器語言程序。使用機器語言編寫的程序,由於每條指令都對應計算機一個特定的基本動作,所以程序占用內存少、執行效率高。缺點也很明顯,如:編程工作量大,容易出錯;依賴具體的計算機體系,因而程序的通用性、移植性都很差。[2]
為了解決使用機器語言編寫應用程序所帶來的一系列問題,人們首先想到使用助記符號來代替不容易記憶的機器指令。這種助記符號來表示計算機指令的語言稱為符號語言,也稱匯編語言。在匯編語言中,每一條用符號來表示的匯編指令與計算機機器指令一一對應;記憶難度大大減少了,不僅易於檢查和修改程序錯誤,而且指令、數據的存放位置可以由計算機自動分配。用匯編語言編寫的程序稱為源程序,計算機不能直接識別和處理源程序,必須通過某種方法將它翻譯成為計算機能夠理解並執行的機器語言,執行這個翻譯工作的程序稱為匯編程序。
匯編程序。使用匯編語言編寫計算機程序,程序員仍然需要十分熟悉計算機系統的硬件結構,所以從程序設計本身上來看仍然是低效率的、繁瑣的。但正是由於匯編語言與計算機硬件系統關係密切,在某些特定的場合,如對時空效率要求很高的系統核心程序以及實時控制程序等,迄今為止匯編語言仍然是十分有效的程序設計工具。
但它有不可替代的特性,比如一些單片機或者一些直接控制硬件的程序就一定要用匯編語言
高級語言
高級語言是一類接近於人類的自然語言和數學語言的程序設計語言的統稱。按照其程序設計的出發點和方式不同,高級語言分為了面向過程的語言和面向對象的語言,如Fortran語言、C語言、漢語程序設計語言等都是面向過程的語言;而以C++、Smalltalk等為代表的面向對象的語言與面向過程語言有着許多不同,這些語言支持"程序是相互聯繫的離散對象集合",這樣一種新的程序設計思維方式,具有封裝性、繼承性和多態性等特徵。
高級語言按照一定的語法規則,由表達各種意義的運算對象和運算方法構成。使用高級語言編寫程序的優點是:編程相對簡單、直觀、易理解、不容易出錯;高級語言是獨立於計算機的,因而用高級語言編寫的計算機程序通用性好,具有較好的移植性。用高級語言編寫的程序稱為源程序,計算機系統不能直接理解和執行,必須通過一個語言處理系統將其轉換為計算機系統能夠認識、理解的目標程序才能被計算機系統執行。
執行原理
計算機對除機器語言以外的源程序不能直接識別、理解和執行,都必須通過某種方式轉換為計算機能夠直接執行的。
這種將高級程序設計語言編寫的源程序轉換到機器目標程序的方式有兩種:解釋方式和編譯方式。
解釋方式下,計算機對高級語言書寫的源程序一邊解釋一邊執行,不能形成目標文件和執行文件。
編譯方式下,首先通過一個對應於所用程序設計語言的編譯程序對源程序進行處理,經過對源程序的詞法分析、語法分析、語意分析、代碼生成和代碼優化等階段將所處理的源程序轉換為用二進制代碼表示的目標程序,然後通過連接程序處理將程序中所用的函數調用、系統功能調用等嵌入到目標程序中,構成一個可以連續執行的二進制執行文件。調用這個執行文件就可以實現程序員在對應源程序文件中所指定的相應功能。
語言沿革
1946
Konrad Zuse,一位德國工程師,他躲藏在巴伐利亞附近的阿爾卑斯山上時,獨立開發了Plankalkul。他把該項成果應用在其它的事物中,比如國際象棋。
1949
Short Code ,第一種真正在電子計算設備上使用的計算機語言,儘管他是一個純手工編譯的的語言。
1951
Grace Hopper,為Remington Rand工作,是在第一個著名的編譯器--A-o上開始設計工作。當Rand在1957年發布這個語言時,它被稱為MATH-MATIC。
1952
Alick E. Glennie ,他利用自己在曼徹斯特大學的課餘時間,發明了一個名為AUTOCODE的編程系統,一個未能成型的編譯器。
1957
FORTRAN--數學公式轉換系統(FORmula TRANslating,FORTRAN名字的由來)--出現。開發隊伍的領導者是John Backus,並且他還為ALGOL的開發和巴柯斯範式(BNF)做出了貢獻。
1958
FORTRAN II出現,它能夠處理子程序和連接匯編語言。由M.I.T的John McCarthy在LISP-LISt Processing上開始設計工作。原始ALGOL規範出現。該規範並未描述數據的輸入輸出方式;這些問題都留給獨立的實現者。
20世紀六十年代末
Pascal 由瑞士Niklaus Wirth教授於設計並創立,具有簡潔的語法,結構化的程序結構,是結構化編程語言,在許多學校的計算機語言課上教授的都是Pascal語言。
創建COBOL
1959
LISP1.5出現。COBOL在數據系統和語言大會(Conference on Data System and Languages)上被創建了。
編譯器出現
1960
ALGOL 60 ,第一種結構化語言出現。它是結構化語言家族樹中的根節點,並最終產生Pascal這樣的語言。ALGOL成為六十年代中期至末期歐洲最為流行的語言。
六十年代早期,Kenneth Iverson開始語言方面的工作,最終產生了APL-A編程語言。它使用專門的字符集,為了正確地使用,你還需要兼容APL的I/O設備。
1962
APL被寫入Iverson的《A Programming Language》一書中。
FORTRAN IV出現。
SNOBOL這個以"首字母拼詞命名"的產品,在工作的初期就取得了絕對的成功,SNOBOL--面向字符串符號(StriNg Oriented symBOlic Language)語言。它衍生了其他一些以首字母拼詞命名的產品:FASBOL,一個SNOBOL編譯器(1971年),還有SPITBOL--Speedy ImplemenTation of snoBOL--同樣在1971年。
1963
ALGOL 60進行修正。
PL/1的工作開始。
1964
APL\360被實現。
在達特茅斯大學,John G.Kemeny和Thomas E.Kurtz教授發明了BASIC。最初的實現是一個編譯器。第一個BASIC程序在1964年五月一日下午四點運行。PL/1發布。
1965
SNOBOL3出現。
1966
FORTRAN 66出現。
LISP 2出現。
在Bolt,Beranek和Newman開始了LOGO的工作。小組的頭是Wally Fuerzeig,而且還包括Seymour Papert。LOGO中最著名的便是"龜作圖"。
1967
SNOBOL4,功能獲得極大加強的SNOBOL,出現了。
1968
ALGOL 68,相對於ALGOL 60它是個怪物。一些規範委員會的成員--包括C.A.R.Hoare和Niklaus Wirth--卻贊同該計劃。事實證明ALGOL 68是難以實現的。
ALTRAN,一個FORTRAN的變種出現。
COBOL被ANSI正式定義規範。
Niklaus Wirth開始Pascal方面的工作。
1969
500人參加在紐約Armonk的IBM總部召開的APL會議。APL的分發需求如此之大,該活動此後被人們稱為"The March on Armonk"。
程序編寫
1970
70年代早期,Charles Moore在他的語言Forth中寫下了第一個有意義的程序。
Prolog方面的工作大約在此時開始了。
同樣是在70年代早期的某一天,Xerox PARC由Alan Kay領導,開始了Smalltalk的設計工作。早期版本包括Smalltalk-72,Smalltalk-74和Smalltalk-76。
Pascal在CDC 6000-series電腦上的一個實現出現了。
Icon,SNOBOL4的一個後代產品問世。
1972
Konrad Zuse寫的關於Plankalkul(見1946年)手稿終於出版了。
Dennis Ritchie設計了C。但是最終的參考手冊卻是在1974年發布的。
Prolog的第一個實現--Alain Colmerauer和Phillip Roussel的功勞。
1974
另一個COBOL的ANSI規範出現。
1975
Tiny BASIC,由Bob Albrecht和Dennis Allison設計(由Dick Whipple和John Arnold實現),運行在2KB內存的微型計算機上。一台4KB的機器是較為合適的,它將有2KB的內存應用於這個程序上。
Bill Gates和Paul Allen編寫的一個BASIC版本以抽取每份拷貝版稅的形式銷售給MITS(Micro Instrumentation and Telemetry Systems)。MITS生產Altair,這是一種8080結構的微型計算機。
Scheme,一個LISP的"方言",由G.L. Steele和G.J. Sussman設計。
Pascal用戶手冊和報告出版,Jensen和Wirth編寫。許多人至今都認為它是Pascal方面權威的參考書籍。
B.W. Kerninghan描述了RATFOR--RATional FORTRAN。它是預處理程序,並且允許在FORTRAN中使用類C的控制結構。RATFOR被應用到了Kernighan和Plauger的"Software Tools"中,它出現在1976年。
PostScript
1976
Design System Language出現,它被認為是PostScript的先驅。
1977
MUMPS的ANSI標準出現--麻省總醫院多用途程序設計系統(Massachusetts General Hospital Utility Multi-Programming System)。MUMPS最初被用來處理醫療記錄,它只能識別字符串類型。隨後被重新命名為M。
設計競賽將導致Ada的產生。由Jean Ichbiah帶領的Honeywell Bull隊伍,即將贏得比賽。
Kim Harris和其他人建立了FIG,一個FORTH興趣小組。他們開發了FIG-FORTH,售價大約為20美元。
70年代晚期的某天,Kenneth Bowles設計出了UCSD Pascal,它使得Pascal可以用在PDP-11和基於Z80 的電腦上。
Niklaus Wirth開始設計Modula,它Modula-2的先行者,Pascal的繼承者。
語言程序
1978
AWK--一個文本處理語言,以它設計者Aho、Weinberger和Kernighan的名字命名。
FORTRAN 77的ANSI標準出現。
1980
Smalltalk-80出現。
Modula-2出現。
Franz LISP出現。
Bjarne Stroustrup開發了一個語言集--被總稱為"C With Classes"--它成為C++的滋生土壤。
1981
Effort開始成為一個LISP的"公共方言",常被人稱作Common LISP。
日本開始第五代電腦系統工程。主要語言是Prolog。
1982
ISO Pascal出現。
PostScript出現。
1983
Smalltalk-80公布:它由Goldberg等人完成。
Ada出現。他的名字來自Lovelace女伯爵Augusta Ada Byron,她是英國詩人拜倫的女兒。因其在巴貝奇分析機上設計了解伯努利方程的一個程序,而被譽為第一位女程序員。在1983年,國防部指導的全新"任務評定"應用程序是使用該語言編寫的。
1983年的後期和1984年早期,微軟和Digital Research共同發布第一個微型計算機的C編譯器。
七月,第一個C++實現露面。該名稱是由Rick Mascitti取的。
11月,Borland的Turbo Pascal的"衝擊"猶如一場核風暴,這得益於《BYTE》雜誌的廣告。
1984
APL2的參考手冊面世。APL2是APL的擴展,它允許嵌套數組。
1985
Forth控制着潛水器定位泰坦尼克號的殘骸。
Vanilla SNOBOL4之微機版發布。
Methods,PC上的面向行(line-oriented)的Smalltalk出現。
微機版本
1986
Smalltalk/V露面--第一個廣泛應用於微機的Smalltalk版本。
Apple公司為Mac機器發布Object Pascal。
Borland發布Turbo Prolog。
Charles Duff發布Actor,一個開發微軟Windows應用程序的面向對象語言。
Eiffel,另外一個面向對象語言出現。
C++露面。
1987
Turbo Pascal 4.0發布。
1988
CLOS規範--公共LISP對象系統(Common LISP Object System)--發表。
Niklaus Wirth完成Oberon,這是他繼Modula-2的後續行動。
1989
ANSI C規範公布。
C++2.0形成了一個參考手冊的初稿。2.0版本增加了諸如多繼承和成員指針等特性。
1990
C++2.1,B.Stroustrup等作者的《Annotated C++ Reference Manual》一書出版。這個版本增加了模板和異常處理特性。
FORTRAN 90包含了眾多新元素比如case語句和派生類型。
Kenneth Iverson和Roger Hui在APL 90會議上提出了J語言。
1991
Visual Basic在COMDEX春展會上獲得《BYTE》雜誌頒發的最佳表現獎。
1992
Dylan--以Dylan Thomas命名--由Apple公司發布的一個類似Scheme的面向對象語言。
1993
ANSI發布X3J4.1技術報告--面向對象的COBOL提議初稿。真正的標準預計在1997年完成。
1994
微軟將Visual Basic for Application整合到Excel中。
1995
二月,ISO接受Ada語言1995修訂版。它被稱為Ada95,其中包括OOP特性和支持實時系統。
1996
第一個ANSI C++標準預發布。
語言目錄
C語言 即中文版的C語言
O語言 O語言是一款中文計算機語言(或稱套裝:O匯編語言、O中間語言、O高級語言)
- AAuto是專用於桌面軟件快速開發的新型混合型編程語言,
- APL、A+和J
- Ada是一種表現能力很強的通用程序設計語言
- ActionScriptActionScript是Flash的腳本語言,與JavaScript相似,ActionScript是一種面向對象編程語言。
- AWKAWK是一種優良的文本處理工具
- Basic是一種設計給初學者使用的程序設計語言
- Brainfuck是一種極小化的計算機語言
- C++、C#: C語言是一種面向過程的計算機程序設計語言; C++是一種靜態數據類型檢查的,支持多重編程範式的通用程序設計語言。它支持過程化程序設計、數據抽象、面向對象程序設計、製作圖標等等泛型程序設計等多種程序設計風格。C#是微軟公司發布的一種面向對象的、運行於 .NET Framework 之上的高級程序設計語言。
- CSSCascading Style Sheets 層疊樣式表
- Clipper主要用於商業活動的計算機通信網
- COBOL一種適合於商業及數據處理的類似英語的程序設計語言
- dBASE是第一個在微型計算機上被廣泛使用的數據庫管理系統(DBMS)
- 匯編語言(Assembly Language)是面向機器的程序設計語言
- 易語言是全中文語言編程中最為強大的一個編程語言
- HTML是一種超文本標記語言,標準通用標記語言下的一個應用。
- Forth由Charles H. Moore發展出來在天文台使用的電腦自動控制系統及程序設計語言,允許使用者很容易組合系統已有的簡單指令,定義成為功能較複雜的高階指令。
- Fortran譯為"公式翻譯器",它是世界上最早出現的計算機高級程序設計語言,廣泛應用於科學和工程計算領域。
- FoxPro是由美國Fox Software公司於1988年推出的數據庫產品
- F#是由微軟發展的為微軟.NET語言提供運行環境的程序設計語言
- Fava語言是一個小型的解釋語言,它主要面向於系統測試領域及小型嵌入式設備。
- IDL是一種數據分析和圖像化應用程序及編程語言
- Go語言是谷歌2009發布的第二款開源編程語言。Go語言專門針對多處理器系統應用程序的編程進行了優化,使用Go編譯的程序可以媲美C或C++代碼的速度,而且更加安全、支持並行進程。
- Java是由Sun Microsystems公司於1995年5月推出的Java程序設計語言,他是一種面向對象的跨平台語言,可以在多種平台上運行。支持開源。大量的類庫。大量的開源項目。是一種非常強大的編程語言!
- JavaScript是一種由Netscape的LiveScript發展而來的腳本語言
- J#、Visual J#是一種工具,供Java語言程序員用於構建在.NET Framework 上運行的應用程序和服務
- LISP一種基於λ演算的函數式編程語言。
- Lua是一個小巧的腳本語言
- LOGO是一種早期的編程語言,也是一種與自然語言非常接近的編程語言,它通過"繪圖"的方式來學習編程
- Module在軟件工程中,指較高一級程序或模塊使用的一個單元或模塊
- Nuva語言是一種面向對象的動態腳本語言Nuva語言的設計目的是用於基於模板的代碼生成
- Objective-C通常寫作ObjC和較少用的 Objective C 或 Obj-C ,是擴充 C 的面向對象編程語言
- Perl一般被稱為"實用報表提取語言"(PracticalExtraction andReportLanguage),也做"病態折中垃圾列表器" (PathologicallyEclectic Rubbish Lister)
- PHP是一種HTML 內嵌式的語言
- PL/I是Programming Language One的簡寫。當中的"I"其實是羅馬數字的"一"。它是一隻IBM公司在1950年代發明的第三代高級編程語言
- Prolog(Programming in Logic的縮寫) 是一種邏輯編程語言
- Python是一種面向對象的解釋性的計算機程序設計語言,也是一種功能強大而完善的通用型語言
- PASCAL、Delphi: Pascal是一種計算機通用的高級程序設計語言; Delphi是全新的可視化編程環境,是一種方便、快捷的Windows應用程序開發工具
- QBasicQBASIC是BASIC(Beginner's All-purpose Symbolic Instruction Code,初學者通用指令代碼)語言的一個變種,由美國微軟公司開發
- R是用於統計分析、繪圖的語言和操作環境
- Ruby,一種為簡單快捷面向對象編程(面向對象程序設計)而創的腳本語言
- Scheme一種系統設計語言,由LISP語言發展而來,屬於lisp的一種方言。與其他lisp不同的是,scheme是可以編譯成機器碼的。Scheme的一個主要特性是可以像操作數據一樣操作函數調用
- Smalltalk一種面向對象的程序設計語言一種程序設計環境 一個應用開發環境(ADE)
- Tcl/Tk是一種腳本語言
- Visual FoxPro原名FoxBase,是美國FoxSoftware公司推出的數據庫產品
- Visual Basic(VB)是一種由微軟公司開發的包含協助開發環境的事件驅動編程語言
- VBScript是Visual Basic Script的簡稱,即Visual Basic 腳本語言
- .NET是微軟2002年,為開發應用程序創建的一個富有革命性的新平台
語言排行
開發工具
關於C++的: CFREE(初學者適用),VC,MyC++,Magic C++,DevC++
關於JAVA的:JBuilder、Eclipse、NetBeans IDE、JCreator+J2SDK、JDK、Tomcat、Weblogic、JRun
關於C#的:VS Studio 系列(VS2003,VS2005,VS2008,VS2010,VS2011),SharpDevelop(開源的免費軟件)
關於Delphi的:delphi2005
關於C的:Turbo C 2
關於PHP的:Dreamweaver_CS5、Notepad++
關於VB的:visual basic 6.0
關於匯編的:VisualASM
關於VBS的:按鍵精靈2014
可視化
可視化編程也越來越重要,所謂的可視化程序設計和Visual Basic或Visual C++並不同,支持可視化程序設計的IDE可以讓開發人員直接移動程序單元來建立流程圖和結構圖,然後直接做編譯或解釋,這一類的流程圖通常是以UML為基礎。
這樣的界面因為樂高的Mindstorms開始普及,一些公司也開始透過瀏覽器Mozilla和分布式程序設計(LabVIEW)往這方面努力。從1980年代開始,第一個可視化程序設計系統-Max,就是以類比合成器的設計為榜樣,同時被用來開發即時音樂演出軟件。
這種方法也被用在專業軟件,例如Openlab,這類的使用者需要完整程序設計語言的彈性,並不想要傳統的學習曲線。
可視化程序設計語言有另一個半免費和開放源代碼的替代品-Mindscript,具有加密系統和連結數據庫等等。
智能手機
應用程序開發行業中最大的新熱潮是智能手機的應用程序"這種裝置通常需要開發人員使用一種可將裝置的功能發揮到極至的特定語言作為應用平台,至少要以官方認可的方式進行。
智能手機開發體系的一個新興產業正在崛起,即允許開發人員用非智能手機平台原生的其它語言編寫自己的代碼,然後轉化為原生語言的應用程序。 因為不需要學習任何特定的智能手機平台的官方應用程序開發語言,Web應用程序也沾了光,成為智能手機應用程序開發的一種方法。選擇語言甚於平台的另一個方案是使用像諾基亞的N900這樣的設備,它運行Debian發行的Linux系統,可以運行的軟件範圍很寬--包括很多不是為智能手機設計的軟件。隨着安卓和ios智能手機範圍的不斷擴大,安卓和ios編程人員企業急缺,3G夢工場軟件學院在華中地區最早開設了3G智能手機編程相關的課程,為對編程感興趣的人提供了一個學習平台。