如果想让程序员之间吵起来,怎么办呢?
创始人
2026-02-02 12:05:45
0次

如果你想让程序员互相争吵怎么办?

很简单,你只需要喊一声:“PHP是最好的语言!”

但我觉得网络上的语言争论和鄙视链完全没有必要。 底层的人看不起应用层,后端的人看不起前端,算法的人看不起纯开发……

事实上,没有一种编程语言适合所有领域,软件开发也没有灵丹妙药。

例如,C/C++更适合操作系统、数据库、Web服务器、驱动程序、高频交易、游戏、搜索引擎等场景。

对于机器学习、数据分析、爬虫等,Python更适合。

后端业务开发、大数据开发等以Java、Go、PHP等语言为主。

前端开发是Javascript。

从TIOBE编程语言榜单中我们可以看到,C、Python、Java、C++基本都在前四,尤其是C,作为低级语言,依然能够常年处于前三,这说明其影响:

软件编程入门自学c语言_c语言入门用什么软件编程_c语言编程入门软件

我们可以从不同的维度对不同的编程语言进行分类,比如按照执行方式:

我们可以将其分为:

1. 汇编执行类型

这种方法一般指的是汇编语言。 汇编语言(Assembly)的源文件通过汇编器(Assembly)转换成CPU可以直接执行的二进制程序文件,并通过链接器(linker)将多个二进制文件链接成一个二进制程序。 。

当然,大多数人可能已经不再学习汇编了。 这是一份吃力不讨好的工作,但如果有时间我还是建议学习汇编。

并不是说Assembly有很多低级功能并且很牛逼。 最主要的是汇编其实是最接近计算机的语言。 学习汇编可以帮助我们理解计算机的执行方式。 例如,各种指令实际上对应着计算机在存储和计算方面的特点。 。

另外,无论是C/C++还是Java等语言,出现问题时都可能需要单步调试。 即使像Java这样的虚拟机类型的语言也具有类似汇编的指令集。 当程序崩溃时,可以检查汇编代码。 逐步调试汇编是您唯一的选择。

2、编译汇编执行类型

这是当今许多高级语言的方法,例如 C、C++、Go、Rust 等。

它们的源文件一般由编译器编译成汇编指令,然后汇编器生成CPU可以直接执行的二进制程序文件。

当然,我们有时也把编译和汇编的整个过程合并为:编译。

但一般这里的编译是分为前端和后端的。 前端是指通过语法分析和语义分析生成中间代码的过程。

语法分析是解析Token(符号)并构建抽象语法树(AST)的过程。 本质上,编程语言的执行过程就是遍历这棵语法树的过程。

c语言入门用什么软件编程_软件编程入门自学c语言_c语言编程入门软件

例如,对于这段代码:

var a = 42;
var b = 5;
function addA(d) {
    return a + d;
}
var c = addA(2) + b;

生成的语法树如下:

软件编程入门自学c语言_c语言编程入门软件_c语言入门用什么软件编程

当然,如果编译器没有特别指定的话,一般不会将编译好的汇编指令输出到文件中c语言编程入门软件,而是直接交给内存中的内置汇编器来处理,所以我们会看到这些编程的编译器语言。 直接输出可执行程序文件。

例如

gcc hello.c

a.out可执行文件会直接输出,但如果想查看编译和汇编过程,可以这样做:

gcc -s hello.c -o hello.s

它会在当前目录生成hello.s汇编文件,

汇编过程将上一步中的汇编代码转换为机器代码。 这一步生成的文件称为目标文件,为二进制格式。

编译命令为:

gcc -c hello.s -o hello.o

接下来,我们需要链接成为可执行文件。 链接过程使用链接器将目标文件与其他目标文件、库文件、启动文件等链接起来,生成可执行文件。

附加的目标文件包括静态链接库和动态链接库,包括我们常见的stdlib、stdio等库。

链接过程的命令是:

gcc hello.o -o hello

基于AST,我们甚至可以在语言之间进行转换,即从一种编程语言转换为另一种编程语言。

3.编译、解释和执行类型

这对于Java、Scala等编译型虚拟机语言来说比较常见。 通常由Java编译器编译成类文件(字节码文件)。 我们可以将class文件与C语言编译的二进制格式文件进行比较,只是它们的语法不同。

类文件由Java虚拟机(简称JVM)解释并执行。

C#、VB等语言被其编译器编译成二进制exe或dll(动态链接库)文件,由.net运行时程序解释执行。

显然,这类语言的效率不如编译语言和汇编语言,因为它需要解释和执行。 这个过程是一步一步的翻译,效率比较低。

但JVM引入了JIT(Just In Time)来解决这个问题。 简单来说,就是:

首先,我们的Java代码被javac等编译器编译成JVM可执行字节码(ByteCode)。 然后JVM会判断这段代码是否是热代码。 如果是这样,请使用 JIT 技术。 如果没有,则解释执行,最后变成机器码c语言编程入门软件,由操作系统分配,然后由CPU执行:

软件编程入门自学c语言_c语言编程入门软件_c语言入门用什么软件编程

4. 解释及执行类型

解释执行语言通常称为脚本语言。

典型的包括 shell、Powershell、Javascript、Python、PHP、Ruby 等。

它们的源文件由相应的运行时程序直接读取和解释。

当然,是编译执行还是解释执行,并不是编程语言本身的特性。 例如,如果你愿意,你可以编写一个解释器来解释并执行C语言。

你也可以写一个编译器来编译脚本语言,比如Google的V8。 它执行JS高效的一个重要原因是它会像JVM一样将热点代码标记为HotSpot,然后将其编译成更高效的机器代码供下次执行。 当它到达时,直接使用机器码而不是字节码来执行。

5. 编译、转换、解释和执行语言

这其实和上面的没有太大区别,只是多了一个编译和转换的过程。 Typescript、JSX、Coffeescript等语言通常会通过编译转换程序转换为Javascript,然后由Javascript运行时解释执行。

因为浏览器引擎、NodeJS等环境只能执行Javascript,所以TS、CS等语言只能先通过编译器转换成JS。

有很多成熟的工具可以提供这种能力。 你可以尝试一下。 例如,首先将源语言编译为AST,将语法树输出为XML格式,然后将其转换为目标语言。

GCC-XML 已经可用:

6、执行效率

显然,语言编译得越彻底,执行的效率就越高。 比如C、C++直接编译成二进制,是CPU可以直接识别并执行的指令。

Java被编译成class格式文件,虚拟机在运行时将其转换成CPU指令在不同平台上执行。 不需要对源代码进行语法分析、词法分析等过程,比解释执行脚本更好。 效率更高。

但编译型和解释型执行语言在执行时比汇编/编译执行语言多了一个将虚拟机指令转换为CPU指令的过程,因此其运行效率通常低于汇编/编译执行语言。

因此,在执行效率要求较高的场景(如高频交易、数据库、搜索引擎),通常不使用解释执行语言,而是使用编译执行语言进行开发。

尤其是高频交易,为了改善一点延迟,他们做了极致的优化,甚至尽可能使用编译器来完成计算(C++模板元编程):

尽量避免系统调用(如内核绕过);

2)尽量避免运行时动态分配内存;

3)会制定自己的超低延迟通信协议;

4)会做很多具体场景的基准测试和优化;

5)尽量在编译时解决问题(模板元编程),少用多态性;

7.系统级编程语言

我个人对系统编程更感兴趣。 以前的系统编程基本上都是C/C++编程,所有的系统级软件几乎无一例外都是用C/C++编写的。

由于编译型解释语言或脚本语言的效率不如编译执行语言,并且需要虚拟机或解释器来运行,因此编译执行语言通常用于操作系统或驱动程序编程。

前两天推荐了一种系统语言:Rust。

由于Rust具有低级实现、极高的内存利用率、高性能、可靠性等诸多优点,Rust自身的设计机制和所有权模型可以保证内存安全和线程安全,并在编译过程中尽可能暴露错误。

总的来说,Rust 是一种可靠的系统编程语言,具有与 C++ 相同的高性能、低级和抽象级别,但比 C++ 更安全。

系统编程下面是比较底层的场景,比如和CPU架构密切相关的,比如设置操作系统内存管理模块页表地址的程序,或者需要使用IO/中断指令的时候CPU的工作,基本上只能使用汇编语言。

或者C语言+内联汇编等。

8. 你想学什么语言?

说了这么多,我该学什么语言呢?

说实话,上手之后我觉得这个问题就不是问题了,因为你需要用到什么语言都可以学,而且基本上很快就能学会。

但对于初学者来说,Python 和 C 都可以。 如果你是非专业人士,我觉得还是先学Python比较好。 Python 更快、更容易上手。 先用Python培养自己的编程思维和喜欢编程,然后再学习其他的东西。

当然,有专业的还是可以先学习Python,而且现在很多国外大学更愿意把Python和Schema作为第一语言。

但我个人建议大专业一年级的学生先学C,先把难的东西去掉,然后才能快速学习其他语言。

上手后,我个人推荐的配置是:

1-2 个门编译和执行 + 1-2 个门解释和执行 + 1 个门函数式编程语言。

例如,C/C++ + Python + Haskell

或者Java + Python、Shell + Haskell、Erlang等。

这使得我们能够学习和掌握多种编程范式,尤其是函数式编程语言,这与我们常规的编程思维完全不同。

好了,这个问题就到此为止。 下一期我们将从其他维度来看看编程语言,以及各种编程语言的适合领域和就业前景~

相关内容

热门资讯

大浪淘金APP黑幕揭秘:内盘操...   大浪淘金APP平台最隐蔽的黑幕,在于其完全封闭的内盘交易系统。这个看似与国际市场接轨的交易平台,...
告别固定工资实现财富自由?一品...   普通投资者被广告宣传诱导,注册就送现金,充值返现金券等等这些宣传方式,都是在引流到平台开户,不怕...
哈易购APP打着现货交易幌子搞...   网络上各类白银、铂金等贵金属投资广告铺天盖地,不少平台以"现货交易"为名,暗中却从事着非法期货交...
5元起投!高额收益?中国白银、...   上海华通白银国际交易中心有限公司(以下简称“华通白银国际”)打着“白银、铂金现货订购”的旗号,实...
"九州订购APP、起...   近年来,贵金属投资热度持续攀升,但乱象也随之而来。一些不法分子趁机搭建虚假交易平台,打着"低门槛...
坚锅淘金APP投资者频繁爆仓亏...   坚锅淘金APP对外宣称是贵金属现货交易平台,日常出入金看似畅通无阻,给人一种合规运营的假象。但事...
斗金订购APP“5元订购现货”...   斗金订购APP“5元订购现货”骗局揭秘:充值易、回本难,越陷越深!  许多投资人在未核实平台合规...
贵金属APP乱象曝光:&quo...   当前市场上部分贵金属类APP未取得正规交易资质,涉嫌误导消费者参与白银、铂金等商品的非合规交易!...
华通白银、银宝街APP被指虚假...   警惕现货白银投资陷阱:上海华通白银背后的平台涉嫌非法期货交易  近年来,各类现货白银交易平台以“...
充值送300,月入过万?别被量...   如今,网络上充斥着大量未经批准的贵金属及其他产品订购交易平台。这些平台普遍缺乏合法经营资质,却将...
鑫汇智投APP贵金属非法期货、...   鑫汇智投APP贵金属非法期货、人为控盘,大量投资者遭恶意收割  鑫汇智投APP长期以“低门槛、高...
矅光智策APP非法贵金属交易骗...   不少投资人在矅光智策APP上进行贵金属交易后出现了严重亏损。许多人在下载该平台时,根本不清楚其是...
飞鸽订购APP非法期货交易骗局...   飞鸽订购APP非法期货交易骗局,很多投资者根本没搞懂规则就盲目充值,买涨买跌跟买cai票一样!平...
天龙白银APP被操控的非法期货...   中小投资者在网络平台参与商品现货订购交易,表面看似合规合法,实则暗藏诸多难以察觉的风险。商品现货...
下载送试玩金?千万别碰!带你揭...   当前,许多贵金属APP交易平台正采用欺诈性营销手段。它们通过抖音等短视频平台,以“5元起投”“充...
泡泡淘金APP骗局:打着&qu...   泡泡淘金APP骗局:打着"商品订购"幌子,实则非法期货收割投资者!投资需谨慎,切勿轻信“高额回报...
南商云购APP虚假电子盘背后的...   南商云购是虚假电子盘吗?它是否具备合规的交易资质?这个曾经的"现货电子盘"如今摇身一变,披上了"...
警惕"祥龙订购&qu...   祥龙订购APP、掌上银牛APP等平台背后的运营方——四川禄宏商品现货市场有限公司,仅具备现货交易...
中国白银、华银:虚假宣传、后台...   中国白银APP宣称是上市公司“中国白银集团”与“上海华通白银国际交易中心”旗下的现货交易平台,提...
起底“优品订购”APP非法期货...   “优品订购”APP根本不具备任何合法的交易资质。其背后的运营方仅凭随便注册一家公司、开发一款交易...