Re: [請益] 網路創業大部分的網站規劃都是用PHP嗎?
看板toberich (創業)作者StubbornLin (Victor)時間16年前 (2010/01/15 12:31)推噓3(3推 0噓 76→)留言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
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
01/15 13:13, 5F
→
01/15 13:13, , 6F
01/15 13:13, 6F
→
01/15 13:13, , 7F
01/15 13:13, 7F
→
01/15 13:14, , 8F
01/15 13:14, 8F
推
01/15 13:18, , 9F
01/15 13:18, 9F
推
01/15 13:22, , 10F
01/15 13:22, 10F
→
01/15 13:25, , 11F
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
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
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)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 17 之 23 篇):
toberich 近期熱門文章
PTT職涯區 即時熱門文章
19
30