關於“設計模式”和“設計程式語言”的一些閑話

來源:互聯網
上載者:User

引子:

2013 年的 Python Conference China 珠海場,我做了一個《論 Python 與設計模式》的分享。今天召集人知名的社區大媽 ZoomQuiet 給我分享了一篇文章,討論由這篇文章而起。後覺得這個討論對我來說是很有意思的,所以整理了聊天記錄,徵得 ZQ 同意後發布到這裡,當作是我思想的印跡儲存下來,非為分享,覺得有協助有啟發可以留言感謝,覺得要說服我、教育我,可以省點力氣多陪一下家人朋友了。

========================

ZQ@zh#奶爸  10:02:26
On object-oriented programming #是也乎# ZoomQuiet.io
    http://blog.zoomquiet.io/imho/131224-yw-on-oop.html#-
PyCon2013China 上賴總的分享,
對比這文章,中槍無數哪,,,
目測很多大牛也都是為了 OOP 形象而宣傳,
平時寫代碼,儘可能不折騰 的,,,

gz賴勇浩  10:09:31
還好吧,不算衝突。
我上次的分享,講的主要也是利用 python 的特性地實現 pythonic 的設計模式,也就是說,讓設計模式的神在 python 代碼中傳播,而不是照搬來自 C++/Java 樣本中的“形”。比如我分享的裝飾器模式就是以 first-class function 為技術基礎的,裡面主要是利用了閉包是“帶狀態的函數”這一個特點。

ZQ@zh#奶爸  10:11:27
對的 Guido 也是基於觸達的壓力,宣稱 Python 中的 OO 特性,
其實, 分析了原始碼大家都知道 OO 在Python 中並不是主導地位

gz賴勇浩  10:11:36
程式語言設計,王大神比我高明許多;但講到寫普通的業務代碼,他倒是未必比我高明的。

ZQ@zh#奶爸  10:12:25
也看什麼業務代碼,
他給 Google 寫的業務代碼可是每天在跑的,,,

ZQ@zh#奶爸  10:13:05
當然我們平常接觸的 ARUD 式業務,
實在不算真正的業務了,,,

ZQ@zh#奶爸  10:13:20
只是資料的搬動而已,

gz賴勇浩  10:14:53
大媽這就是妄自菲薄了。設計小蠻腰是業務,在小蠻腰上燒電焊也是業務,一個電焊工可不會在一個建築師面前這麼自卑。

ZQ@zh#奶爸  10:15:49
當然,工作沒有高低,
俺只是說其中包含的智力消耗完全不同層級而已,,,

ZQ@zh#奶爸  10:16:14
我們拼的是手速,
高階業務,可真心拼的是思維了,,,

gz賴勇浩  10:17:02
我的意思就是不同意“智力消耗完全不同層級”的說法。燒好電焊,需要的學習和修鍊,未必比學習建築設計要少。

gz賴勇浩  10:18:18
larry & page 當年用 java 寫出 google,難道他們遇到的挑戰比設計 java 程式語言要低得多?

gz賴勇浩  10:18:54
用 C 語言寫出 linux 核心,難道比設計 C 語言遇到的挑戰要低得多?

gz賴勇浩  10:19:30
用 C++ 寫出 WPS,你覺得真的比開發 C++ 要難得多嗎?

ZQ@zh#奶爸  10:20:01
這個只有當事人知道了,,,
因為 Google 的爆發不是只有兩人時開始的,
那時 Google 已經有上千名員工了,
工程管理的困難比純粹技術突破要複雜的多,
但是,涉及的思維層級,就不好說了,,,,

gz賴勇浩  10:20:22
java 爆發的時候,也是發布到 1.4 版本了。

ZQ@zh#奶爸  10:21:07
"燒好電焊"是種肌肉記憶的訓練,練到極致是拼裝備了,,,
所以,現在頂級 電焊都是依靠編程,自動進行的了,,,

gz賴勇浩  10:22:02
王珢在他所擅長的領域有未經驗證的“專長”而已,就算以後發布出經得起考驗的產品,也還是普通人,沒必要把他當成神罷。

ZQ@zh#奶爸  10:22:07
智力消耗,這個點,俺可能描述不清,
嚴格來講,應該說是 反日常思維程度的層級不同?

gz賴勇浩  10:23:01
設計一個程式設計語言,不是非常難的事,在金山至少可以挑出 50 個人在 1 個月內每個人都造出一門有其特色的程式設計語言。

ZQ@zh#奶爸  10:23:02
這個放心,他自個兒也放了話:我和權威的故事
    http://www.yinwang.org/blog-cn/2014/01/04/authority/
"""...我深深地知道接受錯誤想法的危害性,所以我也希望大家都具有批判的思維,不要盲目的接受我說的話。我不喜歡“大神”或者“牛人”這種稱呼。
"""

gz賴勇浩  10:23:57
我相信,就是這一秒,金山內部也有不少於 3 個自主研發領特定領域語言(DSL)正用在生產中。

ZQ@zh#奶爸  10:23:59
俺主要敬佩他堅持自個兒的追求,一直不盲從,
只是口氣臭些,,,,

ZQ@zh#奶爸  10:24:50
設計一個程式設計語言,的確不難,
在 王珢 的文章中,給出過35行一個DSL 編譯器的原始碼,
但是,設計一個真正好用的程式設計語言,可就是完全不同的領域了,,,

ZQ@zh#奶爸  10:25:59
俺其實在以往也不自主的發明了各種局部 DSL ,
包括 UliWeb 自個兒發明的範本語言,
但是,整個世界為毛沒有變成大家都在使用自個兒的DSL 來完成自個兒的工程?

gz賴勇浩  10:27:17
設計一個真正好用的程式設計語言
========
這個王珢自己就沒辦到,又何須覺得他真的在這一塊是一個神呢?

ZQ@zh#奶爸  10:27:21
當然,這其中市場營銷,大師忽悠,培訓市場等等,
都在博弈,
但是,語言本身的設計思想,是個決定因素

ZQ@zh#奶爸  10:28:01
"又何須覺得他真的在這一塊是一個神呢"...
這個斷言,不適合俺吧,,,
俺也從來沒有吼過珢神的說,

ZQ@zh#奶爸  10:30:06
只是,對於程式設計語言, 這一專門的研究領域,
王珢 是這個前沿領域的專業研究人員,
不同其它各種公司的語言設計群組成員,
他沒有任何市場功利因素,只是進行科學研究,
所以,俺願意相信他的一些論斷,以及論據,
但是,遠沒有達到可以作為代言來進行佈道的水平,,,

gz賴勇浩  10:31:01
王珢 是這個前沿領域的專業研究人員,
========
已經不是了,他離開研究領域很久了,他現在是“該領域技術的應用人員,正在開發相關的產品”。

ZQ@zh#奶爸  10:31:02
真正好用的程式設計語言,這事兒,他也給出了結論:
為什麼一種程式語言是不夠用的
    http://www.yinwang.org/blog-cn/2013/06/23/one-lang-not-enough/
承認當年自個兒也是圖樣圖森破

gz賴勇浩  10:32:15
他沒有任何市場功利因素,只是進行科學研究,
=========
有。他最近的很多文章,其實都算是他創業產品的小軟文。

ZQ@zh#奶爸  10:32:21
也沒有很久,就兩年,
而且從他的經曆看,PL 領域也是各種宗教戰爭的主場,
他離開,實踐自個兒的技能,不代表不繼續研究那,,,

ZQ@zh#奶爸  10:32:47
研究的經曆是在校時的經曆,這個沒有問題吧

ZQ@zh#奶爸  10:33:45
嗯嗯嗯,其實,中文的blog 只是他思想表述的很小一部分,
認為天朝人應該接受的了,
他的E文 blog 更加豐富的,,,

gz賴勇浩  10:40:32
好吧,結題一下:
1、我覺得他對設計模式的看法跟我沒有太大差別,如果我理解沒有錯誤,那就是“不要照搬教科書 C++/Java 的設計模式範例程式碼,而是要將設計模式的思想與程式設計語言自身中特性結合起來,做到 Within a few hours I found a mapping from all the weird names it introduced to the programming techniques I had been using all the time. ”,大概就是要做到“神似而形不似(教科書的範例程式碼)”。
2、我覺得設計、實現程式設計語言不是“火箭科技”,大部分進階程式員都可以輕鬆做到“設計、實現領特定領域語言”,但我相信王珢在這一塊“技能樹點得比較滿”,比我厲害,但不見得我(或其他編寫商務邏輯代碼的程式員)寫的代碼比他爛(或者說,壞味道)。

ZQ@zh#奶爸  10:41:55
賴總的結論都無法同意更多...
俺抄送連結,也是為了給賴總追加信心,
王珢 這種人物想的跟你也沒有什麼不同

gz賴勇浩  10:42:23
 謝謝大媽。
 
gz賴勇浩  10:42:31
謝謝大家,我工作去了。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.