Re: [請益] 網路創業大部分的網站規劃都是用PHP嗎?

看板toberich (創業)作者 (Victor)時間16年前 (2010/01/15 12:31), 編輯推噓3(3076)
留言79則, 7人參與, 最新討論串17/23 (看更多)
※ 引述《gpmm (銀色)》之銘言: : ※ 引述《StubbornLin (Victor)》之銘言: : 如果你提及的語言的可讀性是指 Readability, : 但你所舉出所拿來使用的例子卻是這種, : 那我真的只能說你已經完全處於邏輯失控的狀態了。 你才邏輯失控,你說你有修過程式語言 真的嗎? 我不喜歡這樣懷疑別人 但你質疑的點都讓人覺得你根本就不懂 我是那教授,我鐵定當掉你 : 一個語言本身可讀性的高低,可以用多靠近人類語言的結構來定義。 : 而可讀性的高與低,對這個語言造成的影響或優劣是什麼? 對,某種程度上來說是這樣 我手邊沒有程式語言的書 大概是因為太少用到被我寄回老家了 所以我找一些網路上的資料 請看這個投影片 http://0rz.tw/0Oh4w 的第10頁和第9頁 Overall simplicity (全部簡明易懂) A manageable (易辨的) set of features and constructs Few feature multiplicity (多樣性) (means of doing the same operation) Minimal operator overloading Orthogonality (正交性) A relatively (相對) small set of primitive constructs can be combined in a relatively small number of ways to build the control and data structures of the language Every possible combination is legal Control statements (控制陳述) The presence (存在) of well-known control structures (e.g., while statement) Data types and structures (資料型態與結構) The presence of adequate facilities for defining data structures Syntax considerations (語法考慮) Identifier forms (識別符形式) Flexible composition (彈性寫作) Special words Methods of forming (形成) compound statements Form and meaning Self-descriptive constructs, meaningful keywords 和這個 http://0rz.tw/9pebr Evaluation Criteria: Readability How is it for one to read and understand programs written in the PL? Arguably the most important criterion! Factors effecting readability include: –Overall simplicity Too many features is bad as is a multiplicity of features –Orthogonality Makes the language easy to learn and read Meaning is context independent 在這裡指的Few feature multiplicity,這個不用說,違反Perl本身的精神: "There's more than one way to do it" 你也看見Perl加了這麼多功能在語法,自然違反overall simplicity的原則 再來看 Self-descriptive constructs, meaningful keywords 自我描述的概念,有意議的關鍵字 請問那些符號哪裡有自我描述的概念? 哪裡有有意議的關鍵字? 這些不是我瞎扯出來的好嗎? 你不認同可以,你要質疑也可以 但你有做功課嗎? 你有先查資料嗎? 再舉一個例子,你知道COBOL嗎? http://en.wikipedia.org/wiki/Cobol http://0rz.tw/d7g0y COBOL因為是商用語言,所以設計上某種程度也希望非程式人員也能讀 所以他寫出來是像英文的句子 : 是進入這個語言的門檻。 : 是程式人員在學習這個語言的學習曲線。 : 是這個語言本身的容易普及或存活的程度。 : 舉一個例子, : 如果某種語言,它的所有判斷式要放在一個地方, : 但是判斷式的描述區塊卻統統集中在另一個地方(想想還真可怕), : 如果這樣能讓語言執行速度比 C 還跳躍 3 萬倍, : 那請問你這樣的語言依舊是比較糟糕的嗎? : 對我來說不是,因為它是「犧牲了自己的可讀性」,來「提昇了執行效率」。 你的認知也有點問題 現代的編譯技術越來越先進 要犧牲可讀性去換效能也換不到什麼 既然如此,為何要換? 有興趣你可以去看看LLVM等Just in time compiler的技術 http://llvm.org/ http://code.google.com/p/unladen-swallow/ Python有個計劃就是打算讓Python效能提升十倍 利用JIT compiler的技術 也就是他在執行前才把程式轉為binrary code 或進行最佳化等等 : 所以在檢討可讀性時,請將他背後的成因一起考慮進去。 : 當你硬是將你「正確的認知」套用在了「錯誤的邏輯」上, 你的認知一開始就錯誤了 重修完程式語言再來跟我戰 : 提出了語言的可讀性,卻舉出了聚焦在學習門檻的例子, : 還認為別人指出這個部份是在嘲笑你,這實在令人啼笑皆非。 你自己說讀到一半笑出來 不然這是指什麼意思? : 你如果告訴一個只會說台語的親切大媽,英文很易讀易懂, : 她也會覺得你是在胡說什麼,那根本是無意義的鬼畫符。 英文是computer science的母語 我想沒有人會反對我這點吧? 大部份主流的函式庫、程式、論文、文件 全都是用英文寫的,不用英文難到要用阿拉伯文嗎? 說真的,在資訊界不懂英文,你就只能得到二手資訊 等別人翻譯好,你可以在天瓏書局買到中文書時 那東西差不多也過時了,新的東西又出來了 用英文本來就是理所當然的事 給你看一個有趣的例子 周蟒 : http://code.google.com/p/zhpy/ 他是台灣的高手gasolin寫出來的中文版Python 主要是用於教學用的,裡面的語法都是用中文寫的 對於懂中文的人可讀性或許會比較好一點 : 當然,如果你評判程式語言的優劣是依靠它的學習門檻來決定時, : 你的確可以說,對同樣不懂程式的人來說, : 可讀性是一個語言很重要的優劣指標。 : 另外,能否請你解釋一下你的觀點, : 你把可寫性界定在「熟悉這些符號的人」, 你完全搞錯方向了,因為Perl加太多功能再語法,而且是用符號表示 自然學習要熟悉的負擔就比較大 Evaluation Criteria: Writability: "Few constructs, a small number of primitives, a small set of rules for combining them" 再一次,請重修程式語言 : 卻又把可讀性定義在「對這些語言陌生不懂的人」。 : 如此搖擺不定的評論基準點, : 是怎麼讓你打出這篇「如何評估比較程式語言」的? 我在我文章一開始就有說過了,我修過的程式語言的知識 加上我自己的經驗 : : 這也是張飛打岳飛 : : 組合鍵只是加速你達成那樣的功能 ... : : 6. break 是跳離迴圈 : : 7. Python的code block是由縮排來決定的 : : 我想很清楚的是,perl你不懂語法,就是不懂 : : python版的可以猜,換成其它語言也一樣 : : 因為沒有一個語言像perl做這麼多功能在語法上的... : 老實說,這像什麼? : 這像是因為 Perl 的學習門檻高,語言本身可直接閱讀性低, : 造成你學習上的不順暢,所以讓你特地寫文章來大肆批評它一番。 : 更直接點,這像是一個明明在寫 Python 的程式人員, : 忽然被老闆丟了一個 Perl 的 code 要求維護, : 因為沒辦法用像平常一樣順暢閱讀,所以砲轟 Perl 是個劣質語言。 我只能說很抱歉,你沒有仔細看我寫的文章就要跟我戰 我很久以前就在寫Perl,當時我的網頁都是用Perl-CGI 只是很久沒寫了倒是真的 但是同樣學習語言,這就是語言天生的差異 可以比較,沒什麼好說的 你硬要延申成什麼語言優劣 你是劣質語言、我是優等語言這種奇怪的說法我也沒辦法 再說,好吧,學習上的不順暢 請你去看程式語言的書好嗎? Evaluation Criteria: Readability "Makes the language easy to learn and read" 再一次,我快抓狂了 等你修完程式語言再來跟我戰 還有,我從來沒有說過Perl是個劣質語言! 莫名奇妙,我只從各種特性探討語言的優缺點 什麼時候我說過Perl是劣質語言? 你去翻我的文章,我哪裡說過Perl是劣質語言? 又來了,說真的,每次討論到語言就會有人莫名奇妙的激動= = 然後加一堆我沒說過的說法,指著我說我嫌某個語言爛 : Perl 會有如此豐富多變的語言標記是有他的歷史和原因的, : 我沒有那麼清楚,但是請問你清楚嗎? 沒有那麼清楚也能拿來說嘴,原因很簡單: http://en.wikipedia.org/wiki/There's_more_than_one_way_to_do_it 這就是Perl的哲學,這就是為什麼Perl是那個樣子 : 今天你如果說因為 Perl 語言本身的可讀性不佳,不接近一般語言, : 讓你看 code 看的很杜爛,我想大家都能接受, : 但你非要用你無法直覺閱讀 Perl 語言本身這件事, : 來評論這個程式語言的優劣,那我真不知道是為什麼如此高估自己。 我累了... 不想再重覆,Perl難讀不是我自己說而已 我寫那個proxy.py,就是在上網路程式設計時老師的作業之一 原本是用Perl寫的,我特地寫一個類似的Python版給我同學比較 他們都說Python比較好讀 再者,我沒有高估自己,我只是就我學到的在寫文章而已 你為什麼不照照鏡子,你連什麼資料都沒查 也不回去翻一下程式語言的課本 就可以打這一篇從一開始就錯到底的文章來跟我戰 到底是誰高估自己? -- Now.in 網路廣播平台 http://now.in 哇咧咧 創意投票系統 http://walele.com 易記學 程式設計教學 http://ez2learn.com/ VICTOR's 個人Blog http://blog.ez2learn.com/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.252.68.181

01/15 13:09, , 1F
你反駁跟說台語的人講英文易懂那段完全搞錯回文方向吧XD
01/15 13:09, 1F

01/15 13:09, , 2F
他不是在跟你說要不要用英文啦(暈)
01/15 13:09, 2F

01/15 13:12, , 3F
另外,你說「可讀性是程式語言很重要的一個優劣的參考指標」
01/15 13:12, 3F

01/15 13:12, , 4F
小吃攤可以推出來了吧 改行賣雞排說不定賺更多
01/15 13:12, 4F

01/15 13:13, , 5F
又說perl的可讀性較python差,引申出你認為 perl劣於python
01/15 13:13, 5F

01/15 13:13, , 6F
還不算太牽強吧 XD
01/15 13:13, 6F

01/15 13:13, , 7F
不過你的確只有用相對的基準(相對於python)而沒有用絕對
01/15 13:13, 7F

01/15 13:14, , 8F
「perl是個劣質語言」就是了。
01/15 13:14, 8F

01/15 13:18, , 9F
單純講可讀性的話,我可以推 psuedo language 嗎? (...)
01/15 13:18, 9F

01/15 13:22, , 10F
那我可以推SQL嗎
01/15 13:22, 10F

01/15 13:25, , 11F
@TonyQ: 那你可以代我解釋他到底那些是想表達什麼?
01/15 13:25, 11F

01/15 13:25, , 12F
他不是想說可讀性和貼不貼近英語沒關係
01/15 13:25, 12F

01/15 13:26, , 13F
是看讀的人的背景知識,我的認知是這樣
01/15 13:26, 13F

01/15 13:26, , 14F
所以你覺得他想表達什麼?
01/15 13:26, 14F

01/15 13:26, , 15F
而我認為英文能力本來就是寫程式必備的
01/15 13:26, 15F

01/15 13:26, , 16F
讀的人本來就必備英文能力,這沒什麼好說的
01/15 13:26, 16F

01/15 13:27, , 17F
而優劣有前提的,今天這個語言是給誰寫? 寫些什麼?
01/15 13:27, 17F

01/15 13:27, , 18F
團隊會這語言的多少人? 學習成本多少?
01/15 13:27, 18F

01/15 13:29, , 19F
而且我指的優劣是各項目上的優劣
01/15 13:29, 19F

01/15 13:30, , 20F
要自行解釋成整個語言就是劣質語言 我也不知道該說啥
01/15 13:30, 20F

01/15 13:31, , 21F
你還是在跳…請你先定義你所謂「優劣」的目的是什麼好了
01/15 13:31, 21F

01/15 13:31, , 22F
如果是依循 PL 良善程式語言準則,那自然你說的全對
01/15 13:31, 22F

01/15 13:32, , 23F
但是請問業界在使用,是在看哪個語言有多良善嗎?
01/15 13:32, 23F

01/15 13:32, , 24F
請好好想想你討論的目的跟出發點
01/15 13:32, 24F

01/15 13:32, , 25F
我文章標題都寫很清楚了 你只是單純來戰都都沒讀嗎?
01/15 13:32, 25F

01/15 13:32, , 26F
"如何評估比較程式語言"
01/15 13:32, 26F

01/15 13:33, , 27F
業界在使用,評估條件寫那些只是最核心的部份
01/15 13:33, 27F

01/15 13:33, , 28F
我說過了,我之後會再寫一篇更廣範的評估條件
01/15 13:33, 28F

01/15 13:34, , 29F
從可用資源、學習成本、維護成本、人才的可得性等等
01/15 13:34, 29F

01/15 13:34, , 30F
各方面討論,但老實說有點不太想寫了
01/15 13:34, 30F

01/15 13:34, , 31F
一堆人連文章都沒看清楚就急著要跟我戰
01/15 13:34, 31F

01/15 13:35, , 32F
請問你是怎樣決定用某種工具? 你真的有評估過嗎?
01/15 13:35, 32F

01/15 13:35, , 33F
沒有比較,你要如何決定使用何種工具?
01/15 13:35, 33F

01/15 13:35, , 34F
如果這樣,請你標題改成「從語言標準來評估比較程式語言」
01/15 13:35, 34F

01/15 13:35, , 35F
而比較,又是要比些什麼?
01/15 13:35, 35F

01/15 13:36, , 36F
我認為我標題寫夠清楚了,你一來程式語言課在混
01/15 13:36, 36F

01/15 13:36, , 37F
二來文章沒讀清楚就一開始就想戰而戰
01/15 13:36, 37F

01/15 13:37, , 38F
再來也不查資料,就只靠一張嘴要戰
01/15 13:37, 38F

01/15 13:37, , 39F
你要我說什麼好呢?
01/15 13:37, 39F

01/15 13:37, , 40F
就算我標題沒寫,內文也有寫
01/15 13:37, 40F

01/15 13:37, , 41F
我要你把標題改成「從語言標準來評估比較程式語言」
01/15 13:37, 41F

01/15 13:37, , 42F
"大家都知道車子我們可以比較它的馬力、耗油、安全評
01/15 13:37, 42F

01/15 13:37, , 43F
因為你只侷限著這個範圍在著墨
01/15 13:37, 43F

01/15 13:38, , 44F
等,但是大多數人不知道程式語言該比較些什麼,而我
01/15 13:38, 44F

01/15 13:38, , 45F
今天所要說的,就是程式語言該拿什麼來比較"
01/15 13:38, 45F

01/15 13:38, , 46F
很好,如果你把前提先闡明了,「我比較的標準是語言規範」
01/15 13:38, 46F

01/15 13:38, , 47F
我才懶得理你... 憑什麼要改? = = 莫名奇妙
01/15 13:38, 47F

01/15 13:38, , 48F
老早就沒有人會說什麼
01/15 13:38, 48F

01/15 13:39, , 49F
嘿... 我整篇文章都是在討論語言規範
01/15 13:39, 49F

01/15 13:39, , 50F
我難道還要特地注明: 這是在討論語言規範
01/15 13:39, 50F

01/15 13:39, , 51F
為什麼要脫褲子放屁? 文章整篇哪裡不是在講語言的本質
01/15 13:39, 51F

01/15 13:41, , 52F
算了,第二篇文章我懶得寫了
01/15 13:41, 52F

01/15 13:41, , 53F
因為你沒有闡明基準。凡評論都有其基準在,如果你只依循
01/15 13:41, 53F

01/15 13:42, , 54F
語言規範,你就必須闡明他,不然你就無可避免要從各角度來檢
01/15 13:42, 54F

01/15 13:42, , 55F
到時又一堆人不讀文章不找資料,一看見"比較語言"
01/15 13:42, 55F

01/15 13:42, , 56F
討,而你並沒有這樣做
01/15 13:42, 56F

01/15 13:42, , 57F
就高潮了,急著來跟我戰.. 我還得浪費時間解釋
01/15 13:42, 57F

01/15 13:43, , 58F
我就算沒有這樣做又如何? 我都說了,那是之後要寫的
01/15 13:43, 58F

01/15 13:43, , 59F
你今天就可讀性那些部份跟我胡扯都是亂講
01/15 13:43, 59F

01/15 13:44, , 60F
被戰倒你才再那邊跳針要戰其它的部份?
01/15 13:44, 60F

01/15 13:44, , 61F
要麻你就一開始戰其它的部份,訓練成本、可用資源等
01/15 13:44, 61F

01/15 13:44, , 62F
你一開始就挑我文章那些寫的部份來質疑我
01/15 13:44, 62F

01/15 13:45, , 63F
現在又要跳針到其它地方去,我懶得理你了= =
01/15 13:45, 63F

01/15 13:45, , 64F
你慢慢回吧
01/15 13:45, 64F

01/15 13:46, , 65F
「我就算沒有這樣做又如何?」真是經典的台詞啊…
01/15 13:46, 65F

01/15 13:47, , 66F
我談論可讀性跟你談論可讀性的基準不同,你以語言規範檢討
01/15 13:47, 66F

01/15 13:48, , 67F
好,可讀性的基準就如我文章裡寫的,那你的是什麼?
01/15 13:48, 67F

01/15 13:48, , 68F
你說你修過程式語言,但是你的想法又完全跟所學不一樣
01/15 13:48, 68F

01/15 13:48, , 69F
你是打算發一篇論文 "探討程式語言的可讀性"
01/15 13:48, 69F

01/15 13:48, , 70F
來跟我們說明程式語言的可讀性要如何比較嗎?
01/15 13:48, 70F

01/15 13:48, , 71F
我洗耳恭聽
01/15 13:48, 71F

01/15 13:50, , 72F
不不,你是老大,你的對,小的退場
01/15 13:50, 72F

01/15 13:57, , 73F
我最後只想說,當你指著別人說你高估自己 有四根指頭
01/15 13:57, 73F

01/15 13:57, , 74F
指著你自己,我所寫的都是我所見所聞,我的心得
01/15 13:57, 74F

01/15 13:58, , 75F
我的經驗,要質疑我說的不對,只要理性都很歡迎
01/15 13:58, 75F

01/15 13:58, , 76F
像這樣不引用資料,一股腦的只是為戰而戰...
01/15 13:58, 76F

01/15 13:59, , 77F
我只能說是浪費大家時間而已 = =
01/15 13:59, 77F
※ 編輯: StubbornLin 來自: 111.252.68.181 (01/15 14:04)

01/15 14:11, , 78F
這系列戰文誰說得有理暫且不管.倒是StubbornLin提供不少資訊
01/15 14:11, 78F

01/15 14:12, , 79F
還蠻有用的.
01/15 14:12, 79F
忘了說Perl還有個問題很嚴重 它違反這條 Orthogonality Meaning is context independent 我舉個例子,像是它以$/來改變<>的行為,就是context dependent 為什麼呢? <>到底會怎樣讀得看$/到底被改成什麼 一來讀起來會需要看上面到底有誰動了$/ 事情還不只是這樣簡單 例如張三寫了這樣的程式 sub getFirstColumn { // 改變<>以逗號來當資料讀取的分界 $/ = ","; // 讀取一欄資料並回傳 (Perl放最後一行是回傳值) $firstColumn = <$FILE>; } 好像沒什麼問題對吧? 李四接手這個程式,然後這樣寫 $column = &getFirstColumn(); $allRemain = <$FILE>; 他原本預期$/是空的,所以<$FILE>會讀整個檔案的內容 但是不幸的是$/在getFirstColumn中被改掉了... 李四對於跑出來的結果會覺得莫名奇妙 為什麼會是這種鬼打牆的結果? 他得浪費寶貴的開發時間去檢查到底問題出在哪? 如果他有些經驗,他知道這是之前有人改了$/ 他得翻一堆別人寫的程式才能知道他在哪裡改了那個值 這就是上下文相關的問題所在 因為有太多語言相關的問題會影響到開發的效率 也是為什麼我這麼重視語言的本質和特性 花那麼多心力和時間在比較和評估上 像Perl就很不適合團隊開發,因為上面提到的特性 使它容易寫出很"髒"的程式 用改全域變數來改變程式的行為 使得別人要寫會容易產生非預料中的結果 ※ 編輯: StubbornLin 來自: 111.252.68.181 (01/15 14:25)
文章代碼(AID): #1BJ--M4e (toberich)
討論串 (同標題文章)
文章代碼(AID): #1BJ--M4e (toberich)