JSP 用在商用網站,PHP用在免費的社群網站比較多
也是有很多廠商用PHP...主要是發展大系統用JSP好像較多
我是用Python...我們接過某家大廠的金流是ASP...
我想用這兩者其一, 設計金融資訊網站, 例如: 退休金規劃, 貸款試算, 教育基金規劃, 巴非特價值型選股系統, 企業評價(算上市公司合理股價)...
個人認為 PHP 相對於 JSP 來說寫法是比較不嚴謹,但是對於企業而言開發成本較低。
JSP使用要付費, PHP是open source免費是嗎?
PingChenLin: 一般小型開發的案子通常用open source就夠用了!使用JSP與PHP應該都不用付費吧,JSP要付費的可能是購買什麼樣的Server軟體
使用什麼語言都不是很重要,JSP server(JBoss, Glassfish, Tomcat)一般需要的資源較多,PHP較簡單而輕巧,JSP可能會因Server的不同而導致內建solution跟著不同,PHP就較為一致,業界國內應該兩者都差不多
還有另一個考量在維護性,php的維護期比較短,php 4/php 5.1 之前都要被放棄了,可是 java 的都還在維護。
whatup1981: 不是很懂你的意思? 意思是若用php4, 現在就不能用了, 不太懂, 缺點能再描述一下嗎?
再請問一下, 沒有學過Java, 直接學JSP能學到精髓嗎? 還有JSP比較不好學? 不好學的話, 非資訊系(金融系)的學生接受度可能會有影響.
whatup1981: java是比較容易被維護,但如果昇級,所有昇級的問題仍會一一浮現,除非你完全不考慮昇級
沒有學過Java, 直接學JSP能學到精髓嗎? 還有php比較好學嗎? 還沒有人回答.
PingChenLin: 不會JAVA也可以學JSP...但是就跟會一點VB再學ASP會比較容易我覺得是一樣道理
我記得系上大一、二所教的動態網頁設計是使用JSP寫的吧!!如果是這樣的話用JSP學生就沒有理由說不會了,PHP雖然簡單,但他的套件、結構都相對鬆散,比較沒有制式的架構跟工具,整理上也會比較麻煩
而且JSP & .NET都有官方的IDE可以使用,在學習上輔助也比較多,PHP的野雞版IDE也很多,但都做得不是很完美!!
我覺得問題的重點是不是放在要出書的內容跟系統的內容是什麼?如果需要大量的演算跟耗時,動態網頁語言都不會是好選擇,反而是演算核心的效能才是考量。然後演算核心的產出資料檔案(也許存資料庫、XML等)這些無論是JSP跟PHP都可以輕易讀取然後展現吧?
然後在考量的怎麼把資料作展現的問題時,如果需要比較Powerful的畫面展現,能需要借助javascript或flash之類的圖表,我覺得相對來說php與JSP好像不是那麼重要就是。可能學點JQuery的東西還比較能做多變化的網頁展示。
我覺得重點還是有沒有需要使用 JSP 背後那套龐大的架構, 如果今天要寫一個高度系統化, 規模龐大的系統, 就會採用 JSP, 否則就是殺雞焉用牛刀, java based 的系統效率都不怎麼好, 除非你真的需要套解決一些整合性方案
PHP 的語法雖較不嚴謹但較易成, 也是較多小型專案選用的語言之一, 程式語言, 要比第一個就要先比誰能解決的問題, 第二個才是比誰比較能夠快速開發與學習
以老師的需求, 我覺得若 PHP 能夠快速解決問題, 就沒有需要使用到 JSP
kingwang317: 現在 netbean 有支援php而且已經可以做的跟像寫java 一樣的共用函數/物件查詢,只是缺點還是一樣, 很慢
kingwang317: 我是從 6.9 版才開始用, 主要是他還能夠支援 phpdoc 格式的註解, 在製作系統文件上比較不需要花費太多時間, html 格式的檢查, javascript, smarty 的, 還有一些基本的 php 語法偵錯像是未使用的變數
Ken216083: 簡單的東西我還是會用notepad++ 啊, 只是有些時候東西量一大, 就必須一些功能來輔助, 才會比較快速
Pizpizpi: JSP PHP都是Server端的Script語言,Javascript, flash等都是Client端的Script語言,應該是可以相輔相成的
kingwang317: 第一次聽到所謂官方framework,你應該了解何謂Open source吧!何謂官方呢?
cobolko: 他們當然是相輔相成,我意思是如果分析出來的資料如果要作圖形的展現,或是要讓網頁的資料表格做更多樣豐富的變化,才需借助flash與JQuery
cobolko: 所以說是號稱,不過ZEND拿來充實PHP不足的函式庫真的是不錯的選擇,蠻多知名的framework都是建置在ZEND上
Pizpizpi: 認同!除了flash, JQuery以外,目前有很多如雨後春筍般冒出來,預計應該會有一波春秋戰國時代,未來的html5出來後,可能會再洗一次盤
cobolko: 恩,不過我覺得整個噗的討論好像有點離題太遠了,哈哈。這樣的話一個暑假學不完呢XD。還是需要釐清需求比較好
Pizpizpi: 其實主要是想聽聽業界對這兩者之間的意見,以提供我們教學上的參考,語言的東西基本上不會差太多,選擇其中一樣,用的夠深入,其它都差不了太多啦
cobolko: 如果是這樣的方向的話,德卻跟我以書與系統要做什麼相差必較遠,反而是我離題啦 囧
by the way 用 chrome寫python的才是正港的男子漢XD
我有在Unix上用vi寫C過....
這篇噗的結語就是各位都是真男人
cobolko: 那師母想要的結論就是,找一個真男人上台幫忙教動態網頁技術,那位就是老師了XD
whatup1981: 是呀, 所以我有問那一種好學, 就是在考量這一點. 我的目標是讓學生學寫網頁程式, 產生興趣. 這扇窗以後就海闊天空了.
Integrated Development Environment的英文縮寫,可輔助開發程式的應用軟體。
NetBeans,Eclipse,Visual Studio都是
感謝各位大大,學有專精佩服!佩服!
.經過各位的分享,我們學到很多,對PHP, JSP也比較了解.我想綜合各位的意見以及畢人的需求,我想就選PHP來寫Server端的程式.感謝各位真男人真言.受用.
其實用什麼語言寫我覺得是其次, 重點是有沒有辦法完成需要的功能, 像當初我就跟主管說寫PHP太無聊, 我們來弄個不一樣的, 結果我們後來就用Python Django完成整個Web-site...
我們大概是台灣相關產業唯一一家用Django的XD
依據上述討論我總結一下:
1. php, jsp, asp.net都有各自的市場佔有率,或許php少一點不過也有不少業界在使用。
2. jsp適合開發大型專案她提供的解決方案較完整,php適合開發小型專案她的解決方案較鬆散。
3. 若要開發一個高度系統化的大型專案, 建議採用 JSP, 否則就是殺雞焉用牛, java based 的系統其執行效率都不怎麼好, 除非使用者真的需要特定的整合型解決方案。
4. 相對於jsp,php的語法比較不嚴謹,不過開發成本較低。
5. jsp配搭的server是要付費,php本身與其搭配的server是open source是免費的。
6. jsp維護與更新期較長,php 維護期較短,這應該是open source 的常態。
7. 沒有物件導向的概念來學jsp不容易學精髓;反之,php較容易上手。
8. php雖然簡單,但相對於jsp的套件、結構都相對鬆散。
9. 教程式設計是要興趣導向,必需要想辦法激發學的人有興趣肯學,學到基礎後有興趣了,之後自己會再繼續研究再發揚光大。
10. 綜合上述結論以及: (1)教學單位有預算的考量;(2)我想開發的資訊系統都是小型的;(3)容易教學等因素,我最後選php當做server端的程式開發平台。
至於,動態網頁展現的美觀, 有效率等,如何Powerful的畫面展現(如圖形呈現統計圖等),我想另外開一個噗,專題討論。
PingChenLin: 我不太認同php是較鬆散的,就有什麼不好,基本上整個web,就是lossely-coupled的架構,目前server端部份,用ASP.NET雖然人最多,但綁死在MS平台,除了成本高以外,MS有許多不良紀錄,programmer很容易被莫名放棄
再加上MS的前後台綁的太死,雖然開發小專案很方便,但只要專案稍大,很容易碰到瓶頸
JSP部份,強調Java-based,但試想Server還架在Java virtual machine上,效能肯定不太好,雖然標榜方便性整合,也有J2EE標準,但各家平台都有許多別出心裁的創舉,也間接造成其相容度的問題
PHP是比較精簡,一般都認為只適用於小專案開發,但我覺得是被一些剛畢業學生的初學者給打壞印象了,由於它是open source,所有技術規格都開放,所以即使大系統也都能從基本去作特別的最佳化,所以像Facebook, Yahoo等大公司都會用C++去作其個別的最佳化
目前也有許多平台,像Zend以PHP為基礎,作其最佳化的平台,所以PHP因為鬆散而不方便大專案開發的部份,應該是還OK的
有沒有人對php等相關的open source技術的優缺點做補充的.
「MS有許多不良紀錄,programmer很容易被莫名放棄」這是什麼意思? 不太懂!
PingChenLin: VB6死了,Bill Gates曾說Basic不會消失,.NET剛出來時的第一版與其它不相容,98換到2000時,造成一堆孤兒軟體,最近的Office 2003升級到2007, 2010造成許多東西必需重打,還有很多,族繁不及備載
zend 是 framework 的一種, framework 主要目地是在提供 PHP 本身所不直接支援的一些套件或者架構, 讓使用者能夠快速開發
每個 framework 的特性不同, 架構不同, 所能應用的規模也不同, 要視專案的類型選用, 不過通常程式設計師習慣了一種就會一直使用他
若 PHP 視為底層, 最終的程式為上層, framework 就介於底層與上層之間, 用來加速開發的一個東西
cwlin0416: 你的意思是php是server端的程式是底層;java script, flash等是上層; framework是介於中間提供php不支持的特定套件.是這樣嗎?
cwlin0416: 第1次看這表, 一點都不懂. 經過你解說何謂framework之後就比較了解. 我上面的理解有錯嗎?
以 build 一台車子為例,php就是材料如:鋼鐵、石油…,framework 就是作好的零件,如輪胎,是用材料組出來的。
fshiori: 推Django除了相關文件跟使用的人比較少之外,速度、結構都很漂亮!!(重點是程式碼很乾淨XD)
PingChenLin: 師母說的那個是客戶端跟伺服器端, framework 是以程式語言的去分的, 像 zend 就是單純 PHP 的 framework
javascript 也有framework 像 dojo/yui/gwt 等等
還有 javascript 跟 java 沒關係..所以僅量不要寫成 java script..
kingwang317: 真的...我有改過他的Source for our Project, 說真的, Code很simple又很clear
PingChenLin: 其實ZEND拿來當作framework反而沒有codeigniter跟cakePHP好用,通常我都是拿ZEND當作外掛函式庫使用,使用這類的函式庫的好處是它會隨著時代演進而更新,像最近串接social network很熱門,但相關的網站又很多的時候
通常這類的framework就會幫你做相關的整理,當然也不用自己再去讀相關的API了
fshiori: 我之前寫一個抓噗浪的爬蟲,大概50行左右,包含延伸、抓title與內容
fshiori: 我只是這學期要交雲端計算的作業玩玩而已,不過3.0跟2.0還差真多
kingwang317: 我沒用過3.0, 我從Python2.4一路用到2.6.7, 2.7對很多lib支持沒有很好就還沒有用過
cwlin0416: javascript 與java沒有關係. 沒有接觸還真的不知道有差別. 哈.
有沒有知道去那裡找: php, jsp,
asp.net, Python等伺服器網頁程式語言的市場佔有率調查?
php是一種語言,就像中英文一樣,只是單純語言沒什麼用,會附一些簡單的library,但隨著系統的複雜性,每次都靠語言去描述所需功能時,就變得很慢,所以framework應運而生,將一些常見功能整合起來,方便開發更有效能的程式。
此外,framework也提供整體架構的框架,方便後績開發者能在上面進一步提供AP所需的功能,也方便後續開發者的維護工作
由於web-based framework通常包含server與client端,server端又會分成DB for data, HTML for presentation, PHP/JSP/ASP.NET for control code, 所以MVC架構就應運而生
很多目前的framework也都慢慢支援MVC架構,而M, V, C之間的連結,可能需要額外的solution, 如smarty可以解決V與C之間的問題。當然,在V方面,除了傳統HTML以外,目前也有許多以AJAX or Javascript為基礎
這些也可以被整合進來,或是像Zend這種framework自己作類似Dojo, JQuery之類的Client端元件
以上是我對web-based framework所作的簡單介紹,希望大家指教
cobolko: 現在其實框架都會將MVC包進去了, 包括ASP.NET好像也有一個MVC的Plug-in....
此外, Google App Engine的Template(View)就是用Django唷
PingChenLin: Model, View, Control,將系統區分成三部份,分別管DB, 呈現與控制邏輯,web系統中,呈現部份通常以html+dojo/jquery搭配像smarty的template engine表現,Control就是PHP/JSP的控程式碼了
我感覺要學很多, 一個暑假能學多少? 終於知道一個暑訓要兩個月, 週一到五, 每天8小時, 都不夠用的原因了.
光View部份就要學: HTML, javascript, css, Ajax, dojo , smarty, ...
了解之間的一些闗係,再按步就班的去學,才能有全貎的學習觀,否則就會流於片段與拼湊,尤其目前open source的東西很多,拼出一個勉強可用的東西並不難,新東西也如雨後春筍出現,IT汰換率很高,但原理是不變的,一味追尋新東西,只會淹沒在滾滾IT的洪流中
或model之間的互通,把常用的功能模組化成為特定功能, 方使AP呼叫使用,沒有寫過還是有點抽像.
上述是我理解的framework的功能. 不知道對不對?
PingChenLin: 如果一個暑假還要要求F2E的部分,這樣應該是太困難了,建議可以從php開始實做,前端的設計就看各人的造化
f2e,新名詞,內容都是既有技術的組合,不過,看得出來愈來愈受重視了,我想web取代桌面的腳步也愈來愈近了
我覺得如果是從一個沒有寫過網頁的人,應該先從最基本的html ,javascript 的觀念學起,接著學如何使用動態網頁,再來學如何讀取DB的資料,並使用動態網頁的程式,將資料輸出成USER想要的樣子, 接著可以是去學一些VIEW方面的應用,像JQUERY等等
我想一個 新手,暑假能熟悉上面的運作,可以做出像師母說的網站,我覺得進度就差不多了吶...
差不多....我覺得是超強了....= =||| 新手的話
跟沒接觸過網頁的人,講太多技術名詞,我覺得會讓他更困擾,學好了基本的東西,再回頭看會簡單很多的
PingChenLin: 主要是Python用來代替Linux Shell的Admin也不少,或是寫Desktop Tool 但在WebApp上其實用Python的User不多
我倒覺得新手速成不太需要太著重 html/javascrpit
cwlin0416: 考慮到前端的同時,css也變成需要教導的部分,還是不要考量到這些,盡量把重點放在後端程式上吧!!
cwlin0416: 是啊,所以我只是說html/ javascript的'觀念' ,後面有太多工具可以不用讓我們寫太多js,但是又可以用那些強大的功能
3票對1票建議: 可以先學MVC的Control(php等),再慢慢學View(html, css, javascript等), 這樣理解對嗎?
教學或學習的優先順序很重要, 我需要確定這個順序是最有效的.
MVC只是個系統設計架構的概念,跟語言無關,網頁、win form都可以MVC,即使目前單單client端的framework(例如,ExtJs)也都可以有MVC的架構。
可以給一個學習的參考順序嗎? 例如: html,php, css, javascript.....
以我的想法應該是 html -> php -> javascript -> css ,基本的html 不會,到時 php 吐出來的東西會搞不清楚為什麼不照規定顯示。
html -> php -> javascript 搞定這三樣,再加上資料庫與web server上的 IIS or apache就很夠用了吧
其實要練兵的話...php語法會,就可以找些open source的東西直接叫學生run看看,架構啊~變數命名啊~都不是問題了,然後考試就考那個open source的東西,或是請學生改寫功能(這樣會很殘忍嗎?
我不建議一開始就找哪麼大的專案來看,因為連trace source 的技巧可能都沒有而看的頭昏眼花。要不然直接叫學生加功能為open source 界共獻就好了XD
而且有些open source 為了相容php 4 / php5 ... 都用了奇怪的寫法在處理XD
Pizpizpi: 最近我在用或教Matlab. 沒有碰過open source 的東西, 所以還不太懂. 有架構MySQL server, MS SQL server, 10前寫過asp. 所以你們現在教我的, 對我來說都算新東西.
whatup1981: 所以source大小要控制一下啦,語法頂多學期中就教完,到學期末日子長得很...嘿嘿 XD
Pizpizpi: 對喔. 有個問題, 你們建議一下, 分兩學期的話, 教的內容要怎麼分配比較好?
這問題還蠻難回答的....對象是碩士還大學生?有修過其他語言跟資料庫嗎?
不過我覺得金融系統用 java or jsp 居多耶XD
我見識沒哪麼廣,不過感覺銀行大部份都是用java ~
whatup1981: 因為很多IBM的solution吧,不過現在.net也不少了。不離題,我想寫什麼系統不是重點,而php是好上手一點。
java 或jsp比較難 不是資訊系, 所以養成對網頁設計有興趣是教學目標.
下學期過後,資管系部份,html+css, php與其套件+smarty, javascript+ajax+dojo, server端元件與optimizer,共四學期,後兩者是選修
cobolko: 資管系網頁設計相關的課程規劃成4學期. (1)html+css, php; (2) php套件+smarty; (3)javascript+ajax+dojo; (4)server端元件與optimizer. 不對的話, 請更正, 謝謝.
php+smarty 建議改 php+framework(cake, ci, zend都好), 單純寫 php 很容易搞得很 dirty; javascript library 的話, 現在最熱門是 jQuery 吧
smarty得確是過時了,但如果要了解html 畫面怎麼跟後端的php抽離她得確還蠻容易了解的。直接挑framework挑戰比較大一點。看怎麼取捨囉
我不建議教 framework ,除了各種framwork 有不同特性之外。到時出去外面,要用哪種 framework 不一定是能自已選的。
我覺得教framework不是不可,但是我蠻好奇怎麼教?現在很多語言都要用framework了,雖然有特性不同,但他已經是趨勢(或者說現狀)
至於你不見得能挑你選的framework跟你不見得你能挑選程式語言是一樣的問題吧?重點在於教學者怎麼給一些觀念。
framework通常不小,種類更是繁多,要是我我也不知道該挑哪種教,從哪教,這真的事很大的學問了
但可以預見的是,framework要教,你鐵定得先修過很多前置課程、程式語言、資料庫、資料結構等....然後是選修,有興趣的學生再來去挑戰吧 XD
framework不是學校該cover的課程,畢竟學校主要教授一些基本課程,方便學生銜接業界需求,更何況直接教授framework,會讓學生知其然不知其所以然,反而招致反效果,這是我個人觀點啦!所以我不喜歡教ASP.NET
坦白說單教 php 出來的畢業生通常不太好用, 畢竟缺乏對良好架構的 sense, 而且各 framework 雖有差異, 但 web 走 MVC 趨勢明顯, 多數 php framework 也是朝這方向設計
語言只是工具, php 雖好學, 但是容易養成寫出爛程式的習慣, 不靠 framework 矯正, 除非學生本身很認真 & 愛好寫程式, 不然...
ericpi: 我想重點還是在學生的學習吧!我幾個學生畢業後,不管切換到ASP.NET或JSP,都沒有太大問題,這應該與語言沒有太大的關係吧!學PHP就會對架構沒sense,應該沒有直接關係吧!就像用某framework,學生寫的程式碼就會比較有架構,應該也沒有直接關係.
我自己覺得架構的東西需要多看好的程式,跟framework是沒啥關係的,入門的話可以找些design pattern的書,但也犯不著硬是要套上pattern就是。
ericpi: 現在的學生, 生活過得太好, 缺乏學習動機, 時常為了少考一點討價還價要老師少考一點. 有些學生不太喜歡認真的老師. (悲), 不過這偏離主題了. 還是回到主題比較好.
師傅引進門,修行在個人,個人覺得教學教基礎的內容,紮根比較重要,design pattern這類的書籍我倒不覺得要一開始學習寫程式就看,因為還沒學會爬就想要看這麼抽象的東西不見得學的好,倒是資料結構的觀念比較重要,以上個人淺見
Ya~MAX補充了我少說的,基礎不熟想了解架構也有一定的難處。所以我想對架構有沒有sense需要時間。
以 language / framework / design pattern / data structure 這幾個議題來看, 我自己是 php 愛好者, 但 php 是個結構過度鬆散的語言, 很容易就養成不良的程式習慣
相對來說 python / javascript / java 都好很多, 所以我覺得學習 php 搭配 framework 比較不容易養成太多壞習慣, 但就基礎的重要性來說, data structure 絕對是以上四者第一, framework 則是看語言與應用來搭配學習
什麼叫好的程式寫作習慣, 為什麼學php不容易養成好的寫作習慣? 不懂.
但 design pattern 我很有感觸, 需要一定程度程式經驗才會比較能體會其好處; 至於語言本身, 會 C/C++ 搭配有一定程度 OO 觀念, 學新語言也就是學習罷了
php 有很多先天為了方便撰寫的設計, 但其他語言基礎不紮實的程式設計很容易養成一堆壞習慣, 之後又很難改. 比較典型的例子就是變數初值跟 = 的用途.
另外一個我覺得 php 不適合當做第一個 web script language 的原因在於 php 最初的語法與core library很像 C, 到 php4 以後開始大量加入 OO 元素, php5 更是嚴重 java 化, 各種版本參考資料都流竄於網路與書本之間
拿著 php3 參考資料來寫 php5 非常大材小用, 同時 php4~5 廣為詬病的也是多少有點四不像... 以上其實都第一個 web scripting language 的角度出發, 要說實務面應用上, php 還是最容易上手且開發彈性極大的語言
可以教完基礎語法以後,出一個作業請學生們看目前open source 的架構和撰寫方式並提出報告
OO是目前所有程式語言的重要特性,php5的確加入了此一特性,無法作到完整OO特性(但已經非常逼近了),是因為OO的缺點在於效率不好,script語言必需作到直譯性,無法事先編譯,改善效能,這與ASP.NET,JSP都不同,因為後二者並不完全是直譯式語言
且兩者都經過middle layer,效能更會有一些影響‧所以一 般script language的OO特性都不明顯,以Javascript為例,其OO特性更差,而是以function模擬出來的
至於php3~php5的改變,我想應該追溯到當初整個web design language的發展,從CGI(C++/VB)->ASP/PHP3->ASP.NET/PHP5的過程
這是整個資訊時代演進的必然結果,open source考慮一定的相容性,所以有些殘存的語法(for php3),撰寫者若不是有舊系統維護者,大可直接略掉不用,我上課時大多會直接禁止使用,否則另一種暴力作法,就是如ASP->ASP.NET一 樣,就是直接全部換掉,不考慮相容性問題
當然會比較簡潔,但站在商業角度上,孤兒系統將大量出現,也會引發MIS人員的大量effort,這是魚與熊掌不可兼得之處,Sorry!扯太多了,希望不要造成大家的負擔
maxclapton: 剛學習完語法且沒有相關開發經驗的開發者, 不見得看過幾個 OSS project 能夠收穫多少, 很多時候參透寫法/架構/技巧 或只是 work around 是需要一點開發經驗才能達到, 所以那樣作法大概結果就是報告就是換分數的報告
cobolko: 我自己就是經歷 php3~5 的開發者, 我不是去評價到底 php5 這樣向前相容 "不對", 而是就結果而論 php5 在向前相容到加入大量 OO feature 導致這個四不像的結果, 同時讓新手開發者因為各版本教學資料流竄於網路/書籍..
cobolko: 初學者因為吸收資料來源複雜, 混用各版本寫法導致程式本身也變成四不像, 加上我提到 php 先天設計為了開發上的簡潔(化?)而提供一些非常容易造成不良習慣的語法特徵, 導致以 php 為第一 web script 很容易帶著很多不好改的壞習慣與架構
cobolko: 要真說 OSS project 為了相容芸芸, 我覺得真是扯不上關係, 以商業出發開發的語言&架構反而更常去考慮向前相容的問題吧, 重申我不是評斷 "php向前相容不對", 而是陳述 "php向前相容導致開發者學習與習慣上的問題"
cobolko: 最後我必須為 javascirpt平反一下, javascript 完全是以OO觀點設計的語言, 只不過不是以class base這種比較多人習慣的方式,從各大js VM實作來看, js不是以 "function模擬OO",而是 js裡面什麼都是 object
再補充, Javascript 很早就不是 client 專用的語言, 像是
RingoJS 跟 node.JS 都是有名的 javascript server-side應用,已有多個具規模網路服務node.JS實作comet等即時應用
ericpi: 以php為例, 發到php5加入OO的元素, 在open source發展而言是對的方向嗎?
這一篇文章太有深度了
我也覺得雖然大家論點看法或許因為工作經歷有不同的經驗,但都蠻有參考價值,比有些論壇的發文素質好太多太多了XD
PingChenLin: 我認為 php 往 OO 發展是對的, web app 規模越來越大, 尤其當系統架構越來越龐大, OO、event drive 等都是近年來很多語言(+framework) 的走向, 可能主因是為了分散架構開發容易(個人理解)
PingChenLin: 至於四不像問題, 我認為是 php 最初設計理念與後來 web 應用發展大方向有落差, 所以才會 java 化的情況, 歷史因素造就很多人認為php四不像的結果... 我只是覺得 php 不適合當初學者語言, 但依然覺得php是性能與應用優越的語言!
其實凌晨忘了提, plurk 現在 comet service(server-side) 就是用 node.JS 實作的, 原來好像是用 jitty, 後來改用 node.JS (java -> javascript)
ericpi: 謝謝大大分享的資訊,我到今天才知道PLURK是用NODE.JS
每種語言本來就有每種語言的特性, 這就是 PHP, 也沒到四不像這麼差, 要比 dirty, Perl 語言比 php dirty 多了
所以近十年來應該沒什麼人拿 perl 都第一個 web script 語言來學來教吧? perl 我自己觀察到最大的應用在 system/network utilities, 這樣應用的語言, dirty 一點也沒什麼啊
話說回來, 要教 framework, OO, 開發的架構都很重要沒錯, 但對真正初學者而言這些只是天馬行空
所以第一個應該是 data structure & 某一基礎語言(C/C++, Java..blah)要學好
每個人對於程式的速求也不同, 一個只寫開發 web 的人, 你要求他要回去學 C/C++ 再回來學 PHP? ... 我說這對程式設計的的生涯規畫是不錯, 但對一般人, 要走的路太遠了
我們常會覺得要給底下的人什麼什麼, bra, bra, bra..但如果不是他們想要的,教再多也沒用, 就像我們以前大學一年級教 C/C++, 大家也只是背背語法, 沒有應用沒有經驗, 那堂課結束, 你也再也不會碰
只做 web 開發的話, 那 javascript 當第一個語言也比 php 好很多, 而且 server-side 跟 client-side 吃同一個語言, 這樣不是更貼近訴求(速成?)
其實我覺得 php 作為初學者第一語言很糟糕的一個例子, 不知道大家有沒有研究過 php 的 "=" 跟 Java/Javascript 有什麼不同? php這樣的設計固然方便,但個人認為是很嚴重的 syntax sugar,而且寫習慣之後很難改,改不過來連小系統都可以搞出很多雷
cwlin0416: 請註解在程式語言的dirty是指什麼, 謝謝. 幫助我們讀懂你們的意思.
PingChenLin: 髒不髒是指程式有沒有辦法乾淨簡潔, 易於讀取, 像 Perl, 很多statement 不只有一種表示方法, 對一般人而言就會變很很難理解, 但對開發者, 很多東西可以用快速的寫法解決問題
cwlin0416: 我說得不是 casting 喔, 太多現代語言都有 casting 這個 feature了, 而是 context copy 跟 reference 的差別
ericpi: 我倒覺得不管是 casting 還是 context copy 與 reference 都應該列為使用前必讀的注意資訊, 不同的程式語言, 本來就會有不同的特性, 就算 java/javascript 會了, 再來學 php 也未必會知道有這樣的問題
ericpi: 有點不好意思問, casting, context copy, reference是蝦米, 聽嘸? 說簡單一點她們是什麼?
ericpi: javascript 的資源取得不易(server-side), 而且各家 browser 的支援程不一(client side), 對初學者來講並不好釐清問題與學習
cwlin0416: js server-side資源取得不易? 你是否應先弄清楚 node.JS 是什麽? 同時搞清楚有多少大廠已經在線上服務應用 node.JS?
cwlin0416: 至於 browser 支援問題, 難道 jQuery 等 OSS community 開發這些 library/framework 都是開發辛酸的嗎?
ericpi: 我沒有意思要跟你爭執 JavaScript/PHP, JavsScript 或許有很多大廠使用, 但我是以新手的角度而言, 新手學習要取得資源確實不易
實際狀況是 browser 行為差異上, js問題算小的, 畢竟 ECMA 定義與 js VM 實作都是以 core library 極簡化? browser 問題最嚴重的部份是 render engine 實作, 而且後端用 jsp/php等也一樣會踩到 browser 的雷.
cwlin0416: 你要不要先解釋下 php 的 context copy 跟 reference, 應該也是不用幾行就能解釋了..
ericpi: 你在這塊領域的水準很高, 但我覺得這種問題已經離題了
經過各位用心的討論解說, 對我們想學的人來說, 已經有基本的認識. 本噗的主題是jsp與php的差異也討論很多. 應該已經足夠. 接下來就是實作了, 才能與各位高手(真男人)進一步討教. 本篇討論就到止. 感謝各位的貢獻. 幫助很大.
內容應該有些離題了,噗浪內容純討論,無所謂誰的水準高低,探討現在,不如著眼未來,每個人都有不同的選擇,但市場才是公正殘酷的裁判。至於怎麼樣學會更好,我想全部都學最好,只是有限時間內,大家各有不同取捨,如此而已。我只是個教書的人,我認為觀念的正確性才有意義,其它只是末節。
內容已發展到一個非常複雜的情況,足以將一大部份資訊工程的內容都扯進來了,這問題真的太大了,也不是三言兩語可以講,那就不用講了,其它就請各位有興趣繼續講了
小弟從此噗獲得不少,感謝各位
PingChenLin: 欠一個 context copy/reference 的解釋, C語言有 * 跟 & 的 addr. op, JAVA 為了簡化 C/C++ pointer 難以掌控的問題, 拿掉 * 跟 &, 採用 reference 方式;
PingChenLin: php就比較尷尬, php有 &, 但是沒有 *... 當 $a=$b; 時, $b 要是為 object/array等型別, php vm 會把 $b 複製一份給 $a, 當然這是個好用的功能, 但這也在很多系統中埋下大大小小的苦頭(以上只能意會)
ericpi: 感謝你. 我現在了解你們先討論變數設定, 原來是指其reference的用法. 下次學到這裡時我一定會特別留意. 謝謝哦!
PingChenLin: 以上主要是強調 php 的 "=" 預設行為做了 content copy, 如果要用 reference 要寫成 $a = &$b; 這樣的寫法好用是好用, 但對撰寫習慣不良的開發者潛在影響就很驚人