作者derekhsu (華麗的天下無雙)
看板Soft_Job
標題Re: [閒聊] 對寫程式的一些看法
時間Mon Dec 8 21:08:45 2008
※ 引述《roger70349 (roger70349)》之銘言:
: 小弟進資訊業己經快滿三個月了,這一陣子接了幾個小案子,有用php跟asp寫的,在寫程
: 式的過程中,老板給我一個觀念就是,在寫一隻程式時,要先了解它的運作流程,然後再
: 動手寫,程式語言大同小異,只要流程懂的話就不難,想請問各位大大,大家在學程式時
: ,會不會只局限於一種語言,因為我有一位學長說,寫asp跟php沒什麼市場,要我趕快學
: C#,他說C#的市場比較大,應該學C#錢比較多,但我覺得,不管在學那種程式語言,第一
: 個就是要弄清楚整個開發流程,用什麼言語去寫反而是次要,不知道大家的意見如何,謝
: 謝。
你老闆的說法是對的。
你的學長就某部份來說,也是對的。
我的經驗告訴我,一些很愛用MS IDE的Programmer,實際上對於ASP.NET背後運作的
東西完全搞不清楚,問他知不知道什麼叫做MVC,他可以回答,啊,這個ASP.NET的頁面
不就是MVC了嗎?有資料庫的M,前面的ASPX是V,C就是Codebehind....
就某種程度上來說,也許你可以這樣說,但是跟真正我們所謂MVC2的東西比較起來,
這真的差別大得不得了,而事實上,.NET從2002-2005一直都是這樣走過來的。就算是
後來MS有補一個Enterprise Library出來,相當的有威力,但相較於真正的Pattern來說
,還是有很多缺憾的地方。
於是其實有一些來自於不同語言的Pattern被引入到ASP.NET裡面,像是SqlMap,
Hibernate這些在Java上面行之有年的Pattern,甚至也有人實做了Active Record等
ORM的Framework,當然也有人用ASP.NET真正的做出來了MVC,甚至還可以長得很像ROR
。
而PHP也是一個相當有疑問的程式語言,跟其他程式語言最大的不同,就是他可以
Script也可以OO,而且PHP5開始他OO的方式越來越奇怪,可以用一些弱型別的特性
做出一些弱型別很快就可以搞出來的Pattern但是別的語言搞不出來。當然維護上
就會有問題,因為你根本不知道那麼變數在那個時候應該會是什麼東西,更重要的
是他寫起來沒有什麼規範,可以Script也可以OO,於是會搞出一些很難Maintain的Code
。
不過,有鑑於他的彈性,PHP想要怎麼搞Framework就可以怎麼搞Framework,中國人
作出了一個叫做PRADO的怪物,可以在PHP上面實做Event-Driven跟Code Behind跟.Net
一樣的Pattern,也有人把Struts移植到PHP上面,PHP後來也自己發展出了類似ROR的
Pattern,甚至連ORM也有自己獨特的東西。
如果你有注意到我說得,你會發現,其實,很多的Pattern根本不限制程式語言的,就
算是弱型別跟強型別有所不同,從C++開始發展的Design Pattern到後來2003年提出來
的更龐大的Enterprise Design Pattern,不管在哪個語言上面都有辦法Implement
每個語言有每個語言的特性,IDE,限制等等,在實做某些Pattern或是應用領域的時候
會產生差異,但他們的Pattern是共用的,可以互通的,在ASP.NET上吾人能搞出一些
Java-Like的Framework,在Java上面搞出Event-Driven也不是不可能,PHP上都被弄出
不只一套,只是因為缺乏好的IDE並不是很實用而已。
當然我談的只是Web Ap的領域的部份,寫過PHP,ASP.NET,ROR,Java應用過一堆的
Framework,事實上很多概念語言都是相通的,只是作法不同。
至於OS AP的部份我比較不熟,但是一些Pattern的部份依然適用,只是隨著OS不同,
會跟OS需要有更深的結合。PHP能夠拿來寫XWindows的東西,但我寧願選擇tcl/Tk或
是Java這些更方便的語言。
C#的優勢在於,他是一個可以應用在不同應用領域的語言,像是Java一樣,可以在
Mobile Device上面、OS上面,Web上面更方面的被使用,但是開發的Pattern卻是
可以一直跟著你帶著走的。
但是,這麼說吧,Yahoo靠得是PHP。台灣最大(無名)、第二大部落格平台都是PHP
做的,Google用Python、Java、PHP、C,就是沒用.Net,IBM有很多Java Solution,
,差別只是事在人為而已。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.168.108.245
※ 編輯: derekhsu 來自: 118.168.108.245 (12/08 21:09)
推 StubbornLin:Python讚~ 值得學 XD 12/08 21:23
→ StubbornLin:我賭python未來會越來越紅 12/08 21:23
→ derekhsu:我也喜歡Python,而且也有很多漂亮的Framework 12/08 21:25
→ derekhsu:無奈,在公司上班不能想用就用 12/08 21:26
推 leicheong:嗯. 目前用.NET比較多的大公司就只有HP吧 12/08 21:32
推 fashionguy:我個人是覺得yahoo跟無名 google用不用.net這點如果 12/08 21:33
→ fashionguy:是說明.net就不好或是要被淘汰之的好像不太恰當 12/08 21:34
→ fashionguy:因為目標不太相同 12/08 21:34
→ derekhsu:這...我有說.net會被淘汰嗎?我也沒說.net不好..... 12/08 21:35
→ derekhsu:不...友達用的是.net 12/08 21:39
推 poqwer:會被淘汰的,只有人而已............ 12/08 22:33
推 andymai:5F~還有另一家外商喔~事實上有許多企業(電信業、銀行等)都 12/09 00:05
→ andymai:有用.net~只是好像都是公司內部使用而已... 12/09 00:06
推 liunate:原po的意思應該是,.NET很流行沒錯,但是其他語言一樣普遍 12/09 00:29
推 roger70349:學程式是否要跟著市場走,又是一個問題了 12/09 00:45
推 andymai:樓上~學程式要跟著老闆和客戶走就不會錯了(誤) 12/09 00:48
→ derekhsu:還有,中華電信也用.net,另外群創、力晶也都用.net 12/09 00:50
→ derekhsu:至於Web方面,其實比數量.net遠遠不是PHP的對手... 12/09 00:51
→ derekhsu:主因是.net的顯性成本非常高,PHP的顯性成本幾乎是0 12/09 00:52
→ derekhsu:我的意思是,語言不是問題,其實概念都相通(ASM另外講) 12/09 00:53
→ derekhsu:重要的是「方法」,而不是只會用工具或是只是寫Code 12/09 00:53
→ derekhsu:換句話說,就是從Coding走向Design 12/09 00:54
推 fashionguy:概念最重要這點很同意,我的意思是每種工具有他的 12/09 09:07
→ fashionguy:擅長之處,如果今天要開發的是網站網頁應用程式 12/09 09:08
→ fashionguy:那麼我就會選擇php,甚至是一些現有的論壇套件之類的 12/09 09:09
→ fashionguy:但如果是要做商用軟體, javaEE跟.net才會進入我的考量 12/09 09:11
→ fashionguy:如果我要開發簡單的win AP 我就會用delphi之類的IDE 12/09 09:12
推 Bencrie:Xwindow沒有s ~ (逃 12/09 09:14
→ fashionguy:所以我才會覺得用yahoo沒用.net這句話怪怪的 12/09 09:15
→ fashionguy:但是如果你的意思是世界上除了.net以外還有好多東西 12/09 09:16
→ fashionguy:那我很同意,對資深工程師來說只要能方便 12/09 09:17
→ fashionguy:節省時間增加效率,工具間的切換應該是不算甚麼 12/09 09:19
→ fashionguy:重要的是最基礎的觀念 12/09 09:21
推 wisehuang:.NET..就MS用最多啊 XD 全都是.NET 噗 12/10 01:14
推 coronach:有一次MS的活動網頁外包 用的竟然是.jsp不是.asp.... 12/11 23:35