執行原理
計算機對除機器語言以外的源程式不能直接識別、理解和執行,都必須通過某種方式轉換為計算機能夠直接執行的機器語言。
這種將高級程式設計語言編寫的源程式轉換到機器目標程式的方式有兩種:解釋方式和編譯方式。
解釋方式下,計算機對高級語言書寫的源程式一邊解釋一邊執行,不能形成目標檔案和執行檔案。
編譯方式下,首先通過一個對應於所用程式設計語言的編譯程式對源程式進行處理,經過對源程式的詞法分析、語法分析、語意分析、代碼生成和代碼最佳化等階段將所處理的源程式轉換為用二進制代碼表示的目標程式,然後通過連線程式處理將程式中所用的函式調用、系統功能調用等嵌入到目標程式中,構成一個可以連續執行的二進制執行檔案。調用這個執行檔案就可以實現程式設計師在對應源程式檔案中所指定的相應功能。
基本簡介
編程就是讓計算機為解決某個問題而使用某種程式設計語言編寫程式代碼,並最終得到結果的過程。為了使計算機能夠理解人的意圖,人類就必須要將需解決的問題的思路、方法、和手段通過計算機能夠理解的形式告訴計算機,使得計算機能夠根據人的指令一步一步去工作,完成某種特定的任務。這種人和計算機之間交流的過程就是編程。
語言沿革
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++標準預發布。
語言目錄
* CSS Cascading Style Sheets 層疊樣式表
*.NET是微軟2002年,為開發應用程式創建的一個富有革命性的新平台
*ActionScriptActionScript是Flash的腳本語言,與JavaScript相似,ActionScript是一種面向對象程式語言。
*APL、A+和J
*AdaAda是一種表現能力很強的通用程式設計語言
*彙編語言 彙編語言(Assembly Language)是面向機器的程式設計語言
*易語言是全中文語言編程中最為強大的一個程式語言
*AWKAWK是一種優良的文本處理工具
*Basic是一種設計給初學者使用的程式設計語言
oQBasicQBASIC是BASIC(Beginner's All-purpose Symbolic Instruction Code,初學者通用指令代碼)語言的一個變種,由美國微軟公司開發
oVisual BasicVisual Basic(VB)是一種由微軟公司開發的包含協助開發環境的事件驅動程式語言
*VBScriptVBScript是Visual Basic Script的簡稱,即 Visual Basic 腳本語言
*BrainfuckBrainfuck是一種極小化的計算機語言
*C、C++ 、C# C語言是一種面向過程的電腦程式設計語言; C++是一種靜態數據類型檢查的,支持多重編程範式的通用程式設計語言。它支持過程化程式設計、數據抽象、面向對象程式設計、製作圖示等等泛型程式設計等多種程式設計風格。C#是微軟公司發布的一種面向對象的、運行於.NET Framework之上的高級程式設計語言。
oObjective-C通常寫作ObjC和較少用的Objective C或Obj-C,是擴充C的面向對象程式語言
*ClipperClipper晶片主要用於商業活動的計算機通信網
*COBOL一種適合於商業及數據處理的類似英語的程式設計語言
*dBasedBASE是第一個在微型計算機上被廣泛使用的資料庫管理系統(DBMS
E語言以簡體中文作為程式代碼進行編程操作。
*PASCAL、DelphiPascal是一種計算機通用的高級程式設計語言 ;Delphi是全新的可視化編程環境,是一種方便、快捷的Windows應用程式開發工具
*Forth由Charles H. Moore發展出來在天文台使用的電腦自動控制系統及程式設計語言,允許使用者很容易組合系統已有的簡單指令,定義成為功能較複雜的高階指令。
* Fortran 譯為“公式翻譯器”,它是世界上最早出現的計算機高級程式設計語言,廣泛套用於科學和工程計算領域。
*FoxPro是由美國Fox Software公司於1988年推出的資料庫產品
*F#F#是由微軟發展的為微軟.NET語言提供運行環境的程式設計語言
*FavaFava語言是一個小型的解釋語言,它主要面向於系統測試領域及小型嵌入式設備。
*IDLIDL 是一種數據分析和圖像化應用程式及程式語言
*GoGo語言是谷歌2009發布的第二款開源程式語言。Go語言專門針對多處理器系統應用程式的編程進行了最佳化,使用Go編譯的程式可以媲美C或C++代碼的速度,而且更加安全、支持並行進程。
*JavaJava是由Sun Microsystems公司於1995年5月推出的Java程式設計語言,他是一種面向對象的跨平台語言,可以在多種平台上運行。支持開源。大量的類庫。大量的開源項目。是一種非常強大的程式語言!
*JavaScriptJavascript是一種由Netscape的LiveScript發展而來的腳本語言
*J#Visual J# 是一種工具,供 Java 語言程式設計師用於構建在 .NET Framework 上運行的應用程式和服務
*LISP一種基於λ演算的函式式程式語言。
*LuaLua 是一個小巧的腳本語言
*LOGO是一種早期的程式語言,也是一種與自然語言非常接近的程式語言,它通過“繪圖”的方式來學習編程
*Module在軟體工程中,指較高一級程式或模組使用的一個單元或模組
*NuvaNuva語言是一種面向對象的動態腳本語言 Nuva語言的設計目的是用於基於模板的代碼生成
*PerlPerl 一般被稱為“實用報表提取語言”(PracticalExtraction andReportLanguage),也做“病態折中垃圾列表器”(PathologicallyEclectic Rubbish Lister
*PHPPHP 是一種 HTML 內嵌式的語言
*PL/IPL/I是Programming Language One的簡寫。當中的“I”其實是羅馬數字的“一”。它是一隻IBM公司在1950年代發明的第三代高級程式語言
*PrologProlog(Programming in Logic的縮寫)是一種邏輯程式語言
*Python是一種面向對象的解釋性的電腦程式設計語言,也是一種功能強大而完善的通用型語言
*RR是用於統計分析、繪圖的語言和操作環境
*RubyRuby,一種為簡單快捷面向對象編程(面向對象程式設計)而創的腳本語言
*SchemeScheme,一種系統設計語言,由LISP語言發展而來,屬於lisp的一種方言。與其他lisp不同的是,scheme是可以編譯成機器碼的。Scheme的一個主要特性是可以像運算元據一樣操作函式調用
* Smalltalk 一種面向對象的程式設計語言 一種程式設計環境 一個套用開發環境(ADE)
* Tcl/Tk 是一種 腳本語言
*Visual FoxProVisual FoxPro原名FoxBase,是美國Fox Software公司推出的資料庫產品
*快手(AAuto Quicker) AAuto是專用於桌面軟體快速開發的新一代混合型程式語言, 兼具動態、靜態語言優勢,語法更可兼容大部分流行語言,學習成本低,開發速度快,並永久免費.
語言排行
2012年4月份前三語言分別為:C 、Java 和 C++
。
開發工具
關於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,具有加密系統和連結資料庫等等。
移動編程
主要指android/iphone編程開發,主要是針對3G智慧型手機套用、遊戲進行開發。根據市場研究公司ChetanSharmaConsulting的研究數據顯示,移動軟體市場總額2011年為41億美元,預計2012年將飆升到175億美元。這使得技術公司對應用程式開發人才的需求越來越大。那些能夠為蘋果iPhone作業系統、谷歌Android作業系統和RIM黑莓作業系統等移動平台編寫應用程式的開發人員非常搶手。這種巨大的市場需求直接導致了招聘公司之間激烈的人才爭奪大戰,也無形中提高了開發人員的薪水。3G夢工場在全國最先開始3G專業。
安卓編程
從人才需求類型來看,目前對Android人才需求一類是偏向硬體驅動的Android人才需求,一類是偏向軟體套用的Android人才需求。從目前的招聘需求來看,後者的需求最大,包括手機遊戲、手機終端套用軟體和其他手機套用軟體的開發。據職酷網職位搜尋庫統計顯示,目前企業對這類套用軟體的Android開發人才占總需求的72%。職業專家分析說,由於目前Android技術較新,無論是相關書籍、培訓還是大學教育,都處於初級階段,因此Android人才短期將供不應求。從長期來看,隨著各種移動套用和手機遊戲等內容需求日益增加,也將激勵大中小型手機套用開發商加大對Android套用的開發力度,因此Android人才的就業前景也非常廣泛。
智慧型手機
應用程式開發行業中最大的新熱潮是智慧型手機的應用程式。這種裝置通常需要開發人員使用一種可將裝置的功能發揮到極至的特定語言作為套用平台,至少要以官方認可的方式進行。
智慧型手機開發體系的一個新興產業正在崛起,即允許開發人員用非智慧型手機平台原生的其它語言編寫自己的代碼,然後轉化為原生語言的應用程式。 因為不需要學習任何特定的智慧型手機平台的官方應用程式開發語言,Web應用程式也沾了光,成為智慧型手機應用程式開發的一種方法。選擇語言甚於平台的另一個方案是使用像諾基亞的N900這樣的設備,它運行Debian發行的Linux系統,可以運行的軟體範圍很寬——包括很多不是為智慧型手機設計的軟體。隨著安卓和ios智慧型手機範圍的不斷擴大,安卓和ios編程人員企業急缺,3G夢工場軟體學院在華中地區最早開設了3G智慧型手機編程相關的課程,為對編程感興趣的人提供了一個學習平台。
編程學校
3G夢工場軟體開發學校是湖北首家3G軟體工程師人才實訓基地,由武漢四維創意教育科技有限公司公司承辦,2009年12月學校正式啟動,致力於打造中國高端3G套用開發領域集技術培訓、項目輔導、創業孵化為一體的服務品牌。致力於培養J2ME遊戲開發工程師、3G前端套用開發工程師、iphone 軟體套用開發工程師、Android開發工程師、Windows Mobile開發工程師、Symbian初級、中級、高級開發工程師。
經過接近兩年的努力,成為國內知名的3G培訓品牌,並且已是國家工信部3G項目管理中心授權為湖北3G工程師指定考試中心,並且是3G工程師試題指定提供單位。並且和國內一些企業合作,開設了校企示範班,學員畢業後可進入合作企業進行工作。
3G夢工場採取小班授課、項目教學、商業項目開發的教學方式,通過企業定向培養,入學簽訂就業推薦協定等人才培養模式,吸引眾多大學生就讀。課程提供內容豐富、教材形式多樣,配圖教材,多媒體動畫PPT,清晰的授課思路以及隨時可以觀摩的線上諮詢。提高授課質量,降低學生學習難度。
3G夢工場地處湖北武漢廣埠屯(華中師範大學正北門),屬於武漢的中心地帶,對面武漢大學,西鄰武漢理工,東側華中科技大學,背後是湖北工業大學商貿學院,有強烈的教育文化和濃厚的學習氣氛!
為什麼編程是21世紀的核心技能
在20世紀,最被看好教育科目是英語、數學、化學、物理,“學好數理化,走遍天下都不怕”。今天,編程技能變得越來越重要,很快就會變成21世紀生存技能中的核心競爭力。將在這個月上映的電影《The Internship》講的就是自學編程的技術牛人到谷歌工作的過程。
編程能力有多大用處?
無論是網際網路初創企業還是大企業,都需要建立自己的網站,需要通過網路幫助自己增加利潤,編程人員需求量大增,這種需求迫使更多的人回到學校學習代碼,學習編程等計算機技能,這已經是一個無法迴避的事實。
美國第二大團購網站LivingSocial的副總裁曾說“我們相信,智慧和激情是錢買不來的,招聘一個員工不一定要有具體的技術、技能,更重要的是要有足夠的DIY創作心態,也許這種人有點傲慢,但我們可以教他很多東西。”
新興技能培訓學校越來越多,各種各樣的技術、技能日益普及,尤其是編程技能迅速上升,有些地區甚至兒童都在學習代碼程式。通常情況下,編程人員的稀缺,誰擁有編程技能就意味著有更多的就業機會,企業也更容易招收會編程的新手。
編程崗位需求有多大?
隨著時間的推移預計編碼工作崗位有大幅增加。據美國勞工統計局,在2010年有91.3萬個電腦程式員職位,到2020年這一崗位預計將增長 30%, 同時,其他所有的非農就業崗位平均增幅預計只有14%。
以現在的大學教育現狀,偏重學術類人才培養,到時將沒有足夠的人來填補這些職位。很多優秀的網際網路公司、軟體開發公司創始人,大學都沒畢業,編程技能使他成為一個優秀的人。