博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于“设计模式”和“设计程序语言”的一些闲话
阅读量:5095 次
发布时间:2019-06-13

本文共 3666 字,大约阅读时间需要 12 分钟。

引子:

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
谢谢大家,我工作去了。

转载于:https://www.cnblogs.com/aiwz/p/6154299.html

你可能感兴趣的文章
升级到WP8必需知道的13个特性
查看>>
python学习笔记—— 多进程中的 孤儿进程和僵尸进程
查看>>
webapi ,前台json传入raw读取
查看>>
poj2481
查看>>
病毒侵袭(hdu2896,ac自动机)
查看>>
浏览器请求页面时Etag和cache的区别
查看>>
Java 基础知识面试题
查看>>
【Visual Installer】如何注册自已的文件类型
查看>>
关于跳出循环
查看>>
文件拓展名/HTML转义字符/RGB颜色参考/网页字体参考
查看>>
Android常用的UI布局
查看>>
科研呢喃3-论科研选题
查看>>
python (2) 之 pyc
查看>>
TextInputLayout setError() setErrorEnable()
查看>>
HDD&Memory&CPU调度机制(I/O硬件性能瓶颈)
查看>>
city
查看>>
Weex 相关文章收集
查看>>
Android Ap 开发 设计模式第八篇:抽象工厂模式
查看>>
【查阅】教你使用SQL SERVER复制
查看>>
如何用C语言画一个圣诞树?
查看>>