语言 重量计算_大师之光:有种跨越国界的语言叫C++
????語言太重要了,因為他的重要性,每個人都花很多時間來學習語言,幼兒時先學習母語,略長大了開始學習外語,成年了可能再進一步鞏固母語,或者學習更多的外語。
????對于越來越多的現代人來說,除了學習人類的語言外,還要學習計算機的語言。隨著信息產業的發展和軟件不斷地吞噬這個世界,這個人群越來越大,首先,差不多所有的大學生都要學習一門計算機的語言。其次,越來越多的家長開始讓孩子學習計算機的語言。
????就像人類不是一開始就有語言一樣,計算機也不是一開始就有語言的。今天一般把1843年時Ada Lovelace編寫的一個計算伯努利數的程序看作是最早的計算機程序。這個最早的程序長什么樣呢?就是下面這個樣子。
? ? 天啊,怎么理解這個程序呢?大多數今天的程序員可能都被難倒了。
????為什么大家都看不懂呢?主要原因是它不是使用編程語言表達的(要很多年之后才出現),而是使用操作流程的方式表達的。圖中的表格分為很多列,最左邊是操作序號,接下來是操作名稱,即加減乘除四種操作,第三列是要操作的變量,用今天的話就是輸入變量,第四列是接受結果的變量,也就是輸出變量,第五列描述的是變量值的變化情況,第六列是結果表達式,接下來的三大列分別是數據變量、工作變量和結果變量。
????在第23行和24行之間的描述文字是指示要做循環,把13-23號操作重復一次。對當時的機械式計算機來說,如何做這樣的循環操作呢?艾達在注釋中做了描述。“已經想到了一種方法,那就是按照某種規則把卡片后退一定的步數。”(A method was devised of what was technically designated backing thecards in certain groups according to certain laws.)進一步說,就是把分析引擎中驅動卡片的軸反轉一定步數后,再正向轉動,“這樣便把某一張或者一系列卡片再執行一遍。”(The prism then resumes its forward rotation, and thus bringsthe card or set of cards in question into play a second time.)
????看了第一個程序之后,各位程序員同行應該慶幸今天的代碼有多好讀和好寫了吧。
????其實,直到老雷讀大學時,還流行著畫流程圖(diagram)的方法,也就是在編寫程序之前,先把操作過程畫出來。這多少是受最初使用的圖表方法影響的。
??? 1950年代,另一個偉大的女生Grace Hopper發明了編譯器,這為編程語言的產生奠定了基礎。
????在1960和1970年代,已經有幾種編程語言了,比如C語言。1980年代時,更多的編程語言出現了。
????老雷在90年代讀大學時,學校安排的第一門編程語言是Fortran,現在想起來,里面還有很多東西保留著原始的痕跡,難理解,不好用,也不通用。第二門語言是C語言,難倒了很多同學,考試時,一批同學被關,包括其它課很優秀的從來沒有被關過的同學。第三門語言是8086匯編,又有一些同學不適應而被亮紅燈。
????有人說,學外語很難。但對某些喜歡學外語的人來說,學一門別扭的編程語言更難。
????其實在1990年代時,已經有很多其它語言了,但是大學里一般都不教。因為什么呢?因為一種語言,從出現到被廣泛接受和認可需要時間。而且時間的長度可能很長,不是以天和月計算的,而是以年來計算的。
????在讀大學時,我就偷偷學一門叫C++的語言,在圖書館里找書看,把書上的例子抄下來,然后再敲到寢室里的486電腦里,編譯、執行、調試。我當時喜歡C++的一個主要原因是感覺這門語言很親近,里面的很多概念都與人類的語言很接近,比如類,對象,遺傳,派生,等等。
????記得在畢業答辯時,我介紹我設計的軟件時,還介紹了我做的類設計,也套用了C++中的面向對象思想。這個介紹贏得了一位評委老師的認可,問我既然系里根本沒有C++的課,你怎么會這些?我回答圖書館里自學的。
????畢業之后,使用C++成了每天的工作。直到今天,仍是如此,雖然有時也使用其它的語言,但是C++是我用的最多的編程語言。
??? C++的前身叫“帶類的C”(C with classes),開始的時間是1979年,距離今年整整40年了。
? ? 說到C++的歷史,不得不提到它的發明者Bjarne Stroustrup,因為名字有些難讀,所以大家一般就簡稱BS。
? ?BS是丹麥人,1975年從丹麥的Aarhus University大學獲得碩士學位后,又到英國的劍橋大學讀博士,在撰寫博士論文的過程中,開始了構思C++的創新之旅。
????博士畢業后,BS帶著妻子和女兒遠渡重洋,從歐洲到美國,進入到著名的貝爾實驗室工作(http://www.stroustrup.com/bio.html)。在貝爾實驗室中,BS繼續他的未竟事業,為自己的新語言制定規則,編寫編譯器,1983年時他的成果在貝爾實驗室里試用,更名為C++。
? ?C++不是一天發明的,不僅BS花費了大約4年的時間打造第一個版本,而且他的工作也是基于具有極強影響力的C語言和當時已經比較成形的面向對象思想基礎之上的。簡單來說,C++把C的銳利鋒芒,與面向對象的包容萬物很好的融合在一起,成就了一個經典,至今仍熠熠生輝、長盛不衰。
??? 2005年5月,老朋友Jason組織第一屆C++大會,居然邀請到了BS出席,這讓很多人都很驚訝,佩服Jason的本事大,能把這么重量級的人物請到上海來。
????寫這篇文章時,看BS自己主頁上的簡歷,從2002年起,他在西安交通大學做榮譽教授(2002-2006: Honorary Professor at Xi'an Jiao Tong University.)。Jason的邀請成功或許與此有關。也或許就是Jason對C++語言的熱愛感動了BS。Jason曾翻譯了多本C++編程的書,這也是贏得大師信任的一個加分項。
? ? 記得那次大會上面,BS介紹了當時正處于制定過程中的C++0x標準。會后,我寫了一篇博客發表在高端調試網站上,文章很短,不妨摘錄如下:
技術之美——C++之父印象
借C++大會的機會,有幸與C++的發明者Bjarne Stroustrup博士近距離接觸。感受頗多,在此略記一二。
1,最強烈的感受就是Bjarne博士非常謙虛平實。近兩小時的演講,不論是介紹C++0x標準的制定過程,還是舉例分析技術細節,他都娓娓道來,重在陳述事實原委,沒有任何夸大或炫耀之詞。
2,對于不同來源的各種對C++0x標準的建議,他都從是否適合加入標準的角度非常客觀的分析和評價,而不批評其優劣。因為很多時候,確實不存在好與壞,而更多的是合適和不合適。
3,高度的負責精神。從Bjarne博士演講的內容和他的神態都可以看出,他非常關心C++語言的發展和未來,C++0x標準的每個細節都牽動著他的心。所以兩個小時的演講中,幾次看到他當講到如何取舍某些功能時,他都流露出思考和關切的神情。
4,奉獻精神。如Bjarne博士所言,C++是靠社區力量推動的,這完全不同于那些靠商業公司支持的語言(如C#,JAVA)。很多為C++標準做貢獻的學者和研究人員都是無償的。Bjarne博士也不例外,但他們始終不懈的努力著。
5,平易近人。Bjarne博士穿著樸素,沒有任何“大牌的架子”。對于大家提出的每個問題,他都非常認真地思考,然后耐心的回答。每個答案都非常中肯。
Bjarne博士至今仍從事研究和教育工作,因此可以說他仍是個學者。但他的觀點卻很具實踐性(practical)。他名揚世界,卻虛懷若谷,從他的身上,可以看到一個技術領袖的特有之美。
? ? 前幾天朋友小聚時,找到了當時與BS的一張合影,彌足珍貴,貼出來分享。
????第一次與仰慕已久的C++之父見面,當時還是很感動的,特別的,會議結束后,Jason還邀請幾位國內的講師與BS共進晚餐。而且晚餐時,我與BS相鄰而坐,真有點受寵若驚。
????記得,我當時還詢問了BS一個有點敏感的問題。我問他你是C++的發明者,有如此好的技術,為什么不到著名的軟件公司工作?或許早有人問過他這個問題,他立刻給了一個不是很正面,但也層次很深的回答:“在美國,教授很富有。”很多年過去了,BS的這句話始終在我腦海里,包括他當時說話的表情,"In US,professor is rich."每隔一段時間,BS的這句話就會從我的腦海里冒出來一下。想起這句話,當然就想起BS。有時想起BS,也會不由自主的想起他的這句話,"In US,professor is rich."?其實“In China, professor is rich too”,甚至,在中國,程序員也挺富啊。富的標準不一樣,BS當年那樣說,說明他的淡泊名利,至少在當時,或者很長的一段時間里,他覺得大學教授的收入足夠了,有美國教授的收入,同時能有很多時間專注于自己熱愛的C++,生活已經非常美好。
????當時,BS是在Texas A&M University當教授,這應該是他離開貝爾實驗室后的工作。看他的主頁,是從2002年起到Texas A&M?大學,一直到2014年。
????From 2002 to 2014, Bjarne was the College of Engineering Chair in Computer Science Professor at Texas A&M University.
??? 2014年1月,BS加入到Morgan Stanley,真的到著名企業工作了。
????就在這一年9月的1天晚上,Jason給我打電話,說BS又到上海了,晚上有個社區活動,邀我陪同參加。正式活動前,Jason和我與BS一起晚餐。于是在上海張江的傳奇廣場,我又有幸見到了BS。與上次見面,時隔11年。那天晚餐,就BS、Jason和我三個人,于是有了更多時間與BS聊天。記得,當時我們聊了很多話題。但是很遺憾,我沒有問他為什么要加入Morgan Stanley,既然"In US,professor is rich." ^-^
????我清楚記得,那天晚上,我們還聊到OS內核。讓我有點驚訝的是,他對內核的熟悉程度遠遠超出了我的預期。與很多只專注語言層面的人不同,BS對內核的認識也很深。他當時說的一句話仍讓我記憶猶新,“There are many kernels.”“有很多內核。”今天回想起來,BS的這句話仍振聾發聵,“有很多內核。”是么?中國有沒有,有了還是沒有?其實,BS的意思是,光有內核是不夠的,甚至是沒用的......真的沒用么,也不完全是,內核和應用是共生的關系,離開了誰,對方都沒意義。
? ? 其實,在BS的簡歷里,有一條記錄,可以佐證他在內核方面也是很資深的。? ??
????He is an advisor to the Norwegian startup?includeOS. IncludeOS is an open-source minimal unikernel developed in C++.
????晚飯過后,我和Jason與BS一起到浦軟大廈的一個階梯會議室與更多的同行見面。那天晚上,BS講了C++11。也就是不斷難產的C++0x,一推再推,07、08、09,終于也沒能在09年出來,直到2011年才出來。但是回過頭來看,C++11確實是C++語言推出后,變化最大的一個版本。
? ? BS的演講結束后,很多同行拿書請BS簽名,Jason拍了一張照片,我做了一次路人甲。
????第三次見到BS是在2016年的C++大會上。因為多種原因,這次大會的規模比11年前的第一屆C++大會擴大了好多倍,會場也壯觀好多。上一張我坐在會場右側中排位置拍的照片吧。
? ? 這次大會上,BS講的題目與前兩次不同,不再是單純的介紹標準,而是深刻闡述他對C++的認識和主張。他的題目是:“What C++ is and what it will become”
????從這個題目,就可以看出一代宗師的領袖之風和王者之氣。這次BS給我的印象不再像第一次見他時那樣低調,他已經名滿全球,他可以有霸氣了,但他的霸氣不是為自己說話,而是為C++說話。在這次演講中,BS駁斥了很多對C++的誤解甚至誹謗,以高度凝練的語言總結了C++的“英雄本色”,突出了C++具有而且讓其它語言望塵莫及的卓越之處,最突出的就是兩大特征:
? ? - direct map to hardware(直接映射到硬件,所以高效銳利)
????- zeor overhead abstraction (0額外開銷抽象)
????因為BS的日程安排很密集,所以2017年的北京C++大會,BS沒有能參加。2018年,C++大會停辦。
? ? 2019年的C++大會已經確定在今年的11月2-3日*,而且BS會再次親臨會場,演講的題目是《持續演進的C++:原則,問題與解決方案》。估計他會介紹即將推出的C++20。
? ? BS出生于1950年,今年已經69歲了。從29歲讀博時構思C++,到后來的長期致力于C++的實現、標準化和不斷演進,整整40年了。在他的主頁上,他如此說:
????To make C++ a stable and up-to-date base for real-world software development, I have stuck with its ISO standards effort for almost 30 years (so far).
? ? 致力于C++標準化30年,那么就是從C++98算起。無論是40年,還是30年,都是很長的時間,可謂一生的堅守。如此的執著,真讓人敬佩。
? ? ?由衷感謝BS用40年的精力打造了一門偉大的編程語言,這門語言是沒有國界的,BS的經典著作《C++編程語言》從1985年出版后,暢銷不衰,已經被翻譯為19種語言。("The C++ Programming Language" (Addison-Wesley, first edition 1985, second edition 1991, third edition 1997, "special" edition 2000, fourth edition 2013) is the most widely read book of its kind and has been translated into at least 19 languages. )根據2015年的調查全球有440萬的C++程序員。在每次的C++大會上,總是遇到不同行業的朋友,但是一討論起C++,大家立刻便熟悉了,而且沒幾分鐘,就可以大體推斷出對方的功力。^-^?
????這個世界是差異化的,但有些東西是被普遍認可的,比如對技術的執著追求。C++是沒有國界的,感謝BS風塵仆仆地到世界各地以各種形式推廣這門語言,為世界增加光。
? ?*希望了解2019年大會詳情的朋友,請訪問http://advdbg.org/books/2019CppSummit.pdf 或者大會官網***********************************************************
正心誠意,格物致知,以人文情懷審視軟件,以軟件技術改變人生
歡迎訪問http://001001.org/gedu/了解軟件調試高級研習班的最新信息
或者關注格友公眾號
總結
以上是生活随笔為你收集整理的语言 重量计算_大师之光:有种跨越国界的语言叫C++的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ipv6 端口号_计算机网络之IP、MA
- 下一篇: hosts文件_电脑修改hosts文件屏