於 CSZONE 看到的一篇轉信
覺得很是有趣就轉錄來了
>From news.cs.nthu.edu.tw!freebsd.ntu.edu.tw!bbs.ee.ntu.edu.tw!Maxwell Sun Mar
Path: news.cs.nthu.edu.tw!freebsd.ntu.edu.tw!bbs.ee.ntu.edu.tw!Maxwell
From: iLee@bbs.ee.ntu.edu.tw (環遊世界的軟木塞)
Newsgroups: tw.bbs.comp.language
Subject: Re: 奧林匹克資訊研習營的程式設計
Date: 28 Feb 1998 03:54:51 GMT
Organization: 台大電機 Maxwell BBS
Message-ID: <3NJDTS$tz5@bbs.ee.ntu.edu.tw>
X-Filename: Programming/M.888638092.A
Lines: 54
Xref: news.cs.nthu.edu.tw tw.bbs.comp.language:81756
※ 引述《"林口之虎" <bjc4100@mail.ty.wownet.net>》之銘言:
: >: 以下程式選自The International Obfuscated C Code Contest 1984 年作品
: >: int i;main(){for(;i["]<i;++i){--i;}"];read('-'-'-',i+++"hell\
: >: o, world!\n",'/'/'/'));}read(j,i,p){write(j/p+p,i---j,i/i);}
: > 畫蛇添足的白濫
: 對啊!小弟也認為寫程式,可讀性、實用性最重要!
programming 不一定都這麼嚴肅的. :)
從我學 C 以來.
不知道聽過多少人抱怨: C 的語法不夠嚴謹.
人前這樣講, 一些書上也會這樣寫.
想想都替 C 抱不平.
正統教育都強調清晰的邏輯, 正確的思考.
程式可讀性實用性反而見仁見智.
programming 跟作文章差不多, 文有定法, 同時也文無定法.
教人為什麼 main() 得是 int (), 應該.
教人大括號小括號該怎麼擺, 常用 switch 少用 if, 那就未必了.
倒常常想, 那些個抱怨 C 語法不夠嚴謹的.
到底是抱怨那個部份?
pointer 難用?
是因為對 pointer 認識不清呢, 還是難用?
array & pointer 關係曖昧?事實上呢?
declaration 混沌不明?
看個 void (*signal(int, void (*)(int)))(int) 看老半天看不懂.
這是誰的問題?
conversion 常出狀況?
ANSI C 真正允許什麼 conversion 說得上來嗎?
哪些 conversion 又屬於 compiler extension 部份?
為什麼 C 動不動掛在嘴邊就是 portable?
專寫一個給某種平台用的程式難道不行嗎?
看看那些只用過 Turbo C 的人吧.
提的問題有一大半應該屬於 OS 所提供的 system call.
卻還當它是「C 的問題」.
一本 C 的書要是能把這幾個部份講對講明白, 就是一本好書了.
這樣的好書又有幾本?
很多人學 C 就是把 C 當 C 學, 很可惜.
學 C 最大的好處是可以東摸摸西摸摸.
看著課堂上講過的東西一樣一樣都能在現成的東西裡頭找著.
講到作業系統, 就試試 fork()/vfork() 有什麼不一樣.
講到演算法, 就小小 hack 一下 sed.
這種感覺是很親切的.
可是當我們看不懂眼前這段碼的時候, 該怎麼辦?
直接寫信去跟 coder 抱怨他程式可讀性太差?
還是乾脆歸罪於 C 語法不嚴謹, 一種結果可以有三四種寫法?
當然, 這也只是我個人看法. :)
--
[[m※ Origin: 臺大電機 Maxwell 站 ◆ From: ccsun73.cc.ntu.edu.tw
--
你是一位聰明人嗎?如果是,你該記住,你的聰明是跟那些人學來的,
然後在適當的地點,適當的時間,輕輕的對那人說:這是你教我的。
聲音要輕,而且只告訴他一個人。
摘錄自"牧羊少年奇幻之旅"
--
※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw)
◆ From: DickG.m5.ntu.ed