关于编程语言的一些个人思考

2018/01/19 编程语言 杂谈

语言设计的一些个人思考

前言

近日读松本行弘的《代码的未来》略有感触,随有此记。

正文

一种语言要流行起来不外乎三点,其一:该语言应该具有良好的设计以及语言规范;其二:语言具有较好的效率,这里的效率指两方面,编译运行的效率以及开发的效率;其三:语言具有丰富的第三方类库,第三方类库的丰富也说明其开发社区的活跃。不过以上三点并不是说全部具有才是流行的标准,三者有其二,应该说就具备了流行的条件了。另外,关于编译运行的效率我们不能单方面的对比,比如说,拿静态语言跟动态语言相比这种毫无头脑的对比。任何语言都有适合自己的运行场景,如何在该场景下选择合适的语言,并且发挥出它最大的效率,这个才是应该思考的问题。 读书时我有以下几个问题:

  • 开发一门语言的核心时应该追求怎样的设计?

比如说我追求极简的设计原则,内核只包含运行所必须的组件之外,其余均已第三方类库的形式提供,这种方式到底合不合理;还是说,我把开发所需要的组件全部包含进来。不过以上两种情况都是非常极端的情况,现实中开发一门语言往往会综合考虑这两方面的情况。 我们就说说Java9,Oracle从Java9开始对JDK进行了模块的划分。Java9之前的Java版本,我们在运行环境部署的JDK其实部分的类库在运行时根本不需要,有些只是在开发时才需要的类库,为什么我们要运行环境也是用呢。Java9进行模块化以后,我们就可以仅仅将运行时所需的类库打包即可。

不过话说回来,到底开发一种什么样的语言还是应该根据需求来。毕竟技术还是需求来服务的。但是是不是说我们只是仅仅根据需求来进行技术研发,答案是否定的。以研发为目的的技术研究也是需要的。以需求来进行技术驱动的缺点是无法产生跨越式的发展,用一个词来形容应该是技术爆炸。我们现在流行的很多技术都是20世纪研究室的产物,就拿现在流行的go语言来说也是,它是上世纪80年代Plan9的项目的延伸产物。所以设计一门语言,我们应该首先确定这个语言的应用场景,我们到底用这门语言做什么,在那个地方做。确定了目标之后,就可以以这个为目标前进了。

有点跑题了,再说回语言的设计原则。其实到底追求哪个方面的设计也应该是根据需求来的。追求极简,为何要追求极简,比如嵌入式类型的设备,我的路由器,或者家具上一个接受蓝牙信号的设备,这种设备的存储容量是很小的,我不可能说单一个SDK就几百兆;追求复杂,我开发一个大型项目,连最基本的开发所需要的类库都需要我手动引入,这种设计是不是不好,当然也不一定。但是既然要提高开发的效率,那肯定是你SDK提供的功能越丰富,我自己需要编码的东西就越少,开发的效率就越高。

  • 后话

个人思考,鉴于视野并不是那么阔,所以肯定有失误之处。您要是愿意给晚辈指出,晚辈在此谢谢您了。要是不愿意,那我也谢谢您的阅读。自己是一个刚入职场的新人。并没有太多的开发经验,对于技术的研究学习,是自己的兴趣之一。

更新时间:2018年1月29日

Search

    Table of Contents