日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

譯言網(wǎng) | 對(duì)話軟件大師 - 詹姆斯·高斯林(Java之父)談?dòng)?jì)算機(jī)編程藝術(shù)

 diandianxingk 2015-04-10

James Gosling談?dòng)?jì)算機(jī)編程藝術(shù)

http://www./javaworld/jw-03-2002/jw-0325-gosling.html

2002年3月22日,Bill Venners采訪了Java之父,談?wù)摿擞嘘P(guān)企業(yè)軟件,算法,用戶界面友好軟件等話題。

 

正文:

 

    James Gosling不在布道Java語言的時(shí)候,通常躲在Sun實(shí)驗(yàn)室的一個(gè)安靜角落,一連好幾天都在思索一些新方式,以協(xié)助程序員更好地處理程序的復(fù)雜性。 他的書架上還掛著一個(gè)里的博格人面具,上次JavaOne演講中他就帶在臉上,在面具的低垂注視下,他對(duì)Bill Venners款款道來,話題涉及當(dāng)前的編程趨勢(shì),以及對(duì)軟件系統(tǒng)設(shè)計(jì)和構(gòu)建的看法。


Enterprise vs. devices
企業(yè)編程和設(shè)備編程

    Bill Venners: Java在那么多的手機(jī)和智能卡上普及,可是為什么大多數(shù)都在用Java編寫服務(wù)器端的程序?

    James Gosling: 我覺得這是北美中心論者的觀點(diǎn). 你要是參加北美的會(huì)議,處處可聞人們?cè)谟懻撈髽I(yè)軟件??墒俏易罱⒓託W洲和日本的一些Java會(huì)議,沒有人討論企業(yè)軟件。

    Venners: 那他們?cè)谟肑ava做什么?

    Gosling: 他們關(guān)注設(shè)備,手機(jī)上的編程,以及如何實(shí)現(xiàn)端到端系統(tǒng)。如果北美的記者有機(jī)會(huì)去日本最近的JavaOne會(huì)議的話,一定會(huì)大開眼界,在那里,基本上沒企業(yè) 軟件什么事兒。到處都是嵌入式系統(tǒng),實(shí)時(shí)系統(tǒng),有些稍顯笨拙,有些卻十分精妙。他們使用Java,讓計(jì)算無處不在。

    企業(yè)軟件當(dāng)然有其精髓之處,但是除非和別的領(lǐng)域沾邊,否則毫無意義。企業(yè)軟件已經(jīng)被邊緣化了,要想有所意義,得有端到端的思想。

The art of computer programming
計(jì)算機(jī)編程藝術(shù)

    Venners: 最近我翻了翻唐納德的計(jì)算機(jī)編程藝術(shù),那套書塵封已久,主要講得都是算法. 可是在我一生的IT事業(yè)中,貌似很少用到這些艱深的算法知識(shí)。你覺得編程是一種藝術(shù)嗎?或者說,自從上世紀(jì)60年代和70年代以來,我們所理解的算法概念已經(jīng)有所改變?

    Gosling: 不管你在寫代碼時(shí)有沒有用到算法,不可否認(rèn)的是,計(jì)算機(jī)編程確實(shí)是一門藝術(shù)。當(dāng)有性能瓶頸需要解決時(shí),許多人束手無策,毫無辦法,他們不理解算法性能的具體含義,他們不懂如何定量地去分析算法復(fù)雜度。

    很少有人問:'怎樣提高程序的運(yùn)行速率呢'。碼農(nóng)們總喜歡調(diào)用現(xiàn)成的APIs函數(shù),封裝了一層又一層。有時(shí)你會(huì)看到深達(dá)10層甚至100層的調(diào)用堆 棧,不由地呼叫起來,'天哪!'。他們就是一味地在抽象層上壘抽象層,恨不得不斷地就這么壘上去。寫出來的程序可想而知,復(fù)雜繁瑣得讓人難以理解。

    Venners: 你曾說過,那么多人一點(diǎn)算法都不懂,就直接投身到軟件開發(fā)大軍中,這讓你倍感驚訝. 你還說,他們編寫的程序笨拙而低效,你覺得原因是什么,是糟糕的算法設(shè)計(jì)導(dǎo)致的?還是他們基于面向?qū)ο蟮脑O(shè)計(jì)過于拙劣,抑或還有其他原因?(譯注:這種情形在中國(guó)也越來越普遍,近年來的很多IT培訓(xùn)機(jī)構(gòu)速造了大量的低級(jí)程序員,以及所謂的一些測(cè)試人員。但是優(yōu)秀的程序員,對(duì)很多公司而言,還是可遇而不可求)

    Gosling: 不管是算法設(shè)計(jì)還是系統(tǒng)設(shè)計(jì),這些方面都有問題。低效的算法設(shè)計(jì)來源于對(duì)算法知識(shí)的一知半解,比方說啊,你設(shè)計(jì)動(dòng)態(tài)數(shù)組的時(shí)候,如何增長(zhǎng)數(shù)組呢?是每次增 長(zhǎng)10個(gè)比特,還是每次按原有大小的10%增長(zhǎng)?聽起來好像是一回事啊,其實(shí)不然。若按每次10個(gè)byte的增長(zhǎng),加入n個(gè)元素的時(shí)間復(fù)雜度就是 O(n2),但是后者的時(shí)間復(fù)雜度只有O(n), 你看,高下立判吧


Complexity
復(fù)雜度

    Venners: 那么,編程這門藝術(shù)應(yīng)該能讓人們的生活更便捷吧.

    Gosling: 正解! 這就像過去四五十年間,汽車行業(yè)發(fā)生的改變一樣。以前打開汽車的發(fā)動(dòng)機(jī)罩,你還能搞清楚里邊的裝置,現(xiàn)在呢,你一打開發(fā)動(dòng)機(jī)罩,瞧見里面,不茫然無知才怪呢。

    Venners: 可能是因?yàn)槔镞呌刑嘬浖b置的緣故吧。軟件這玩意兒,可不能硬拉胡扯。

    Gosling: 有一部分是軟件吧。還遍布著很多細(xì)小的管子,從這串到那,有些司職管理引擎的效率,有些調(diào)控空氣質(zhì)量,反正它們包辦一切,不用再勞你身架了。再者,現(xiàn)在的 汽車完全是自動(dòng)型的,人們只要鉆進(jìn)去,啟動(dòng),就開路了。而不像以前那么麻煩,比如像這樣,'喂,外面有40度啊,我得預(yù)熱下發(fā)動(dòng)機(jī),還得把熄火裝置放身 邊, 你別一味加油了,空氣有點(diǎn)潮濕,沒必要再加了.',可不是忒麻煩。

    大多數(shù)人才不想管發(fā)動(dòng)機(jī)罩后的事情呢。他們只關(guān)心達(dá)到目的地。類似的,人們只關(guān)注自己的業(yè)務(wù),才不愿糾纏什么軟件問題呢。

    Venners: 你以前說過,Java被設(shè)計(jì)用于分布式的可靠人機(jī)交互軟件系統(tǒng)。我知道Java的架構(gòu)有助于實(shí)現(xiàn)可靠的分布式系統(tǒng),但是Java是如何幫助提高人機(jī)交互體驗(yàn)的。

    Gosling: 很多是語言的API層在作用,但如你所見,大部分還是語言的底層部分的功勞。你提到的很多其他方面也有利于改善用戶的使用體驗(yàn)。 舉個(gè)例子,經(jīng)常崩潰的軟件當(dāng)然用起來很不爽。而依賴于機(jī)器CPU的軟件系統(tǒng)則更難使用。軟件零售商將軟件的蘋果版本和PC版本分類擺放,其實(shí)本身就是整個(gè) 市場(chǎng)結(jié)構(gòu)的大錯(cuò)。而在日本,人們?cè)诓煌腃PU和不同的操作系統(tǒng)下,生產(chǎn)了很多Java手機(jī),但他們之間的軟件都能互相移植。比方說你想裝一個(gè)俄羅斯方塊 游戲,那就裝好了,可移植性為用戶帶來了莫大的便利。

    Venners: 您曾說過,打造一個(gè)高度靈活適應(yīng)的編程系統(tǒng)是你畢生的追求。而我在編寫系統(tǒng)的時(shí)候,團(tuán)隊(duì)成員經(jīng)常會(huì)提出程序適應(yīng)性的問題。有些 會(huì)增強(qiáng)程序的適應(yīng)性,但復(fù)雜度也隨之增加. 當(dāng)你在編寫軟件的某一模塊時(shí),你是如何在適應(yīng)性和復(fù)雜度之間權(quán)衡的。

    Gosling: 這個(gè)就是體現(xiàn)計(jì)算機(jī)編程藝術(shù)性的地方了。向程序添加一部分代碼,當(dāng)然會(huì)增加程序的復(fù)雜性,可是如果你不加呢,用戶用你的軟件時(shí)就會(huì)繁瑣得多。精力守恒定理 適用于此,你投入到程序中的精力越多,用戶使用時(shí)遇到的麻煩和折騰的精力就會(huì)越少。程序員做的,正是在開發(fā)端和用戶端之間盡量平衡開發(fā)和用戶的復(fù)雜度。

    Venners: 有人問過你對(duì)開發(fā)工具有何看法,當(dāng)時(shí)你回答更愿意和程序的復(fù)雜性做搏斗,你喜歡程序復(fù)雜性的哪一部分呢?

    Gosling: 這個(gè)問題可難倒我了。恩,這么說吧,你買個(gè)手表,那它就是塊手表,帶分針時(shí)針的手表,對(duì)吧?可是有些公司最近生產(chǎn)了一種手表,它們的外殼是透明的,里邊的 機(jī)械裝置一覽無遺。我也不知道為什么,看著它們,我不得不說,'看起來很酷,不是嗎',打第一眼看到它們,我就買了一個(gè)。 當(dāng)我在構(gòu)思完軟件模型后,我就找一些復(fù)雜的模塊,將它們整合起來,最后它們嚙合成一曲完美的軟件旋律---這種感覺實(shí)在是太美好了。而就在昨天,我在即安 裝了一對(duì)新的揚(yáng)聲器,立體音響系統(tǒng)背后的電線一團(tuán)亂麻,簡(jiǎn)直像個(gè)迷宮。但我卻樂在其中,正是這種復(fù)雜性,才讓我如此著迷。


作者介紹


    Bill Venners, Artima軟件公司的頭頭。該公司提供公共和私人訓(xùn)練和咨詢服務(wù)。Venners是一位Java程序開發(fā)者,并致力于Jini技術(shù)。他寫作 了'Java2 虛擬機(jī)內(nèi)幕'一書,并創(chuàng)辦了Java和jini開發(fā)者的資源網(wǎng)站Artima.com。同時(shí)他還在撰寫一本新書'API設(shè)計(jì)',用以指導(dǎo)設(shè)計(jì)面向?qū)ο蟮腁PI。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多