当前位置: 首页 > 科技观察

为什么创建Charj语言?十年后说起编程

时间:2023-03-16 01:53:06 科技观察

上个月,我在社区发表文章《Charj —— 代码的代码化语言》时,遇到了一系列相关的问题。一开始没想到知乎上会有这么多讨论,所以没有详细介绍为什么要创建Charj。刚才说,哦,如果你想创造一种语言的语言,这是怎么做的。由于我一直忙于项目和相关功能。所以,在完成了Charj的hello,world之后,我决定再写一篇介绍Why&Next?十年后编程将如何发展?十年,也就是两个五年后,编程会是什么样子,这是一个很复杂的问题。而作为一名资深程序员&IT顾问,我年复一年地思考这个问题。2015年,谷歌牵头成立云原生计算基金会(CNCF)。云原生是当下的热门话题。2017年开始研究Serverless(参见:我写的https://serverless.ink/),即函数即服务。可以想象,2014年微服务刚开始流行时,人们对这种观点感到惊讶,但到了2020年,人们已经习惯了微服务。现在,Serverless已经慢慢进入了技术圈的视野。大概在三年后的2023年,人们就会习惯Serverless。2018年我研究的主要内容是如何应对大型前端应用架构,也就是微前端的一系列相关内容。详情请参考《微前端的那些事儿》。2019年,我研究了几个月的低代码开发,然后转向构建一个理想成熟的理论体系:云研发。(GitHub:https://github.com/phodal/cloud-dev)。云研发是诞生在云端的闭环+编码的软件开发方式。它允许业务人员、开发人员、运维人员等在同一个云上进行协作,透明地完成整个软件生命周期(需求、设计、编码、构建、部署、运维),而不是彼此孤立,或者需要不止一个软件来完成工作。近年来,云IDE才刚刚开始了蓬勃的发展历程。相信在未来一两年内,云研发的大概率会被越来越多的人提及。然后它会在2025年左右开始被接受。同样的,去年我公司老板@大魔头-诺铁铁提出了一个更进阶的可能性:填空编程。也就是说,未来人人都会编程,只需要会填空,会写代码。对应的实现是:TypeFlow,GitHub:https://github.com/notyy/TypeFlow。详细视频见:https://zhuanlan.zhihu.com/p/945225012020年上半年我主要研究的是研发过程的编码:《文档编码》、《需求编码》、《HowtoModelCode“?”、“Charj——代码的编码语言”……它们是云研发闭环中的关键要素。那么,未来可能发生的事情是,编程将成为越来越容易了。但是,正如我在去年的文章中提到的:复杂性就像一种力,不会消失,也不会凭空产生,它总是会从一个对象转移到另一个对象或从一种形式转移另一种。另一种形式。既然我们在上层实现了接口调用,那么我们在下层必须有相应的实现,这就是编程基础设施。简单地说:10年后,编程会越来越容易。处于顶端的应用程序开发程序员通常更容易受到“人口鸿沟”的影响d”冲突。并且通过一系列的封装,底层的将军会变得越来越复杂。AutomatedCodeModification&&AutomatedRefactoring与此同时,我研究了另一个有趣的话题:AutomatedRefactoring。这部分的研究主要是为了帮助我快速完成软件开发顾问的工作。来到客户现场,我拿出自己的开源工具,对代码进行自动评估,然后将问题一一解决。此外,一些问题是代码的自动和半自动重构。本系列的基础是编程语言和语法树。去年在公司老大的指导下,写了重构工具Coca:https://github.com/phodal/coca。Coca是系统重构、系统迁移和系统分析的瑞士军刀。可以分析代码中的badsmell,统计行数,分析调用和依赖,进行Git分析,自动重构等。简单来说就是分析各种语言的代码,提取具体结构,分析内容.后来因为Antlr对Go的语言支持,转而使用Java+Kotlin来实现语法实现部分,也就是后来的Chapi:https://github.com/phodal/chapi。因此,Chapi被定义为一种通用的语言元信息转换器,可以将不同的语言转换成相同的AST。由于我使用的是Kotlin实现,因此我可以自由转换构建在核心域上的产品。但是,对于语法分析这样的东西,如果你写了一种语言,你就不想写第二个了。上个月和同事合作的CSS重构工具:Lemonj,也是基于类似的原理。系统重写每隔几年,我们就会发现大量的系统在不断地被重写。而且除了使用新的框架之外,还可以使用新的语言。传统的方式是用人肉把这些信息提取出来,然后再一个一个改写。这部分工作必须在一定程度上自动完成,即代码转换。缺乏编程基础设施除此之外,最后要考虑的是基础设施。大家可以看到,在上一个时代,我们国家缺少一系列的基础设施,从操作系统、数据库、浏览器等等。在这个时代,我们缺乏原有的云相关基??础设施。我们总是说开源可以解决一些问题,但实际上并非如此——开源有巨大的学习成本。(PS:这个我会在另一篇文章中介绍)。接触过国内一些大公司,操作系统,IDE,各种基于开源软件的云原生基础设施。不仅需要对源代码有很好的理解,还需要熟悉系统的设计理念。而这些知识隐含在源码中,需要大量的实践才能掌握。而且这个成本比自己创建一个系统的成本要高很多。简单来说,开源需要巨大的学习成本。所以,我在Charj下了两个赌注:Rust语言将成为系统编程不可或缺的一部分。未来的编程语言不再重要了。如果真是这样,那我们(写Charj的人)10年后也不会落后,甚至领先。本文转载自微信公众号「phodal」,可关注下方二维码。转载本文请联系phodal公众号。