| 2 | 1/1 | 返回列表 |
| 查看: 813 | 回復: 1 | |||
yalefield金蟲 (文壇精英)
老漢一枚
|
[交流]
【轉(zhuǎn)帖】消滅程序員需要百年嗎?(I) 已有1人參與
|
|
蘇曉路 看到昨天CSDN首頁的頭條博文,《一百年后,人類怎樣編程?》(http://blog.csdn.net/turingbooks/archive/2011/03/29/6285205.aspx)。 只是這個題目,就勾起心中無限感慨。文章沒細看,內(nèi)容大致是分析各種語言,以及其中各種語言現(xiàn)象,今后的發(fā)展趨勢。 我對于語言的進步一直不感冒,對5年前就有很多人推崇的Ruby,至今也懶得抬眼皮看看,8年前被迫用過幾天Perl,我就斷定這是最糟糕的編程語言之一,因為它標榜自由,卻又沒法真正自由。時至今日,我仍然只用C++,C#,Java這三種語言,如果SQL也算的話就是四種。 對于達到一定程度的程序員而言,語言已經(jīng)不重要了。不管做什么功能或者什么平臺,只要不是初次上手,都應(yīng)該有50%以上的代碼可以自動生成出來,另外利用開源代碼和商業(yè)化構(gòu)件完成30%以上的工作,真正需要自己手工編寫的部分絕對不應(yīng)超過20%。不論是自動生成的代碼,還是開源代碼或構(gòu)件,最大程度的可理解性和通用性是首要追求的目標,因此最通用的、和使用人數(shù)最多的語言才是最好的語言。 語言的進步對于提高編程效率確有一定幫助,我自己也深有體會,六年前我做C#項目的時候不得不自己寫了對IList進行查詢的功能,兩年之后,LINQ成了語言自帶的標準功能,后來的程序員顯然可以節(jié)省開發(fā)這個功能的時間。但是,語言帶來的效率提升,遠遠不如思考方式變化引起的編程效率飛躍來得大。 從第一天編程開始,我就不喜歡這個工作,看到同事飛快地打鍵盤,屏幕不停地吐出一行行程序,覺得這件事實在傻透了。 她編的是FOXPRO,又是一種我很看不起的語言。她編的功能,無非就是橫豎畫上幾根表格線,然后把一些數(shù)字和文字填到正確的格子里去,這就是公司里的編程高手所做的事情。 我曾經(jīng)驚訝于這么傻的事情竟然真的需要人來做,可是如果不用人做,又能怎樣呢?那時幸虧我利用一點小聰明,在還沒有開始從事這種傻工作的時候,就改去研究解密算法了,后來又混上了設(shè)計師,小經(jīng)理,總算沒有傻掉,那時心里不免暗自得意和慶幸。 2000年,有幸目睹了一位當時國內(nèi)最牛程序員的一次編程作業(yè),從此徹底顛覆了我的想法。 先說說牛人的業(yè)績: 一個工作日,基本沒加班,完成一個復雜C/S軟件的服務(wù)器端,用統(tǒng)計小工具數(shù)數(shù)代碼,三萬多行。這個軟件經(jīng)過簡單的測試,第二天就上線實際運行了,每天數(shù)千人訪問,沒出過大問題。 再說開發(fā)過程: 開發(fā)環(huán)境是VS6.0,牛人很少動鼠標,大概嫌耽誤時間,各種快捷鍵運用,讓人眼花繚亂,程序基本上不是寫出來的,而是粘貼過來,重新排列組合一番,再敲上幾個語句補充修正一下,就算大功告成。搞定一個程序塊的時間,基本上跟一般人寫一條語句的時間差不多。 整個工作過程中,看不出明顯用于思考的時間,只要不離開座位,鍵盤的聲音就一直連續(xù)不停。 我想牛人之所以牛,關(guān)鍵就在這里,像運用語句一樣運用語句塊,程序不是寫出來的,而是裝配起來的,就產(chǎn)生了如同手工組裝勞斯萊斯與模塊化裝配豐田之間的巨大生產(chǎn)率差異。 我那時和牛人不在同一層辦公,平時很少機會接觸,又一次在樓下食堂吃飯正好坐鄰桌,聽到牛人講起一件往事: 牛人多年來,不論在哪里工作,都要帶一塊自己的硬盤,里面有幾GB以往做的程序--他的 code base ,有一次這個硬盤突然卡殼了,牛人就跟老婆說,咱們準備回老家改行干別的吧,結(jié)果沒過太久,那個硬盤自己又恢復了,所以牛人終于沒有回老家去?梢,如果沒有 code base ,牛人立刻就不牛了。 后來,我又見過不少優(yōu)秀程序員,使用自己的 code base 裝配出一個個巨大復雜的程序,這種做法局限性也很明顯,自己的 code base 終究有限,總有不夠用的時候。既然如此,利用別人的 code base 不就解決問題了嗎? 理論上是這樣,但現(xiàn)實中卻完全不是這么回事,我很少見到大量利用別人 code base 的編程高手,倒不是這些高手清高,而是他們常常覺得:與其看懂人家的程序,還不如自己寫來得快,節(jié)省一點打字的時間,就要為了適應(yīng)別人的思路花更多時間思考,得不償失。 可以說,到了這個程度,code base 的大小基本上決定了水平的高低,頂級的牛人都有上百萬乃至數(shù)百萬行規(guī)模的code base ,俺到今天才攢了50萬左右,離牛人們還差得很遠。按照這個道理,只要時間足夠長,總會有一些牛人可以積攢一個足夠大的 code base,窮盡當代人類能夠想象到的所有程序,這個時候就沒有編寫,只有裝配了。如果軟件由編寫變成裝配,那么接下來一個自然的發(fā)展就是裝配也要自動化,2000年的時候,代碼自動生成工具還不發(fā)達,到2005年,基于模板的代碼生成工具已經(jīng)遍地開花了。然而這一切似乎只是歷史的重復,模板語言似乎變成了又一種高級語言,仍然需要人工編寫,導致牛人們的 code base 當中又多了一些這種模板而已。而且也總有一些例外情況,用模板做起來復雜無比,還不如干脆留著手工完成。 計算機是否可以自己組裝程序呢?現(xiàn)在看來,似乎已經(jīng)很接近了,至少從UML生成代碼框架已經(jīng)很成熟了,而框架里面需要填入的東西,正是 code base 的內(nèi)容,F(xiàn)在缺少的,只是找到正確的代碼塊,作一些必要的修正,填入框架中正確的地方的問題。如果 code base 中所有的代碼塊都有正確的形式化描述,代碼框架的每一處地方也都有這樣的形式化描述,把二者做一個匹配不就完成了裝配工作了嗎?至于需要必要的修改的地方,通常用編譯器檢查就能找到。如果真是這樣,那么這件事早就成功了,像IBM這樣的公司,一直就想做成這件事,而且他們并不乏完成這些工作所需的任何資源。 |
| 2 | 1/1 | 返回列表 |
| 最具人氣熱帖推薦 [查看全部] | 作者 | 回/看 | 最后發(fā)表 | |
|---|---|---|---|---|
|
[考研] 315分求調(diào)劑 +7 | 26考研上岸版26 2026-03-26 | 7/350 |
|
|---|---|---|---|---|
|
[考研] 291求調(diào)劑 +7 | 孅華 2026-03-22 | 7/350 |
|
|
[考研] 0856材料化工調(diào)劑 總分330 +10 | zhubinhao 2026-03-27 | 10/500 |
|
|
[考研] 085701環(huán)境工程,267求調(diào)劑 +12 | minht 2026-03-26 | 12/600 |
|
|
[考研] 求調(diào)劑 +4 | 零八# 2026-03-27 | 4/200 |
|
|
[考研] 070300求調(diào)劑306分 +3 | 26要上岸 2026-03-27 | 3/150 |
|
|
[考研] 339求調(diào)劑 +4 | 烤麥芽 2026-03-27 | 5/250 |
|
|
[論文投稿] Journal of Mechanical Science and Technology +3 | Russ_ss 2026-03-25 | 5/250 |
|
|
[考研]
材料學碩,求調(diào)劑
6+5
|
糖葫蘆888ll 2026-03-22 | 10/500 |
|
|
[考研] 調(diào)劑求收留 +7 | 果然有我 2026-03-26 | 7/350 |
|
|
[考研] 071000生物學求調(diào)劑,初試成績343 +6 | 小小甜面團 2026-03-25 | 6/300 |
|
|
[考研] 321求調(diào)劑 +6 | wasdssaa 2026-03-26 | 6/300 |
|
|
[考研] 機械學碩310分,數(shù)一英一,一志愿211本科雙非找調(diào)劑信息 +3 | @357 2026-03-25 | 3/150 |
|
|
[考研] 環(huán)境專碩324分求調(diào)劑推薦 +5 | 軒小寧—— 2026-03-26 | 5/250 |
|
|
[考研] 考研一志愿蘇州大學初始315(英一)求調(diào)劑 +3 | sbdksD 2026-03-24 | 4/200 |
|
|
[考研] 289材料與化工(085600)B區(qū)求調(diào)劑 +4 | 這么名字咋樣 2026-03-22 | 5/250 |
|
|
[考研] 調(diào)劑 +4 | 13853210211 2026-03-24 | 4/200 |
|
|
[考研] 361求調(diào)劑 +3 | Glack 2026-03-22 | 3/150 |
|
|
[考研] 280分求調(diào)劑 一志愿085802 +4 | PUMPT 2026-03-22 | 7/350 |
|
|
[考研]
|
Grand777 2026-03-21 | 3/150 |
|