导航:首页 > 源码编译 > 为什么编译难

为什么编译难

发布时间:2022-09-11 18:24:32

Ⅰ 反编译就真的那么难

C#的程序很好反编译,基本能还原成原代码,

Ⅱ 开发一个 C++ 编译器的难度有多大,难点又在哪里

C++的前端是出了名的复杂度和可靠性要求并驾齐驱的软件。

(这两点都比它高一个数量级的大概就只有OS了)

对于这种系统,唯一的办法就是烧钱。

烧钱的作用主要包括:
1.留人;
2.填坑;
3.买买买。

先说留人:复杂度一般是“细节”的代名词。现实中的编译器大多数以递归下降为主,自底向上的归纳推导为辅。这两样在教科书上也就是几页纸的事情。但是现实总是很残酷的,人们总想让语言更加“易用”,这就意味着各种上下文相关的情况都会出现。

对于C++来说,你要判断一个符号是类型或者变量(比如这个符号被用在模板参数中),要看前面的声明/定义。这就是一个上下文相关的推导。然后你就会写大量的if else switch case之类的代码来解决各种各样的可能分支。写它的人当然知道它是做什么的,但是如果这个人离职了,新来一个人,就呆掉了,这写的都是什么煞笔玩意儿。因为它不知道现实中怎样的需求会导致奇形怪状的逻辑。所以人员的稳定,对于这种长周期迭代、逻辑复杂的项目是很重要的。但是人的水平要求高吗?不算高也不算低。总结来说就是:有逻辑,知好歹。技术什么都可以培养,但是态度和基本智商是比较难培养起来的。

至于怎么保证人员稳定?很简单:加薪。

再说填坑:编译器是对正确性要求很高的基础软件。这里的正确性既包括产生的代码的正确性,也包括编译器自身对于各种问题的容忍度和足够丰富的错误提示。容错和错误提示本身也是代码,也有很大的出错几率。所以这些软件,bug少不了。但是作为基础软件,你又不能随便就2+3搞成了2*3,这样还怎么让别人相信爱情。所以要烧很多钱来养一帮debugger。

再说买买买:古人日:我们不用很麻烦很辛苦也可以成佛。既然这么费神我们自己做干什么,不如买别人的吧。于是MS就干脆不自己做了,直接去EDG整了个前端,这样就可以少了不少人年。这就是传统土豪和水果这种新暴发户想的不一样的地方。

传统土豪想的是:我们有这么多钱为什么还要自己解决问题呢?买买买!
水果新贵则是:啊呀,不小心有了这么多钱,我们要不要给自己制造点问题好把这些钱花出去?

Ⅲ 反编译为什么很困难A翻译成B,再把B翻译成A不是很容易,

编译相当于:
把一头牛分解成分子形式。
反编译相当于:
把分子组合成牛。

编译基本上不可逆。

翻译的过程:
把牛翻译成牛的另一种等价形式。
这与编译有本质的区别。

Ⅳ 为什么安装个VC++6.0编译器这么难

初学C++还是不要用VC6.0了。这个编译器除了速度快一些,不标准、BUG多,一无是处。

推荐Dev-C++,一个小巧、标准、免费的C++开发环境,有中文版,各个软件站都有下。

Ⅳ 编译原理的难点

1.错误认识: 很多人以为编译原理只能应用在写程序语言的编译器上,觉得用处不大,学习兴趣不高.而且可能觉得写编译器就必须完全手工来写.
2.自动机理论: 象NFA,DFA之类,比较抽象,要费些脑子,特别如果学离散数学时没有学自动机理论的话,更是需要多花点时间.
3.集合论的推演: 主要是一些闭包运算之类,数学基础不好的话,学起来也会感到吃力.
4.LR文法: 主要是又引入了自动机

Ⅵ 为什么C++编译比C语言编译慢很多

C++特性比C多,例如面向对象,语法比C复杂,例如重载,默认参数等,此外标准库也比C库强大,当然对编译器的要求也就更高。C++编译器相对于C编译器要做的事情多很多,所以编译起来相对较慢啦。

Ⅶ 为什么编译原理如此难于理解

找一下视频教程看有助于理解不

Ⅷ 中文编程的难点在哪里为什么不经过多次编译,把中文编译成计算机可以识别的语言

用来做小程序还可以。对于强大到包罗成象,无所不能的VC++来说,并不是说中文编程在逻辑上无法实现,而是单单制作这样一款编程工具没有十几年的时间都难以完成。
即便是有这样一款工具,在编程时,也必然掺杂着大量的C++语言。换句话说,学习的时候不仅要学中文的,还必须知道它在编译成英文时是什么样子,否则很难判定出错的原因。

这就是为什么我们在学习一些专业的知识时,为什么看了中文的资料,还必须去寻找外文的原稿一样

Ⅸ 编译原理难吗

编译原理我觉得不是最难的,或者是读得很浅所以不觉得难。在计算机基础课中最难的我觉得是操作系统,很难很重要,但是很少人会去重视,基本都是草草的上课草草的学了,不得精髓;次之算法也很难,不止是理论,实际用用也难。
国内985本科编译能教的大约是半本龙书组成的前端加一个基本的后端,不难。但是实践的工作量大。认真做一个编译器至少两三万行C++的工作量,只有半个学期的时间,压力很大。当然,compiler的可玩性不错,不那么枯燥。

Ⅹ 中文编程的难点在哪里为什么不经过多次编译,把中文编译成计算机可以识别的语言

难到不难,只是没有必要。作为一个工作几年的IT民工,我可以告诉你,有简单的英文,你敲代码的速度要快的多。而且要看英文文档的,就语言这点英文简直。。。甚至basic中的begin end我都闲麻烦,大括号多省事。

阅读全文

与为什么编译难相关的资料

热点内容
卡尔曼滤波算法书籍 浏览:766
安卓手机怎么用爱思助手传文件进苹果手机上 浏览:841
安卓怎么下载60秒生存 浏览:800
外向式文件夹 浏览:233
dospdf 浏览:428
怎么修改腾讯云服务器ip 浏览:385
pdftoeps 浏览:490
为什么鸿蒙那么像安卓 浏览:733
安卓手机怎么拍自媒体视频 浏览:183
单片机各个中断的初始化 浏览:721
python怎么集合元素 浏览:478
python逐条解读 浏览:830
基于单片机的湿度控制 浏览:496
ios如何使用安卓的帐号 浏览:880
程序员公园采访 浏览:809
程序员实战教程要多长时间 浏览:972
企业数据加密技巧 浏览:132
租云服务器开发 浏览:811
程序员告白妈妈不同意 浏览:333
攻城掠地怎么查看服务器 浏览:600