-
1 # 草灘二哥
-
2 # niko7
程式碼,就是寫點小程式,比如hello world程式,也就一點原始碼而已。軟體的話,程式碼是重要的組成部分,但程式碼算不上最重要的組成部分。軟體都是用來解決實際問題的,所以起碼有實際的需求,然後要有設計,之後要有文件,原始碼,編譯後的可執行程式,還有後續服務。從經濟成本或者時間成本等維度進行比較,“程式碼”是幾乎“無成本”的,隨便搞搞的,而軟體各方面要求高的多,要成熟的多,軟體的成本在“程式碼”的成本的10倍以上。(軟工聖經《人月神話》中講到,設計良好的介面,相比於無設計的版本,工程量約為3倍;有文件相比於無文件,工程量約為3倍;介面設計良好並有文件,相比於無設計無文件,工程量約為3*3=9倍。)
同樣的列印“九九乘法表”,剛開始學程式設計的學生也能做,而如果讓一個在教育領域做教學配套軟體的專業公司來做,拿出來的東西完全不一樣。報價當然也不一樣,一般差一個數量級。(約10倍)
工作中偶爾會碰到有人來搶單子的,比如做個小的管理系統,我們報價5萬,甲方嫌貴,因為甲方某個人的兒子或者什麼人,大四或者剛畢業,說是5千就能做!但根據經驗,這樣的甲方往往在三五個月後還來找我們,說是那個人太不靠譜,時間浪費了,事情沒做好,看起來也做不好了,反正那個人很努力但始終無法讓甲方滿意。當然,我們現在也不願意接觸這樣的甲方,因為太不成熟,他們從心底裡覺得軟體是不值錢的,應該給個光碟的工本費就差不多了。現在網路下載了,連光碟錢都不想給。
剛才是成熟度的距離。
換個角度,初入行的程式設計師眼裡只有程式碼,產物也只有程式碼。
幹了幾年後,我認為要5年以上,才會有產品、服務的概念和意識,他的交付物才可能是軟體(稱得上產品)。
這大概是5年(1萬小時的實戰經驗,得是比較會抓時間的那種人,5年裡才能湊齊1萬小時)的距離吧。
回覆列表
我僅以C語言為例,編譯式的大概給你解釋一下:
1.編譯期。你的code首先經過預編譯,也就是解析你的編譯指令。然後進行所謂的詞法分析,語法分析等等(有興趣可以去看編譯原理的教材),生成中間程式碼。在這過程中,你的變數,函式等等會以編譯器制定的格式(我們叫符號)存在中間程式碼之中。一些lib,dll等就是這樣的中間程式碼。這是不能被機器執行的。
2.連結期。做的事情大概是一些重定向,符號表對映等。簡單說來就是你的多個code編譯出來的目標檔案,按照他們在程式碼中所反映出來的關係(如依賴),將他們組合到一起。使得系統在啟動這個程式的時候知道去哪裡尋找這些資源。(可以看一下編譯,連結,與庫 這本書)
3.所謂的各種圖,都是資源的一種,可以靜態的和動態的連結到系統中。
任何系統都是這樣構建起來的。
你問這樣的問題,我覺得可能你剛剛進入這個行業。奉勸你先多做一些練習,看一下我推薦的書,就會對這個理解非常深入了。