由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 王垠的这篇写的不错
相关主题
王垠:我为什么不再公开开发Yin语言现在还在“学”脚本语言的,都弱爆了
clojure 做数据分析vert.x就是脚本语言们的企业版
jvm上3大脚本语言王垠 -- 拳打南山魏老 脚踢北海好虫
脚本语言 vs 编译语言哪种脚本语言适合做代码的文本分析?
王垠:为Java说句公道话 (转载)Perl程序员工作机会多吗?
接触scala两年了王垠真在写自己的语言了
王垠:我为什么不在乎人工智能教小孩C++?
[合集] 到底要学习Perl,还是Python?感觉os之上很多automation都是用perl类脚本来搞
相关话题的讨论汇总
话题: 语言话题: 脚本语言话题: 设计话题: 程序语言话题: ak
进入Programming版参与讨论
1 (共1页)
m****a
发帖数: 2593
1
http://www.yinwang.org/blog-cn/2014/01/25/pl-and/
喜欢这段和AK的比较,
程序语言与武器
前段时间 AK-47 的设计者 Kalashnikov 去世的时候,我从一篇文章了解到他设计 AK-
47 的故事,发现 AK 跟我喜欢的程序语言设计有异曲同工之妙。
AK 简单得就像一把锤子。它身上没有太空时代的材料。大多数汽车修理店都有可
以制造出 AK 的工具。
这篇文章首先提到,AK 的高可靠性最主要来自于它的简单,而其实简单也是程序语言
最重要的东西。程序员需要解决的问题一般都挺复杂,如果他们的工具再被设计得复杂
,那么他们大量的脑力就被浪费在解决这语言的问题,而不是真正需要解决的问题了。
Kalashnikov 开始的时候把任何有可能出问题的设计都排除在外了。
与简单的设计背道而驰,现在很多程序语言为了赶潮流或者吸引眼球,喜欢标新立异,
喜欢加入很多“特性”,可是这些特性很有可能不但不解决问题,而且会制造问题。绝
大部分程序员都不理解这个道理,所以有些人听说我在设计自己的语言就问我:“它有
什么新特性吗?”我没法回答他们,因为我的设计几乎没有新的特性。我现在所做的一
切思考和试验都是在去掉不必要的麻烦。一个语言缺少一些好的特性,以后还可以加进
去,可是它如果多了一些问题特性,那一旦有人开始用就没法去掉了。
AK 上面没有袖珍和娇气的部件。这样你就不用费事在草丛里,泥地上或者溪流里
找它们了。
士兵是人,会摔跤犯错误,程序员也是人,所以程序员的武器应该像士兵的武器一样,
方便他们找到问题。可是很多程序语言让程序员犯错误之后花很多时间和精力才能找到
错误的所在,浪费大量本来可以用来解决问题的时间。我的前同事 TJ 说他刚进入博士
学习的时候花了好几个月,就为了找到 C 代码里面一个指针计算错误,导致内存结构
破坏和莫名其妙的错误结果,而出现指针计算错误的位置跟错误结果出现的位置毫无关
系。我也遇到过类似的问题。C 语言的指针不就像是某些武器上面的袖珍部件吗?一不
小心掉在地上就找不到了。
AK 只有一个复杂一点的部件,那就是它的弹夹。弹夹的设计很大程度上影响到枪
的整体性能,所以 Kalashnikov 在上面花了很多设计时间。
这个工程经验其实对于程序语言的设计者有启发意义,因为弹夹与枪主体的接口,和程
序语言的函数接口很类似。Tony Hoare 在他的《给程序语言设计的建议》中也提到,
函数的调用必须简单而且快速,因为调用的开销会累积起来形成很大的性能问题。可惜
的是很多语言没有注意到这个问题,函数调用时总是有一堆的动态检查和重载要做,很
大程度的影响了它们的性能。
Kalashnikov 不是天才,他不是为了发明而发明,他解决不了问题的时候就高兴地
从别人那里学过来。
这是非常值得我们程序语言设计者学习的。很多程序语言专家都有盲目排斥“对手”的
心理,“自己人”的东西就不假思索的表扬,对手的东西就一味的批评。最后的结果是
没有把敌人的好东西学过来,让自己人吃亏。在操作系统和数据库等领域也有类似的思
维方式,这是非常有害的。
直到被更好的东西取代,AK 会继续和我们在一起。什么才是“更好”,这是由历
史和民族来定义的,而不是枪支设计专家。
在计算机的世界里也是一样,程序语言,操作系统,数据库…… 它们的好坏不应该是
由它们的设计者决定的,而是看它们是否经得起时间的考验。很多几十年前以为是好的
设计,到现在已经很明显的显示出了它们的缺点。这就是为什么我喜欢批评一些语言,
操作系统和数据库的设计,因为我看到了它们在历史的长河中已经快要到达终点。自欺
欺人的掩盖这些缺陷只会让我们输掉战争。
z****e
发帖数: 54598
2
他说的批评就是这个啦
“所以我认为脚本语言是一个祸害,它几乎永远是错误的决定。”
什么是“脚本语言”
很多人都会用一些“脚本语言”(scripting language),却很少有人真正的知道到底
什么是脚本语言。很多人用 shell 写一些“脚本”来完成日常的任务,用 Perl 或者
sed 来处理一些文本文件,很多公司用“脚本”来跑它们的“build”(叫做 build
script)。那么,到底什么是“脚本语言”与“非脚本语言”的区别呢?
其实“脚本语言”与“非脚本语言”并没有语义上,或者执行方式上的区别。它们的区
别只在于它们设计的初衷:脚本语言的设计,往往是作为一种临时的“补丁”。它的设
计者并没有考虑把它作为一种“通用程序语言”,没有考虑用它构建大型的软件。这些
设计者往往没有经过系统的训练,有些甚至连最基本的程序语言概念都没搞清楚。相反
,“非脚本”的通用程序语言,往往由经过严格训练的专家甚至一个小组的专家设计,
它们从一开头就考虑到了“通用性”,以及在大型工程中的可靠性和可扩展性。
首先我们来看看“脚本”这个概念是如何产生的。使用 Unix 系统的人都会敲入一些命
令,而命令貌似都是“一次性”或者“可抛弃”的。然而不久,人们就发现这些命令其
实并不是那么的“一次性”,自己其实一直在重复的敲入类似的命令,所以有人就发明
了“脚本”这东西。它的设计初衷是“批量式”的执行命令,你在一个文件里把命令都
写进去,然后执行这个文件。可是不久人们就发现,这些命令行其实可以用更加聪明的
方法构造,比如定义一些变量,或者根据系统类型的不同执行不同的命令。于是,人们
为这脚本语言加入了变量,条件语句,数组,等等构造。“脚本语言”就这样产生了。
然而人们却没有发现,其实他们根本就不需要脚本语言。因为脚本语言里面的这些结构
,在任何一种“严肃”的程序语言(比如 Java,Scheme)里面,早就已经存在了,而
且设计得更加完善。所以脚本语言往往是在重新发明轮子,甚至连轮子都设计不好。早
期脚本语言的“优势”,也许只在于它不需要事先“编译”,它“调用程序”的时候,
貌似可以少打几个字。脚本语言对于 C 这样的语言,也许有一定的价值。然而,如果
跟 Scheme 或者 Java 这样的语言来比,这个优势就非常不明显了。比如,你完全可以
想一个自动的办法,写了 Java 代码之后,先调用 Java 编译器,然后调用 JVM,最后
删掉 class 文件。或者你可以选择一种有解释执行方式的“严肃语言”,比如 Scheme。
很多人把 Scheme 误称为“脚本语言”,就是因为它像脚本语言一样可以解释执行,然
而 Scheme 其实是比 C 和 Java 还要“严肃”的语言。Scheme 从一开头就被设计为一
种“通用程序语言”,而不是用来进行某种单一简单的任务。Scheme 的设计者比Java
的设计者造诣更加深厚,所以他们对 Java 的一些设计错误看得非常清楚。像 Chez
Scheme 这样的编译器,其实早就可以把 Scheme 编译成高效的机器代码。实际上,很
多 Scheme 解释器也会进行一定程度的“编译”,有些编译为字节码,有些编译为机器
代码,然后再执行。所以在这种情况下,通常人们所谓的“编译性语言”与“解释性语
言”,几乎没有本质上的区别,因为你看到的“解释器”,不过是自动的先编译再执行。
跟 Java 或者 Scheme 这样的语言截然不同,“脚本语言”往往意味着异常拙劣的设计
,它的设计初衷往往是目光短浅的。这些语言里面充满了历史遗留下来的各种临时的
hack,几乎没有“原则”可言。Unix 的 shell(比如 bash,csh,……),一般都是
这样的语言。Java 的设计也有很多问题,但也跟“脚本语言”有天壤之别。然而,在
当今现实的工程项目中,脚本语言却占据了它们不该占有的地位。例如很多公司使用
shell 脚本来处理整个软件的“build”过程或者测试过程,其实是相当错误的决定。
因为一旦这种 shell 脚本日益扩展,就变得非常难以控制。经常出现一些莫名其妙的
问题,却很难找到问题的所在。Linux 使用 shell 脚本来管理很多启动项目,系统配
置等等,其实也是一个历史遗留错误。所以,不要因为看到 Linux 用那么多 shell 脚
本就认为 shell 语言是什么好东西。
如果你在 shell 脚本里使用通常的程序设计技巧,比如函数等,那么写几百行的脚本
还不至于到达不可收拾的地步。可是我发现,很多人头脑里清晰的程序设计原则,一遇
到“写脚本”这样的任务就完全崩溃了似的,他们仿佛认为写脚本就是应该“松散”一
些。很多平时写非常聪明的程序的人,到了需要处理“系统管理”任务的时候,就开始
写一些 shell 脚本,或者 Perl 脚本。他们写这些脚本的时候,往往完全的忘记了程
序设计的基本原则,例如“模块化”,“抽象”等等。他们大量的使用“环境变量”一
类的东西来传递信息,他们忘记了使用函数,他们到处打一些临时性的补丁,只求当时
不出问题就好。到后来,他们开始耗费大量的时间来处理脚本带来的麻烦,却始终没有
发现问题的罪魁祸首,其实是他们错误的认为自己需要“脚本语言”,然后认为写脚本
的时候就是应该随便一点。
所以我认为脚本语言是一个祸害,它几乎永远是错误的决定。我们应该尽一切可能避免
使用脚本语言。在没有办法的情况下(比如老板要求),也应该在脚本里面尽可能的使
用通常的程序设计原则。
z****e
发帖数: 54598
3
我觉得他说脚本语言有一定对的部分
但是我还是认为,脚本在有限范围内使用
可以实现简化开发的目的
所以不同意他说的脚本一定玩完的说法
这一点vert.x做得很好
也就是要限制程序员乱用脚本
这种容易错的东西要限制使用范围
d*******r
发帖数: 3299
4
他说那个狭义上的脚本语言,shell 和 Perl,确实非常不好用,只能适于写非常短小
的程序
r****y
发帖数: 26819
5
他没有读懂国象的规则就开始写了。这个王车易位的规则,没有写对。
首先,第四条就是多余的。有了第一条,王和车都没移动过,那第四条毫无必要了。
其次,第三条写错了。王不能正在被check,并且在换位途中经过的格子以及换位结束的
格子都不能被check。
其实国象还有一个吃过路兵的规则,也不是那么直观的。
不熟悉国象规则的外行评价和比较中国象棋和国际象棋的规则,没有什么参考价值。

AK-

【在 m****a 的大作中提到】
: http://www.yinwang.org/blog-cn/2014/01/25/pl-and/
: 喜欢这段和AK的比较,
: 程序语言与武器
: 前段时间 AK-47 的设计者 Kalashnikov 去世的时候,我从一篇文章了解到他设计 AK-
: 47 的故事,发现 AK 跟我喜欢的程序语言设计有异曲同工之妙。
: AK 简单得就像一把锤子。它身上没有太空时代的材料。大多数汽车修理店都有可
: 以制造出 AK 的工具。
: 这篇文章首先提到,AK 的高可靠性最主要来自于它的简单,而其实简单也是程序语言
: 最重要的东西。程序员需要解决的问题一般都挺复杂,如果他们的工具再被设计得复杂
: ,那么他们大量的脑力就被浪费在解决这语言的问题,而不是真正需要解决的问题了。

z****e
发帖数: 54598
6
呼呼
很多人认为shell的替代者是python
而perl的替代者是ruby

【在 d*******r 的大作中提到】
: 他说那个狭义上的脚本语言,shell 和 Perl,确实非常不好用,只能适于写非常短小
: 的程序

z****e
发帖数: 54598
7
王垠的结语:
程序语言与政治
很多人都曾经妄想着所谓的“社会主义”和“共产主义”能拯救全人类,就像很多程序
员都妄想着某一种最近流行的语言能够把他们从繁琐的编程工作里拯救出来一样。几十
年前,所谓的“革命者”为了这些很酷很炫的名词,试图把从前的一切文化都焚毁掉。
腐朽的资本主义!吃人的旧社会!这就像现在很多 Scala/Clojure/Go 的狂热分子对
Java 之类的语言充满了敌意,一提到这些语言心里就是火。腐朽的 Java,不思进取的
Lisp,Scala/Clojure/Go 就是你们的掘墓人!然而他们没有发现,那些他们试图完全
抛弃的语言里面其实有科学合理之处。他们没有看到这些东西之所以存在于那些语言里
,是经过了历史的经验教训。这些教训如果不被理解和吸取,当遇到同样的问题,这些
新语言就会一样的堕落掉。
有些程序员妄想着 Clojure 和 Go 所谓的 “纯函数式数据结构”,“transactional
memory”,“goroutine”等酷毙帅呆的新概念能够一劳永逸的解决并发计算的重重困
难,妄想着 Scala 能够让面向对象和函数式编程完美的结合。可是他们没有看到的是
人心的险恶,他们就像那些革命者和红卫兵一样,被别有企图的人利用了。在经过深入
的研究之后,你会发现这些炫名词其实并不能解决并发计算的关键问题。并行计算之所
以困难,是因为物理决定了信息通道的性质。信息只能是单向的,顺序的通过这些信道
,而信道的通过速率是有限的。不管你用多么炫的新方式让信息通过它,都不会改变这
个事实。所以这些新名词其实不能解决我们的关键问题,要想解决它只有依靠程序员自
己的领悟和设计。这就像再先进的工具也不可能帮助你设计出马力翻倍的引擎一样,你
必须自己动脑筋,做实验,就像爱迪生发明灯泡一样。
t****t
发帖数: 6806
8
我怎么觉得他的推理和结论完全没有关系...

【在 z****e 的大作中提到】
: 王垠的结语:
: 程序语言与政治
: 很多人都曾经妄想着所谓的“社会主义”和“共产主义”能拯救全人类,就像很多程序
: 员都妄想着某一种最近流行的语言能够把他们从繁琐的编程工作里拯救出来一样。几十
: 年前,所谓的“革命者”为了这些很酷很炫的名词,试图把从前的一切文化都焚毁掉。
: 腐朽的资本主义!吃人的旧社会!这就像现在很多 Scala/Clojure/Go 的狂热分子对
: Java 之类的语言充满了敌意,一提到这些语言心里就是火。腐朽的 Java,不思进取的
: Lisp,Scala/Clojure/Go 就是你们的掘墓人!然而他们没有发现,那些他们试图完全
: 抛弃的语言里面其实有科学合理之处。他们没有看到这些东西之所以存在于那些语言里
: ,是经过了历史的经验教训。这些教训如果不被理解和吸取,当遇到同样的问题,这些

z****e
发帖数: 54598
9
好吧,它在写散文

【在 t****t 的大作中提到】
: 我怎么觉得他的推理和结论完全没有关系...
z****e
发帖数: 54598
10
给你出个题
王垠这段话说的是哪个语言?
“左边的微波炉就好像某些程序语言,本来当初设计就是给标准没那么高的人用来处理
很简单的网页的。可是后来有人忽然想让它成为一个“万能语言”,用来做复杂的,对
性能和可靠性都很高的服务器程序甚至机器人控制程序。”

【在 d*******r 的大作中提到】
: 他说那个狭义上的脚本语言,shell 和 Perl,确实非常不好用,只能适于写非常短小
: 的程序

相关主题
接触scala两年了现在还在“学”脚本语言的,都弱爆了
王垠:我为什么不在乎人工智能vert.x就是脚本语言们的企业版
[合集] 到底要学习Perl,还是Python?王垠 -- 拳打南山魏老 脚踢北海好虫
进入Programming版参与讨论
g*****s
发帖数: 1288
11
Javascript

【在 z****e 的大作中提到】
: 给你出个题
: 王垠这段话说的是哪个语言?
: “左边的微波炉就好像某些程序语言,本来当初设计就是给标准没那么高的人用来处理
: 很简单的网页的。可是后来有人忽然想让它成为一个“万能语言”,用来做复杂的,对
: 性能和可靠性都很高的服务器程序甚至机器人控制程序。”

p*****2
发帖数: 21240
12
这篇文章想表达什么?
m******t
发帖数: 635
13
很好奇王垠对Scala和Clojure的评价,不知道是不是他以前批判过的那个极端OOP主义
或者极端FP主义?

【在 z****e 的大作中提到】
: 王垠的结语:
: 程序语言与政治
: 很多人都曾经妄想着所谓的“社会主义”和“共产主义”能拯救全人类,就像很多程序
: 员都妄想着某一种最近流行的语言能够把他们从繁琐的编程工作里拯救出来一样。几十
: 年前,所谓的“革命者”为了这些很酷很炫的名词,试图把从前的一切文化都焚毁掉。
: 腐朽的资本主义!吃人的旧社会!这就像现在很多 Scala/Clojure/Go 的狂热分子对
: Java 之类的语言充满了敌意,一提到这些语言心里就是火。腐朽的 Java,不思进取的
: Lisp,Scala/Clojure/Go 就是你们的掘墓人!然而他们没有发现,那些他们试图完全
: 抛弃的语言里面其实有科学合理之处。他们没有看到这些东西之所以存在于那些语言里
: ,是经过了历史的经验教训。这些教训如果不被理解和吸取,当遇到同样的问题,这些

c********l
发帖数: 8138
14
没错
Linux下的管道和变量太复杂,还不如直接写一个python,
情愿把时间花在配置python上,也不愿意把时间花在debug单独的脚本上

【在 d*******r 的大作中提到】
: 他说那个狭义上的脚本语言,shell 和 Perl,确实非常不好用,只能适于写非常短小
: 的程序

z****e
发帖数: 54598
15
所以现在google搞computing engine就推广python来替换shell

【在 c********l 的大作中提到】
: 没错
: Linux下的管道和变量太复杂,还不如直接写一个python,
: 情愿把时间花在配置python上,也不愿意把时间花在debug单独的脚本上

z****e
发帖数: 54598
16
python会接管shell

【在 c********l 的大作中提到】
: 没错
: Linux下的管道和变量太复杂,还不如直接写一个python,
: 情愿把时间花在配置python上,也不愿意把时间花在debug单独的脚本上

n******u
发帖数: 4271
17
这个王寅以后可以走方舟子路线
n******7
发帖数: 12463
18
他这发言就跟军版ID差不多了
就是走极端
脚本的缺点,难道这么多码工发现不了?
我批量改个文件名还要写个java才是有病吧

【在 z****e 的大作中提到】
: 我觉得他说脚本语言有一定对的部分
: 但是我还是认为,脚本在有限范围内使用
: 可以实现简化开发的目的
: 所以不同意他说的脚本一定玩完的说法
: 这一点vert.x做得很好
: 也就是要限制程序员乱用脚本
: 这种容易错的东西要限制使用范围

n******7
发帖数: 12463
19
shell各种语法太恶心了
perl好点,但还是一堆@#$%满天飞

【在 z****e 的大作中提到】
: python会接管shell
z****e
发帖数: 54598
20
clojure给我就类似这种感觉
不过背下来之后,写起来飞快,所以适合一条枪单干
这就是为什么有次编程比赛lisp能夺冠
公孙大神说过的例子

【在 n******7 的大作中提到】
: shell各种语法太恶心了
: perl好点,但还是一堆@#$%满天飞

相关主题
哪种脚本语言适合做代码的文本分析?教小孩C++?
Perl程序员工作机会多吗?感觉os之上很多automation都是用perl类脚本来搞
王垠真在写自己的语言了王垠的新文章看了没?
进入Programming版参与讨论
g*****g
发帖数: 34805
21
shell is more portable because every user has it already.
Python, or Ruby, or Groovy is obviously more developer friendly and they are
fine choice in more controlled environment with complicate script.
d***a
发帖数: 13752
22

...
王垠这一段不知所云。脚本语言早就有了,Java是什么时候才出现的。
逻辑也不通。按这个逻辑,大家都说世界语好了,还说什么中文英文呢。
无知没什么,无知又觉得自己全知,这一点让人不知道说什么好。

【在 z****e 的大作中提到】
: 他说的批评就是这个啦
: “所以我认为脚本语言是一个祸害,它几乎永远是错误的决定。”
: 什么是“脚本语言”
: 很多人都会用一些“脚本语言”(scripting language),却很少有人真正的知道到底
: 什么是脚本语言。很多人用 shell 写一些“脚本”来完成日常的任务,用 Perl 或者
: sed 来处理一些文本文件,很多公司用“脚本”来跑它们的“build”(叫做 build
: script)。那么,到底什么是“脚本语言”与“非脚本语言”的区别呢?
: 其实“脚本语言”与“非脚本语言”并没有语义上,或者执行方式上的区别。它们的区
: 别只在于它们设计的初衷:脚本语言的设计,往往是作为一种临时的“补丁”。它的设
: 计者并没有考虑把它作为一种“通用程序语言”,没有考虑用它构建大型的软件。这些

d***a
发帖数: 13752
23
tclsh比这俩好很多。可惜用的人比较少。

【在 n******7 的大作中提到】
: shell各种语法太恶心了
: perl好点,但还是一堆@#$%满天飞

z****e
发帖数: 54598
24
说世界语一直是一个大同的梦想
主要阻力来自说英语的人不同意

【在 d***a 的大作中提到】
: tclsh比这俩好很多。可惜用的人比较少。
d*******r
发帖数: 3299
25
我现在的思路就是完全不写超过10行的 shell,最好5行都不超过。全部用python代替

shell + cmd 那种东西就是噩梦。Linux 升级和换个 distribution 多半玩完。
就连一般的 cmd tool 我都避免用,如果能找到相应的 python lib,我一般不用 cmd
tools. cron job 我都不用了。
z****e
发帖数: 54598
26
话说tcl可是最早的脚本
如果好很多,却用得少,这似乎有些说不过去
光看一个东西诞生早晚来判断对错,这似乎逻辑上是有些问题

【在 d***a 的大作中提到】
: tclsh比这俩好很多。可惜用的人比较少。
d*******r
发帖数: 3299
27
"
有些程序员妄想着 Clojure 和 Go 所谓的 “纯函数式数据结构”,“transactional
memory”,“goroutine”等酷毙帅呆的新概念能够一劳永逸的解决并发计算的重重困
难,妄想着 Scala 能够让面向对象和函数式编程完美的结合。可是他们没有看到的是
人心的险恶,他们就像那些革命者和红卫兵一样,被别有企图的人利用了。
在经过深入的研究之后,你会发现这些炫名词其实并不能解决并发计算的关键问题。并
行计算之所
以困难,是因为物理决定了信息通道的性质。信息只能是单向的,顺序的通过这些信道
,而信道的通过速率是有限的。不管你用多么炫的新方式让信息通过它,都不会改变这
个事实。
"
上面这个“信息流动”没看懂,求大牛解释
z****e
发帖数: 54598
28
我就简单认为
语言就一个目的:交流
计算机语言除了跟机器交流以外,同时还不得不具备有跟人交流的目的
这是无奈的现实,主要是码农不愿意写文档
所以机器执行效率和代码的可读性优先级高于少敲几个字母的懒
当然现在是满足前两者的前提下,尽量满足程序员的懒
这个需要生产力提升

cmd

【在 d*******r 的大作中提到】
: 我现在的思路就是完全不写超过10行的 shell,最好5行都不超过。全部用python代替
: 。
: shell + cmd 那种东西就是噩梦。Linux 升级和换个 distribution 多半玩完。
: 就连一般的 cmd tool 我都避免用,如果能找到相应的 python lib,我一般不用 cmd
: tools. cron job 我都不用了。

z****e
发帖数: 54598
29
就是物理学的发展决定了程序发挥的上限
机器性能达不到,你怎么写都白搭
所以如果真正追求性能上的优越,就应该去学物理,而不是cs
cs能做的仅仅是逼近,而不是超越,只有物理学才能带给现实真正意义上的超越
而且大的突破还能获得炸药奖,图灵奖相比之下,那知名度什么要小很多了
所以指望通过一种paradigm来实现一些跨越,不现实
最后很有可能跨越没实现,邯郸学步,反而丢掉了前人打下来的基础

transactional

【在 d*******r 的大作中提到】
: "
: 有些程序员妄想着 Clojure 和 Go 所谓的 “纯函数式数据结构”,“transactional
: memory”,“goroutine”等酷毙帅呆的新概念能够一劳永逸的解决并发计算的重重困
: 难,妄想着 Scala 能够让面向对象和函数式编程完美的结合。可是他们没有看到的是
: 人心的险恶,他们就像那些革命者和红卫兵一样,被别有企图的人利用了。
: 在经过深入的研究之后,你会发现这些炫名词其实并不能解决并发计算的关键问题。并
: 行计算之所
: 以困难,是因为物理决定了信息通道的性质。信息只能是单向的,顺序的通过这些信道
: ,而信道的通过速率是有限的。不管你用多么炫的新方式让信息通过它,都不会改变这
: 个事实。

x****u
发帖数: 44466
30
人造语言是反生理的

【在 z****e 的大作中提到】
: 说世界语一直是一个大同的梦想
: 主要阻力来自说英语的人不同意

相关主题
从vert.x的例子看脚本clojure 做数据分析
groovy整个就是一个better pythonjvm上3大脚本语言
王垠:我为什么不再公开开发Yin语言脚本语言 vs 编译语言
进入Programming版参与讨论
d*******r
发帖数: 3299
31
一直觉得汉语的设计就比英语高级多了,稍微改良下,做世界语言就挺好。本身用的人
还多。

【在 z****e 的大作中提到】
: 就是物理学的发展决定了程序发挥的上限
: 机器性能达不到,你怎么写都白搭
: 所以如果真正追求性能上的优越,就应该去学物理,而不是cs
: cs能做的仅仅是逼近,而不是超越,只有物理学才能带给现实真正意义上的超越
: 而且大的突破还能获得炸药奖,图灵奖相比之下,那知名度什么要小很多了
: 所以指望通过一种paradigm来实现一些跨越,不现实
: 最后很有可能跨越没实现,邯郸学步,反而丢掉了前人打下来的基础
:
: transactional

z****e
发帖数: 54598
32
法语在语言上表现最好
因为规律多,便于学习和掌握
英语最糟糕,单词全世界语言中最多,学习成本极为高昂
汉语也不好,主要汉字书写和汉语说分离,导致学习要学两遍
日语其实做得不错,日语发音是最方便听的人的听觉的
一个元音加一个辅音,很严格的配对
德语其实也很糟糕,语法太混乱

【在 x****u 的大作中提到】
: 人造语言是反生理的
d*******r
发帖数: 3299
33
我觉得不需要将读音encoding到字和词中,速读的时候,是需要消音的,直接把视频信
号转成意思是最高效的。汉语这种图形文字最适合。人类就是应该读图片的。特别是电
脑互联网时代, 复杂图形文字的书写已经不再是问题,越图形图片化越好。中文以后强
势了,高效的汉字输入肯定能流行。
汉字要是被好好地设计成某种编程语言的原生语言,各种函数和变量都可以很短,而且
横着竖着都能排,非常紧凑方便,单位视角面积内的 information entropy 非常高 ,
但是又不是数学符号那种一般人不爱读的东西。
我虽然不懂法语,但我会法语的朋友抱怨法语的语法比英语还多,什么阴性阳性的,据
说可以搞死人,我觉得这个肯定不是优秀的设计。
而且汉语最牛逼的是造词法,导致汉语没有词语爆炸的问题,汉语是收敛的。而欧洲字
母语言的使用者,大多数一辈子都要背无穷无尽的单词,就像美国人天天玩填字游戏,
就是因为他们的造词法实在不咋地。反观汉语,中学学完 2000~3000 汉字,你基本看
到新词就会了。就好像你学了'猪' 和 '肉', 你就知道'猪肉'是啥,而不是学了 'pig'
和 'meat', 还要背 'pork' 这样的单词。
随便扯一下,反正这个帖子也是说语言的设计。

【在 z****e 的大作中提到】
: 法语在语言上表现最好
: 因为规律多,便于学习和掌握
: 英语最糟糕,单词全世界语言中最多,学习成本极为高昂
: 汉语也不好,主要汉字书写和汉语说分离,导致学习要学两遍
: 日语其实做得不错,日语发音是最方便听的人的听觉的
: 一个元音加一个辅音,很严格的配对
: 德语其实也很糟糕,语法太混乱

L***n
发帖数: 6727
34
数学符号没法避免啊,不然写狗谷定理写成甲平方加乙平方等于丙平方?

【在 d*******r 的大作中提到】
: 我觉得不需要将读音encoding到字和词中,速读的时候,是需要消音的,直接把视频信
: 号转成意思是最高效的。汉语这种图形文字最适合。人类就是应该读图片的。特别是电
: 脑互联网时代, 复杂图形文字的书写已经不再是问题,越图形图片化越好。中文以后强
: 势了,高效的汉字输入肯定能流行。
: 汉字要是被好好地设计成某种编程语言的原生语言,各种函数和变量都可以很短,而且
: 横着竖着都能排,非常紧凑方便,单位视角面积内的 information entropy 非常高 ,
: 但是又不是数学符号那种一般人不爱读的东西。
: 我虽然不懂法语,但我会法语的朋友抱怨法语的语法比英语还多,什么阴性阳性的,据
: 说可以搞死人,我觉得这个肯定不是优秀的设计。
: 而且汉语最牛逼的是造词法,导致汉语没有词语爆炸的问题,汉语是收敛的。而欧洲字

d*******r
发帖数: 3299
35
是没法避免,但是大家还是最爱用 Java, python 这种直白的语言,里面多是英文单词。
Perl, shell 这种 @$%& 大家就是不爱用.
C++ 里面那些 <> :: & *, 也不受欢迎.
也就是说,如果能用人类语言,大家还是prefer少用符号。
而且,即使要用,汉字里面嵌几个 1 2 3, a b c 也挺自然, 大家中学大学课本不就这
样吗。
符号其实跟欧美字符语言没绝对关系,嵌入到哪个语言都行。

【在 L***n 的大作中提到】
: 数学符号没法避免啊,不然写狗谷定理写成甲平方加乙平方等于丙平方?
d*******r
发帖数: 3299
36
还是没懂,我觉得王说的是逻辑上各种paradigm还是帮助不了concurrency? 或者他这
个就是随便乱说一句。

【在 z****e 的大作中提到】
: 就是物理学的发展决定了程序发挥的上限
: 机器性能达不到,你怎么写都白搭
: 所以如果真正追求性能上的优越,就应该去学物理,而不是cs
: cs能做的仅仅是逼近,而不是超越,只有物理学才能带给现实真正意义上的超越
: 而且大的突破还能获得炸药奖,图灵奖相比之下,那知名度什么要小很多了
: 所以指望通过一种paradigm来实现一些跨越,不现实
: 最后很有可能跨越没实现,邯郸学步,反而丢掉了前人打下来的基础
:
: transactional

g*****g
发帖数: 34805
37
我老读大学时候做作业,做不限长的整数的加减乘除法。拿C++做了运算符重载,觉得
自己很牛逼。
回过头来一看,别人就是pascal写的很土的 add/minus,也没见可读性哪里不好了。

词。

【在 d*******r 的大作中提到】
: 是没法避免,但是大家还是最爱用 Java, python 这种直白的语言,里面多是英文单词。
: Perl, shell 这种 @$%& 大家就是不爱用.
: C++ 里面那些 <> :: & *, 也不受欢迎.
: 也就是说,如果能用人类语言,大家还是prefer少用符号。
: 而且,即使要用,汉字里面嵌几个 1 2 3, a b c 也挺自然, 大家中学大学课本不就这
: 样吗。
: 符号其实跟欧美字符语言没绝对关系,嵌入到哪个语言都行。

d*******r
发帖数: 3299
38
所以大牛也是觉得很多时候自然语言描述就够了吧 :)

【在 g*****g 的大作中提到】
: 我老读大学时候做作业,做不限长的整数的加减乘除法。拿C++做了运算符重载,觉得
: 自己很牛逼。
: 回过头来一看,别人就是pascal写的很土的 add/minus,也没见可读性哪里不好了。
:
: 词。

z****e
发帖数: 54598
39
对,这个你看一下编程艺术那本书
王垠没少做这本书的轮子
作者最大的贡献除了这本书以外还有一个tex
tex里面为了减少括号,大量采用了自然语言的释义
也就是做了大量的类似\add, \plus这种东东
目的是为了让公式本身通俗易懂,主要目的也是为了减少括号
说到底,这些都是工具,工具本身,顺手,达到目的
就足够了,再深入就不是工具的问题了,而是理论的问题了
那这个是学术的问题了
话说,虽然懒是本性,但是连打字都成为一种负担的时候
那这个人是有些太过于懒惰了

【在 d*******r 的大作中提到】
: 所以大牛也是觉得很多时候自然语言描述就够了吧 :)
z****e
发帖数: 54598
40
对,没有错
符号不可避免,但是要避免符号的滥用
scala这点做得尤其不好,所以很多人都晕了
人毕竟不是机器
符号化最严谨的数学,大师证明时候也不见得有大量使用符号
真正的证明其实跟符号本身没有太多必然联系
记符号本身需要时间和精力投入
那何必呢?说到底写程序是为了某一个目的
实现目的就好了,而实现目的的手段
一旦精简到一定程度之后,其实就没有意义了
就像游戏fps,一旦达到90针,再往后意义就不大了
其实50针就够了,小日本游戏很多平台统一都是50针
边际收益是递减的

词。

【在 d*******r 的大作中提到】
: 是没法避免,但是大家还是最爱用 Java, python 这种直白的语言,里面多是英文单词。
: Perl, shell 这种 @$%& 大家就是不爱用.
: C++ 里面那些 <> :: & *, 也不受欢迎.
: 也就是说,如果能用人类语言,大家还是prefer少用符号。
: 而且,即使要用,汉字里面嵌几个 1 2 3, a b c 也挺自然, 大家中学大学课本不就这
: 样吗。
: 符号其实跟欧美字符语言没绝对关系,嵌入到哪个语言都行。

相关主题
脚本语言 vs 编译语言王垠:我为什么不在乎人工智能
王垠:为Java说句公道话 (转载)[合集] 到底要学习Perl,还是Python?
接触scala两年了现在还在“学”脚本语言的,都弱爆了
进入Programming版参与讨论
z****e
发帖数: 54598
41
法语日语都是入门难,提高容易
英语汉语都是入门简单,提高难
所以不要听初学者怎么说,要听过来人怎么说
在魁省你于遇到大量会英法双语的中国人
普遍反映是法语容易,英语难
你也可以问问小菊花日语难不难
当然你问初学者,那答案肯定是反过来
凡事都有trade off的
这个跟学语言其实也一样,java入门难,提高容易
而反过来的语言很多,所以公孙大神很聪明滴把python往java方向去靠

【在 d*******r 的大作中提到】
: 我觉得不需要将读音encoding到字和词中,速读的时候,是需要消音的,直接把视频信
: 号转成意思是最高效的。汉语这种图形文字最适合。人类就是应该读图片的。特别是电
: 脑互联网时代, 复杂图形文字的书写已经不再是问题,越图形图片化越好。中文以后强
: 势了,高效的汉字输入肯定能流行。
: 汉字要是被好好地设计成某种编程语言的原生语言,各种函数和变量都可以很短,而且
: 横着竖着都能排,非常紧凑方便,单位视角面积内的 information entropy 非常高 ,
: 但是又不是数学符号那种一般人不爱读的东西。
: 我虽然不懂法语,但我会法语的朋友抱怨法语的语法比英语还多,什么阴性阳性的,据
: 说可以搞死人,我觉得这个肯定不是优秀的设计。
: 而且汉语最牛逼的是造词法,导致汉语没有词语爆炸的问题,汉语是收敛的。而欧洲字

z****e
发帖数: 54598
42
给你一个法语的例子
法语很多东西都叫做baguette
只要是长条的东西都是baguette
比如筷子(s),还有长条形的面包
也就是法国人不轻易造词
不象英语,什么狗屁单词都有
英语里面有大量的法语词,比如ballet
英语就是一个垃圾桶,什么都往里面倒
而且英语各种国家,种族都有创作
比如澳式英语,英式英语,美式英语,就是没有加式英语
黑人英语,等等

【在 d*******r 的大作中提到】
: 我觉得不需要将读音encoding到字和词中,速读的时候,是需要消音的,直接把视频信
: 号转成意思是最高效的。汉语这种图形文字最适合。人类就是应该读图片的。特别是电
: 脑互联网时代, 复杂图形文字的书写已经不再是问题,越图形图片化越好。中文以后强
: 势了,高效的汉字输入肯定能流行。
: 汉字要是被好好地设计成某种编程语言的原生语言,各种函数和变量都可以很短,而且
: 横着竖着都能排,非常紧凑方便,单位视角面积内的 information entropy 非常高 ,
: 但是又不是数学符号那种一般人不爱读的东西。
: 我虽然不懂法语,但我会法语的朋友抱怨法语的语法比英语还多,什么阴性阳性的,据
: 说可以搞死人,我觉得这个肯定不是优秀的设计。
: 而且汉语最牛逼的是造词法,导致汉语没有词语爆炸的问题,汉语是收敛的。而欧洲字

z****e
发帖数: 54598
43
可以帮助,但是有没有副作用?一般都会有严重的副作用
比如符号滥用导致不可读
往往是初衷是好的,但是陡然发现,尼玛,副作用太大
还不如不用,如果仅仅是为了concurrency的一点点benefits
就导致代码不可读,那这个代价就太大了
所以他说了红卫兵的例子
而paradigm大多数本身就有非常悠久的历史
如果能够提高的话,早就普及开来了
哪里要等到现在,如果到现在还未普及
那就说明本身有缺陷了,王垠说的是要留意这个缺陷
而不是片面的关注某一个特长,做事情要全面嘛

【在 d*******r 的大作中提到】
: 还是没懂,我觉得王说的是逻辑上各种paradigm还是帮助不了concurrency? 或者他这
: 个就是随便乱说一句。

d*******r
发帖数: 3299
44
你是说 Knuth 吗,他老的书适合“供着”,不适合我等笨人看

【在 z****e 的大作中提到】
: 对,这个你看一下编程艺术那本书
: 王垠没少做这本书的轮子
: 作者最大的贡献除了这本书以外还有一个tex
: tex里面为了减少括号,大量采用了自然语言的释义
: 也就是做了大量的类似\add, \plus这种东东
: 目的是为了让公式本身通俗易懂,主要目的也是为了减少括号
: 说到底,这些都是工具,工具本身,顺手,达到目的
: 就足够了,再深入就不是工具的问题了,而是理论的问题了
: 那这个是学术的问题了
: 话说,虽然懒是本性,但是连打字都成为一种负担的时候

d*******r
发帖数: 3299
45
我坚持认为汉语比欧美字母语言设计优秀多了
汉语是入门中等,提高容易。
当然你可以当我是随便扯扯的,呵呵

【在 z****e 的大作中提到】
: 法语日语都是入门难,提高容易
: 英语汉语都是入门简单,提高难
: 所以不要听初学者怎么说,要听过来人怎么说
: 在魁省你于遇到大量会英法双语的中国人
: 普遍反映是法语容易,英语难
: 你也可以问问小菊花日语难不难
: 当然你问初学者,那答案肯定是反过来
: 凡事都有trade off的
: 这个跟学语言其实也一样,java入门难,提高容易
: 而反过来的语言很多,所以公孙大神很聪明滴把python往java方向去靠

b*******s
发帖数: 5216
46
你当他会看啊,会看就不是这个算法水平了

【在 d*******r 的大作中提到】
: 你是说 Knuth 吗,他老的书适合“供着”,不适合我等笨人看
d*******r
发帖数: 3299
47
本版现在火药味很重啊,就是不停的战啊... 大家都先消消气 :)

【在 b*******s 的大作中提到】
: 你当他会看啊,会看就不是这个算法水平了
h*****a
发帖数: 1718
48
digua老师总能说出我想说的,赞

【在 d***a 的大作中提到】
: tclsh比这俩好很多。可惜用的人比较少。
z****e
发帖数: 54598
49
不是书是tex

【在 d*******r 的大作中提到】
: 你是说 Knuth 吗,他老的书适合“供着”,不适合我等笨人看
1 (共1页)
进入Programming版参与讨论
相关主题
感觉os之上很多automation都是用perl类脚本来搞王垠:为Java说句公道话 (转载)
王垠的新文章看了没?接触scala两年了
从vert.x的例子看脚本王垠:我为什么不在乎人工智能
groovy整个就是一个better python[合集] 到底要学习Perl,还是Python?
王垠:我为什么不再公开开发Yin语言现在还在“学”脚本语言的,都弱爆了
clojure 做数据分析vert.x就是脚本语言们的企业版
jvm上3大脚本语言王垠 -- 拳打南山魏老 脚踢北海好虫
脚本语言 vs 编译语言哪种脚本语言适合做代码的文本分析?
相关话题的讨论汇总
话题: 语言话题: 脚本语言话题: 设计话题: 程序语言话题: ak