技术标签: rust python java c语言 开发语言
作为CTO,我需要持续关注编程语言的发展。按照惯例,每年年初我都会对未来一年关键编程语言的趋势做一定的预判。今年由于众所周知的原因,预测地有些晚,我选择在开年的第一天给出我的预测,也算是祝大家开门大吉,2023大展宏"兔"
以下是我对2023年关键编程语言趋势的预测。
Python持续No. 1的位置应该是最没有悬念的。Python作为一种通用编程语言,近年来随着人工智能的火热迅速成为世界上最流行的语言。
编程语言 | 2023年1月 | 2022年1月 |
---|---|---|
Python | 1 | 1 |
C | 2 | 2 |
C++ | 3 | 4 |
Java | 4 | 3 |
C# | 5 | 5 |
Visual Basic | 6 | 6 |
JavaScript | 7 | 7 |
SQL | 8 | 9 |
汇编 | 9 | 8 |
PHP | 10 | 11 |
尽管我个人也是Python语言的重度使用者,但坦率地说,我不认为Python配得上第一这个位置。站在工程师的角度,我认为Python太慢了,语法又太死板(这对初学者是优势),而且很少有大型项目用Python做为开发语言,其在大规模工程上的性能和稳定性缺乏验证。
但是Python胜在入门简单且有丰富的库,因此成为算法工程师、数据工程师以及初学者的首选。随着近些年人工智能的火热,Python频频曝光于大众面前,随之而来的是铺天盖地的Python培训课程。于是Python迅速被夸大和神话,以简单易学且功能强大的形象快速占领了公众的心智,甚至一度出现白领集体学Python的热潮。
在这样的氛围下,Python顶着万能编程语言的光环,很少有人看到其短板。显然,大多数人都喜欢Python,而且没有迹象表明这种趋势在2023年会改变。
另一个没有悬念的趋势是PHP会在2023年持续衰落。这门”世界上最好的编程语言“曾经是构建现代交互式网络的基础语言之一,但是如今已经不再像以前那样流行。
这并不意味着PHP会完全消失。因为作为曾经互联网后端基础语言,大量网络应用是用PHP写的,这些应用不可能很快切换到其他新语言。但是,预计使用PHP的新项目会越来越少。
同样,Java这门伴随软件行业兴起的核心编程语言,似乎也越来越过时了。曾经Java在TIOBE编程语言排行榜上连续20年位居榜首,而在几年前它从神坛上跌落下来。截至2023年,有迹象表明这种下滑还在持续。尽管Java在未来一年可能会继续流行,但很难想象它会恢复到以前的地位,成为最流行的语言之一。相反,我倾向认为Java在未来一年及以后的受欢迎程度将继续下降。
Rust语言在2022年末挤进了TIOBE排行榜第20名。虽然从排名上,Rust依然是小众语言,但Rust有一大批死忠粉。根据Stack Overflow的调查,Rust连续4年被票选为”最喜爱编程语言“。
我本人也在持续学习Rust,尽管尚未大规模使用,但是Rust给我最大的感受除了复杂的语法和陡峭的学习曲线外,Rust社区是所有我接触过的编程语言中最好的。Rust社区不但活跃,而且整体氛围友好且专业,有很多对行业颇具影响力的人物在社区内持续贡献。
我预计Rust在2023年会持续上升,这不仅是因为Rust强大的社区推动,也因为Rust专注于安全和效率的特性会持续吸引软件界的普遍关注。
近年来,TIOBE指数上一个鲜为人知的编程语言趋势是——汇编语言持续缓慢但稳步增长。
汇编语言在2016年首次进入最受欢迎语言的前十名。目前排名第九,比去年下降一名,但这仍然领先于PHP、Go和Swift等语言。
每次说到汇编语言,总有人问:“为什么还有这么多程序员在使用汇编语言?”——我认为主要原因是对性能的追求。尤其是WebAssembly标准推出后,在前端市场引起了广泛的关注。另一方面,汇编语言的流行也可能反映了专用硬件的日益普及,如物联网(IoT)设备,这可能需要开发人员编写汇编代码来访问这些设备上高级语言不支持的功能。
我认为随着WebAssembly的发展和物联网、车载系统的普及,汇编语言的需求会不断增加。汇编语言这门古老的语言会在众多高级语言中找到自己的位置,并且会积极与高级语言产生联系,将高级语言作为自己的生成语言,这是非常聪明且正确的路线。
我将最重要的编程语言C语言放在最后,我认为2023年C语言会持续流行。
C语言现在虽然被Python挤下了第一的位置,但二者的流行指数非常接近。
考虑到C语言已经存在了半个多世纪,它的历史几乎是Python和Java等语言的两倍,C语言作为一门久经考验的、稳定高效的开发语言,已经成为整个软件世界的基石。尽管有Rust野心勃勃地想要取代C语言的基石地位,但是C语言的根基深厚,群众基础广泛,短时间很难撼动。我认为,在未来几十年中C语言会保持其在软件开发中的核心地位。如果你必须选择一种最重要的编程语言来长期学习,C语言将是一个很好的选择。
以上我只列举了我认为关键的编程语言的趋势。还有一些编程语言同样重要,如JavaScript等,由于我自身不关注前端,因此没有做评论。在国内,Go语言也非常流行,我认为Go语言是非常适合PHP开发者转向的现代编程语言,结合PHP的衰落,在接下来的几年Go语言会有一波上涨。
总体上,我预计2023年软件开发世界不会发生任何惊天动地的变化。各位读者有任何不同观点和思考,欢迎评论区留言。
Codeforces 491B题解
PTA基础编程题目集 7-28猴子选大王题目简介:一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断循环,最后剩下的一只猴子就选为猴王。请问是原来第几号猴子当选猴王?输入格式:输入在一行中给一个正整数N(≤1000)。输出格式:在一行中输出当选猴王的编号。输入样例:11输出样例:7题解思路:第一步:创建一个结构体:type
本篇文章讲述eclipse.ini参数的含义和设置。eclipse.ini中有如下参数: -vmargs -Xms128M -Xmx512M-XX:PermSize=64M-XX:MaxPermSize=128M 这里有几个问题:1. 各个参数的含义什么?2.为什么有的机器我将-Xmx和-XX:MaxPermSize都设置为512M之后Eclipse可以启动,而有些机器无法启动...
1. 一些异常2. try-except 语句2.1 针对不同异常设置多个except2.2 对多个异常统一处理2.3 捕获所有异常3. try-finally 语句4. raise语句5. 丰富的else语句6. 简洁的with语句 需要学习的基础知识有:文件、文件系统、pickle模块等。1. 一些异常 什么是异常呢?举个例子:file_name = input('请输入要打开的文件名:')f = open(file_name, 'r')print('文件的内容是:')for ea.
1、SVM就是个MLP(多层神经网络)2、RBF径向基核函数在SVM发明的7年前就已经被用于RBF神经网络,RBF网络本质就是个把激活函数从Sigmoid替换成RBF的MLP。RBF的结构:径向基函数(Radical Basis Function,RBF)方法是Powell在1985年提出的。详细看这篇:http://blog.csdn.net/zouxy09/
Q请教高手,图形对话框的问题T我做了一个图象的界面,对话框的,在OnPaint中 画上背景图案,然后用Invalidate 方法刷新每个控件,但是控件并没有完全显示出来,特别是CCtrlList 等控件,滚动条有时候显示不出来,CEdit控件边上的3d效果也出不来,这是怎么了?哪位大虾指点指点!Aclass AFX_EXT_CLASS CBackgroundManager {public: CB
本文主要介绍用java数组来理解数据结构中的线性结构,对于数组的深入理解不做过多探讨,毕竟每门语言都有数组,同样数组也是最基础的,最典型的数据结构之一。主要以Java代码形式展示说明。目录Java 数组数组的基本使用数组元素的添加数组元素的删除面向对象的数组总结数组的特殊性数组为什么特殊数组是第一级对象数组的初始化Java 数组数组是最常...
X, y = make_classification(n_samples=1000, n_features=2,\ n_informative=2, n_redundant=0,\ n_classes=1,\ n_clusters_per_class=4, \ random_state=4)#
1.view绘制流程:measure,layout,drawmeasure:onMeasure,measureChild,measureChildren,setMeasureDimesion先测量子view的大小,最后测量自身的大小layout:onLayout,setFrame先确定自身的位置,然后调用child.layout()确定子类位置getLeft,getRight都是相对父控件的位置,相对原点的位置是getRawXMeasureSpec:32位,父类传递过来的值和自己的LayoutP
问题来源,今天早上和一舍友吃早餐的时候谈到的一个问题,将一个整数按照二进制逆序,然后输出逆序后的数值。我们知道数值在内存中都是以二进制的形式存放的,假如我们是32位机,每8位为一个字节,int型在32位机上是占4个字节,即32位。如 2 = 0000 0000 0000 0000 0000 0000 00000 0010(32位)逆 ^2 = 0100 0000 0000 0000 000...
转自:http://www.jb51.net/article/30129.htm
Virtual FilesA virtual filecom.intellij.openapi.vfs.VirtualFileis theIntelliJ Platform’srepresentation of a file in a file system (VFS). Most commonly, a virtual file is a file in your loca...