C#愚蠢到我不能理解,兼論UI構(gòu)造方法

C#愚蠢到我不能理解,兼論UI構(gòu)造方法

版權(quán)所有 ? 2018 林鵬程, 保留所有權(quán)利。

在2010.7-2011.5年,使用C#開發(fā),發(fā)現(xiàn)很多花樣特性復(fù)雜不好理解,太多語法規(guī)則或術(shù)語我都記不住,也不喜歡彎彎繞繞的,很煩,象C#的委托,進(jìn)度條我看過幾遍沒搞懂,最后放棄使用進(jìn)度條。還有協(xié)變、逆變什么的,我看著頭暈,直接跳過不看。

所以后來大約在2011年一看到clojure,發(fā)現(xiàn)規(guī)則簡單,寫代碼可以全靠想像力和理解力自由發(fā)揮,無拘無束,太適合我了,就算是當(dāng)時(shí)沒有中文文檔,英語文檔也很少,英語水平不好,也上賊船了,使用Clojure-clr重寫成一個(gè)基于.net的WinForm應(yīng)用。最終創(chuàng)造了純函數(shù)管道數(shù)據(jù)流。

前面所講的委托,進(jìn)度條,用clj的數(shù)據(jù)流方式,只要運(yùn)用atom+watch就很簡單好達(dá)到相同的效果,不僅比C#的方法簡單,而且多線程,分布式支持比C#不知高到哪里去了。

在Clojure-clr實(shí)現(xiàn)的進(jìn)度條方法:用atom保存進(jìn)度數(shù)據(jù),工作函數(shù)可以多線程修改atom數(shù)據(jù),watch函數(shù)自動改變進(jìn)度界面。

另外,Clojure-clr界面WinForm的實(shí)現(xiàn)也是基于一個(gè)包括全部界面組件狀態(tài)atom數(shù)據(jù),所有的界面組件圍著atom, 交互運(yùn)行。很久以后,我看到"Clojure編程樂趣"這本書上有Alan Perlis的一句話。It’s better to have 100 functions operate on one data structure than 10 functions on 10 data structures. 這與我的解決方案有異曲同工的思想。我的思想是:所有的組件圍著一個(gè)atom狀態(tài)交互,比各個(gè)組件管理自己的狀態(tài)好。大家是不是覺得很相似。
注:Alan Perlis是首位圖靈獎得主、Algol語言(C/C++/Pascal等語言的鼻祖)作者。

以上的方法我2013年左右,具體時(shí)間記不太清了,在QQ上的Clojure群講過我的實(shí)現(xiàn)方法。最近在寫技術(shù)博客,把以前的一些技術(shù)心得整理出來。

不知C#設(shè)計(jì)者是怎么想的,搞這么麻煩。當(dāng)時(shí)一大遍的C#新特性狂熱鼓吹粉絲,C#的委托,進(jìn)度條個(gè)人覺得是無比愚蠢的方法,愚蠢到我不能理解。我不喜歡應(yīng)用花樣特性,其它花樣特性沒嘗試過,無法評論。

C#和Scala吸收了太多特性,特性并不是越多越好。就好象人一樣,管不住嘴,超重三高跑不了,小身板撐不住。象Clojure(Lisp)這類直接用語法樹的語言,屬于那種基因好的,怎么吃都吃不胖的。 Clojure和C語言是屬于堅(jiān)持做有選擇、有原則、有節(jié)制、有自我控制能力的語言,這種特質(zhì)是比較靠得住的特質(zhì)。

純FP和OO設(shè)計(jì)模式有很多高大上的牛人和公司在應(yīng)用,雖然不理解,但我沒用過,從專業(yè)客觀謹(jǐn)慎的角度來講,不好評論。以前文章有過評擊純FP和OO設(shè)計(jì)模式,大體上是編程理念根本不同的理念之爭吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容