美文网首页
C#愚蠢到我不能理解,兼论UI构造方法

C#愚蠢到我不能理解,兼论UI构造方法

作者: 5c76839aa8d6 | 来源:发表于2018-04-20 19:08 被阅读0次

    C#愚蠢到我不能理解,兼论UI构造方法

    版权所有 © 2018 林鹏程, 保留所有权利。

    在2010.7-2011.5年,使用C#开发,发现很多花样特性复杂不好理解,太多语法规则或术语我都记不住,也不喜欢弯弯绕绕的,很烦,象C#的委托,进度条我看过几遍没搞懂,最后放弃使用进度条。还有协变、逆变什么的,我看着头晕,直接跳过不看。

    所以后来大约在2011年一看到clojure,发现规则简单,写代码可以全靠想像力和理解力自由发挥,无拘无束,太适合我了,就算是当时没有中文文档,英语文档也很少,英语水平不好,也上贼船了,使用Clojure-clr重写成一个基于.net的WinForm应用。最终创造了纯函数管道数据流。

    前面所讲的委托,进度条,用clj的数据流方式,只要运用atom+watch就很简单好达到相同的效果,不仅比C#的方法简单,而且多线程,分布式支持比C#不知高到哪里去了。

    在Clojure-clr实现的进度条方法:用atom保存进度数据,工作函数可以多线程修改atom数据,watch函数自动改变进度界面。

    另外,Clojure-clr界面WinForm的实现也是基于一个包括全部界面组件状态atom数据,所有的界面组件围着atom, 交互运行。很久以后,我看到"Clojure编程乐趣"这本书上有Alan Perlis的一句话。It’s better to have 100 functions operate on one data structure than 10 functions on 10 data structures. 这与我的解决方案有异曲同工的思想。我的思想是:所有的组件围着一个atom状态交互,比各个组件管理自己的状态好。大家是不是觉得很相似。
    注:Alan Perlis是首位图灵奖得主、Algol语言(C/C++/Pascal等语言的鼻祖)作者。

    以上的方法我2013年左右,具体时间记不太清了,在QQ上的Clojure群讲过我的实现方法。最近在写技术博客,把以前的一些技术心得整理出来。

    不知C#设计者是怎么想的,搞这么麻烦。当时一大遍的C#新特性狂热鼓吹粉丝,C#的委托,进度条个人觉得是无比愚蠢的方法,愚蠢到我不能理解。我不喜欢应用花样特性,其它花样特性没尝试过,无法评论。

    C#和Scala吸收了太多特性,特性并不是越多越好。就好象人一样,管不住嘴,超重三高跑不了,小身板撑不住。象Clojure(Lisp)这类直接用语法树的语言,属于那种基因好的,怎么吃都吃不胖的。 Clojure和C语言是属于坚持做有选择、有原则、有节制、有自我控制能力的语言,这种特质是比较靠得住的特质。

    纯FP和OO设计模式有很多高大上的牛人和公司在应用,虽然不理解,但我没用过,从专业客观谨慎的角度来讲,不好评论。以前文章有过评击纯FP和OO设计模式,大体上是编程理念根本不同的理念之争吧。

    相关文章

      网友评论

          本文标题:C#愚蠢到我不能理解,兼论UI构造方法

          本文链接:https://www.haomeiwen.com/subject/xlmzkftx.html