首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

编程语言扮演的3个角色,它连接了机器、开发者以及团队!

  一门编程语言同时扮演了3个不同的角色:它连接了机器,它连接了开发者,它连接了团队。

然而在这些角色上,现有的编程语言都有严重的问题。

如果我们可以解决下面的这3个问题,不仅仅可以让开发者的体验变得超棒,同时也肯定会有实质性地回报。

可考核性问题

软件开发的最大危机是缺乏可考核性。

理想的情况是,总有一个团队对整体负责,然后他们把职责分派给下一层的多个团队。就像结构化编程所许诺地那样分工方式。

然而在这个到处都是微服务的世界里,职责以碎片化地方式从一个团队传递给许多其他的团队,导致业务方的负责人疲于给多个技术团队重复沟通。更为重要的是,这导致了没有人可以对最终业务收益负责。

为什么这个问题和编程语言相关?因为我们所写的每个function,每个class都是关于如何分拆问题的。

语言不仅仅描述了逻辑,它还塑造了我们的世界观,如何把大问题拆解为小问题,又如何把小的解决方案拼装回大的解决方案。

可读性问题

时常我们需要读很多代码才能找到我们所需要找的东西。信息的密度很低。总是感觉代码的因果联系怎么那么“扭曲”。

同时代码重用也不可避免地牺牲了可读性,因为你要跳过那些和你的特定使用场景无关的通用逻辑。

非功能性需求同时又和本来已经很复杂的功能性逻辑纠缠到一起。比如大段大段的错误处理就是导致代码很不好读的常见原因之一。

让代码可读不仅仅是把变量名取好就可以做到的。编程语言如果不提供类似协程,AOP,函数重载这些机制,代码风格是无法写成我们希望的那样的。

异构计算问题

主流语言对于并行和分布式计算的支持是以编译器hint和库的形式来实现的,其世界观基本停留在PDP-11只有一个线性执行的CPU的年代。

今天在一台机器上有多种执行引擎(SIMD, GPU)已经司空见惯了,在一个软件内同时使用他们中的多个也越来越普遍。

而且内存模型也不仅仅是一个大的heap,对于不同的执行设备,可能有多级的heap。

编程语言应该对实际的执行设备提供更接近真实的抽象,而不是把我们的思维和表达限制在过时的计算模型上。

愿景

理想的编程语言应该具有下面这些特性:

职责应该从最顶层到最底层逐级分解,总会有那么一个团队可以对全局负责

相关的逻辑被集中到一起,不需要跳到很多地方就能知道到底是怎么回事

语言应该能够描述现代的计算环境,包括SIMD/GPU/微服务等多种计算模型

到头来,所有的一切都和代码是给人来读的有关。人可以很轻松地从各种抽象层次去检视代码,推测它的正确性。代码里所写的就应该是脑袋里所想的。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20201127A083TK00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券