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

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

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

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

可考核性问题

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

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

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

    为什么这个问题和编程语言相关?因为我们所写的每个function,每个class都是关于如何分拆问题的。语言不仅仅描述了逻辑,它还塑造了我们的世界观,如何把大问题拆解为小问题,又如何把小的解决方案拼装回大的解决方案。

 

可读性问题

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

    同时代码重用也不可避免地牺牲了可读性,因为你要跳过那些和你的特定使用场景无关的通用逻辑。非功能性需求同时又和本来已经很复杂的功能性逻辑纠缠到一起。比如大段大段的错误处理就是导致代码很不好读的常见原因之一。

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

异构计算问题

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

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

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

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

愿景

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

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

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

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

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


 

不管你是转行也好,初学也罢,进阶也可——【值得关注点击进入】的编程学习进阶俱乐部

涉及到:C语言、C++、windows编程、网络编程、QT界面开发、Linux编程、游戏编程、黑客等等......


 

一个活跃、高格调、高层次的程序员编程学习殿堂;编程入门只是顺带,思维的提高才有价值!

原文地址:https://www.cnblogs.com/huya-edu/p/14048059.html