代碼有多少行

??????????????????????????????????????????????什麼代碼啊

軟體工程師:幾千行代碼能搞定的為什麼要寫幾萬行


我們公司的 Windows 版軟體已經有十多年的歷史,經過歷代工程師的整治之後,內容已經凌亂不堪。過去三個月,我找時間自己重寫了整個主程序。原本數萬行的程序,被我重寫的只剩下數千行,功能不變,效能更好,而且架構儼然。
前幾天完成 Alpha 版之後,我不禁開懷大笑,笑聲驚動整個辦公室。

在重寫這個程序的這段期間,前兩個月,我每周花在這個程序上的時間應該不會超過四個小時。後來我趁著農歷新年沒事干,跑到公司加班數天,但是一天寫程序的時間也不會超過四個小時。
通常我白天寫兩、三個小時的程序,遇到瓶頸就去忙別的事,或者乾脆回家吃晚飯,晚上睡覺前,躺在床上用手機查一下資料,第二天上班走在路上,就會很自然的想到不錯的解法。
寫程序是一種創作,不是做苦工,不能每天在電腦前面枯坐十幾個小時,否則超時工作,只會讓自己的腦筋變得更糊塗。
我所認識的許多寫程序高手,每天寫程序的時間都不會太長。


1995 年的時候,有一天在美國鹽湖城,我陪著趨勢科技的創辦人張明正扶著他爸爸過馬路,他突然跟我說:「宜敬,我實在搞不懂,在軟體這個行業,一個優秀的工程師的產出可以輕易抵得上一、二十個平庸的工程師,但是公司最多隻要付他兩、三倍的薪水。那為什麼還有公司願意付錢僱用那些很平庸的工程師呢?」
當時我博士剛畢業,當然不知道要如何回答他的問題;而現在過了這么多年,我還是不知道要如何回答那個問題。
而當時張明正會問我那個問題,應該是因為我介紹了幾位同學跟朋友到趨勢科技工作。那幾位都是以一當十、以一當百的高手。趨勢科技當時沒有給他們十倍、百倍的薪水,但是對他們也不薄,給了他們不少的股票。
後來趨勢在日本上市,我那幾位朋友都成了億萬富翁,財富應該超過一般工程師的十倍、百倍吧?


寫一個大型程序,並不是「人多好辦事」。
如果是土木工程或是製造業,人越多、產出就越大。如果一個計劃延誤了,就多調一些人手過來幫忙。
但是在軟體工程里,人越多,就越是難以協調,寫出來的程序也往往品質越差、效能越糟糕。
這就是有名的」The Mythical Man-Month: Addingmanpower to a late software project makes it later」。
IBM在1960年代開發OS/360作業系統軟體時,就發現了這個奇特的現象。
所以我也搞不懂,大型軟體公司僱用了那麼多的軟體工程師幹嘛?


我在當兵的時候,有一陣子在台中十軍團的資訊中心擔任資訊官。那時候我手下有兩名資訊科系畢業的大專兵,但是我嫌他們兩人寫程序寫的太慢,而解釋給他們聽更是費事,還不如我自己動手寫比較快。
所以我就叫他們到一邊涼快,所有的程序都由我來寫就好。而他們兩人覺得很不好意思,就泡了很好喝的奶茶給我喝。
後來我們成了很好的朋友。


寫程序並不是寫的越長越好、越厲害。
我年輕在台大資訊工程系的時候,會跟朋友炫耀說:「我寫的程序語言編譯程序,總共有一萬多行耶。」
後來我去美國布朗大學讀電腦科學博士,畢業的時候喜歡跟朋友炫耀:「我的博士論文那個程序,功能那麼強大,但是我只用了七、八千行程序就搞定了耶。」


二流的軟體工程師,喜歡把簡單的問題弄的復雜,寫出別人看不懂的程序。
一流的軟體工程師,喜歡把復雜的問題簡單化,寫出架構清楚明白的程序,讓人看了之後,覺得問題好像很簡單。
三流的軟體工程師會去崇拜二流的軟體工程師,因為他們會覺得二流工程師寫的程序都看不懂,一定是超級厲害;
三流的軟體工程師不會去崇拜一流的軟體工程師,因為他們會覺得一流工程師所做的事情都很好懂,好像都很簡單。
只有一流的的軟體工程師才會佩服一流的軟體工程師,因為只有他們才能看的出來,其他的一流軟體工程師厲害在哪裡?
台灣的軟體業如此,美國的軟體業也大致如此。


直到1980年代末期,IBM一直是世界上最大的電腦公司。而當時 IBM 找了一些原來是做硬體製造的高階主管來管軟體部門。
那些高階主管依照他們管理製造部門的經驗,決定用KLOC (thousands linesof code),也就是每位軟體工程師每年寫出多少行程序來計算軟體部門的效率。
結果軟體工程師們都「短話長說」,寫出一堆落落長又沒有效率的軟體程序。


要成為一流的軟體工程師,必須熟悉了解電腦科學的各種基礎理論,也必須累積長時間的實務經驗。
我在布朗大學電腦科學系讀博士修課的時候,程序作業的份量非常重。上作業系統(OperatingSystem)課的時候,教授要我們每個人獨立寫一個包含File System與 Process System的迷你Unix作業系統;
上編譯程序(Compiler)課的時候,教授要我們每個人獨立寫一個 Compiler,而且每一個模組還必須用兩個以上的方法寫,然後互相比較;
而上 Andy Van Dam 教授的電腦圖學,那簡直就是人間煉獄。當時助教發問卷調查,發現每位學生每周花在寫那堂課的程序的平均時間超過四十個小時,學生們幾乎要群起造反。
但是修過上述那三門課而沒有被當掉、又拿高分的,就成了懂理論又懂寫程序的高手、高高手。


當年我在布朗大學讀博士的時候,我估計我們繫上像我這種等級的寫程序高手,大概有十來個吧?
但是我們繫上公認最厲害的寫程序高手,還是我的指導教授 Prof. SteveReiss。他一個人大概抵得上五到十個我們這種等級的工程師。
關於他的傳說很多。有一次我去他的辦公室找他,看到他正在玩接龍游戲。他被我發現了,有點不好意思,趕緊跟我說,他覺得 Windows 上的接龍游戲很好玩,但是他沒有 Windows 電腦,所以就花了四、五天,利用零散的時間在他自己的 Sun Work Station 上面寫了一個類似的接龍游戲,包含彩色的圖像介面等等。
想玩電玩就自己寫一個?我很想笑,但又差點在我師父面前跪了下來。

十一
我在布朗大學認識的那些軟體高手,後來真正以寫程序為志業,然後寫出偉大又廣泛被使用的程序的,應該不多。
因為有些人後來去當大學教授,教授通常是不會自己寫程序的。久了之後,我不知道他們的功力剩下多少?
有些人後來為了拿高薪,去一些大公司寫一些很沒營養又很無趣的程序。久了之後,我不知道他們的功力剩下多少?
有些人後來進入產業界工作,沒多久就升上了管理職,而管理職人員通常是不會自己寫程序的。久了之後,我不知道他們的功力剩下多少?
所以程序高手原本就不多,而一直繼續在寫程序的程序高手就更是稀有了。

十二
美國的軟體業有一個老笑話:如果有兩個工程師在同一個團隊,一個很會寫程序,另一個很不會寫程序,那後來升上經理的,一定是那個不會寫程序的。
因為團隊需要那個會寫程序的留下來寫程序。

十三
我寫程序的功力最高的時候,應該是二十多年前我剛拿到博士的時候,那時候我又懂理論、又累積了大量的寫程序經驗。我不敢說自己能以一當百,但是以一當十應該是綽綽有餘的。
只可惜,沒多久之後我就升上了管理職,而當上了經理、協理、總經理之後,如果還自己寫程序的話,那是會被別人笑的。

所以我就不再寫程序了,而且我也學會,要在自己的部門多擺一些工程師,否則陣仗不夠大,會被別的部門瞧不起,也會被我的上司瞧不起。
二十年下來,我的功力大概只剩下兩三成。

十四
我現在終於自己當了老闆。而當上了老闆之後,最大好處之一,就是我高興寫程序就可以寫程序。就算有人要笑我,我也可以不理他們。

十五
我趁過年期間重寫了我們公司的 Windows 主程序,完成之後,自覺功力已經恢復到當年的三、四成,不禁大樂。
不過我還是覺得,軟體工程還真是一門很難以理解的行業。雖然我本身就是一個軟體工程師,雖然我的博士論文研究的就是程序開發環境(Programming Environment),主題就是我在這邊所說的這些問題。

⑶ Windows源代碼有3000萬行什麼概念

可以這樣理解:
以我現在的水平,每天寫的原始代碼大概是1200行。需要用相同多的時間來調試,再需要相同多的時間來優化,還需要相同多的時間來編譯測試,算下來每天能寫300行有效代碼。
讓我寫一個windows的話,需要10W天=273.97年

其實編碼只是整個軟體開發過程裡面的一小部分。

⑷ 世界上 最長的代碼 是多少行

我也覺得是操作系統的代碼,win7的代碼大概5、6千萬吧,win8,win10應該更多些

⑸ 求C語言代碼,一千行左右

因為我就是一個編寫了很多年程序的程序員,所以我敢說這句話:你的這個要求內是絕對不可能實現的。容有能夠編寫 1000 行、甚至更多行源代碼的程序員肯定是存在的。但是要知道:一個人從編寫源程序、編譯、調試、直到通過整個源程序、並讓自己編寫的程序能夠運行出自己希望的正確運行結果,那是需要 一個漫長的過程的。不是只要源程序沒有語法錯誤,程序就能夠運行出正確的結果的。所以在編程方面,這個只能夠靠自己的刻苦努力調試程序了。

⑹ 程序員寫100萬行代碼,到底是什麼感覺

今天小博突然發現一個十分有趣的帖子

《寫了100W行的代碼是啥感覺?》

看完之後就頭皮一陣發麻,寫一萬行的代碼?!

are you kidding me?

其實,代碼真的是重質不重量,質量高的代碼,是當前代碼界提倡的,當然寫出高質量的代碼肯定需要一個相當高的專業素養,這需要在日常的代碼書寫中逐漸去吸收掌握。誰不是每天都在學習呀,目的還不是為了一個,為實現某個功能寫出高質量的代碼。

⑺ 程序開發者是怎麼讀完千萬行級別的代碼

是通過時間和經驗還有大量資料累計起來的。而且程序員不能光讀密碼,要讀完以後根據自己的理解再加入之前學過的東西,再把代碼實現出來才是一個好的學習途徑。光靠讀學不會的

⑻ 一千行代碼大約有多大

1行30~50個英文字母
1000*50=50000byte約=50KB?
1000*20=20000byte約=30KB?
30~50KB?
我有個程序1700多行。回64.0 KB (65,536 位元組),差不多吧答

⑼ 當編程超過一萬行代碼後,與普通的程序有什麼不同

還是認真了解一下面向對象和面向過程吧!

⑽ 像Windows XP在描述軟體代碼數據量時經常說 幾千萬行,這里的「行」是怎麼計算的

就是一個回車,行數的計算跟word一樣,就是一行一行的,不同的是他可能是一個單詞就是一行