要不要用专业一点的语言来表达一下语言之争?# Programming - 葵花宝典
z*e
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)
这些,不过这样说太抽象,很没有意思
还是让那几个跳脚好玩
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)
这些,不过这样说太抽象,很没有意思
还是让那几个跳脚好玩