IT培训网

达内论坛

 找回密码
 立即注册
搜索
查看: 238|回复: 7

有没有一种编程语言可以让程序员满意

[复制链接]

1248

主题

1417

帖子

4810

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4810
QQ
发表于 2018-12-25 13:27:00 | 显示全部楼层 |阅读模式
为什么没有一种令绝大部分程序员满意的编程语言?
作为程序员需要掌握多重编程语言和各种框架,工作中永远有没有踩过的坑,永远有需要学习的东西!
这个问题我思考过很久,曾经我一直希望能找到一门让自己十分满意的语言,于是学习了很多种语言,目前为止,对于这个问题,我觉得主要是因为以下两点:
1. 对编程语言的评价标准并不单一,其中有很多个评价维度。
比如c语言贴近底层,(目前仍)代表着性能的极致,然而用它做业务开发却很难达到比较高的开发效率。
比如Java,现在已经霸占了web后端开发市场,但是它的语法噪音又多到让人难以忍受,在它上面设计EDSL总是让人无比痛苦,它缺少一套漂亮的类型系统,使用它就意味着你很难在一个高的抽象层次上表达逻辑(这里特指细粒度的抽象,毕竟大粒度的抽象总是可以通过DSL来搞)
比如haskell,初遇的时候你发现她是这么的清纯甜美,然而你发现追求她的过程是这么的痛苦以及困难重重,而娶回家之后你发现你需要的其实只是一个能帮你刷盘子洗衣服做饭的贤妻,而她对这些事情却一点都不上心,仍旧只是自顾自地打扮自己。 它还不care向旧版本兼容,你几年前写的项目用新版本编译器大概率是编译不了的。它还缺少dependent type,所以颜值方面也算不上完美。
所以随便一瞅,就能发现至少以下一些评价维度:
执行效率:是不是按照常规方式写出来,即最优性能(比c慢5倍以内?)
开发效率:是不是能帮用户(程序员)屏蔽一些底层细节,降低开发难度和成本
抽象能力:是不是能让用户方便地设计实现EDSL,做高阶抽象
类型系统:表达类型的能力够不够强,用户程序是不是满足了类型约束就意味着某种程度上的正确。
生态环境:要干活的时候是不是手边总有一些可靠的工具库
学习曲线:是不是对初学者友好,当然这里面存在很多其实跟语言本身的设计无关的点,但却实实在在影响到了用户的学习过程的(比如nodejs的npm包名即require时要填的东西,这就很直接,你从代码里就能知道要装哪些包,而相反haskell里面import的是模块,而你要安装的却是包,这其中的对应关系是implicit的,你只能去搜。这无形中就增加了学习成本)
评价标准不单一的情况下就势必会有多个帕累托最优解存在。
2. 编程语言领域,尚有很多非常基础的问题没有得到解决。
比如说 null pointer exception,比如 segment falt,比如 dead loop,这些问题都是很基础,并且人们期待能在编程语言及其类型系统层面得到解决的问题。然而这些问题却有极强的内在联系,甚至说它们其实就是等价的同一个问题,这个问题就是,对计算机程序来说,存在一些性质,是需要单独提供证明的,或者换句话说,不存在一种算法,自动地为任意的计算机程序的任意性质构造出证明。最后你发现,一切都是因为哥德尔不完备定理。这就像你在发明永动机的过程中得知了热力学第二定律一样让人沮丧。
所以要解决上述的这些编程语言领域的基本问题,要么把口子放出来,让用户自己提供证明,这就是dependent type,要么用smt solver之类的东西尝试自动地搞一个证明,这就是liquid type,要么干脆假装问题不存在(比如haskell),甚至干脆不知道有问题(比如当今大部分编程语言)
所以你觉得哪种做法,能令“绝大部分程序员”满意呢?





上一篇:自学java编程为何不推荐看java编程思想
下一篇:常用的PHP工具有哪些
官方网站:http://www.cnitedu.cn
回复

使用道具 举报

1248

主题

1417

帖子

4810

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4810
QQ
 楼主| 发表于 2018-12-25 13:28:01 | 显示全部楼层
从古至今,都没有出现任何一种让绝大多数人都满意的事物,你怎么就奢求程序语言能让绝大多数人满意呢。

怎么定义绝大多数,多大的基数称为绝大多数。
官方网站:http://www.cnitedu.cn
回复 支持 反对

使用道具 举报

1248

主题

1417

帖子

4810

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4810
QQ
 楼主| 发表于 2018-12-25 13:28:07 | 显示全部楼层
因为大量程序员写程序的目的都是升官发财不用再写程序,但任何编程语言都没法自带升职功能吧,于是做不好不是我弱而是编程语言有问题呗。。。
官方网站:http://www.cnitedu.cn
回复 支持 反对

使用道具 举报

1248

主题

1417

帖子

4810

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4810
QQ
 楼主| 发表于 2018-12-25 13:28:16 | 显示全部楼层
举个不太和谐的例子(希望大家不要举报我):本来大多数编程语言都是优秀的,起码是可以完成你所需要的工作的,就好像大多数女人都是有弹性的,能够满足大多数男人的尺寸。好了,现在有个人跑过来说,怎么现在的女人都不太合适,你猜猜是什么原因?
官方网站:http://www.cnitedu.cn
回复 支持 反对

使用道具 举报

1248

主题

1417

帖子

4810

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4810
QQ
 楼主| 发表于 2018-12-25 13:28:23 | 显示全部楼层
相对满意的肯定有,只不过是市场需求问题导致大多数人被迫用不适的语言,所以就没法判断
官方网站:http://www.cnitedu.cn
回复 支持 反对

使用道具 举报

1248

主题

1417

帖子

4810

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4810
QQ
 楼主| 发表于 2018-12-25 13:28:28 | 显示全部楼层
我觉得Java可以算“令大部分程序员满意”的语言啊。但是语言总会不断发展的,总会提出新的语言,总会提出新的目标,总会嫌弃旧语言的,喜新厌旧嘛。
官方网站:http://www.cnitedu.cn
回复 支持 反对

使用道具 举报

1248

主题

1417

帖子

4810

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4810
QQ
 楼主| 发表于 2018-12-25 13:28:35 | 显示全部楼层
应用场景不同啊,没有一种代码是可以做到内既节约内存和cpu指令,又节约开发者的人力的,必须根据场景做出取舍

用java去写个soc片上rom小系统试试?或者用汇编写个app界面?根本不可能有一种完美或者接近完美的语言,也没有任何意义
官方网站:http://www.cnitedu.cn
回复 支持 反对

使用道具 举报

1248

主题

1417

帖子

4810

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4810
QQ
 楼主| 发表于 2018-12-25 13:28:54 | 显示全部楼层
追女朋友的时候,她的优点就像是一个大太阳,照得你心暖洋洋的;
娶回家,成了老婆,就会发现,她的缺点就像星星一样,多得令人发指;



会因为太过了解,而看到细微的不足之处;
亦或是,因为得不到,而指责这东西是不好的;

人性

true是暂时的,只有false才是永远的;

所以,即便生出了一个绝对完美的编程语言,一样有人可以看到它的缺点,比如它不能炒菜、不能帮我洗碗。


官方网站:http://www.cnitedu.cn
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

IT培训网

QQ|小黑屋|手机版|cnitedu Inc. ( 豫ICP备16023996号-1 )

GMT+8, 2019-7-17 20:56 , Processed in 0.168744 second(s), 11 queries , File On.

Powered by Discuz! X3.3

© 2011-2017 cnitedu Inc.

快速回复 返回顶部 返回列表