我们经常阅读有关编程的最佳实践,有关新框架功能或下一版PHP中的新增功能的信息。我们阅读了如何将“ this to this ”更改为该技术,为什么有些技术是好是坏,或者您可以在项目中使用什么新软件包。但是,这一切是投机大约只有在过去或现在。
我看完这本书«的必然» ,由该杂志有线的创办人,其中只有对未来的写入。受本书的启发,我建议着眼于编程的未来。
今天,我们正在与技术债务(无论意味着什么)作斗争,这些遗留代码难以维护且修改成本很高,但同时会产生很多钱。定期,我们必须重构代码,遵循DDD原则,编写测试,出于安全目的而更新PHP版本,在服务器上安装最新的软件版本并自动进行布局。
当前的日常工作量如此之大,以至于绝对没有时间去看我们公司支持的其他数十个项目……或者至少将其存储在我们的服务器上。我们应该聘请专家,以帮助至少在各个方面进行一些改进。不是因为这些项目很糟糕,而是因为我们可以使用太多的技术,甚至还要维护更多的代码。
以及将来如何发生这些事情?
IDE将使用人工智能
将来,键入代码将变得更加容易。我们的IDE将由人工智能提供支持,该人工智能将从其他PHP项目以及Github和Gitlab上所有开源项目的匿名数据中学习。
多亏了这种AI,当我们开始输入“ class HomepageC ...”时,IDE才知道我们正在创建一个主页控制器,正在使用Symfony及其composer.json中的版本,并将自动为其他代码添加finalization修饰符。和强类型(基于正在使用的PHP版本的知识),也来自composer.json。它将为我们正在使用的模板引擎生成一个模板,并将模仿项目中已有的其他模板中的内容。
由于海量的匿名数据和来自公共代码存储的数据,AI将知道如何最好地测试控制器,并将使用此知识来创建最佳的控制器测试。
最佳验证做法
当我们谈论“最佳实践”时,并不意味着我或其他人仅根据个人经验在帖子或书中写的内容。这些意见通常仅基于几个项目的经验,并带有情感色彩。
将来,“最佳实践”的概念将被“验证的实践”取代,并将基于与两个严格指标(技术债务和编码效率)相关的真实数据。技术债务将具有相当于财务的金额,该金额将显示将来维护每一行代码所需的费用。您可以自由地编写无类型类的静态代码吗?该字符串可能会“花费” $ 10。您是否在编写具有强类型和一种公共方法的最终课程?在这种情况下,该行的费用为$ 2。
这些数字不是随机的,而是基于对大量海量数据的持续分析,对于要使用此功能的所有项目都是匿名的。该规范将与维护和改进项目所需的金钱成本进行比较。得益于此反馈,AI还将知道哪个版本更适合您的特定项目。
人工智能将了解您的项目环境并相应地比较数据。您有CLI项目吗?它将与该主题领域中其他CLI项目的代码进行比较。您正在建立网站吗?它将与其他站点的设计进行比较。
编码的效率将由项目的“可维护性”度量标准确定。它将以从0到100的范围进行度量,其中0表示理解代码需要花费很多时间,并且可能需要几天甚至几周的时间才能进行更改。初级开发人员很容易理解分数为100的代码,并且他或她几乎可以立即更改代码。
IDE验证的自动完成
IDE将了解这些度量标准,并将遵循代码中使用的模式。当您开始编写一段效率为40-50点的代码时,会自动弹出自动完成提示,提示功能相同但效率为80-90的代码。这类似于Rector或PHPStan今天所做的工作。
性能分析也将与编码性能分析一起执行。每当代码在Docker容器中的后台发生更改时,都会自动测量性能,并且会通知您任何内存泄漏或运行时间增加。此分析将非常准确,以至于标记出导致泄漏的特定行或字符,并提出您必须接受的修复程序。
AST重构
重构也将比今天更加强大。它将基于抽象语法树(AST)。IDE将根据所有打开和关闭的项目中的匿名数据,建议您计划现在进行的最佳重构。
除了参考最佳实践,您还将了解:
- 解决方案A将使您每条线的技术债务损失3美元,效率等级为95,性能等级为45
- 解决方案B将使您每条线的技术债务损失1美元,效率评级为70,性能评级为50
您要建立一家初创公司并想测试您的想法吗?然后,您将选择选项A。如果您的公司稳定并且将来会保持稳定怎么办?然后值得切换到选项B,该选项支持和性能更便宜,但开发速度稍慢,
您不必与同事或老板争论为什么应该使用此解决方案。您比较这些数字,然后根据当前优先级进行决策。
上下文架构
您的代码将具有上下文架构。 AI将根据其他项目的数据以及迁移到这些项目的最终成本,知道何时在上下文之间切换。您正在启动WordPress项目吗?没关系。但是,如果您的项目越来越受欢迎,并且您需要切换到更适合您需求的PHP框架,该怎么办? IDE将提示您切换到Laravel。一键即可完成。
三年后,您的项目正在发展,您将有许多任务来集成已经内置在Symfony框架中的第三方服务。IDE会提示您进行迁移...单击...并处于繁荣状态,您正在使用Symfony9。您是否发现市场上没有足够的Symfony开发人员来处理项目的开发?只需单击一下鼠标,IDE就会将项目转移到一个框架,对于这个框架,有足够的开发人员以合理的成本进行开发。
StackOverflow版本化答案
IDE将扫描您的代码并分析您的编码习惯。您通常在15分钟内编写一个函数,但是现在需要将近2个小时?在未来的几年中,IDE将会变得如此出色,以至于它会在几秒钟内发现编写代码的速度甚至略有下降。
然后,IDE将检查您的代码,扫描StackOverflow上的响应,将响应与composer.lock中的版本进行匹配,并建议您使用最合适的特定代码。
您是否担心这段代码只是随机复制并破坏了您的项目?答案等级不再基于用户投票,而是现在考虑了如果答案成功集成到项目代码中后答案的使用百分比。
经过测试的代码片段
此外,代码片段每天都会由StackOverflow本身进行测试,并且也要在复制到项目中之前进行测试。它与您的本地环境的版本有关,因此您可以确保代码可以使用。人们不再像过去那样自己编写这些答案的版本。响应中的代码会随其使用的每个技术或框架版本自动更新。对于Symfony 5,已经给出了一些答案。Symfony6发布时会发生什么?答案中的旧代码将使用Symfony 6发布的AST配方进行更新。这样,人员和IDE可以轻松地使用它。
开源活动资助
将创建一个将商业公司和开源贡献者联系在一起的新项目。开源项目将由使用它的公司资助。做出贡献的开发人员将根据流入的资金通过单一系统进行资助,而无需支付额外费用来支付费用。
资金将使用功能影响,工作量,花费的时间,代码效率等指标来确定。因此,与独立贡献者在业余时间开发代码相比,该代码将更加一致。实际上,一个开源项目的开发人员将获得由该项目资助的全职工作。
这些公司将获得什么回报?特定于社区的促销,新版本的预发布版本,以及直接访问创建了他们(这些公司)使用的开源项目的专家顾问。
整合框架
目前存在的〜10个PHP框架将被合并。 PHP框架周围的社区将学习更多的协作,而不是使用MVC方法开发几乎相同的框架副本。
由于AST迁移,您可以切换到任何PHP框架。这会将选择范围缩小到3-4个框架。如果在IDE之间单击框架即可在框架之间进行迁移,那么就不再有基于“历史发生”和习惯的说法,而仅取决于质量的竞争。
减少框架的数量将导致它们的思想更加狭--一种框架将在API方面表现出色,另一种框架将在CLI中表现出色,第三种在具有出色UX的站点中表现出色。
当整个PHP社区只关注较少的框架时,它将使我们可以将节省的精力用于开发新技术和功能。
只有1个稳定的PHP版本
由于自动进行AST迁移,因此只有两种版本的PHP:稳定版和开发版。由于更新任何软件包或项目都将变得非常快速和廉价,因此没有理由不更新到最新版本。PHP社区可能需要一到两年的时间才能接受并保持所有项目同步。但是,当发生这种情况时,在新版本PHP发布后的一个月内,整个开源生态系统都将其用作最低版本。
全自动和即时代码更新
PHP代码无需手动更新。每个版本的PHP都有一个完整的基于AST的更新“食谱”,您可以使用它来自动更新项目中的代码。GitHub将处理这些“食谱”,因此当发布新版本的PHP时,GitHub将自动开始向您的存储库发送拉取请求。不仅会为PHP提供自动更新,还将为任何框架或软件包提供自动更新。就像Dependabot,最近集成到GitHub,但现在有了代码更新和所有向后兼容性问题。
GitHub升级程序
如果您不想自己接管所有PR,可以注册自动更新程序,以便GitHub为您完成。他还将正确更新发行版及其SemVer。
自动化SemVer
关于更改是向后兼容性中断还是只是补丁,将没有争议。AI将在前后分析代码,并以此为基础做出决策。他将非常聪明,以至于能够确定特定变更的影响有多大。如果这不影响其他项目中的任何代码,它将作为补丁发布。
基于经验教训的PHP RFC
对于PHP核心代码中的任何RFC,也可以进行相同的向后兼容性中断分析。想建议输入常量吗?AI会告诉您Github上前10,000个项目中有多少个项目将被分解。现在在某些RFC中手动完成了类似的操作。
重新考虑向后兼容性突破
AI还可以帮助您生成AST迁移“配方”,因此即时更新可以完全处理中断向后兼容性的问题。这将导致概念本身的改变。仅当无法进行自动更新并且需要人员更改代码时,才会发生向后兼容性中断。
在本地尝试RFC
另外,任何人都可以在GitHub上创建PR后立即在本地尝试RFC功能。怎么样?Github将自动创建一个带有特殊dev标签的临时版本,并将该PHP版本推送到软件包注册表中。您创建一个RFC来添加类型常量,将其作为PR提交到GitHub,然后在1分钟后可以运行sudo apt-get install php-dev-typed-constant在本地计算机上使用此RFC来获取PHP。
因此,程序员甚至在加入主分支之前甚至在对RFC进行投票之前都将能够尝试该功能。在这种情况下,即使对新功能进行投票也将基于真实数据和经验,而不是基于情感,主观意见和论点。
未来对我们来说意味着什么?
将来,我们的能力将不受历史,过去的选择或迅速发展的使我们的代码过时的技术的限制。一键点击,我们所有的工具都是当今市场上最先进的工具。
这将使我们能够进行更多的实验,检验我们的假设并获得真实的反馈。这将使我们今天甚至无法想象的语言,模式和应用程序体系结构的编码过程和发明的自动化程度更高。
“预测未来的最佳方法是创造未来。”
创作愉快!