由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 要不要用专业一点的语言来表达一下语言之争?
相关主题
各个语言在paradigms上的对比现在聊fp的多数都是搞scala的,当然都是搞定了java的家伙
现在谈paradigm过时了ood和oop在概念上有什么区别?
我相信dart有戏不同的语言可以统一语法吗
有一点我不同意公孙大神说的anyone here using ruby?
Pivotal Drops Groovy and Grailssmalltalk 传奇[转载]
web问题就两个Block on mac os x
go也是三种paradigm混合的语言问个土问题:Why iterator instead of array index for vector?
functional programming why?初学者 smalltalk 求助!
相关话题的讨论汇总
话题: oop话题: paradigm话题: 语言话题: fp话题: c++
进入Programming版参与讨论
1 (共1页)
z****e
发帖数: 54598
1
专业一点就是paradigm了
java就是最接近纯粹oop的impl语言
其他语言有各自的定位
比如haskell是fp之类的等等
那从一个人使用语言的角度出发
越纯粹的paradigm越好
paradigm如果混用,哪怕只有两个
都会造成非常可怕的后果
就是各自表述,互相之间会冲突
例子?
c++和scala都是如此
c++是procedural programming(pp)和oop还有其他p的混杂
c++自己说自己是oop,其实扯淡,无数的人写成了pp
scala则是oop和fp的混杂
fp本身的历史很不堪,就跟小菊花说的那样
fp在oop以前造成了灾难性的后果
所以才有了oop的推广,最初几次oop的尝试都取得了一定的进展并发展到现在
你今天学的四人帮的最常见的design pattern那本书
里面就用smalltalk, c++和java做例子
smalltalk就是oop最初的impl
所以
第一,多个paradigm混杂所带来的后果是灾难性的
其次,某些paradigm本身就很不堪
比如fp
所以oop至少可以说是目前为止,少数得到大多数人接受的paradigm
所以不仅是java,大部分现在流行的语言,都在往oop上靠拢
所以你可以看到ruby就是强化了oop部分的perl
公孙大神也在鼓吹python是oop,说python很靠近java
php也差不多
从理论上说,你要想让项目成功,第一步,不要弄多个paradigm
否则内部员工会冲突,不同paradigm的思维方式不一样
思维方式不一样的话,哪怕是同一个员工,神经都会错乱的
就像小手说的,一开始不让传状态你会发疯,后来看到别人传状态你会发疯
那算了吧,为了不发两次疯,我情愿不要fp了
毕竟出活是第一优先
然后在此基础之上,做优化,这里的优化就涉及到其他的p了
这个我一般定义为将官技能,也就是你在保证oop的基础之上
再在一些需要战斗力提升的地方恰当地使用其他p
比如我常用的aop,用来做log用
还有reflection就是meta programming paradigm(mpp)
这些,不过这样说太抽象,很没有意思
还是让那几个跳脚好玩
z****e
发帖数: 54598
2
当然说要100%只用一个p,有一定难度
但是尽量保持纯净性
java是这么做的
首先java保证自己是一个oop
其次,通过增加一些相对高级的类库
来添加其他的p
比如aop,你不用aspectj或者spring或者app server的话
是没有办法用的,而你如果主动去download这些东西的话
你应该知道自己在做什么
再比如reflection,也就是mpp
那这个大多数时候,不是常见的功能
而且学习有一定难度,很多人甚至搞不懂为什么要reflection
更谈不上使用,所以通过这种方式有效地控制了低级程序员乱搞
而c++和scala则基本上不存在这种控制
c++如果涉及到一些底层编程的话,那还有另外一种p
那就是imperative programming(ip)就有点汇编那种感觉
总之到底是什么p,弄到最后你也不知道是什么p
p就好比是一只军队的战斗纪律,如果战斗纪律混乱的话
那就意味着战场上士兵会有收到多个命令
肯定会乱,士兵一乱,等着死吧
z****e
发帖数: 54598
3
现在发展的方向是这样
以后争取让一个module用自己的p
而不是从一个工程的层面来讨论p
就是把每一个大项目切割成不同的modules
然后每一个modules通过自己的需要来选择p
这样就可以让不同的组用不同的p
而不至于互相冲突
但是要做到这一点,首先要实现多语言的支持
比如vert.x做的那样,支持多个语言
否则一个语言有多个p的话,不能保证module内部不会出现多个p
但是如果不同的module只能用一个语言的话
那只要控制这个语言在这个module上不要出现多个p
那这个应该还是可以的,因为scope首先被缩小了
其次就是不同语言本身或多或少对p会有控制
所以从约束p的滥用的角度出发,c++前途很明显是不行的
因为c++的p太多太滥,p可不是越多越好的东西
反过来说越少越好恐怕还是对
1 (共1页)
进入Programming版参与讨论
相关主题
初学者 smalltalk 求助!Pivotal Drops Groovy and Grails
using Xercers c++ write XML in UTF-8 in SIJIS environmentweb问题就两个
有一事我一直就是不明白go也是三种paradigm混合的语言
最近开始接触Objetive C,发现多年的愿望实现了functional programming why?
各个语言在paradigms上的对比现在聊fp的多数都是搞scala的,当然都是搞定了java的家伙
现在谈paradigm过时了ood和oop在概念上有什么区别?
我相信dart有戏不同的语言可以统一语法吗
有一点我不同意公孙大神说的anyone here using ruby?
相关话题的讨论汇总
话题: oop话题: paradigm话题: 语言话题: fp话题: c++