Re: [閒聊] 對寫程式的一些看法
※ 引述《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)
推
12/08 21:23, , 1F
12/08 21:23, 1F
→
12/08 21:23, , 2F
12/08 21:23, 2F
→
12/08 21:25, , 3F
12/08 21:25, 3F
→
12/08 21:26, , 4F
12/08 21:26, 4F
推
12/08 21:32, , 5F
12/08 21:32, 5F
推
12/08 21:33, , 6F
12/08 21:33, 6F
→
12/08 21:34, , 7F
12/08 21:34, 7F
→
12/08 21:34, , 8F
12/08 21:34, 8F
→
12/08 21:35, , 9F
12/08 21:35, 9F
→
12/08 21:39, , 10F
12/08 21:39, 10F
推
12/08 22:33, , 11F
12/08 22:33, 11F
推
12/09 00:05, , 12F
12/09 00:05, 12F
→
12/09 00:06, , 13F
12/09 00:06, 13F
推
12/09 00:29, , 14F
12/09 00:29, 14F
推
12/09 00:45, , 15F
12/09 00:45, 15F
推
12/09 00:48, , 16F
12/09 00:48, 16F
→
12/09 00:50, , 17F
12/09 00:50, 17F
→
12/09 00:51, , 18F
12/09 00:51, 18F
→
12/09 00:52, , 19F
12/09 00:52, 19F
→
12/09 00:53, , 20F
12/09 00:53, 20F
→
12/09 00:53, , 21F
12/09 00:53, 21F
→
12/09 00:54, , 22F
12/09 00:54, 22F
推
12/09 09:07, , 23F
12/09 09:07, 23F
→
12/09 09:08, , 24F
12/09 09:08, 24F
→
12/09 09:09, , 25F
12/09 09:09, 25F
→
12/09 09:11, , 26F
12/09 09:11, 26F
→
12/09 09:12, , 27F
12/09 09:12, 27F
推
12/09 09:14, , 28F
12/09 09:14, 28F
→
12/09 09:15, , 29F
12/09 09:15, 29F
→
12/09 09:16, , 30F
12/09 09:16, 30F
→
12/09 09:17, , 31F
12/09 09:17, 31F
→
12/09 09:19, , 32F
12/09 09:19, 32F
→
12/09 09:21, , 33F
12/09 09:21, 33F
推
12/10 01:14, , 34F
12/10 01:14, 34F
推
12/11 23:35, , 35F
12/11 23:35, 35F
討論串 (同標題文章)