自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C++ API設(shè)計(jì)大師Martin Reddy:選擇最合適的語(yǔ)言

開(kāi)發(fā) 后端
Martin Reddy博士是軟件行業(yè)的一名老兵,有著15年以上的從業(yè)經(jīng)驗(yàn),早年,他曾在SRI International供職5年,他成功創(chuàng)建了在Web上描述3D地球空間信息模型的ISO標(biāo)準(zhǔn),并且還連續(xù)兩年被選為Web3D協(xié)會(huì)的會(huì)長(zhǎng)。

Martin Reddy博士是軟件行業(yè)的一名老兵,有著15年以上的從業(yè)經(jīng)驗(yàn),早年,他曾在SRI International供職5年,他成功創(chuàng)建了在Web上描述3D地球空間信息模型的ISO標(biāo)準(zhǔn),并且還連續(xù)兩年被選為Web3D協(xié)會(huì)的會(huì)長(zhǎng)。他曾在 Pixar動(dòng)畫(huà)工作室工作過(guò)6年,擔(dān)任內(nèi)部動(dòng)畫(huà)系統(tǒng)的首席工程師,這些API在一些奧斯卡獲獎(jiǎng)及提名影片的制作中都發(fā)揮了關(guān)鍵作用,這些影片包括《海底總 動(dòng)員》、《超人總動(dòng)員》、《賽車(chē)總動(dòng)員》、《料理鼠王》,以及《機(jī)器人總動(dòng)員》等。據(jù)說(shuō)《超人總動(dòng)員》中的超人爸爸的頭部原型就是借用自Martin Reddy。

他還開(kāi)辦了一家咨詢(xún)公司Code Reddy,為各家軟件公司提供技術(shù)咨詢(xún),為大型在線3D虛擬世界《第二人生》設(shè)計(jì)了API并改善了其基本架構(gòu)?,F(xiàn)在Martin Reddy擔(dān)任ToyTalk公司的首席技術(shù)官。我們聯(lián)系他的時(shí)候,他正在為公司即將發(fā)布的第一個(gè)產(chǎn)品忙得不可開(kāi)交。

恭喜你們公司在最近推出了新產(chǎn)品,你們的新產(chǎn)品是基于語(yǔ)音識(shí)別和人工智能技術(shù),你認(rèn)為語(yǔ)音識(shí)別和人工智能會(huì)是未來(lái)的主要發(fā)展方向之一?

Reddy:非常感謝!是的,在幾年前,Siri問(wèn)世之后,我們就開(kāi)始看到越來(lái)越多的用語(yǔ)音作為輸入機(jī)制的應(yīng)用 和設(shè)備。從控制電話,到電視,再到游戲控制。我認(rèn)為我們想和計(jì)算機(jī)交流的方式應(yīng)該和我們彼此間交流的方式相同。所以我預(yù)測(cè)我們將會(huì)看到語(yǔ)音識(shí)別技術(shù)的大規(guī) 模飛躍,而且為了更好地理解我們說(shuō)的話和做出合適的回應(yīng),自然語(yǔ)言處理和人工智能這些相關(guān)領(lǐng)域發(fā)展也會(huì)日新月異。

記者:你曾經(jīng)為Pixar動(dòng)畫(huà)工作室工作過(guò),這是一家領(lǐng)先于世界的團(tuán)隊(duì)。你把它的成功更多地歸功于創(chuàng)造力還是它在技術(shù)上的優(yōu)越性?

Reddy:從基礎(chǔ)的層面來(lái)說(shuō),Pixar的成功可以歸功于富有創(chuàng)造力的故事設(shè)計(jì)。復(fù)雜的故事線,討喜的角色, 以及機(jī)智的對(duì)白會(huì)讓你鐘情于這部電影;而不是射線追蹤反射,或者新的子面散射算法。但是,Pixar的獨(dú)特之處更在于它能夠把好故事和精彩的3D圖像相結(jié) 合。就像是John Lasseter(《玩具總動(dòng)員》、《怪物公司》導(dǎo)演,《海底總動(dòng)員》 和 《超人總動(dòng)員》制片人)所說(shuō)的那樣:“藝術(shù)挑戰(zhàn)科技,而科技激發(fā)藝術(shù)。

記者除了C++你還喜歡什么語(yǔ)言?你喜歡什么工具?

Reddy:我喜歡用合適的工具來(lái)做合適的工作。C++對(duì)于開(kāi)發(fā)可移植和性能優(yōu)先的代碼來(lái)說(shuō)是一門(mén)很好的語(yǔ)言。 但是其他的語(yǔ)言對(duì)于其他的工作很可能更加勝任,而且有些語(yǔ)言在某些環(huán)境下可以達(dá)到獨(dú)霸天下的程度,比如Objective-C之于 iOS,JavaScript之于網(wǎng)頁(yè)。當(dāng)我可以選擇的時(shí)候,我就愛(ài)上了Python。我曾經(jīng)喜歡使用perl或者shell腳本編程,我現(xiàn)在轉(zhuǎn)向了 Python。甚至對(duì)于很多GUI工具,我也轉(zhuǎn)向了Python,PyQt和 PyInstaller環(huán)境下,我可以很快的開(kāi)發(fā)代碼,然后作為獨(dú)立的二進(jìn)制代碼在Windows, Mac OS X, 以及Linux平臺(tái)上運(yùn)行。對(duì)于我來(lái)說(shuō)Python的最大問(wèn)題在于run-time類(lèi)型查看的時(shí)候容易把代碼運(yùn)送給用戶(hù),這樣就會(huì)因?yàn)轭?lèi)型不匹配或者未定 義名稱(chēng)而造成運(yùn)行時(shí)的異常。為了彌補(bǔ)這個(gè)缺憾,我會(huì)經(jīng)常在我的Python代碼上使用源碼檢查器,比如PyFlakes 或者 PyChecker。

記者 C++的應(yīng)用領(lǐng)域變得越來(lái)越小,你認(rèn)為它未來(lái)會(huì)有什么樣的發(fā)展?C++的強(qiáng)勢(shì)領(lǐng)域在哪里?你認(rèn)為C++的演進(jìn)方向是什么樣的?

Reddy:好問(wèn)題!我一直以來(lái)看見(jiàn)的都是C/C++處在最受歡迎語(yǔ)言的前列,但是其他的語(yǔ)言也在變得越來(lái)越被 大家接受。在我的公司我們?nèi)匀辉诤芏鄨?chǎng)合使用C++,因?yàn)樗梢猿蔀樵诒姸嗥脚_(tái)上都能運(yùn)轉(zhuǎn)的有效代碼,同時(shí)也可以進(jìn)入性能優(yōu)先的3D圖像庫(kù)和語(yǔ)音識(shí)別系 統(tǒng)。但是,新的設(shè)備和環(huán)境已經(jīng)讓其他語(yǔ)言變得越來(lái)越突出。比如移動(dòng)、平板,以及web開(kāi)發(fā)現(xiàn)在正值火熱的時(shí)候,而且現(xiàn)在看來(lái)這樣的勢(shì)頭在未來(lái)只會(huì)有增無(wú) 減。我認(rèn)為C++在我前面說(shuō)過(guò)的領(lǐng)域中是很強(qiáng)勢(shì)的,但是這些新涌現(xiàn)出的編程環(huán)境會(huì)有一些不同的需求,而C++對(duì)于這些需求來(lái)說(shuō)未必是最好的選擇。我認(rèn)為這 是一件好事。

記者你怎么看C++新標(biāo)準(zhǔn)?它會(huì)影響API的設(shè)計(jì)嗎?現(xiàn)存的庫(kù)如何保持更新呢?

Reddy: C++11對(duì)于C++來(lái)說(shuō)有很多很棒的提升。對(duì)于API設(shè)計(jì)而言,有很多新的特性你可以拿來(lái)用在你的API上,包括向元組、匿名函數(shù)、線程基元、智能指 針,以及嶄新的重寫(xiě)和最終關(guān)鍵詞。當(dāng)然,如果你的API必須要被無(wú)法使用C++11編譯器的客戶(hù)使用的話,那么你就需要維持C++03語(yǔ)法了,或者為你的 C++11客戶(hù)提供一個(gè)API包裝器。

記者 C++的ACE框架相當(dāng)復(fù)雜,但ACE是當(dāng)年分布式框架的首選。現(xiàn)今可選的技術(shù)相當(dāng)多,使用復(fù)雜的C++構(gòu)建分布式應(yīng)用還有優(yōu)勢(shì)嗎?有沒(méi)有更易用的C++網(wǎng)絡(luò)技術(shù)框架?

Reddy:我對(duì)ACE不是十分了解,但是有一些可以選擇的底層網(wǎng)絡(luò)框架,包括Boost Asio, cpp-netlib, 以及Qt的網(wǎng)絡(luò)訪問(wèn)API。

記者一個(gè)新設(shè)計(jì)的系統(tǒng)API,早期版本經(jīng)常陷入“狂熱”的增加特性(接口、參數(shù)、用途),而到了穩(wěn)定期卻常常成為升級(jí)時(shí)甩不掉的包袱,甚至連早期bug都會(huì)變成被迫持續(xù)支持的“feature”。請(qǐng)問(wèn)設(shè)計(jì)第一版API時(shí)如何在表達(dá)力、易用性、兼容性方面達(dá)到平衡?

Reddy:這是API設(shè)計(jì)最為重要的部分之一:保持事情的簡(jiǎn)單性。有一點(diǎn)你說(shuō)得很對(duì),所有出現(xiàn)在早期版本 API中的特性都必須在API的整個(gè)生命周期中得到持續(xù)支持(除非你打破向后兼容性的限制)。我支持不要在接口上添加任何東西的辦法,除非真的有必要。不 要添加任何現(xiàn)在沒(méi)有用,但是你懷疑可能在未來(lái)會(huì)有用的東西。集中精力解決核心問(wèn)題。

記者 Go語(yǔ)言變得越來(lái)越流行了,你對(duì)這門(mén)打算要取代C/C++的語(yǔ)言是什么態(tài)度?

Reddy:我愛(ài)Go!它真是一門(mén)偉大的語(yǔ)言。事實(shí)上,在我們公司里,我們?cè)诜?wù)器端的基礎(chǔ)設(shè)施上用的都是Go 語(yǔ)言。它的編譯方式是靜態(tài)類(lèi)型的,這一點(diǎn)和C以及C++很像,但是設(shè)計(jì)上卻比C++簡(jiǎn)單很多,而且Go有強(qiáng)大的網(wǎng)絡(luò)支持以及內(nèi)置并發(fā)性基元,這點(diǎn)真是太妙 了。而且Go語(yǔ)言的設(shè)計(jì)人之一正是Ken Thompson,他也是C語(yǔ)言的最初設(shè)計(jì)人,所以這門(mén)語(yǔ)言注定是很靠譜的!

記者向Python這樣的“可執(zhí)行偽代碼”被越來(lái)越多的人所接受,你能預(yù)測(cè)一下未來(lái)的編程語(yǔ)言會(huì)是什么樣的嗎?是寫(xiě)文章一樣任人都會(huì)還是仍然屬于程序員?

Reddy:像我上面說(shuō)的那樣,我喜歡Python。它解讀清晰和動(dòng)態(tài)類(lèi)型的特性讓它變得更容易上手,更好學(xué) 習(xí)。加上大量的標(biāo)準(zhǔn)庫(kù)以及垃圾回收存儲(chǔ)器管理,我認(rèn)為Python是最適合作為第一門(mén)編程語(yǔ)言來(lái)學(xué)習(xí)的。我也認(rèn)同Python可以服務(wù)于非計(jì)算機(jī)科學(xué)家, 來(lái)幫助大家實(shí)現(xiàn)計(jì)算和自動(dòng)化,比如Python已經(jīng)在生物信息領(lǐng)域里非常受歡迎。但是我認(rèn)為我們始終會(huì)存在語(yǔ)言的分水嶺,不同語(yǔ)言會(huì)有各自適合的領(lǐng)域。有 一些語(yǔ)言對(duì)于普通人來(lái)說(shuō)更加平易近人,但是我相信我們?nèi)匀恍枰孕阅転槟康?,可編譯、靜態(tài)類(lèi)型的語(yǔ)言,這些語(yǔ)言在效率和準(zhǔn)確性至上的領(lǐng)域會(huì)更為重要。

記者作為程序員應(yīng)該怎么學(xué)習(xí)?要變成編程大牛需要數(shù)十年的時(shí)間嗎?有沒(méi)有捷徑可走?對(duì)于計(jì)算機(jī)專(zhuān)業(yè)的大學(xué)生們,你有什么特別的建議嗎?

Reddy:我認(rèn)為要變成編程大牛不需要數(shù)十年的時(shí)間。但是我認(rèn)為要了解你的編程語(yǔ)言的深度和細(xì)節(jié)需要很多的熱 情,要理解你的編譯器或注釋器是如何幫助你的,它們?cè)诤笈_(tái)做的工作細(xì)節(jié)是什么樣的。對(duì)于C++來(lái)說(shuō),你理解如何為模板生成代碼嗎?你知道虛函數(shù)表是如何工 作的嗎?或者多重繼承的問(wèn)題在哪里?對(duì)于Python來(lái)說(shuō),你理解引用計(jì)數(shù)是如何工作的嗎?你知道變量是由值還是由引用通過(guò)的?對(duì)于你工作上最重要的工 具,不要滿(mǎn)足于表面的知識(shí)。你對(duì)自己的工具了解越深,你就會(huì)成為更好的程序員。

但是我個(gè)人認(rèn)為一個(gè)好的程序員和一個(gè)好的工程師是不同的。優(yōu)秀的程序員知道如何寫(xiě)代碼,而一個(gè)優(yōu)秀的工程師知道如何架構(gòu)以及如何建造復(fù)雜的系統(tǒng),在 這樣的結(jié)構(gòu)上會(huì)有更多的工程師為其工作。要成為一個(gè)好的工程師更加困難,而最好的老師就是經(jīng)驗(yàn)。所以我會(huì)建議在校生去擁有大型軟件產(chǎn)品的公司做實(shí)習(xí),同時(shí) 作為工程師團(tuán)隊(duì)的一員,學(xué)習(xí)在復(fù)雜生產(chǎn)的軟件上工作的流程和技巧。

記者在中國(guó),很多人都更傾向于成為管理層。你認(rèn)為程序員可以作為一生的事業(yè)嗎?

Reddy:這是個(gè)有趣的現(xiàn)象,因?yàn)槲铱吹降亩鄶?shù)高級(jí)工程師都想一直寫(xiě)代碼,而不想變成管理層。如果你很擅長(zhǎng)你 正在做的工作,你可能就會(huì)得到升職,從傳統(tǒng)意義上講,這就意味著管理層。但是我現(xiàn)在看見(jiàn)很多“雙軌”型的事業(yè)發(fā)展,尤其在科技公司里,也就是說(shuō)你會(huì)得到升 職但是仍然從事一線的開(kāi)發(fā)工作。比如在Pixar的時(shí)候,我們就有一個(gè)“技術(shù)帶頭人”,這個(gè)人就會(huì)決定其他幾位工程師的技術(shù)方向,而另一位“管理帶頭人” 就會(huì)接受大家的報(bào)告,同時(shí)也要指導(dǎo)并為這些人寫(xiě)評(píng)語(yǔ)。當(dāng)然,像技術(shù)總監(jiān)、軟件架構(gòu)師、以及主工程師這樣的路線都是你提高自己的方向,所以你沒(méi)有必要非得擔(dān) 負(fù)起管理這個(gè)包袱。

原文鏈接:http://www.ituring.com.cn/article/58481

責(zé)任編輯:陳四芳 來(lái)源: 李忠的博客
相關(guān)推薦

2017-10-17 12:49:18

無(wú)線AP無(wú)線AP

2013-12-16 13:55:42

ESXi存儲(chǔ)

2020-12-31 09:39:39

應(yīng)用圖像格式SVGOMG

2018-06-19 10:38:42

數(shù)據(jù)中心遷移時(shí)機(jī)

2009-09-22 10:20:00

專(zhuān)線接入

2018-02-25 10:37:26

語(yǔ)言數(shù)據(jù)分析工具

2017-05-31 09:12:51

機(jī)器學(xué)習(xí)算法數(shù)據(jù)

2009-01-12 17:28:10

服務(wù)器虛擬化VMware

2015-04-23 16:17:40

云平臺(tái)華為

2010-01-22 10:26:40

C++語(yǔ)言

2010-01-22 10:36:25

C++語(yǔ)言

2010-01-13 14:05:55

C++語(yǔ)言

2019-04-26 10:28:11

路由器價(jià)格網(wǎng)絡(luò)

2009-03-17 09:49:00

有線寬帶接入方案ADSL

2018-07-18 15:19:35

DDoS高防服務(wù)DDoS 網(wǎng)絡(luò)安全技術(shù)周刊

2018-07-13 09:29:34

2010-01-15 17:38:37

C++語(yǔ)言

2011-10-18 17:00:02

2009-02-27 09:25:28

編程語(yǔ)言程序員C#

2016-12-07 14:31:56

數(shù)據(jù)中心機(jī)架配電裝置PDU
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)