lucklrj 回復于:2005-08-30 12:05:33 |
免費,夠用。不擔心有天會被追著要錢。 |
jhsea3do 回復于:2005-08-30 13:07:42 |
沒法寫daemon,沒有完善的線程支持,如果你有一個操作需要執行很長時間,最好是把該操作放在線程里執行,而快速的返回一個頁面給客戶,但我還不清楚PHP應改如何實現。
對象操作符是"->",不是".",為寫一些code時增加了麻煩 你不能 (new AClass())->someOperation(); 只能 $a = new AClass(); $a->someOperation(); |
北京野狼 回復于:2005-08-30 13:22:26 |
[quote:4bc69c365f="jhsea3do"]沒法寫daemon,沒有完善的線程支持,如果你有一個操作需要執行很長時間,最好是把該操作放在線程里執行,而快速的返回一個頁面給客戶,但我還不清楚PHP應改如何實現。
[/quote:4bc69c365f] 網站為什么搞這么復雜? cgi程序有很多缺陷,如果不能簡單處理,那還是搞C/S結構吧。 你的要求可以通過system實現,有竅門 |
goodloveboys 回復于:2005-08-30 13:28:36 |
[quote:14debf6c44="北京野狼"]
網站為什么搞這么復雜? cgi程序有很多缺陷,如果不能簡單處理,那還是搞C/S結構吧。 你的要求可以通過system實現,有竅門[/quote:14debf6c44] 我現在在處理一個多層結構的項目,用php,很多地方感覺比較吃力, 其中一個就是和上上個的一樣, 怎么通過system實現?? 通過腳本嗎?? 有什么竅門,說說? |
北京野狼 回復于:2005-08-30 13:29:15 |
[quote:76e3cdc1d7="goodloveboys"]
我現在在處理一個多層結構的項目,用php,很多地方感覺比較吃力, 其中一個就是和上上個的一樣, 怎么通過system實現?? 通過腳本嗎?? 有什么竅門,說說?[/quote:76e3cdc1d7] 有什么好處嗎? :D :D :D :D :D :) |
goodloveboys 回復于:2005-08-30 14:00:11 |
汗, 好處是地球人都知道,cu之狼了, 呵呵 |
hightman 回復于:2005-08-30 14:23:44 |
[quote:e6a23f0abb="jhsea3do"]沒法寫daemon,沒有完善的線程支持,如果你有一個操作需要執行很長時間,最好是把該操作放在線程里執行,而快速的返回一個頁面給客戶,但我還不清楚PHP應改如何實現。
對象操作符是"->",不是".",為寫一些cod..........[/quote:e6a23f0abb] daemon 能寫的啊!! posix_fork() , 至于線程,不了解也不好說, 可以用子進程來試試. PHP主要是web上的應用,非常復雜的后臺程序也不能強求了. 操作符是.還是->也能成為批評的理由啊? |
hightman 回復于:2005-08-30 14:26:35 |
關于PHP的一些缺點,我轉載一篇文章.
[code:1:3358fb4e81] 為什么PHP令人不爽(對于大型系統) Edwin Martin <edwin@bitstorm.org>. 翻譯:ShiningRay @ Nirvana Studio 我在過去的四年里一直致力于PHP應用的開發。PHP確實十分容易編寫。但是PHP也有一些十分嚴重的缺陷。 下面我會給出我的理由,為什么PHP不適合于比小型業余網站更大的網站。 1. 對遞歸的不良支持 遞歸是一種函數調用自身的機制。這是一種強大的特性可以把某些復雜的東西變得很簡單。有一個使用遞歸的例子是快速排序(quicksort)。不幸的是,PHP并不擅長遞歸。Zeev,一個PHP開發人員,說道:“PHP 4.0(Zend)對密集數據使用了棧方式,而不是使用堆方式。也就是說它能容忍的遞歸函數的數量限制和其他語言比起來明顯少?!币?STRONG>bug 1901。這是一個很不好的借口。每一個編程語言都應該提供良好的遞歸支持。 2. 許多PHP模塊都不是線程安全的 在幾年前,Apache發布了Web服務器的2.0版。這個版本支持多線程模式,在這個模式下,軟件一個一部分可以同時運行多個。PHP的發明者說PHP的核心是線程安全的,但是非核心模塊不一定是。但是十次有九次,你想要在PHP腳本中使用這種模塊,但這又使你的腳本不能合適Apache的多線程模式。這也是為什么PHP小組不推薦在Apache 2 的多線程模式下運行PHP。不良的多線程模式支持使PHP常被認為是Apache 2依然不流行的原因之一。 請閱讀這篇討論: Slashdot: Sites Rejecting Apache 2?. 3. PHP 因為商業應用而殘廢 通過使用緩存,PHP的性能可以陡增500%[見基準測試]。那么為什么緩存沒有被構建在PHP中呢?因為Zend——PHP的制造者,它在銷售自己的Zend Aclearcase/" target="_blank" >ccelerator,所以當然,他們不想拋棄自己的商業產品這塊肥肉。 但是有另一個可選擇的: APC. (Zend后來推出Zend Optimizer,免費的加速器——譯者) 4. 沒有命名空間 設想某個人制作了一個PHP模塊用來閱讀文件。模塊中一個函數叫做read。然后另一個人的模塊可以讀取網頁的,同樣包含一個函數read。然后我們就無法同時使用這兩個模塊了,因為PHP不知道你要用哪個函數。 但是有一個很簡單的解決方法,那就是命名空間。曾經有人建議PHP5加入這個特性,但不幸得是他沒有這么做?,F在,沒有命名空間,每個函數都必須加上模塊名作為前綴,來避免名稱沖突。這導致了函數名恐怖得長,例如xsl_xsltprocessor_transform_to_xml讓代碼難于書寫和理解。 5. 不標準的日期格式字符 很多程序員對 日期格式字符 都很熟悉,它是從UNIX和C語言中來的。其他一些編程語言采用了這個標準,但是很奇怪的,PHP有它自己的一套完全不兼容的日期格式字符。在C中,“%j”表示一年中的當天,在PHP中他表示一個月中的當天。然而使事情更混亂的是:Smarty (一個很流行的PHP模版引擎)的 strftime 函數和 date_format 函數,卻使用了C/UNIX的格式化字符。 6. 混亂的許可證 你也許認為PHP是免費的,所有的在手冊中提到的PHP模塊也是免費的。錯了!例如,如果你想在PHP中生成PDF文件,你會在手冊中發現兩個模塊:PDF 和 ClibPDF。但是這兩個都是有商業許可證的。所以,你所使用的每個模塊,你都要確保你同意他的許可證。 7. 不一致的函數命名規則 有些函數名稱是有多個單詞組成的。一般有三種單詞組合的習慣: 直接拼接:getnumberoffiles 用下劃線分開:get_number_of_files 駱駝法則:getNumberOfFiles 大部分語言選擇其中一中。但是PHP都用到了。 例如,你想要把一些特殊字符轉換成HTML實體,你會使用函數htmlentities (直接拼接單詞)。如果你要使用相反的功能,你要用到它的小弟弟html_entity_decode。由于某些特殊的原因,這個函數名是由下劃線分隔單詞。怎么能這樣呢?你知道有一個函數叫strpad?;蛘咚莝tr_pad?每次你都要查看一下到底這個符號是什么或者直接等他出現一個錯誤。函數是不分大小寫的,所以對于PHP來說rawurldecode 和RawUrlDecode之間沒有什么區別。這也很糟糕,因為兩個都使用到了同時他們看上去還不一樣,混淆了閱讀者。 8. 魔法引用的地獄 魔法引用(Magic quote)可以保護PHP腳本免受SQL注入攻擊。這很好。但是出于某些原因,你可以在php.ini中關閉這個配置。所以你如果要寫出一個有彈性的腳本,你總要檢查魔法引用是開啟還是關閉。這樣一個“特性”應該讓編程更簡單,而事實上變得更復雜了。 9. 缺少標準框架 一個成長中的網站沒有一個整體框架,最終會變成維護的噩夢。一個框架可以讓很多工作變得簡單?,F在最流行的框架模型時MVC-模型,在其中表現層、業務邏輯和數據庫訪問都分離開了。 很多PHP網站不使用MVC-模型。他們甚至沒有一個框架。甚至現在有一些PHP框架同時你都可以自己寫一個,關于PHP的文章和手冊沒有提高框架的一個字。同時JSP-開發人員使用像Struts的框架、ASP開發人員使用.Net,看起來好像這些概念都廣泛被PHP開發人員所了解。這就說明了PHP實際上到底是多專業。 總結 什么問題? 對于非常小的項目,它可以是一個十分符合人意的編程語言。但是對于較大的和更為復雜的項目,PHP就顯出他的薄弱了。當你不斷地摸索之后,你會發現我提到的某些問題的解決方案。所以,當解決方案已知之后,為什么不能修正他呢?另外為什么這些修補不在手冊中提到呢? 一個開源的語言十分流行是一件好事。但不幸得是,它不是一個偉大的語言。我希望所有的問題能有一天得到解決(也許在PHP6?),然后我們就將擁有一個開源語言,他既開源,又好用。 到現在,當你要啟動一個多于5個腳本頁面的項目的時候,你最好考慮C#/ASP.Net 或者 Java/JSP或者也許Python同樣是一個更好的選擇。 在我寫了這篇文章之后,一些人告訴我一些其他的類似文章: Experiences of Using PHP in Large Websites "PHP in contrast to Perl" I hate PHP PHP Annoyances Posted by ShiningRay at 13:38 閱讀(353) 評論(4) 引用(0) PHP 開放權限:所有人可見 [/code:1:3358fb4e81] |
北京野狼 回復于:2005-08-30 14:40:58 |
[quote:5d7c978dad="hightman"]
daemon 能寫的啊!! posix_fork() , 至于線程,不了解也不好說, 可以用子進程來試試. PHP主要是web上的應用,非常復雜的后臺程序也不能強求了. 操作符是.還是->也能成為批評的理由啊?[/quote:5d7c978dad] 不要使用fork. http://bbs.chinaunix.net/forum/viewtopic.php?t=599616&show_type= |
hightman 回復于:2005-08-30 14:42:29 |
不要使用fork 什么意思? 無法使用,還是你要求不使用fork實現daemon? |
北京野狼 回復于:2005-08-30 14:48:28 |
cgi程序必須簡單處理.
激活某個后臺程序,直接system就可以,fork之后的子進程,你知道什么時候 運行,在父進程之前,之后運行? 子進程死掉,你怎么處理?子進程異常,運行失敗怎么控制? 沒必要給自己找麻煩 |
ipaddr 回復于:2005-08-30 16:37:56 |
.net都用WEBForm的概念了。
PHP還是老樣, 相對來說,PHP的開發效率不高呀。 |
ipaddr 回復于:2005-08-30 16:38:41 |
PHP不是萬能的,
一般用在做WEB開發。 不能拿它和C,之類的比吧。 |
hightman 回復于:2005-08-30 18:10:13 |
[quote:123aff8215="北京野狼"]cgi程序必須簡單處理.
激活某個后臺程序,直接system就可以,fork之后的子進程,你知道什么時候 運行,在父進程之前,之后運行? 子進程死掉,你怎么處理?子進程異常,運行失敗怎么控制? 沒必要給自己找麻?.........[/quote:123aff8215] ft... system()是系統調用啊, 只能調用一個已經存在的程序. 子進程和父進程的關系是平等的啊,誰先執行要看CPU調度. 暈,越說越離譜了,版主要我們討論的是PHP的缺點. |
sinox 回復于:2005-08-30 18:30:51 |
尺有所長,寸有所短
這句話是錯的 尺本來就長,寸也本來就短 呵呵 應該是 尺有所短,寸有所長 |
北京野狼 回復于:2005-08-31 09:12:44 |
[quote:388e96106e="hightman"]
ft... system()是系統調用啊, 只能調用一個已經存在的程序. 子進程和父進程的關系是平等的啊,誰先執行要看CPU調度. 暈,越說越離譜了,版主要我們討論的是PHP的缺點.[/quote:388e96106e] 你干嗎不真的去昏。難道不能把子進程寫成程序啊。 沒有任何理由要使用子進程。 |
Yarco 回復于:2005-08-31 13:53:47 |
非常欣賞和認同hightman的那篇文章.
既然是批判, 當然是要提出不足. 我的感覺還有: 1. 沒有Application變量(和asp中比), 至少這點我覺得asp應該加分. 比如我想把一個$sitename加入到網頁中來, 那么就會在每個運行頁出現一個$sitename.而不是共享的一個. 2. 數據庫函數不統一 3. 配置選項煩雜 比如short_open_tag是否開啟(早就該關掉了)... 4. 架構混亂 其實感覺和hightman的那篇差不多. 隨著php的應用越來越廣泛, 加入的東西也在增加. 使得本來純粹過程化的體系變得凌亂. 沒有處理好和數據庫,和html的關系以及php在中間所扮演的角色. ... |
oklqh 回復于:2005-08-31 15:19:04 |
哪個語言沒有缺點呢?
java那笨重的身體,沒有好服務器還是不要跑的好。 php不是一種偉大的語言,卻是一種很適合web輕量級開發的語言。 正如mysql不是一個偉大的數據庫,但卻是一個很適合中小型應用的數據庫。 二者成為了最佳搭檔,在我們期待mysql 5.0的時候,是不是也有理由期待夢想中的php 6呢? |
夜貓子 回復于:2005-08-31 18:58:08 |
我覺得perl有點象加強版的php,目前我覺得php還沒有讓我達到到不爽的毛病,如果我需要更高一層的需求,我會考慮perl,而不會覺得這是php的錯。
ps: 弱類型語言的hash表結構實在是太爽了,這對于以前使用asp的時候完全是不可想象的。 |
Yarco 回復于:2005-08-31 20:33:21 |
樓上的, 我聽說perl寫大系統別人都看不懂啊.
你這么一講...當心我跳槽:) |
夜貓子 回復于:2005-08-31 22:31:48 |
>樓上的, 我聽說perl寫大系統別人都看不懂啊
這是一種誤解,看不懂是寫程序的人的錯,不是語言的錯 |
perryhg 回復于:2005-09-01 04:06:14 |
但是如果和其他語言相比,某些語言更容易讓寫的人自己都看不懂的話,那么這個語言的設計就有問題了。perl就是因為語言結構松散而遭人詬病,php更甚啊。 |
HonestQiao 回復于:2005-09-01 08:55:39 |
[quote:714d2a477a="perryhg"]但是如果和其他語言相比,某些語言更容易讓寫的人自己都看不懂的話,那么這個語言的設計就有問題了。perl就是因為語言結構松散而遭人詬病,php更甚啊。[/quote:714d2a477a]
各種語言都有基于自己的一套規則。 如果你是中國人,土生土張的中國人, 如果你看不懂法語,你不能說這個語言存在問題。 如果你看不懂英語,你更不能說這個語言存在問題。 如果你看不懂漢語,也可能你不能說這個語言存在問題,如果你是完全的少數民族呢? |
Yarco 回復于:2005-09-01 09:36:09 |
貓老大, 我想問一下
1. 就是在web編程上perl和php比有多少優勢? 2. perl非得cgi嗎? 3. 從語言角度來說perl有哪些比php大的優勢? 感覺似乎perl比較低調, 可能更加嚴謹吧? |
北京野狼 回復于:2005-09-01 10:01:57 |
[quote:ccc8a8cfda="Yarco"]貓老大, 我想問一下
1. 就是在web編程上perl和php比有多少優勢? 2. perl非得cgi嗎? 3. 從語言角度來說perl有哪些比php大的優勢? 感覺似乎perl比較低調, 可能更加嚴謹吧?[/quote:ccc8a8cfda] 沒優勢 |
HonestQiao 回復于:2005-09-01 10:03:32 |
[quote:fc8b7a6d5a="Yarco"]貓老大, 我想問一下
1. 就是在web編程上perl和php比有多少優勢? 2. perl非得cgi嗎? 3. 從語言角度來說perl有哪些比php大的優勢? 感覺似乎perl比較低調, 可能更加嚴謹吧?[/quote:fc8b7a6d5a] Perl現在用在Web,有很多可選則的方案的啊,例如: Mason Perl |
foolkaka 回復于:2005-09-01 11:24:42 |
[quote:1fd7297414="北京野狼"]
你干嗎不真的去昏。難道不能把子進程寫成程序啊。 沒有任何理由要使用子進程。[/quote:1fd7297414] 沒有任何理由要使用子進程?怎么寫成程序? 我兩個項目都在用。。。用cron檢查 |
北京野狼 回復于:2005-09-01 11:26:43 |
[quote:a9d6fa65b9="foolkaka"]
沒有任何理由要使用子進程?怎么寫成程序? 我兩個項目都在用。。。用cron檢查[/quote:a9d6fa65b9] 看不懂,說漢語吧 |
foolkaka 回復于:2005-09-01 12:02:56 |
[quote:73879fd0e8="北京野狼"]
看不懂,說漢語吧[/quote:73879fd0e8] fork實現daemon cron檢查進程 ..... if ($args == '-d' OR $args == '--daemon') { $pid = pcntl_fork(); $echo = 0; if ($pid == -1) { exit; } else if ($pid) { return 0; // 返回 '0' 成功 } // 從控制終端分離... if (!posix_setsid()) { exit(); } else { 已經后臺運行 } ... // 進程 ID $fp = fopen("/var/run/ipman.pid","w+"); fwrite($fp,getmypid()); fflush($fp); fclose($fp); if (file_exists("/var/run/ipman.pid".'-cron')) { $tmp = (int)trim(implode("",file("/var/run/ipman.pid".'-cron'))); $f_pid = pcntl_waitpid ($tmp, $f_stat, WNOHANG); $f_pid = pcntl_waitpid (0, $f_stat, WNOHANG); } $pid = pcntl_fork(); if($pid... |
北京野狼 回復于:2005-09-01 12:55:45 |
[quote:c2946c0d85="foolkaka"]
fork實現daemon cron檢查進程 ..... if ($args == '-d' OR $args == '--daemon') { $pid = pcntl_fork(); $echo = 0; if ($pid == -1) { exit; } else if ($pid) { return 0; // 返回 '0' 成功 } ..........[/quote:c2946c0d85] 大家說的不是一回事情 |
geel 回復于:2005-09-01 22:41:06 |
混亂的函數名,混亂的參數順序,混亂的if(if 竟然可以接受任意的類型,只要不是false值,給他個數組變量都為true),過于簡單的錯誤處理機制,沒有良好的事件支持,沒有一個開發商肯為他寫一個好一點的IDE
另外,不能因為用叉子切菜不如刀好用就說叉子有問題,不過我還是希望手中的叉子是一把瑞士軍刀;) |
z33 回復于:2005-09-01 23:13:37 |
PHP開發Web太簡單了,不容易與新手劃開距離。 |
HonestQiao 回復于:2005-09-01 23:28:59 |
[quote:2c0847c8ae="z33"]PHP開發Web太簡單了,不容易與新手劃開距離。[/quote:2c0847c8ae]
為什么都是用槍的,有人可以百步穿楊呢? 為什么都是買油的,有人可以銅錢孔倒油? |
xgyxgy 回復于:2005-09-02 01:56:02 |
效率低,沒有內建的cache支持.
尤其是在頻繁的請求和頻繁的數據庫連接中,PHP的效率更加低.一年前曾經做過一次關于JSP和PHP在數據庫性能方面的測試,放到phpx.com中,還沒有一個人能很好地解釋原因. [url]http://www.phpx.com/happy/showthread.php?s=923552bfbb54d3ff31a93e5de8cc4096&threadid=67610[/url] 前幾天曾經想用PHP在一個關鍵應用中,作為一個遠程調用的服務,每天調用4000-5000萬次.結果壓力測試的時候,發覺其性能是JAVA SERVLET的十分之一.JAVA SERVLET一秒可以完成3000個左右的請求,而PHP+APACHE則只能完成不到300,用的是hessian. 不過在非關鍵應用中,在不是特別頻繁調用的時候,PHP還是一個非常爽的語言,開發快,又隨心所欲 |
perryhg 回復于:2005-09-02 03:13:57 |
[quote:49d1014a26="HonestQiao"]
各種語言都有基于自己的一套規則。 如果你是中國人,土生土張的中國人, 如果你看不懂法語,你不能說這個語言存在問題。 如果你看不懂英語,你更不能說這個語言存在問題。 如果你看不懂漢語,也可能你不能?..........[/quote:49d1014a26] Qiao法師有些偏題了吧,而且這個比方也不太合理。這里很多人提出的問題,正是因為在總結了工作中所遇到的種種困難以后對php提出的更高的要求。指出缺點并不是說就沒有優點,事實上我個人認為php還是一門非常優秀的語言,至少在web開發里面,作為動態web腳本是非常靈活的,尤其是和asp相比。但是現在問題出在: 1.web應用的發展對web開發提出了更高的要求,比如多線程,對象緩沖等,php本身不是設計在這個level上的,所以解決不了這些更加基礎的問題。 2.php把自己應用范圍過分擴大實在野心太大,作為一般腳本編程語言,php和perl的重復性太大,OO特性又不及python,尤其是在perl已經普遍成為所有*nix的標準組件的時候,php在這個領域的發展就非常有限了。所有有些高不成,低不就的尷尬。在本壇的討論者不一定是php語言本身的開發人員,但是至少是php的應用人員,對自己心愛的語言提出批評希望改進,是怎么也不過分的。 |
HonestQiao 回復于:2005-09-02 08:21:02 |
[quote:131e787b48="perryhg"]
Qiao法師有些偏題了吧,而且這個比方也不太合理。這里很多人提出的問題,正是因為在總結了工作中所遇到的種種困難以后對php提出的更高的要求。指出缺點并不是說就沒有優點,事實上我個人認為php還是一門非常優秀?.........[/quote:131e787b48] 我所說的,僅僅是針對我的某個上樓,呵呵,沒有針對其他的。 等大家批判的差不多了,我們再來討論,如何采用合理的方法,降低這些不足對我們開發的影響。 |
hightman 回復于:2005-09-02 11:19:32 |
[quote:906ece587b="xgyxgy"]
前幾天曾經想用PHP在一個關鍵應用中,作為一個遠程調用的服務,每天調用4000-5000萬次.結果壓力測試的時候,發覺其性能是JAVA SERVLET的十分之一.JAVA SERVLET一秒可以完成3000個左右的請求,而PHP+APACHE則只能完成不?.........[/quote:906ece587b] 剛看了那個文章,不知你的具體代碼是什么.高頻連接數據庫可以試試 mysql_pconnect() (注意:一定要配置好apache和mysql中的最大連接數的關系,詳見手冊) 從你的文中我發現的最大問題是,不管什么訪問:第一次,第二次,第三次....每次所花的時間都是成倍增長.是不是測試程序有點問題呢?否則你的程序用100次,后面所花的時間不堪設想了. 另外測試web性能,強烈推薦apache自帶的工具 ab ,具體看 ab -h |
hightman 回復于:2005-09-02 11:33:36 |
硬要說瓶頸在于 mysql_connect() , 也不妥的, 只要保證網速正常, 正常的完成 tcp 連接所花的時間在整個程序中基本上可以忽略...你的請求再大再多(到DDOS的頻率?)也難以在這一點上降低效率.
后面的數據操作包括數據庫查詢才是體現效率的地方. 數據庫設計中,包括很多論壇都喜歡把整篇文章內容甚至附件上載灌入MYSQL數據庫中,這樣select出來再通過網絡傳送到程序這里相當費時間. 這一點上 [url=http://fudforum.org/forum/]fud forum[/url] 的設計就要好得多 |
dennis2 回復于:2005-09-02 17:43:02 |
php 在 web 開發有一定的位置,尤其在簡單快速的編程,非常適合。另外,它也很適合海量的 virtual hosting (java 就不太適合)。
我對 php 最大的抱怨是它的安全漏洞實在是太多??纯催@一、兩年來有多少安全漏洞吧,簡直是令人發指。 |
rocklv 回復于:2005-09-02 18:40:05 |
[quote:88a82d2dde="dennis2"]
我對 php 最大的抱怨是它的安全漏洞實在是太多??纯催@一、兩年來有多少安全漏洞吧..........[/quote:88a82d2dde] 相對于漏洞來說,人才是最大的漏洞,而不是語言。 為什么不批判人先呢? |
dennis2 回復于:2005-09-02 18:49:15 |
> 為什么不批判人先呢?
你是說批判 php 的開發人員? |
北京野狼 回復于:2005-09-02 20:14:56 |
其實我對所有的解釋型語言都不喜歡,java稍微好點。
只要是我去寫程序,超過100行我肯定使用c,c++.無論做客戶端還是web. 設置shell都使用 c. 之所以在php版里面混,也就是因為我第一個開發工作是做web的。 |
jhsea3do 回復于:2005-09-02 20:37:41 |
[quote:02515e8f78="北京野狼"]其實我對所有的解釋型語言都不喜歡,java稍微好點。
只要是我去寫程序,超過100行我肯定使用c,c++.無論做客戶端還是web. 設置shell都使用 c. 之所以在php版里面混,也就是因為我第一個開發工作是做web的。[/quote:02515e8f78] java 不是解釋型語言吧...., jython倒是的... |
Yarco 回復于:2005-09-03 12:53:17 |
[quote:e5169b96a9]超過100行我肯定使用c,c++.無論做客戶端還是web.[/quote:e5169b96a9]
cgi啊??? 你不會把c/c++做成的web程序也支持skin, template吧... [quote:e5169b96a9]java 不是解釋型語言吧...., jython倒是的...[/quote:e5169b96a9] 何必分得那么細呢? 反正語言到了最后, 語法都是細節. 能快速地做出來, 簡潔能用,可擴展就行了... 發這帖子...本質是為了看自己的頭像...:) 無刻意反駁的意思 :) |
powerpolly 回復于:2005-09-03 14:58:05 |
我以為的缺點:
1、PHP語法太不嚴謹了,難受的是不區分大小寫,這好像不是*nix的風格,過于寬松的后果會降低代碼的質量; 2、PHP的執行效率實在是太慢了,聽說PHP沒有線程的概念,是不是跟這有關呢?; 3、命名不一致性,前面有人提到了,PEAR里面定義了一套命名規則,但沒多少人去實施; 4、對稍大的字符串的處理吃力,還是少用正則的好,如果不是必要的話; 5、instance a class 居然可以這樣: $className = "myClass"; $obj = new $className(); 這里的$className 究竟是什么角色?看上去是一個普通字串,但字串怎么可以作為一個className?在C中有這樣定義的嗎? 6、PHP4.x中對象支持太薄弱又混亂,不支持封裝和多態,不用實例化就可隨便調用方法,總的感覺就只是一個func lib集合,怎么能寫出高質量的程序?怎么保證代碼的可維護性?不過據說這在PHP5中已有改進。PHP5中表現怎樣,因為我暫時不太熟這里就不說了; 7、main中聲明的變量不能在函數中使用,在C中這是允許的,剛學PHP的時候真不習慣這個; 8、如前面引用的文章中提到的magic quote,每次都得檢查一次這個配置,反而變復雜了,有人想到了inherit一個遞歸函數自動檢查$_REQUEST,但遞歸的效率太低沒人愿意用的; 9、缺少內建的對象,這點要表揚ASP; 10、沒有自帶調試器,Zend的IDE又要$; 我認為PHP的優點: 第一個缺點也是某種優點,那就是上手快,有C的底子一切OK,比C更自由; 眾多的函數庫; 最大的優點:free:),非常適合中小型應用。開發難度低周期短,憑這一條就成為眾多WEB腳本的殺手锏; 有很多免費的庫隨便用; |
Yarco 回復于:2005-09-03 20:01:06 |
不是很同意樓上的某幾個觀點:
1. php在某種程度上是區分大小寫的, 只是控制體, 函數, 類名不是(好象php5里區分的). 區分大小寫的是變量. 我倒覺得這樣做沒什么不好. 2. 作為一種腳本語言, 你不能要求太高 4. 估計這個問題在任何語言里都一樣 5. php是解釋型的. 許多編譯型的語言做不到的事情, 它能做到. 那沒什么奇怪的. 6. php本來是過程型的... 9. 是指什么? 11. 估計cli就是用來調試的 |
北京野狼 回復于:2005-09-05 09:56:16 |
[quote:4c8b8cf7fd="Yarco"]
何必分得那么細呢? 反正語言到了最后, 語法都是細節. 能快速地做出來, 簡潔能用,可擴展就行了... 發這帖子...本質是為了看自己的頭像...:) 無刻意反駁的意思 :)[/quote:4c8b8cf7fd] cgi不支持template,那怎么寫??? 我做網站都使用標準c |
csona 回復于:2005-09-05 23:55:40 |
如果對像操作用"."就好啦 |
Yarco 回復于:2005-09-06 08:37:03 |
[quote:890bb0f33a="csona"]如果對像操作用"."就好啦[/quote:890bb0f33a]
雖然您說的有道理...但老實說,我還是更習慣-> 因為這容易讓我想到前面的那個是指針, 而不是結構體. |
juggler 回復于:2005-09-06 09:36:09 |
小的項目開發得很快,而且很易于學習,就是在php.ini里太過于靈活,使得編寫程序時要顧及php.ini的參數變化,從而使開發變得麻煩和難于調試。 |
geel 回復于:2005-09-06 23:11:37 |
[quote:49e90f60c9="csona"]如果對像操作用"."就好啦[/quote:49e90f60c9]
這個愿望估計無法達成了 設計時沒有好好規劃,流行時才想起來發展的東西就是這樣 diskfreespace == disk_free_space is_writeable == is_writable() 這種笑話只有php才有 |
hoowa 回復于:2005-09-08 12:53:49 |
PHP已經離開了當初的目的?,F在PHP的函數庫,非?;靵y。就想存放物品的倉庫東西都亂放到里面。
在*nix下PHP要求模塊都要靜態編譯來避免出現memoery leak這樣問題。這對為PHP擴展功能很麻煩。 當然這樣做速度快??墒亲詈笪抑缓媒oPerl寫擴展了我可不想把給老板make money的服務器重新編譯PHP PHP的那種FORM既是變量的做法,已經越來越發現有問題了?,F在如果是主要PHP的開發公司可能已經要求程序員必須初始化變量了。就象當初嘲笑Perl一樣。 PHP的magic quote確實在某些地方起到了作用,可惜對SQL注入防御能力太弱,只能保護mysql。而這個時候你要是使用SQL SERVER那你的噩夢開始了,你又不能關閉magic quote因為舊代碼在跑,你又會在MSSQL上出現問題。 PHP在apache下安裝確實簡單,就是因為這樣PHP只能成apache的模塊。除非你用別的辦法php才能成為apache api |
dualface 回復于:2005-09-09 03:02:37 |
優點是簡單易學、開發小型項目效率高。
至于線程、完全的OO這些要求,我認為對于php這樣一種腳本語言來說沒必要。難道你想php像python那樣慢、java那樣吃內存? 而且對于復雜項目,沒人規定你只能用php。完全可以將多種平臺結合起來,各展所長。 |
原文轉自:http://www.anti-gravitydesign.com