1. 编译原理简单吗
编译原理主要是讲了编译器的实现。
那什么是编译器呢?
编译器就是将 源程序→编译器 →目标机器代码的程序
本文将用一段最简单的代码进行说明
1 + 2 + 3
第一步. 词法分析
当代码从文件中被读入到编辑器时,将会进行词法分析
示例中的代码最终会转换为(下面为伪代码)
1 ADD 2 ADD 3
第二步. 语法分析
这一步编译器将会把词法分析的结果转换成AST(abstract syntax tree, 抽象语法树)
所有的操作数将会作为子节点,所有的操作符将会作为父节点。(不知道的同学可以看一下树的生成)
1 + 2 + 3 对应的树
3. 生成目标代码
对上面的树进行后序遍历,将会得到下面的伪代码
((1 2 +) 3 +)
生成的汇编伪代码为
START:
MOV VALUE, 0//初始化结果为0
ADD VALUE, 1
ADD VALUE, 2//(1 2 +)的汇编伪代码
ADD VALUE, 3
RET VALUE
END
最终汇编代码会被编译成机器代码,在计算机上执行。
下面为一般情况下的编译流程
1. 词法分析(生成代码对应的token序列,使用正则表达式)
2. 语法分析(生成AST)
3. 语义分析(对代码的语法进行检查)
4. 代码生成(生成可执行的代码)
2. 如何用GCC在linux下编译C语言程序
在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器,假设我们有下面一个非常简单的源程序(hello.c):
int main(int argc,char **argv)
{
printf("Hello Linux
");
}
要编译这个程序,我们只要在命令行下执行:
gcc -o hello hello.c
gcc 编译器就会为我们生成一个hello的可执行文件.执行./hello就可以看到程
序的输出结果了
3. 手把手教你在Windows上编译Swift工具链
在Windows上编译Swift工具链的步骤如下:
安装开发环境:
设置系统环境:
创建项目目录:
克隆Swift项目源代码:
下载依赖库:
编译组件:
配置路径:
测试:
注意:在Windows上编译Swift的过程相对繁琐,需要细心配置和执行各个步骤。遵循上述指导,开发者可以在Windows上成功编译和使用Swift,实现原生Windows程序的开发。
4. 如何用手机进行编程
这里介绍3种可以在手机上编程的app,分别是c语言编译器(c语言)、AIDE集成开发环境(java)、Qpython3(python),都不需要root,可以直接编写程序并运行,下面我简单介绍一下这3个app的安装和简单使用,主要内容如下:
1.下载安装,这里以我的vivo手机为例,直接打开“应用商店”,搜索“C语言编译器”,如下,直接点击下载安装:
测试代码如下,这里编写了2个函数,分别是2数之和和2数只差,很简单:
程序运行截图如下,需要先输入2个数,才能正常运行:
1.下载安装,这直接在应用商店里搜素“AIDE”就行,直接下载安装,如下:
这里测试一下,主要代码如下,官方自带的例子:
程序运行截图如下:
1.下载安装,这里直接在应用商店里搜索“QPython3”就行,直接下载安装,如下:
主界面如下,主要分为“终端”、“编辑器”、“程序”、“QPYPI”、“课程”、“社区”这6个模块,终端类似IDLE,编辑器类似记事本,QPYPI是第三方包和工具,程序存储官方自带的示例,课程是一些教学案例:
这里测试一下官方自带的例子—speaky.py,在“程序”这个模块下,代码如下:
点击运行按钮,程序运行截图如下:
至此,这3个app都介绍完毕。总的来说,使用起来都不错,各有各的功能,当然,还有许多其他的app也可以在手机上进行编程,像c4droid(c/c++),termux(高级终端,类似linux)等,这里我就不详细介绍了,感兴趣的可以在网上搜索一下,有相关教程和示例可供参考,希望以上分享的内容能对你有所帮助吧。
很高兴能回答你的问题
我就自己使用过的一些手机编程软件来进行说明。之前学习网页开发,为了让自己随时随地使用编程,携带方便。
第一种 html-css-js
这款软件,看着名字就知道是和html相关的网页开发,它是由踏宇 科技 开发的一款手机开发网页的APP。不仅有编程、编译功能,还可以进行网页开发学习,内附很多关于网页设计(css,js)。真正做到编写,学习两不误。
这是代码编写界面:
这是学习界面:
但哎,我现在基本不使用它来编程了,当你使用到手机键盘里的,你就知道为啥了。
第二种,C++pro
这一款手持编程APP软件,是我比较喜欢的一款,功能很强大,不仅可以编写C语言、C++、C#而且还可以编写PHP、Nodejs、go等。可以说,你拥有了这一款APP,就相当于同时拥有了多个编程APP软件啦。
这是打开后的主界面。不难发现有很多种语言的编写模块。更加强大的是,它还可以在编写代码后做一个选择,选择要运行的语言工具。
当然如果大量代码运行的话,可能会比较迟缓。
两款手机编程APP分享给大家!
这里介绍3种可以在手机上编程的app,分别是c语言编译器(c语言)、AIDE集成开发环境(java)、QPython3(python),都不需要root,可以直接编写程序并运行,下面我简单介绍一下这3个app的安装和简单使用,主要内容如下:
1.下载安装,这里以我的vivo手机为例,直接打开“应用商店”,搜索“C语言编译器”,如下,直接点击下载安装:
测试代码如下,这里编写了2个函数,分别是2数之和和2数只差,很简单:
程序运行截图如下,需要先输入2个数,才能正常运行:
1.下载安装,这直接在应用商店里搜素“AIDE”就行,直接下载安装,如下:
这里测试一下,主要代码如下,官方自带的例子:
程序运行截图如下:
1.下载安装,这里直接在应用商店里搜索“QPython3”就行,直接下载安装,如下:
主界面如下,主要分为“终端”、“编辑器”、“程序”、“QPYPI”、“课程”、“社区”这6个模块,终端类似IDLE,编辑器类似记事本,QPYPI是第三方包和工具,程序存储官方自带的示例,课程是一些教学案例:
这里测试一下官方自带的例子—speaky.py,在“程序”这个模块下,代码如下:
点击运行按钮,程序运行截图如下:
至此,这3个app都介绍完毕。总的来说,使用起来都不错,各有各的功能,当然,还有许多其他的app也可以在手机上进行编程,像c4droid(c/c++),termux(高级终端,类似linux)等,这里我就不详细介绍了,感兴趣的可以在网上搜索一下,有相关教程和示例可供参考,希望以上分享的内容能对你有所帮助吧。
用手机进行编程,也是脑洞大开了啊,不过话说回来,手机上到底能不能进行编程呢?当然是可以的,现在手机的性能可以说不亚于电脑的,那么我下面给大家分享几个用手机编程的办法。
1.c语言编译器
这个软件可以说是学习c语言的实用工具了,给大家介绍一下它的特点,就是小,没错内存只有10M左右,而且软件干净啊,使用起来没有什么广告,用起来效率也是非常高的。
2.JAVA编辑器
如果你喜欢使用JAVA这个语言的话,这款软件留非常的适合你,专门做JAVA代码开发,你可以用它做一些小 游戏 ,功能非常的强大,而且使用的功能又很简单。
可以在线编辑demo 跑基本环境 但是涉及到功能模块开发 还是需要电脑的,
手机只能简单编辑脚本 以及 代码的部分存储
坐公交坐地铁或排队等待的时候闲着没事可以在手机上编程学习,但是总得来说手机上编程不怎么舒适。
第一款: pythonista3 phython编程app,特点:编写方便,交互感强,API强大
a.编辑器包含: 1. 语法高亮 2.自动补全符号 3.个性化python键盘 等功能
b.清晰的标签,让你在各个文件间轻松切换!
c.完美的提示窗口,手机上编写命令行也能从容自如
d.方便的2d引擎库,快速写出一个小 游戏 吧
第二款: mimo 学习编程app,特点:适合学习,操作简单,界面萌化
a.趣闻教学: 可以选择一门语言进行学习,内容非常易懂,操作也简单,mimo支持23种编程语言的教程,值得玩一玩。
b.编辑也很方便
第三款:my phython quiz 帮你复习python的app。 特点:碎片化学习
没事在路上多刷刷题吧,有助于增强熟练度。
第四款: Udacity 目前最全,最优质的编程课程app。 特点:老师优质,硅谷资源,最新 科技
屏幕太小了,小心点眼睛。
网络搜索以下软件,或者编程器
NO.1 c4droid
一款手机上的c语言编译器。
个人认为手机上最好用的,没有之一!c4droid是款Android设备上的C/C++程序编译器。
NO.2 AIDE
功能强大,内置学习教程。
AIDE是一个Android Java集成开发环境,可以让你在Android系统内进行Android软件和 游戏 的开发。
NO.3 我的应用iapp
专为手机研发,代码编写简单,学习容易。
iapp还很年轻,特别需要大家的支持!
NO.4 cppdroid
和c4droid一样,是一款手机上的c语言编译器。
安卓上的C/C++编译环境,可以帮助你在手机上编写c/c++程序 ,和c4droid各有优点,cppdroid最大的优点就是可以即时报错,写一个字符就检查一遍,保证程序的正确性,而且编译速度快,虽然还有部分地方赶不上c4droid,但是和c4droid搭配还是不错的。
网络可以查查
5. 怎样去写一个编译器(用C语言写C语言编译器),需要哪些知识做铺垫,可以给一下相关网站和书籍的推荐吗
写编译器重点就是设计并实现一些数据结构和算法,语言特点太多的话,代码写起来不容易,建议你找一个小语言尝试下,不要一开始就去尝试成熟语言。否则你会在写完语法分析程序以后,遭遇到很大的困难。多数人都是在写语义分析程序的时候,突然发现自己设计的数据结构很烂,后边越写越要命。
如果你想入门编译器的话,那么可以看《编译原理与实践》,整本书先将编译器理论,然后后边教你一步步实现c-miuns(c的子集)的编译器,包括lex,yacc,都在几千行代码左右。这本书讲的比较简单易懂一点
也可以学学斯坦福大学的编译器设计公开课(aiken设计了一个叫cool的语言,专门用来教人写编译器),课程地址上面有人给了:Compilers。这门课以前有个实验环境(据说已经给了,我以前写的时候还是用的网上一个不完整的实验环境),把和编译器知识无关的内容都给你写好了,你只需要在固定的地方填上你的内容就可以写出你的编译器(不要觉得很简单哦,人家的代码写的很精巧的,读完就发现写个好编译器还是很费脑子的),另外,这个实验环境有个特点,就是在每一步都提供标准程序做对比,你可以在写完一部分以后就同标准程序对比,及时发现错误。这种方式为写编译器又提供了很多帮助
先找个小的,慢慢研究,弄懂了整体的结构再说
6. 如何用basic语言实现一个最简单的解释器/编译器
首先Basic语言是解释型的语言,而C语言是编译型的语言。什么意思呢,就是你编写的Basic语言程序运行的时候需要一个解释器将高级语言代码转为机器码然后才可以执行。C语言程序一般经过编译和联接后直接生成目标代码。目标代码本身就是机器码所以可以直接运行。
从语法来看,C语言是面向过程的语言。Basic语言严格意义上只是一个脚本语言,语法相对来讲非常简单。
另外,C语言是最接近汇编语言的一种语言,功能非常强大,但是要求开发人员对硬件,操作系统等底层的东西要有很深的了解,开发程序相对来讲麻烦一些,但是程序性能非常好。Basic语言相封装了很多底层的东西,所以不要求开发人员有很深的计算机专业背景,开发简单,但是不要指望用Basic语言开发真正的商业程序。
由于以上的区别,造成这两种语言的用途不一样。Basic语言常用来写一些脚本,或者在真正开发之前作一个软件模型。实际开发用C语言以确保运行速度和较小的内存需求等其他性能。
显然,这两种语言还有其他区别,但上面应该是最重要的区别吧