缓慢的速度、运行时问题和移动应用开发困境“毁掉”了的未来编程社区
2021-09-04
速度慢、运行时问题和移动应用开发困境“毁了”未来
编程社区花了几十年才采用。但是从2010年开始就火爆了,人气终于可以和C、C#、Java等媲美了。
但这种趋势何时会持续?什么时候会被其他语言取代编程语言原理,为什么?
消亡时间难以预测,所以我不给出确切的时间点,而是评估当前推广普及的优势,以及未来导致其衰落的缺陷。
哪些优势造就了今天的流行局面?
的成功可见一斑。该趋势数据统计了平台帖子中的标签数量。鉴于其庞大的规模,这是一种编程语言受欢迎程度的良好指标。
各种编程语言上的标签数量快照
.
R 过去几年一直处于稳定状态,许多其他语言的受欢迎程度也在稳步下降,但 R 的增长似乎势不可挡。大约 14% 的问题被标记为“”,并且这一趋势正在上升。
这种现象背后有几个因素。
悠久的历史
它从 90 年代就已经存在了。这不仅意味着它有足够的时间成长,而且还拥有庞大的支持社区。p>
因此,如果您在使用编程时遇到任何问题,通过 搜索很有可能解决。因为有可能有人遇到过你的问题,并为它写了一些有用的解决方案。
对初学者友好
这不仅是因为它已经存在了几十年,让程序员有时间制作很棒的教程。更重要的是,语法非常容易阅读。
首先,它不需要指定数据类型。你只需要声明一个变量;您将从上下文中了解它是整数、浮点值、布尔值还是其他值。这对初学者来说是一个巨大的优势。如果你用 C++ 编程,你就会知道仅仅因为一个浮点数被一个整数代替而无法编译程序是多么令人沮丧。
如果与C++代码进行比较,您就会知道它是多么容易理解。尽管 C++ 的设计考虑了可读性,但与代码相比,阅读起来相当费力。
用途广泛
由于它已经存在很长时间,开发人员已经为许多目的制作了包。如今,您可以找到几乎适用于所有事物的软件包。
想要处理数字、向量和矩阵?是你的好帮手。
想要为技术和工程行业进行计算吗?请使用。
想在数据操作和分析方面大放异彩吗?试试吧。
想开始使用人工智能吗?为什么不呢。
无论您尝试管理什么计算任务,都可能有可用的包。这使得它始终处于技术的最前沿,从过去几年机器学习使用的激增可以看出。
的缺陷,会动摇根吗?
如前所述,您可以想象它会在很长一段时间内保持热度。但与所有技术一样,也存在弱点。我会一一分析最重要的缺陷,并评估这些缺陷是否致命。
速度
很慢,真的很慢。平均而言,完成一项使用中的任务所需的时间是任何其他语言的 2 到 10 倍。
造成这种情况的原因是多方面的。其中之一是动态类型——请记住,您不需要像在其他语言中那样指定数据类型。这意味着它使用了大量内存,因为程序需要为它可能使用的每个变量保留足够的空间。大量内存使用意味着大量计算时间。
另一个原因是一次只能执行一项任务。这是数据类型灵活的后果——你需要确保每个变量只有一种数据类型,并行处理可能会在这里出现问题。
相比之下,您常用的网络浏览器可以同时运行十几个不同的线程。还有其他因素。
但归根结底,这些速度问题都不是关键问题。计算机和服务器已经变得如此便宜,所以无论它们有多慢,都只是亚秒级的差距。最终用户不太关心他们的应用程序是在0.001 秒还是0.01 秒内加载。
范围
一开始,它是动态范围的。这基本上意味着在计算表达式时,编译器首先搜索当前块,然后依次搜索所有调用函数。
动态作用域的问题在于每个表达式都需要在每个可能的上下文中进行测试——这很乏味。这就是为什么大多数现代编程语言都使用静态作用域。
试图过渡到静态范围,但搞砸了。一般来说,内部作用域——比如函数内的函数——可以看到和改变外部作用域。在,内部作用域只能看到外部作用域,而不能改变它们。这可能会引起很多混乱。
虽然它非常灵活,但它的使用非常有限。只能是表达式 in,不能是语句。
另一方面,变量声明和语句始终是语句。这意味着它不能用于他们。
表达式和语句之间的这种区别非常随意,在其他语言中没有出现。
空格使代码更易读,但更难维护。
空间
在,您可以使用空格和缩进来表示不同级别的代码。这让代码看起来更漂亮,更容易理解。
其他语言(如C++)更多地依赖大括号和分号。虽然这可能不够美观,对初学者不友好,但它使代码更易于维护。这种方法更适合大型项目。
较新的语言如
解决这个问题:它们依赖空格,但为那些不想使用空格的人提供了另一种语法。
移动开发
随着我们目睹软件行业从台式机到智能手机的主流转变,很明显我们需要一种强大的语言来构建移动软件。
但开发的移动应用程序并不多。这并不意味着它不能做到这一点——有一个名为 Kivy 的包可以做到这一点。
但它不是为移动设备设计的。因此,即使开发人员可能会使用它来为基本任务生成可接受的结果,最好的方法是使用为移动应用程序开发而创建的语言。一些广泛使用的移动编程框架是,和。
需要明确的是,笔记本电脑和台式电脑应该会继续存在多年。不过编程语言原理,既然移动端的流量已经超过桌面端,可以说光是学习还不足以成为有经验的全能开发者。
运行时错误
脚本没有被编译然后执行。相反,它每次执行时都会编译,因此任何代码错误都会在运行时显示出来。这会导致性能下降、更耗时和大量测试。
这对初学者非常有用,因为测试可以教会他们很多东西。但是对于有经验的开发人员来说,调试一个复杂的程序会让他们感到困惑。这个缺陷是设置时间戳的最大因素。
未来可以替换哪种语言?
编程语言市场出现了一些新的竞争对手:
虽然市场上还有其他语言选择,但 Rust、Go 和成功弥补了.所有这些语言在新兴技术领域,尤其是人工智能领域都有突出表现。虽然他们的市场份额仍然很小(从标签数量上反映出来),但他们的趋势很明显:一路攀升。
各种编程语言上的标签数量快照
.
鉴于当今语言无处不在,这些新语言中的任何一种都肯定需要五年甚至十年的时间来取代它。
仍然很难说获胜者会是哪种语言,Rust、Go 或未来的某种新语言。
但考虑到架构中的基本性能问题,总会有某种语言占据一席之地。
原文链接: