發信人: Yung-Ching Hsiao <yhsiao@cae.wisc.edu>, 信區: Linux
標 題: Erick Naggum對自由軟體的看法
發信站: Supported by CCIC http://www.ifcss.org/comm (Tue Dec 22 01:33:50 1998)
轉信站: cis_nctu!news.cis.nctu!ctu-gate!news.nctu!logbridge.uoregon.edu!news-p
來 源: sun-22.cae.wisc.edu
Erik Naggum 也算是個大師級的人物. 我喜歡他的文章. 因為他每篇文章
都寫的很長, 交代頗清楚. 不像大部份的人回信都是一小段一小段的.
他相信, 一個程式設計師讀過的程式碼, 應該是他寫過的程式的10倍以上
才算夠資格的好的程式設計師.
他常在comp.emacs, comp.lang.lisp 出沒.
以下部份有不精確的譯文.
Re: How would original software be written in a 100% Free Software
world?
Author: Erik Naggum
Email: erik@naggum.no
Date: 1997/01/14
Forums: gnu.misc.discuss
_________________________________________________________________
* Tom Wheeley
| The question is, who would write original software?
the same people who write software today, but probably not as many. those
who write software _only_ for pay should go hurt some other field.
| As I see it, if everyone co-operates then the Free Software paradigm
| works well, but isn't there too great a temptation if you have a new
| piece of software that everybody wants too charge money for licenses?
the greatest benefit of free software is, in my mind, not the availability
of free software _products_, but the availability of _source code_ for
other programmers to read and use, like sheet music, plays, books, etc, are
like source code for _their_ respective kinds of production.
在我的觀念裡, 自由軟體最大的好處, 不是供應自由軟體的產品, 而是對
其它的程式師供應了原始碼, 讓他們得以閱讀與使用, 就像樂譜, 戲劇, 書等
在它們相對映的領域的功能一樣.
in contrast, too many new programmers write as if there were no programmers
before them and there shall come none after them. the best of the new
breed learn to program from learn-by-example-in-21-days textbooks of very
low quality; the worst learn from guesswork and trial and error with a
pavlovian focus on pain avoidance. none of them learn to do it right from
a master of the art of programming. instead, they learn from watching
other programs _perform_. I blame the intense redirection of energy away
from _programming_ to user interface design on this lack of ability to read
the language from programmer to computer. like the language of music
between composer and musician is vastly different from the language of
music between musician and audience, what one can learn from watching a
program run is very different from what one can learn from studying what
_makes_ it run.
相反的, 有太多的程式設計新手把程式寫的好像前無古人後無來者一般. 這類人
比教好點的使用`21天透過範例學會xx語言'的劣值教科書學寫程式. 最差的
是用猜的和試誤法學寫程式. 他們這樣子不可能學會程式設計的精髓. 相反的,
他們透過觀察程式執行的結果學寫程式. 我反對把重點擺在這裡.(在他們學會走路
之前就學飛.)
就像作曲家和演奏家之間用以溝通音樂的語言與演奏家與他的聽眾溝通的語言
不同一樣. 一個人可以從看程式執行而學到什麼東西 與 研究怎麼讓它執行所學到
的東西是差很多的.
instead of the (sometimes silly) metaphors of cars and user interfaces,
think of what written language would be like if it evolved by authors who
wrote in a vacuum, didn't build on previous works, couldn't allude to other
authors' works, couldn't employ somebody else's metaphors. think of what
想像
native languages would be like if all we got was a dictionary and a grammar
自然語言(如中英文)會變成什麼樣子, 如果說我們只透過一本字典和一份文法學,
and never learned to speak the language in a community. this is how the
而不曾在使用這語言的社區用這語言說過話. 這就是目前商業環境程式設計
art of programming evolves in the commercial world, where programmers at
的發展趨勢, 程式師最多只能從他們的同事間學到東西....
best can learn from their colleagues, provided they have time to read each
others' code. in particular, I'm thinking of Microsoft, which works very
hard _not_ to hire "cultured" programmers, but only hire "the best"
(obviously limited to whoever applied for their openings) directly from
school, and thus the lack of programming culture and sense of unity and
community we see in the works that come out of their offices.
free software, to me, means the ability of programmers to form a community
within which they can speak the same language, which I hope will be the
language of _programming_, not each of the many dialects we use.
自由軟體對我而言, 就是可以讓程式設計師們組個團體, 在這個團體內我
們可以用相同的語言溝通, 這裡我說的語言是程式設計本身, 而不是那些
我們使用的方言 (譯:指不同的程式語言)
incidentally, I see nothing wrong with writing software for pay, as long as
all or part of it can be contributed back to the community of programmers.
this may not be possible immediately, if the inventions involved are
critical to whoever paid for the creation of the software, but if it can be
released a few months or years thereafter, other programmers can still
learn from it, possibly by comparing competing solutions. programming as
an art, however, is in no hurry, unlike what managers will want programmers
to believe for individual projects.
#\Erik
--
Q: what do you say after truly great virtual sex?
A: the Internet moved!
_________________________________________________________________
References
3. http://www.dejanews.com/home_if.shtml
4. http://www.dejanews.com/home_bg.shtml
5. http://www.dejanews.com/info/
8. http://x2.dejanews.com/dnquery.xp?search=next&DBS=1&LNG=ALL&IS=Erik%20Naggum%20%20free%20programmer%20read&svcclass=dnold&ST=QS&offsets=&svcclass=dnold&CONTEXT=914257583.978190391
10. http://x2.dejanews.com/getdoc.xp?AN=366783302&CONTEXT=914257583.978190391&hitnum=1
11. http://x2.dejanews.com/getdoc.xp?AN=210109739&CONTEXT=914257583.978190391&hitnum=3
12. http://www.dejanews.com/help/help_art.shtml
13. http://x2.dejanews.com/getdoc.xp?AN=210014273&CONTEXT=914257583.978190391&hitnum=2&AO=1
14. http://x2.dejanews.com/getdoc.xp?AN=210014273&CONTEXT=914257583.978190391&hitnum=2&AH=1
15. http://www.dejanews.com/profile.xp?author=Erik%20Naggum%20%3cerik@naggum.no%3e&ST=PS
16. http://x2.dejanews.com/dnquery.xp?search=thread&svcclass=dnold&threaded=1&ST=PS&CONTEXT=914257583.978190391&HIT_CONTEXT=914257583.978190391&HIT_NUM=2&recnum=%3c3062271487660985@naggum.no%3e%231/1
17. http://www.dejanews.com/maf_enter.xp?SUB=Re:%20How%20would%20original%20software%20be%20written%20in%20a%20100%25%20Free%20Software%20world%3f&AN=210014273&DBS=1&continue=http://x2.dejanews.com/getdoc.xp%3fAN%3d210014273%26CONTEXT%3d914257583.97819
391%26hitnum%3d2
19. http://x2.dejanews.com/getdoc.xp?AN=366783302&CONTEXT=914257583.978190391&hitnum=1
20. http://x2.dejanews.com/getdoc.xp?AN=210109739&CONTEXT=914257583.978190391&hitnum=3
21. http://www.dejanews.com/help/help_art.shtml
24. http://www.dejanews.com/
25. http://www.dejanews.com/
26. http://www.dejanews.com/rg_enter.xp
27. http://www.dejanews.com/post.xp
28. http://www.dejanews.com/home_ps.shtml
29. http://www.dejanews.com/help/help_index.shtml
30. http://www.dejanews.com/forms/dnsurvey.shtml
31. http://gp.dejanews.com/gtplacer?site=dn&location=link.home.freeshop&cid=355102850
32. http://gp.dejanews.com/gtplacer?site=dn&location=link.home.ibmsdplead&cid=355102850
33. http://gp.dejanews.com/gtplacer?site=dn&location=link.home.infoseek&cid=355102850
34. http://gp.dejanews.com/gtplacer?site=dn&location=link.home.nextcard&cid=355102850
35. http://gp.dejanews.com/gtplacer?site=dn&location=link.home.infospace&cid=355102850
36. http://gp.dejanews.com/gtplacer?site=dn&location=link.home.bfl&cid=355102850
37. http://gp.dejanews.com/gtplacer?site=dn&location=link.home.auctions&cid=355102850
38. http://uswestdex.com/dejanews.html
39. http://gp.dejanews.com/gtplacer?site=dn&location=link.home.abc&cid=355102850
40. http://gp.dejanews.com/gtplacer?site=dn&location=link.home.ubid&cid=355102850
41. http://gp.dejanews.com/gtplacer?site=dn&location=link.home.datek&cid=355102850
42. http://gp.dejanews.com/gtplacer?site=dn&location=link.home.uproar&cid=355102850
43. http://www.dejanews.com/help/newusers.shtml
44. http://www.dejanews.com/corp/
45. http://www.dejanews.com/corp/adv/
46. http://www.dejanews.com/corp/adv/ad_index.shtml
47. http://www.storedejanews.com/
48. http://www.dejanews.com/rg_enter.xp
49. http://www.dejanews.com/info/linkback.shtml
50. http://www.dejanews.com/rg_mkgrp.xp
51. http://www.dejanews.com/corp/
52. http://www.dejanews.com/info/policy.shtml
53. http://www.dejanews.com/info/privacy.shtml
54. http://www.truste.org/
--
Yung-Ching Hsiao (蕭永慶)
--
* Origin: ★ 交通大學資訊科學系 BBS ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>
> -------------------------------------------------------------------------- <
發信人: william.bbs@cis.nctu.edu.tw (何陋居主), 看板: Programming
標 題: Re: Erick Naggum對自由軟體的看法
發信站: 交大資科_BBS (Tue Dec 22 03:02:30 1998)
轉信站: Ptt!news.ntu!ctu-gate!news.nctu!news.cis.nctu!cis_nctu
==> 在 Yung-Ching Hsiao <yhsiao@cae.wisc.edu> 的文章中提到:
> 他相信, 一個程式設計師讀過的程式碼, 應該是他寫過的程式的10倍以上
> 才算夠資格的好的程式設計師.
[略]
> 在我的觀念裡, 自由軟體最大的好處, 不是供應自由軟體的產品, 而是對
> 其它的程式師供應了原始碼, 讓他們得以閱讀與使用, 就像樂譜, 戲劇, 書等
> 在它們相對映的領域的功能一樣.
真是太有道理了!
這也讓我想到 Knuth 所提的 Literate Programming 理念,
讀起程式碼, 就像在讀小說一樣。
可惜目前 LP 的軟體工具還不夠好用。
> 相反的, 有太多的程式設計新手把程式寫的好像前無古人後無來者一般. 這類人
> 比教好點的使用`21天透過範例學會xx語言'的劣值教科書學寫程式. 最差的
> 是用猜的和試誤法學寫程式. 他們這樣子不可能學會程式設計的精髓. 相反的,
> 他們透過觀察程式執行的結果學寫程式. 我反對把重點擺在這裡.(在他們學會走路
> 之前就學飛.)
> 就像作曲家和演奏家之間用以溝通音樂的語言與演奏家與他的聽眾溝通的語言
> 不同一樣. 一個人可以從看程式執行而學到什麼東西 與 研究怎麼讓它執行所學到
> 的東西是差很多的.
目前在 M$ WindowsXX 系統上的程式員, 正有如此嚴重的傾向...
RAD 是渡船, 不是彼岸;卻太多人只願待在船上不願下船
(或許商家也不希望他們下船... 以便他們永遠隨自己的船漂流...)
RAD 是指月之指, 不是月;卻太多人只耽於手指, 不願仰頭望月
(或許商家也不希望他們看到月亮... 以便他們永遠隨自己的手指起舞...)
--
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
≡ 何陋居 ≡ 雋永難忘的事總落在願聽任其發生的人身上。
Jeffrey A. Kottler, 《旅行,重新打造自己》
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
--
* Origin: ★ 交通大學資訊科學系 BBS ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>
> -------------------------------------------------------------------------- <
發信人: brenden.bbs@bbs.ncnu.edu.tw (100%理性), 看板: Programming
標 題: Re: Erick Naggum對自由軟體的看法
發信站: 暨大水沙連站 (Tue Dec 22 14:45:29 1998)
轉信站: Ptt!news.ntu!ctu-gate!news.nctu!ccnews.nchu!news.ncnu!watersand
※ 引述《william.bbs@cis.nctu.edu.tw (何陋居主)》之銘言:
: > 就像作曲家和演奏家之間用以溝通音樂的語言與演奏家與他的聽眾溝通的語言
: > 不同一樣. 一個人可以從看程式執行而學到什麼東西 與 研究怎麼讓它執行所學到
: > 的東西是差很多的.
: 目前在 M$ WindowsXX 系統上的程式員, 正有如此嚴重的傾向...
: RAD 是渡船, 不是彼岸;卻太多人只願待在船上不願下船
: (或許商家也不希望他們下船... 以便他們永遠隨自己的船漂流...)
: RAD 是指月之指, 不是月;卻太多人只耽於手指, 不願仰頭望月
: (或許商家也不希望他們看到月亮... 以便他們永遠隨自己的手指起舞...)
不光是 RAD ,太過與不及都不好,如同中庸之道所說的
上個星期去台南玩,遇到一個朋友的朋友,同是程式設計的愛好者
談論到我需要較大的monitor 以及較好的顯示卡讓我工作的更舒服~~
對方立刻以頗不以為然的態度,認為一個好的 programmer 只要單色的monitor
不需要太好的,接下來就扯到什麼要好的東西都是被 m$ 寵壞,愛用 RAD 的
不是好的 programmer 什麼的,當然,當下我是不太願意與其起爭執
近代電腦之父 von Neumann 也曾說過,不會用機器語言寫程式的programmer
不是好的 programmer
其實這些,都是十分偏激過度的想法,對於傳統的 programmer 來說,看到 source
,能夠接觸程式的本身是最好的,然而這卻與近代物件導向程式設計的理念相左
實際上,OO 最不希望的就是 programmer 直接看到原始碼,以免見樹不見林
利用工具來分析,利用人類最直覺得圖像來寫程式,這才是最好的方法,
傳統的 coding 就是寫下程式碼的時代該改觀了,OO 巳經進化到 UML 的時代
利用這些工具語言來幫助我們脫離 coding 的陷井,才是讓軟体工業進入到
下一世代的唯一方法,
同樣的,RAD 的精神也在此,利用元件架構出程式,甚至不用寫半行程式碼
就能組合出一個合用的程式,這才是 RAD 的終極目標,有些高手們可能不恥
認為這種寫程式的方式不入流,實際接觸 SDK 之類的東西,才叫高明
殊不知,只有設計不良的元件架構才需要去摸底層的東西
這種「高明」的想法,使得軟体界的進步一直都很緩慢,因為每個人
都要從輪子的設計方法開始學習,才有辨法造出一輛車子
最近比較忙,暫時沒心情和時間寫下去,不過希望大家多想想,
「下一個世代」的軟体開發方式倒底是什麼,現在軟体開發的瓶頸倒底在那裡
在硬体不斷革新的現在,為何軟体開發遲遲未見革新?
--
※ Origin: 暨大水沙連站 ◆ From: ip166.puli31.ncnu.edu.tw
--
Origin: 暨南國際大學水沙連站 bbs.ncnu.edu.tw (163.22.3.131)
> -------------------------------------------------------------------------- <
發信人: william.bbs@cis.nctu.edu.tw (何陋居主), 看板: Programming
標 題: Re: Erick Naggum對自由軟體的看法
發信站: 交大資科_BBS (Tue Dec 22 16:44:08 1998)
轉信站: Ptt!news.ntu!ctu-gate!ctu-peer!news.nctu!news.iim.nctu!news.cis.nctu!c
==> 在 brenden.bbs@bbs.ncnu.edu.tw (100%理性) 的文章中提到:
> 其實這些,都是十分偏激過度的想法,對於傳統的 programmer 來說,看到 source
> ,能夠接觸程式的本身是最好的,然而這卻與近代物件導向程式設計的理念相左
> 實際上,OO 最不希望的就是 programmer 直接看到原始碼,以免見樹不見林
> 利用工具來分析,利用人類最直覺得圖像來寫程式,這才是最好的方法,
> 傳統的 coding 就是寫下程式碼的時代該改觀了,OO 巳經進化到 UML 的時代
> 利用這些工具語言來幫助我們脫離 coding 的陷井,才是讓軟体工業進入到
> 下一世代的唯一方法,
這是 scale 的問題。但精神仍不變;
以前的人需要鑽, 現在的人仍需要鑽, 只是鑽的對象不盡相同、scale 不盡相同。
傳統程式開發的 scale, 是以 pure source codes 來架構出系統;
現代程式開發的 scale, 較偏向以 well-encapsulated components 來架構出系統。
傳統時代裡, 功力高強的人, 必須有能力鑽到 source codes 層次;
至於現代, 功力高強的人, 也必須要有能力鑽到 components 層次。
否則, 跟那些在傳統時代只見樹不見林(只看得到系統層次、看不到 code 層次)
又有什麼差別呢?
現代, 就算有再多的 visual modeling languages/diagrams/methodologies/tools,
但這個 modeled 的 "物" 本身以及 "物與物之間的動態交互作用"
仍然需要程式員鑽進去研究。
問題是:「要怎麼鑽」? 單看 modeling diagrams 就能徹底理解嗎?
I doubt it...
更何況不是所有的 modeled 系統的 domain 都是 well-established or well-known,
都有 well-known 的 patterns/architectures...
能讓人一瞥 diagrams 即知底細。
> 同樣的,RAD 的精神也在此,利用元件架構出程式,甚至不用寫半行程式碼
> 就能組合出一個合用的程式,這才是 RAD 的終極目標,
這是終極目標, 但這也是永遠都達不到的目標。
即使是最 unstructured 的自然語言, 也無法完整勾勒出 *任何* 系統,
更何況是採用 structured 的人造 formal 語言
(e.g., modeling languages, programming languages)。
> 有些高手們可能不恥認為這種寫程式的方式不入流,
> 實際接觸 SDK 之類的東西,才叫高明
我想, 不齒的應該是那些只耽於這一層次, 卻不思再進一步的人。
不過, 也不是所有人都得學會量子夸克;平凡老百姓知道有質子中子電子就很了不起了。
> 殊不知,只有設計不良的元件架構才需要去摸底層的東西
not really... 至少有人有好奇心。
更何況, 設計精良的元件, 其內部的設計原理更是讓人增進一甲子功力的大補藥。
這也正是 Erick Naggum 所謂的「一個程式設計師讀過的程式碼,
應該是他寫過的程式的10倍以上, 才算夠資格的好的程式設計師」的真正原因吧。
(當然啦, 你願意的話, 可以把這句話改成
「一個程式設計師讀過的 modeling diagrams,
應該是他畫過的 diagrams 的 10 倍以上...」 或是
「一個程式設計師研究過的 components,
應該是他設計過的 components 的 10 倍以上...」
關鍵詞請隨時代、隨情境自行代換之...
)
--
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
≡ 何陋居 ≡ 雋永難忘的事總落在願聽任其發生的人身上。
Jeffrey A. Kottler, 《旅行,重新打造自己》
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
--
* Origin: ★ 交通大學資訊科學系 BBS ★ <bbs.cis.nctu.edu.tw: 140.113.23.3>