代码的编译,解释,执行流程及常见编程语言对比wjybq

计算机程序(英语:ComputerProgram)是指一组指示电子计算机或其他具有消息处理能力的电子设备每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。

打个比方,一个程序就像一个用汉语(程序设计语言)写下的红烧肉菜谱(程序源代码),用于指导懂汉语的人(体系结构)来做这个菜。计算机程序是软件的一个组成部分,它还包括文档和其他无形组成部分。通常,以英文文本为基础的计算机程序要经过编译和链接而成为一种人们不易看清而计算机可解读的一连串数字的格式,然后放入运行。这种程序也叫作编译语言。未经编译就可运行的程序,通常称之为脚本程序(script)或解释型语言。

源代码(英语:Sourcecode),是指一系列人类可读的计算机语言指令[1]。在现代程序语言中,源代码可以是以书籍或者磁带的形式出现;但最常用的格式是文本文件,这种典型格式的目的是为了编译出计算机程序。计算机源代码的最终目的是将人类可读的文本翻译成为计算机可以执行的二进制指令,这种过程叫做编译,通过编译器完成。

1.编译器、汇编器与解释器代码:nothingbutatextfilethatmakessense,whatmakethecodesensibleisthecompiler!编译器(compiler)是一种计算机程序,它会将某种编程语言写成的源代码(原始语言)转换成另一种编程语言(目标语言)。编译:将一段高级语言代码(如c语言)通篇翻译成低级语言(如汇编语言)代码的过程。

编译执行:代码经过编译变成汇编语言,然后经过链接(添加各种库),最终由汇编器生成机器码,也就是可执行文件,在Windows下的可执行文件叫做.exe

预编译:将hello.c和stdio.h预编译为hello.i编译:将hello.i编译为hello.s汇编:将hello.s翻译为机器指令hello.o(.o目标文件)链接:链接各种需要的库和其他目标文件(该hello程序不需要)得到可执行文件hello.out(相当于windows的.exe)

解释执行:将一段高级语言代码逐行编译,每编译一行就立即执行,不生成中间文件

编辑器就是处理文本(源码)的程序,写代码写的就是文本,编辑器可能提供智能提示、代码高亮等辅助功能,但不负责源码到二进制文件的操作;

编译器(compiler)就是负责将源码文本翻译成计算机能够理解和执行的二进制文件的程序;

集成开发环境(IDE,IntegratedDevelopmentEnvironment)是用于提供程序开发环境的应用程序,包括了代码编辑器、编译器、调试器和图形用户界面工具。集成了代码编写、分析、编译、调试等一整套工具链。

编译工具我们选用gcc(全称GNUCompilerCollection意思是GNU编译器套件),不过不是原版的gcc,而是它在Windows下的特制版MinGW(全称MinimalistGNUonWindows)。它实际上是将GCC移植到了Windows平台下,并且包含了Win32API,因此可以将源代码编译为可在Windows中运行的可执行程序。而且还可以使用一些Windows不具备的,Linux平台下的开发工具。MinGW又分为MinGW-w64与MinGW,区别在于MinGW只能编译生成32位可执行程序,而MinGW-w64则可以编译生成64位或32位可执行程序。MinGW现已被MinGW-w64所取代,且MinGW也已停止了更新。

MinGW,即MinimalistGNUForWindows。它是一些头文件和端口库的集合,该集合允许人们在没有第三方动态链接库的情况下使用GCC(GNUCompilerC)产生Windows32程序。

实际上MinGW并不是一个C/C++编译器,而是一套GNU工具集合。除开GCC(GNU编译器集合)以外,MinGW还包含有一些其他的GNU程序开发工具(比如gawkbison等等)。

开发MinGW是为了那些不喜欢工作在Linux(FreeBSD)操作系统而留在Windows的人提供一套符合GNU的GNU工作环境。

3.常见编程语言及对比cPython:Python社区的标准是CPython实现,是C语言写的。

还有一些其他的实现,比如PyPy,简单说是RPython实现的。

主流的就是上面这两个了,还有JVM实现,以及微软的实现。都比较小众了,没什么人用。bootstrap自举,用自己给自己写编译器

,JVM,pythonbytecode,c语言这么厉害,那它本身又是用什么写的?(先有鸡还是先有蛋)语言本身只是一段文本,真正让一段代码有意义的是编译器(你如何看待这一段代码)。C语言有意义的不是那一段用CProgrammingLanguage规则写成的文本,而是懂得规则的C语言编译器把这段文本按某种机制准确翻成C语言想要代指的汇编代码!

理解这个问题的关键,是认识到:编译器,只是读取文本文件(源代码),输出某种计算机编码(比如机器语言)的程序。

既然编译器也只是个普通的程序,那么就能用任何语言编写。所以,理论上来讲,你可以用Python、Java或者Scratch来写个C语言编译器【捂脸】。

换句话说只要有一个东西(不管他是什么),只要能帮我把C语言写成的那段字符串,转换成一个能在CPU上运行的程序,那就够了,我可以不用管这个"东西"是什么。是另一个程序,还是一个人手工翻译然后手动烧录CPU指令;是用C语言写成的程序,还是用JS写成的……我都不用再关心了。

第一个汇编器到第一个汇编语言写的C语言编译器到第一个C语言写的C语言编译器

编译器isnothinbut一个.exe罢了,这个.exe的功能是把C语言写成的文本转换成汇编语言的文本汇编器也一样,nothingbuta.exe,其功能是把汇编语言写成的文本转化成二进制的文本。

C语言编译器就是用来编译C语言的,如果C语言编译器也是C开发的,那么是先有C还是先有C编译器?没有C哪来的C编译器?没有C编译器又怎么去编译C?先有鸡还是先有蛋的问题

“C语言编译器是用C语言开发”这句话的正确理解应该是这样的一个过程:

操作系统有内核,而shell就是壳,壳把核包住,并连接核与外面的世界(用户)shell是用来解决用户(外面的世界)如何与操作系统(核)通信的问题。

Linux的核叫kernel,壳有很多种,有命令行的:bash、sh、csh、ksh,有图形化的:KDE、GNOME、CDE、XFCE,据说Linus那伙人只负责开发核。

Windows9X系列的核是DOS,图形化的壳叫WindowsExplorer,命令行壳叫command。从WindowsXP开始,Windows的核叫做WindowsNT(WindowsNewTechnology),图形化壳叫WindowsExplorer(就是Windows的文件管理器),命令行壳有command、cmd.exe,后面还推出了WindowsPowerShell。由于WindowsNT技术是针对图形化壳设计出来的核,而Windows9X就是在DOS上加了一个壳。所以WindowsXP蓝屏情况比Windows9X少得多,但也有。另外我见过Windows7蓝屏,且到目前为止没有见过Windows8和Windows10蓝屏。

实际上不管是命令行shell还是图形化shell,都是访问操作系统中的某个具有一定功能、可以处理具体事务的文件(二进制文件----此类文件经常被称作工具)、或包含一定内容的文件(文本文件),通常都是通过文件名访问(当然有例外,比如Linux的alias命令,比如通过链接文件访问源文件),所以通常文件名就成了命令。

在Linux的/bin目录和/usr/bin目录中有Linux命令对应的文件,在Windows的%windir%目录即操作系统安装硬盘分区的Windows目录和%windir%\system32目录中有Windows命令对应的文件,此外还可以引入外部命令和自定义命令。而shell的作用就是解释某条命令对应的文件的文件路径,供用户使用并返回使用结果。这也就是为何有shell脚本一说。脚本语言是种解释型语言,不能编译成二进制代码,区别于编译型语言。就如shell,它的作用是将命令解释成对应的文件名,然后通过文件名调用文件。对于图形化shell是通过鼠标的点击来访问文件的,但实际也是通过文件名,因为每个文件都有包含文件名的完整路径。

我们都知道在Shell中输入catlog.txt命令就可以查看log.txt文件中的内容,然而,log.txt放在磁盘的哪个位置?分成了几个数据块?在哪里开始?在哪里终止?如何操作探头读取它?这些底层细节Shell统统不知道的,它只能去调用内核提供的open()和read()函数,告诉内核我要读取log.txt文件,请帮助我,然后内核就乖乖地按照Shell的吩咐去读取文件了,并将读取到的文件内容交给Shell,最后再由Shell呈现给用户(其实呈现到显示器上还得依赖内核)。整个过程中Shell就是一个“中间商”,它在用户和内核之间“倒卖”数据,只是用户不知道罢了。

脚本小子(英语:scriptkiddie)是一个贬义词,用来描述以“黑客”自居并沾沾自喜的初学者。脚本小子不像真正的黑客那样发现系统漏洞,他们通常使用别人开发的程序来恶意破坏他人系统。通常的刻板印象为一位没有专科经验的少年,破坏无辜网站企图使得他的朋友感到惊讶,因而称之为脚本小子。

脚本小子常常从某些网站上复制脚本代码,然后到处粘贴,却并不一定明白它们的方法与原理。他们钦慕于黑客的能力与探索精神,但与黑客所不同的是,脚本小子通常只是对计算机系统有基础了解与爱好,但并不注重程序语言、算法和数据结构的研究,虽然这些对于真正的黑客来说是必须具备的素质。

因为自己研究和开发能力不够,脚本小子通常使用网上能够下载到的攻击程序。常见的这种软件有WinNuke、BackOrifice、NetBus、Sub7、Metasploit、ProRat、SQLmap、Havij。稍微有一点经验的脚本小子,可能使用别人发现的安全漏洞的概念证明代码,来编辑成程序。

命令行界面(CLI)=使用文本命令进行交互的用户界面终端(Terminal)=TTY=文本输入/输出环境控制台(Console)=一种特殊的终端Shell=命令行解释器,执行用户输入的命令并返回结果

我之前很迷惑一个问题是,有终端就够了嘛,输入命令,执行并把结果输出,要shell干什么。更让人抓狂的shell还有很多种类,bash,cshell,zsh。这些到底是做什么的?

所以需要明确下终端负责的工作。

终端的工作范围:接收用户的输入,显示传过来的输出。(此外还提供一些优化用户体验的功能,比如支持文字复制粘贴、软件背景颜色的调整等)

终端的工作其实是很少的哦,简单来说3点:GUI软件界面、接收输入、显示输出。

而shell的核心工作就是操控计算机内核(如新建文件等等),即访问操作系统中的某个具有一定功能、可以处理具体事务的文件(二进制文件----此类文件经常被称作工具)、或包含一定内容的文件(文本文件)

shell分为:

我们一般讨论shell都是指命令行shell。

bash之于shell就如同Ubuntu之于Linux。

linux内核相当于你的大脑。终端相当于你的眼睛。shell相当于可以将眼睛看到的多彩事物处理成大脑能接受的命令程序集。

Terminal(终端)是一个接受来自键盘输入,能够在窗口绘制文本的程序。实际上它是过去老式硬件终端的模拟。Terminal虽然能够接受来自键盘的输入,但是并不知道用这些输入来做什么。终端需要另一个程序来帮助它,这就是Shell。Shell将你的输入解释为命令,找到对应的程序来执行你的命令。并将执行的结果返回到Terminal。Shell也可以理解为你输入指令的默认执行者。程序员们在过去写了很多Shell程序,有BourneShell(sh)、CShell(csh)、KornShell(ksh)、ZShell(zsh)和BashShell。不同的操作系统默认安装的Shell不太一样。

希望题主明白,无论是编译执行还是解释执行,都是解释执行,只不过编译执行是用机器语言来解释。机器指令是在操作系统将编译后的程序加载进入内存之后,芯片电路进行解释的。而脚本语言则是在解释器将代码Parse(解析)之后,用编写解释器的语言来解释的,这中间多了一层,在效率上一般会低很多倍。即使是解释器,为了提高解释执行的效率,一般也会设计构建一个虚拟机,并在Parse的时候将源代码编译成字节码,然后对字节码逐条指令地执行。

这个作者提到了一个有趣的项目:c4

它简洁,却不简单。

ARuntimeEnviroment(likesaytheJavaRuntimeEnviroment)istheVMandasetofstandardruntimelibraries(java.utiletc).AJavascriptengine(likeV8)isaRuntimeEnviroment(soVMandthestandardlibraries)forJavascript.

实际上编程语境中的runtime大概有三个含义,分别指

你这么理解运行时就可以了:他是一个用来支持你写的程序的程序。

这是泛化的定义,因为不同语言的运行时非常的不同。复杂程度也不一样,比如Java的运行时要比cRust之类复杂很多。

比如,go的运行时就是一个调度程序加垃圾回收程序,编程时候写的goroutine和内存管理就是这个运行时程序负责实现的。

Python的运行时是一个c程序,里面包括垃圾回收,字节码解释器,反射等等功能…

Python为啥慢呢?

Python慢跟语法没有关系,原因在于上面三个。换句话说,慢的根源在于Python的运行时设计。不改变这个,翻译成啥都没用。

题外话,Python的这些设计换来的就是python的灵活度,程序员在写程序的时候几乎不需要考虑内存控制,类型等等。

举个简单的例子:int类型最简单的类型了,在C语言中(或者其他lowlevel语言中,比如Go)需要指明宽度和符号。比如int8,unsigned等等。不同的宽度的极限值也不一样,比如一个int8,只能表达-128to127这个区间的整数,超了程序就崩溃了。

在Python里面,int虽然也叫int,但是他可以表达任意大的整数。为啥呢?因为int在Python的世界里是一个特殊的对象,在内存里也不仅仅是几个字节那么简单,而是一个C的结构体:

ob_base={ob_base={ob_refcnt=8ob_type=0x00000001004936f0}ob_digit=([0]=30)如上,其实Python的int是一个array。。。然后每一个int都有这么一个结构在内存里。。当然比C的int复杂。但是好处也很明显,你不需要考虑什么int8int16,不用担心溢出。

THE END
1.手机编程软件app下载安装手机编程工具大全在手机上也可以轻松学习编程。3322软件站为用户整理了手机编程工具大全,包括c4droid、Python编译器、Pydroid3等多款好用的编程app。这些软件可以帮助用户在手机上直接编辑运行C/C++程序,并且支持代码高亮、语法检查等功能。为了帮助喜爱编程的小伙伴进行学习,还有Java编程狮、Python编程狮、扇贝编程、猿编程、编程狮app等https://www.32r.com/zt/sjbcgj/
2.编程入门学习软件有哪些编程入门学习软件手机版随着互联网的发展,越来越多的人进入IT行业,那么对于新手小白来说有一个好用的学习入门编程软件是十分重要的,只有将基础打牢才能让大家后面的学习事倍功半,今天给大家介绍几款好用的编程入门学习软件,这些软件提供的都是非常专业的知识,用户能够在这里学习各种编程语言,包括C语言,感兴趣的小伙伴快来看看有没有适合自http://m.downcc.com/k/bcrmxxrj
3.编程工具下载编程工具编程工具排行榜华军纯净下载提供国内外免费编程工具下载,其中包含编程语言软件、脚本开发工具等,更多编程工具内容尽在华军纯净下载!https://soft.onlinedown.net/sort/133-hot/3/
4.c语言编译器app下载c语言编译器手机版/最新版/安卓版下载地址 c语言编译器版本合集大全 c语言编译器是一款子啊手机上可以实现简单C语言编译软件,多种编译功能能够满足你基本的编辑需求,并且这些功能全部免费使用,是众多C语言刚开始学习的好软件,支持对编译完的软件进行程序验证,多种文件一键即可实现轻松管理,使用十分简单,并且不收取任何费用。http://www.kkx.net/zt/108431.html
5.python手机编程下载手机版2024最新免费安装下载 python手机编程iOS版1.7.37 大小:47.6MB时间:2024-12-03 下载 更多python手机编程安卓历史版本(5个)相关合辑 代码软件公众号排版编辑器app编程app软件免费儿童编程软件少儿编程软件手机学编程app数控编程软件微信公众号图文编辑软件学编程的软件可视化编程软件入门编程软件程序编程软件小孩编程软件手机编程app自动编程https://m.liqucn.com/app-rn-102222-0
6.计算机编程下载2024安卓最新版手机app官方版免费安装下载普通下载 安全下载 需下载豌豆荚APP 简介 评论(0) 历史版本 小编点评 计算机编程学习 计算机编程是一款编程学习软件,可以学习计算机(电脑)基础知识和编程知识。学习和了解计算机知识以及编程知识能更好的帮助我们使用计算机以及理解计算机世界。【计算机基础】计算机操作系统、二进制等基础计算机知识,还有常用软件的学习https://m.wandoujia.com/apps/8337203
7.python编程软件下载大全python编程开发工具下载pyt在现代社会,网络发展迅速,编程学习也成为十分热门的课程,Python编程非常易学,它包括高效高级的数据结构,提供简单且高效的面向对象编程。Python的学习过程少不了IDE或者代码编辑器,或者集成的开发编辑器(IDE)。这些 Python编程软件帮助用户学习使用Python,提高效率。那么python编程软件有哪些呢,小编给大家整理了一些好用的pythttps://www.ddooo.com/zt/comicpc.htm
8.c语言编译器下载c语言编译器中文版下载c语言编译器软件wiseforvisualstudio.net是.net编程语言下的一款非常强大的电脑在线编程代码编辑器,让开发人员在线对代码进行编程,还哭快速的找代码错误的地方,并报错进行修改!有需要的用户 c语言编程软件mytc 3.41M / 2018-11-21 / v5.4.1 免费版 评分:下载 c语言编程软件mytc是一款非常经典的c语言编程软件,业界里有一句话说,http://www.downyi.com/key/cyuyanbianyiqi/
9.clion2024官方免费下载JetBrainsCLion2024.3.1中文正式免费版(附软件大小:1.3GB 软件语言:简体中文 软件类型:国外软件 软件授权:免费软件 软件类别:编程工具 应用平台:Windows平台 软件官网:官方网址 更新时间:2024-12-12 网友评分: 360通过腾讯通过金山通过 1.3GB 详情介绍 CLion 2024是一款JetBrains旗下的提供的跨平台C/C++ IDE工具最新版本现,该版本以C++编写代码、即使没有源https://www.jb51.net/softs/549049.html
10.编程代码大全中文(超经典)搜索编程代码资源超牛汉语编程系列讲座 浏览:6 "超牛汉语编程系列讲座"正是这样一个针对这一理念的专题分享,它旨在提供一种全新的、基于中文的程序设计学习体验,让计算机科学更加贴近普通大众。 讲座可能涵盖了以下几个关键知识点: 1. **汉语编程语言基础** 快写代码编辑器中文编程PHP、HTML、CSS https://download.csdn.net/detail/chenroujie/330502
11.定价:plc编程软件中文版学编程先学什么。¥65.80有兴趣的读者可以在下面地址下载这份规范:,汉语编程网”?万大仙”,19 memset(&my_addr,这个函数也是一个阻塞函数…汉语编程”?定价:¥52。按照PC/TCP规范,接受FTP客户端发来的退出(quit)命令。“s”指short int。这种说法的人忽略了一个核心问题!触摸屏编程软件NS-Designer V6。在本程序中是their_addr。即bighttps://uchebana5.ru/cont/1151767-p2.html
12.易语言软件易语言软件合集易语言是一门以中文作为程序代码编程语言。易语言是一个自主开发,适合国情,不同层次不同专业的人员易学易用的汉语编程语言。易语言降低了广大电脑用户编程的门槛,尤其是根本不懂英文或者英文了解很少的用户,可以通过使用本语言极其快速地进入Windows程序编写的大门。有需要的小伙伴快来pc下载网下载使用吧! https://www.pcsoft.com.cn/zhuanti/yyyrjdq/
13.中文编程中文编程是指使用中文来书写的程式设计语言,支持基于汉语字、词编程,符合计算机符号语言规范,并继续向自然语言发展。其目的是为了减少对英语的学习,将精力集中在程序设计上,并且便于程序交流和代码维护。 快速导航 词条图册 中文名 中文编程 类别 编程方式 https://baike.sogou.com/v3274953.htm
14.编程代码翻译成中文理想股票技术论坛提供编程代码翻译成中文的服务,帮助开发者理解和应用外文编程代码。 大智慧代码翻译器:高效精准的编程翻译工具与语言桥梁引领智能转化时代 [股票软件指标公式技术交流] 债息 2024-9-24 相关标签:万能代码翻译器手机版 中文代码汉语编程软件 编程代码翻译成中文 人工智能翻译软件 智能翻译软件下载 https://www.55188.com/tag-9433008.html
15.《易语言中文编程从入门到精通》.pdf绍兴县教研室试点教材 汉语编程工具易语言 汉语编程工具易语言 汉语编程工具易语言 - 1 - 易语言教程――初级版 目 录 目 录- 2 - 第一部分 易语言入门- 3 - 第一课 走进“易”世界- 3 - 一、打开“易语言”设计窗口- 3 - 二、认识“易语言”- 3 - 三、第一个易程序- 5 - 四、小结- 6 -https://max.book118.com/html/2018/1231/8015050117001142.shtm
16.易语言v5.9破解免安装版专业汉语编程软件工具《易语言破解加密狗版》一款国内极其受欢迎的中文编程软件,专为国人开发,具有中国特色,支持基于汉语字、词编程的、全可视化的、跨主流操作系统平台的编程工具,支持与常用的编程语言互相调用,具有充分利用api,com、dll、ocx组件,各种主流数据库,各种实用程序等多种资源的接口和支撑工具。是开发人员的好帮手,下面为大家奉https://www.jipinsoft.com/16318.html
17.易语言破解版易语言软件合集易语言编写软件下载316M下载 易语言汉语编程是国人自制的以中文操作系统为主体、根本的编程软件,在这里你将无需记住那些复杂的英文,摆脱语言障碍,直接就可使用,不过 易语言5.81破解加密狗版 316M / 2019-02-22 / v5.81 免费版 316M下载 易语言5.81破解版是一款能够用汉字写代码的编程软件,该程序已经有十几年的历史了,新版本还在https://m.itmop.com/key/yyy
18.这款国产中文编程火了!通过文言文编译生成PythonJSRuby代码!通过文言文编译生成Python、JS、Ruby代码! 本文小编给大家分享一款中文编程语言,在GitHub上叫做文言文(wenyan), Star 数已经涨到19.2k,而且还有继续上涨的趋势。 项目简介 wenyan-lang是来自卡内基梅隆大学的一名大四学生开发出来的文言文编程语言(中文)。 开源项目地址:https://github.com/wenyan-lang/wenyanhttps://cloud.tencent.com/developer/article/2373394
19.语音合成技术(精选八篇)Microsoft Speech SDK (微软标准语音开发工具) 是微软公司为开发Windows平台上的语音应用程序而提供的软件开发包, 它主要兼容了Win32的语音应用程序编程接口 (Speech Application Programming Interface, SAPI) 、编译和调试语音应用程序的工具以及帮助文档。目前几乎所有的文本朗读工具都是使用这个SDK开发的, 语音合成已经在https://www.360wenmi.com/f/cnkeyudtc2v6.html
20.中文编程汉语编程实例51CTO博客.进销存局域网版 (适用于:百货店等,可以一台电脑作为后台服务端,多台收款机在前台收款,支持会员充值、积分,可以接多台大华条码秤,电脑、和多台收款机组建局域网) ![] 汉语编程1 汉语编程2 汉语编程3https://blog.51cto.com/u_13172026/2164358
21.易语言编程系统全中文全可视跨平台编程易语言教材编委会好易之002.jpg (40.75 KB, 下载次数: 1021) 下载附件 保存到相册 2009-9-11 14:46 上传 内容简介 本书是一本全面介绍全中文全可视跨平台编程工具——“易语言”的专着。“易语言”实现了真正的汉语编程,彻底摆脱了使用传统英文编程工具所存在的语言障碍和思维模式障碍,以更加https://www.zhengjiaxi.com/jpym/bjym/32720.html