① 狂人c程序员入门必备这本书怎么样知乎
这书别看了……讲得忒乱。C语言入门推荐看《C和指针》或者《Linux C编程一站式学习》。实在不行看谭浩强的《C程序设计》也凑合,经典的K&R版《C语言程序设计》是进阶读本。《C陷阱和缺陷》侧重C语言的使用误区,《C专家编程》部分内容跟UNIX操作系统相关。
(1)你在源代码中写a和'a'有什么区别?
你的程序实际上是写在txt文件中(.c、.cpp啥的都是无格式文本)
如果你直接在源程序中写a,则编译器把它当成是你程序中的一个变量;
例如你在程序代码中写一句"int abc = 100;",abc中的a被编译器理解成一个标识符/名称的组成部分。
如果你在源程序中写'a',则编译器遇到单引号把它理解成一个字符常量,这完全是编译器词法分析过程中的区别。
不管是a还是'a',你写在源程序文件中的内容都可以叫做代码的组成成分(如果不是资源数据)。
(2)'a'并非char类型,事实上它是int类型
这话说得不仅让人难以理解,而且根本就是错的。'A'是char类型常量无疑,注意区分术语integral type(整数类型,包括有符号或无符号的int, short, char)和integer(整型int),看英文书这个区别很明显,比如case子句都要求integral type,不一定是int类型。
(3)啥是ASCII码
0x34、'a'等都是二进制机器码的一种记录方式。程序编译之后,'A'和数值65的二进制码是相同的,所以有时用int类型的数值常量代替char常量能得到同样的结果(很多时候还牵涉到隐式类型转换,初学者先不管),这其实是不太规范的。计算机喜欢用机器码,源码是写给人看的,所以有些程序虽然机器码是正确的,但源码语义不明,也是不好的。
(4)
楼主还是换本书看吧,真心的。入门的话很多问题不必深究,先写程序跑起来,选教材最重要是作者讲述方式与你的理解方式一致。
② 自学c语言 零基础 看什么书 该怎么学
《《啊哈C语言:小学生坐在马桶上都可以读懂的C语言编程入门书》.zip》网络网盘资源免费下载
链接:https://pan..com/s/1aEXrb1oxnRmMWUlafELpfQ
③ 有没有比龙书通俗易懂的编译原理书籍
大学课程为什么要开设编译原理呢?这门课程关注的是编译器方面的产生原理和技术问题,似乎和计算机的基础领域不沾边,可是编译原理却一直作为大学本科的必修课程,同时也成为了研究生入学考试的必考内容。编译原理及技术从本质上来讲就是一个算法问题而已,当然由于这个问题十分复杂,其解决算法也相对复杂。我们学的数据结构与算法分析也是讲算法的,不过讲的基础算法,换句话说讲的是算法导论,而编译原理这门课程讲的就是比较专注解决一种的算法了。在20世纪50年代,编译器的编写一直被认为是十分困难的事情,第一Fortran的编译器据说花了18年的时间才完成。在人们尝试编写编译器的同时,诞生了许多跟编译相关的理论和技术,而这些理论和技术比一个实际的编译器本身价值更大。就犹如数学家们在解决着名的哥德巴赫猜想一样,虽然没有最终解决问题,但是其间诞生不少名着的相关数论。
推荐参考书
虽然编译理论发展到今天,已经有了比较成熟的部分,但是作为一个大学生来说,要自己写出一个像TurbocC,Java那样的编译器来说还是太难了。不仅写编译器困难,学习编译原理这门课程也比较困难。
第一本书的原名叫《CompilersPrinciples,Techniques,andTools》,另外一个响亮的名字就是龙书。原因是这本书的封面上有条红色的龙,也因为獗臼樵诒嘁朐?砘?嘴域确实?忻?所以很多国外的学者都直接取名为龙书。最近机械工业出版社已经出版了此书的中文版,名字就叫《编译原理》。该书出的比较早,大概是在85或86年编写完成的,作者之一还是着名的贝尔实验室的科学家。里面讲解的核心编译原理至今都没有变过,所以一直到今天,它的价值都非凡。这本书最大的特点就是一开始就通过一个实际的小例子,把编译原理的大致内容罗列出来,让很多编译原理的初学者很快心里有了个底,也知道为什么会有这些理论,怎么运用这些理论。而这一点是我感觉国内的教材缺乏的东西,所以国内的教材都不是写给愿意自学的读者,总之让人看了半天,却不知道里面的东西有什么用。
第二本书的原名叫《ModernCompilerDesign》,中文名字叫做《现代编译程序设计》。该书由人民邮电出版社所出。此书比较关注的是编译原理的实践,书中给出了不少的实际程序代码,还有很多实际的编译技术问题等等。此书另外一个特点就是其现代而字。在传统的编译原理教材中,你是不可能看到如同Java中的垃圾回收等算法的。因为Java这样的解释执行语言是在近几年才流行起来的东西。如果你想深入学习编译原理的理论知识,那么你肯定得看前面那本龙书,如果你想自己动手做一个先进的编译器,那么你得看这本《现代编译程序设计》。
第三本书就是很多国内的编译原理学者都推荐的那本《编译原理及实践》。或许是这本书引入国内比较早吧,我记得我是在高中就买了这本书,不过也是在前段时间才把整本书看完。此书作为入门教程也的确是个不错的选择。书中给出的编译原理讲解也相当细致,虽然不如前面的龙书那么深入,但是很多地方都是点到为止,作为大学本科教学已经是十分深入了。该书的特点就是注重实践,不过感觉还不如前面那本《现代编译程序设计》的实践味道更重。此书的重点还是在原理上的实践,而非前面那本那样的技术实践。《编译原理及实践》在讲解编译原理的各个部分的同时,也在逐步实践一个现代的编译器TinyC.等你把整本书看完,差不多自己也可以写一个TinyC了。作者还对Lex和Yacc这两个常用的编译相关的工具进行了很详细的说明,这一点也是很难在国内的教材中看到的。
推荐了这三本教材,都有英文版和中文版的。很多英文好的同学只喜欢看原版的书,不我的感觉是这三本书的翻译都很不错,没有必要特别去买英文版的。理解理论的实质比理解表面的文字更为重要。
编译原理的实质
几乎每本编译原理的教材都是分成词法分析,语法分析(LL算法,递归下降算法,LR算法),语义分析,运行时环境,中间代码,代码生成,代码优化这些部分。其实现在很多编译原理的教材都是按照85,86出版的那本龙书来安排教学内容的,所以那本龙书的内容格式几乎成了现在编译原理教材的定式,包括国内的教材也是如此。一般来说,大学里面的本科教学是不可能把上面的所有部分都认真讲完的,而是比较偏重于前面几个部分。像代码优化那部分东西,就像个无底洞一样,如果要认真讲,就是单独开一个学期的课也不可能讲得清楚。所以,一般对于本科生,对词法分析和语法分析掌握要求就相对要高一点了。
词法分析相对来说比较简单。可能是词法分析程序本身实现起来很简单吧,很多没有学过编译原理的人也同样可以写出各种各样的词法分析程序。不过编译原理在讲解词法分析的时候,重点把正则表达式和自动机原理加了进来,然后以一种十分标准的方式来讲解词法分析程序的产生。这样的做法道理很明显,就是要让词法分析从程序上升到理论的地步。
语法分析部分就比较麻烦一点了。现在一般有两种语法分析算法,LL自顶向下算法和LR自底向上算法。LL算法还好说,到了LR算法的时候,困难就来了。很多自学编译原理的都是遇到LR算法的理解成问题后就放弃了自学。其实这些东西都是只要大家理解就可以了,又不是像词法分析那样非得自己写出来才算真正的会。像LR算法的语法分析器,一般都是用工具Yacc来生成,实践中完全没有比较自己来实现。对于LL算法中特殊的递归下降算法,因为其实践十分简单,那么就应该要求每个学生都能自己写。当然,现在也有不少好的LL算法的语法分析器,不过要是换在非C平台,比如Java,Delphi,你不能运用YACC工具了,那么你就只有自己来写语法分析器。
等学到词法分析和语法分析时候,你可能会出现这样的疑问:词法分析和语法分析到底有什么?就从编译器的角度来讲,编译器需要把程序员写的源程序转换成一种方便处理的数据结构(抽象语法树或语法树),那么这个转换的过程就是通过词法分析和语法分析的。其实词法分析并非一开始就被列入编译器的必备部分,只是我们为了简化语法分析的过程,就把词法分析这种繁琐的工作单独提取出来,就成了现在的词法分析部分。除了编译器部分,在其它地方,词法分析和语法分析也是有用的。比如我们在DOS,Unix,Linux下输入命令的时候,程序如何分析你输入的命令形式,这也是简单的应用。总之,这两部分的工作就是把不规则的文本信息转换成一种比较好分析好处理的数据结构。那么为什么编译原理的教程都最终把要分析的源分析转换成树这种数据结构呢?数据结构中有Stack,Line,List这么多数据结构,各自都有各自的特点。但是Tree这种结构有很强的递归性,也就是说我们可以把Tree的任何结点Node提取出来后,它依旧是一颗完整的Tree。这一点符合我们现在编译原理分析的形式语言,比如我们在函数里面使用函树,循环中使用循环,条件中使用条件等等,那么就可以很直观地表示在Tree这种数据结构上。同样,我们在执行形式语言的程序的时候也是如此的递归性。在编译原理后面的代码生成的部分,就会介绍一种堆栈式的中间代码,我们可以根据分析出来的抽象语法树,很容易,很机械地运用递归遍历抽象语法树就可以生成这种指令代码。而这种代码其实也被广泛运用在其它的解释型语言中。像现在流行的Java,.NET,其底层的字节码bytecode,可以说就是这中基于堆栈的指令代码的。
关于语义分析,语法制导翻译,类型检查等等部分,其实都是一种完善前面得到的抽象语法树的过程。比如说,我们写C语言程序的时候,都知道,如果把一个浮点数直接赋值给一个整数,就会出现类型不匹配,那么C语言的编译器是怎么知道的呢?就是通过这一步的类型检查。像C++语言这中支持多态函数的语言,这部分要处理的问题就更多更复杂了。大部编译原理的教材在这部分都是讲解一些比较好的处理策略而已。因为新的问题总是在发生,旧的办法不见得足够解决。
本来说,作为一个编译器,起作用的部分就是用户输入的源程序到最终的代码生成。但是在讲解最终代码生成的时候,又不得不讲解机器运行环境等内容。因为如果你不知道机器是怎么执行最终代码的,那么你当然无法知道如何生成合适的最终代码。这部分内容我自我感觉其意义甚至超过了编译原理本身。因为它会把一个计算机的程序的运行过程都通通排在你面前,你将来可能不会从事编译器的开发工作,但是只要是和计算机软件开发相关的领域,都会涉及到程序的执行过程。运行时环境的讲解会让你更清楚一个计算机程序是怎么存储,怎么装载,怎么执行的。关于部分的内容,我强烈建议大家看看龙书上的讲解,作者从最基本的存储组织,存储分配策略,非局部名字的访问,参数传递,符号表到动态存储分配(malloc,new)都作了十分详细的说明。这些东西都是我们编写平常程序的时候经常要做的事情,但是我们却少去探求其内部是如何完成。
关于中间代码生成,代码生成,代码优化部分的内容就实在不好说了。国内很多教材到了这部分都会很简单地走马观花讲过去,学生听了也只是作为了解,不知道如何运用。不过这部分内容的东西如果要认真讲,单独开一学期的课程都讲不完。在《编译原理及实践》的书上,对于这部分的讲解就恰到好处。作者主要讲解的还是一种以堆栈为基础的指令代码,十分通俗易懂,让人看了后,很容易模仿,自己下来后就可以写自己的代码生成。当然,对于其它代码生成技术,代码优化技术的讲解就十分简单了。如果要仔细研究代码生成技术,其实另外还有本叫做《》,那本书现在由机械工业出版社引进的,十分厚重,而且是英文原版。不过这本书我没有把它列为推荐书给大家,毕竟能把龙书的内容搞清楚,在中国已经就算很不错的高手了,到那个时候再看这本《》也不迟。代码优化部分在大学本科教学中还是一个不太重要的部分,就是算是实践过程中,相信大家也不太运用得到。毕竟,自己做的编译器能正确生成执行代码已经很不错了,还谈什么优化呢?
编译原理的课程毕竟还只是讲解原理的课程,不是专门的编译技术课程。这两门课程是有很大的区别的。编译技术更关注实际的编写编译器过程中运用到的技术,而原理的课
④ JAVA零基础者应该看什么书比较好
给大家推荐一些对Java学习有用的经典书籍,感兴趣的小伙伴们可以收藏一下!
1、《thinkingin Java》
这内容是否看着就很好理解。
这本书,通俗易懂,重点突出的书,相当适合初学者快速入门,缺点是段子太多,有时候会被当成笑话书来看。
以上就是推荐的7本Java经典书籍,希望对大家的学习有所帮助。也希望在成为一名更优秀的Java程序员的道路上,我们可以一起学习、一起进步。
⑤ C++算法的书籍(适合初学的)
一般来说,清华大学出版社的计算机书是最好的,主要有
1.《C++语言基础教程(第2版)》
出版社:清华大学出版社
作者:吕凤翥
书中全面、系统地讲述了 C++语言的基本概念、基本语法和编程方法,较详尽地讲述了 C++语言面向对象的重要特征: 类和对象、继承和派生类、多态性、虚函数、函数模块和类模板等内容。本书具有丰富的例题,每章后面均备有相当数量的练习题和作业题。 全书通俗易懂,由浅入深,突出重点,偏重应用。本书不仅可作为高等学校 C++语言课程的教材,还可作为 C++语言的自学教材
2.《面向对象程序设计与C++语言(第二版)》
出版社:人民邮电出版社
作者:杨庚/王汝传/叶晓国
本书系统地介绍了面向对象技术及C++语言的相关知识。内容包括面向对象技术的概念和特征、C++语言基础、类和对象、派生与继承、虚函数与多态性、模板、运算符重载、输入/输出流库、异常处理等。 本书注重基本概念,从实际应用出发,突出重点,叙述清楚,深入浅出,论述详尽,使读者既能深刻领会面向对象程序设计的思想,了解面向对象程序设计的特征,又能掌握C++语言的...
3.《C++语言程序设计教程》
出版社:清华大学出版社
作者:杨进才/沈显君/刘蓉
C++语言是目前最为流行的程序设计语言,它既支持面向过程的结构化程序设计,也支持基于对象的面向对象程序设计。本书依据ANSI C++标准,从面向过程的编程到面向对象的编程方法展开,形成一条自然流畅的主线,同时两个部分又自成体系,以满足不同基础与需求的学习者。内容包括:C++编程简介、数据类型与表达式、控制结构、函数、构造数据类型、C++程序的结构、类与对象、继承
4.《C/C++程序设计教程》
出版社:机械工业出版社
作者:秦维佳/伞宏力/侯春光/孟艳红
本书是《C/C++程序设计教程》的配套学习辅导用书。. 全书共分12章,内容包括C/C++语言程序设计初步,C语言的数据类型及表达式,结构化程序设计,数组、函数与指针的概念和实例,结构体与共用体,位运算与文件的概念,面向对象程序设计,类的继承与多态,C++的I/O流。每章包括知识体系、学习要点、上机实训、习题和参考答案。.. 本书可供初学者学习C语言,也可供...
5.《C++程序设计基础导学》
出版社:科学出版社
作者:赵海廷/严运国
本书为是实践训练环节必不可少的辅助教材。本书按照《C++程序设计基础》的顺序组织编撰,由基本要求、内容小结、典型例题分析、习题、实验及习题参考答案组成。本书的目的是通过典型例题剖析、习题和实验环节来巩固所学的理论知识,提高学生的实践操作水平。 本书适用高职高专的理工科学生,也适合于C++语言的初学者,还可供普通高校理...
⑥ 新手学c++用什么编译器比较好,知乎
如果单纯学习C,在WINDOWS 7及以下,可以用Borland C++ Builder 6.0,这个软件很老了,但是IDE设计的比较好,写代码时有函数原型的提醒,按住CTRL键点击任何一个量就可以追踪到定义处,非常适合初学者学习。
至于VC++6.0,差不多吧,只有函数参数的提醒,而且在WINDOWS7下使用会有兼容性提醒(可以忽略)。
再者不怕麻烦,最好是安装个虚拟机软件如Oracle VM VirtualBox,然后安装个ubuntu,桌面版的自带gcc,根本不用配置,用gedit编写源代码,用gcc编译,而且支持C99,非常强大。
此外,TC也可以考虑,不过TC有的地方不太规范,但好处是绝对灵活,用虚拟机装个UCDOS,然后安装TC2.0,学习来说,够用了,而且2.0版本不对函数有效性进行检测,
⑦ python在金融方面有哪些好的书 知乎
建模基本没怎么讲
也有人说深度不够,但是我认为这书就是走马观花看看,了解python在finance方面的生态圈的。知道都有什么工具,都能实现哪些功能,具体做的时候再深究。