哪一種程式語言比較好呢?

通常會提出這個問題的是一個剛想踏入暗黑程式界的初心者程式設計師 希望在一開始就能夠選擇對的路,拜對師門。我的經驗告訴我,不論你 選擇哪個門派,唯有一種結果是肯定的

「絛絛道路通爆肝」,「欲成高手,必先爆肝」

通常討論或提到這個問題所得到的回應,大多是各語言擁立的支持者 開始互相抨擊對方有多爛,然後誇讚自己有多好。這不知道算不算是一種迷失呢,深陷在追求強化效能語言漩渦裡。

企管有一本相當有名的小說叫「目標」,作者是高德拉特,一個TOC制約法創始人。 至於什麼是TOC法則,可以到圖書館借閱這本書,讓自己觀念獲得翻新。

或許用TOC來比喻我接下來要講的內容有點不符合,但我覺得這和TOC 想要傳達的意思很像,如果有TOC高手發現我說錯了,也煩請指點糾正。

你必需想想程式最終的目的是什麼?

「寫出一個系統,讓N個使用者使用」

假設有兩種新的程式語言叫OGC和ORZ,一個效能超高,學習曲線高 一個效能普普,學習曲線低,每年有10000名投入這兩種語言的學習者 如下表:

          OGC    ORZ
===================================
效能反應      0.3s    1.5s
易學度       2%    10% 
每年精通程式高手  200p   1000p 
伺服可負荷量    10000kp  200kp
高手分享資源    3%    15%
====================================
p=人,kp=萬人

接下來使用不同程式語言開發的可能實際情況

------------------------------
選擇了 OGC 做為開發的情況
------------------------------
OGC工程師:
		老闆,我一個人開發有點吃力,再請一個工程師好嗎?
老闆:
		我再用多請一位好了(因為高手少,花了3.8萬請了一位)
老闆:
		我們的系統(網站)用OGC開發的,有超高的效能,只要在0.3就能完
		成你要的功能。
廠商:
		我才不管理你們用啥東開發勒,只要我需求的功能有出來就好
		但不能太慢,在反應2秒之內,都能接受。我的客戶群大概有
		100萬人
OGC工程師:
		我是個OGC程式高手,但新進來的菜鳥還要慢慢的教他
		真是有夠麻煩的啦!每天都加班,媽的我不想做了
	
開發過程中…

老闆:		
		幹,我請來的GC的程式設計師說他家母狗生小貓,所以他不幹了
		我去2222人力銀行徵才,丟出一個月4萬薪資,沒半個來應徵。
廠商:
		啥小,你說你工程師突然離職了,所以專案還要延二個月?!
		關我屁事,把你的違約金準備好吧
老闆:
		(老闆對著新的工程師微笑)你準備肝爆吧!
------------------------------
選擇了 ORZ 做為開發的情況
------------------------------
ORZ工程師:
		老闆,我一個人開發有點吃力,再請一個工程師好嗎?
老闆:
		我再用多請一位好了(因為高手多,花了3萬請了一位)
老闆:
		我們的系統(網站)用ORZ開發的,每個功能大概要1.5秒才能完成
廠商:
		我才不管理你們用啥東開發勒,只要我需求的功能有出來就好
		但不能太慢,在反應2秒之內,都能接受。我的客戶群大概有
		100萬人
ORZ工程師:
		我是個ORZ程式高手,新進來的菜鳥基本程度還不錯,一點就懂
		而且網路上的學習資源很多,丟給他學習就好了。兩個人開發速度
		還滿快的,今天進度也達到了,下班後來去泡溫泉=v=
	
開發過程中…

老闆:		
		你的專案將在下禮拜完成,聽說你還想要再做另外一個專案是嗎?		
廠商:
		嗯,接下來這個案子我希望也要在六個月完成,可以嗎?
老闆:	
		沒問題=v=
	  
==================================
情況分析:	  
	  
1.在老闆有限的資源與預算,可以與你共事的高手工程師能有幾個?
	若你是萬中選一的高手,那麼你就準備爆肝吧!
	
2.系統或網站的使用者人數有多少?
	若這個系統(網站)曾經的最大同時使用者為68萬人
	那麼你的程式能負荷1000萬人有意義嗎?
	
3.效能的0.3s和1.5s對使用者有感受差嗎(假設使用者在於2s都能接受)
	使用者會因為你快了1.2s而對這個系統產生好感嗎?
	通常會在意這種東西,也只有該死的工程師不是嗎?
	
==================================	

好像有點偏離主題了(跳tone跳真大=.=)。如果你正苦惱底到要選擇哪一種語言,你可以用下列幾點做參考:

  • 語言最好選擇偏向容易學習的。為什麼這麼說呢,當你先學習容易學的程式,你會有一定的基礎,這樣甘果想要轉偏難的語言,就不會那麼吃力。就好比網路遊戲你不會一開始就去高等怪區打怪吧?穩趴的,而且容易學習程式語言的學習者會偏多,高手多,資源也就偏多(好練咩)
  • 應專心於一種語言,然後學習如何兩其它程式做橋接結合的部分技術,而不是什麼都學而不精,因為我信相任何一個程式語言高手都是對於他們的選擇下過功夫的(爆肝過),就像網路遊戲有人練逆天型的,超難練,但練起來就爆強(雙關語)XD
  • 以你目前可得到最多資源的做為選擇,假設你已經有前輩是某程式高手,而且願意帶你的話,那你可以考量一開始就跳至學習偏難的程式語言。不過呀…電影有名言「人一定要靠自己」, 而且我覺得大部分的高手工程師都有大頭症
  • 等專攻的語言精熟之後,要學習橋接其它語言技術。這樣才能拿雙手劍呀!XD,不過若搞到三刀流就有點辛苦了
  • 一個海賊團裡面要有航海士、廚師、醫生、音樂家,所以要多認識一些不同技術的朋友或合作隊友, 像是應用程式、WEB網頁開發、CSS設計師、網管、flashAS師
  • 尊重別人的專業,肯定自己的專業,武器不在多,夠利就好。你覺得一把鋒利的阿嬤牌菜刀和一把生鏽的貴夫人劍,哪個砍人比較傷呢?

你用憤慨眼神看著我,我知道你最後還是想問,倒底要學哪一種程式語言啦!?

好吧…如果你不嫌棄我的選擇,我建議一開始可以先從PHP開始學習,效能或許沒其它語言好。但是他的確是個相當易學的程式,資源也相當多。若你是喜歡挑戰高難度的玩家,那請直接向C語言往違大的髮線前進吧(我朋友的髮線又往後移動了)

arrow
arrow
    全站熱搜

    低溫烘培 發表在 痞客邦 留言(2) 人氣()