新手学习C语言编程,一定要先用记事本练习写代码吗?我的建议是:先不要这么做。理由很简单呀,有如下几点:
-
使用记事本写代码不利于熟悉编程环境。使用记事本写代码需要自己一个字符一个字符地敲代码,写完代码后在命令行模式下使用编译工具编译代码程序,编译完了之后在命令行下再运行程序,如果编译或者运行出错了就需要在命令行下调试代码,整个过程非常繁琐。初学者不应该把精力放在这些繁琐的事情上。
-
初始学习C语言的小伙伴,精力应该是重点放在C语言的基础知识学习方面,比如C语言的语法、C语言重点难点概念、C语言标准函数库等。如果把精力放在极不方便的记事本上写代码有点本末倒置。
-
建议使用现成的集成开发环境IDE!现在有很多的很强大的很方便的集成开发环境,比如VS、Eclipse CDT、Dev C++等。它们提供了强大的语法提示功能、自动补齐功能、方便的编译运行环境、方便的断点跟踪功能等,对于初始学习C语言的小伙伴们完全可以把精力放在C语言本身上,而不用耗费大量的精力去搞记事本带来的种种不便。
-
关于记事本写代码也确实大有人在,不过这是针对于程序员老鸟了。人家对各种编程环境都已经非常熟悉了,那么此时使用记事本对人家来说反而是一种极大的方便。如果你对额水平还未达到大牛级别,建议别再记事本上写代码!
总之就是一句话,C语言初学者精力一定要放在C语言本身的基础知识上,不要去关注一些无关的浪费精力的事情上!
所有的编程语言最后会编译成C,再编译成汇编,最后落实到硬件操作上吗?
首先上结论:
(1)不是所有的编程语言都要先编译成C
(2)甚至有编程语言连编译成汇编这一步都跳过了。
(3)不是所有的编程语言都需要编译,有的是纯解释型语言
1. 编程语言到硬件执行之间到底发生了什么?
硬件执行的本质就是一堆电子元件的“开关”动作,开、关两种状态可以用二进制的1和0来表示,这样整个硬件的执行就和二进制对应了起来。硬件是无法理解上层的高级编程语言的(比如Java、C++、C,、C#、Javascript…… )。
那么为什么要发明高级编程语言呢?因为:
(1)人类直接与二进制打交道,比较费力,与自然语言相隔太远,不利于相互交流和协作,从而很难诞生高效的大规模团队协作来完成超复杂规模的软件设计、开发。
(2)每种硬件平台对应的二进制设计都不太相同,如果直接与二进制打交道,那么就要不断地重复造轮子,不利于跨平台的设计和协作。
既然需要高级编程语言,而硬件又只认识二进制,那么怎么去解决这两者之间的鸿沟呢?答案就是:编译和解释。
2. 编译是什么?
你可以把编译类比成一次性翻译完整的文学著作。相当于把用高级编程语言编写的源代码一次性转换成二进制。
人们摆脱二进制的第一步尝试是设计汇编语言和开发汇编器。每一条汇编指令与对应的二进制是一一对应的,换言之,汇编语言只不过是二进制的一种助记方式。
在有了汇编器之后,可以在汇编语言之上,再来设计高级编程语言和高级语言的编译器,后者可以通过汇编器转换成二进制。通过这样的不断递归的设计、开发过程,就可以设计出非常高级的编程语言。具体的原理分析可以参见笔者的专栏《华为方舟编译器源代码分析》的《先有蛋还是先有鸡:编译器本身是怎么被编译出来的?》。
只要有能转换出最终二进制的高级语言编译器,那么其实是不需要有显式的汇编器和汇编语言的。
3. 解释是什么?
解释相对于同声传译。Javascript这些脚本语言,大部分都是采用解释器来做翻译。它并不需要像编译那样,一次性把所有的源代码转换成最终的二进制。而是在运行的过程中,一边翻译一边执行。与上面设计高级编程语言的编译器的方式一样,高级语言的计时器也可以通过递归的方式设计、开发。到最后,只要有能转换出最终二进制的高级语言解释器,那么其实是不需要有显式的汇编器和汇编语言的。
关于解释器的具体原理,以及加强型算法——如JIT,可以参见笔者的专栏《华为方舟编译器源代码分析》的《干掉Java虚拟机来提升应用程序性能:只有华为想到了吗?》。
4. 一些直接面向高级语言的机器
历史上还专门开发过面向高级语言的机器,中间是不需要汇编语言过渡的。比如大名鼎鼎的LISP语言。曾经人们专门为LISP语言开发过对应的机器。但是最终的商业成果并不理想,主要是当时一些条件还不成熟。
对于一个大一计科新生,有什么代码行数在500~1000的程序(C语言)可以试着写来练手?
首先要明确一个思想:面向职业编程。
计算机专业的学生,毕业后多半到银行、互联网这些企业工作。从工作内容上看,编程主要分算法、应用两大类,应用还分服务端、web前端、app客户端、大数据这几类。
新人编程入门,建议先熟悉算法和原理,就是从数据结构出发,编写相应的算法程序,行数也一般在500-1000行以内。
掌握一定编程思想之后,可以尝试python进行数据分析,编写相关大数据的分析程序,这样可以进一步了解编程的应用。
然后可以学一下java、html、js、css、数据库,进行web开发,编写一个博客系统。
只有经历过算法、应用、数据分析这几类编程之后,才能清楚自己更适合做哪一方面,从而制定更清晰的职业规划,选定一类深入学习和研究。
最后说一下语言。现在的教育方式和十几年前一样,大一新生接触的第一门语言都是C语言,但现在IT技术发展很快,单纯一种语言难以支撑庞大的产业应用,因此作为计算机专业的程序员,重点是打好基础、熟悉编程思想、掌握学习方法,只有这样才能应对后续新技术的发展。
学习C语言有什么好的编程软件推荐?
学习C语言有什么好的编程软件推荐?这个目前来说就非常多了,作为一门起源比较早、偏底层的开发语言,c语言在操作系统、嵌入式、服务器方面有着非常广泛的应用,自然对应于编程软件也非常多,下面我简单介绍几个,感兴趣的朋友可以尝试一下:
轻便灵活的开发软件,适合于初学者
-
code::blocks
这是一个免费、开源、跨平台的c/c++编程软件,基于wxwidgets开发而成,相信许多做c语言开发的朋友应该非常熟悉,插件扩展丰富,功能拓展良好,支持自动补全、语法提示、代码补全等常见功能,除此之外,自带有许多工程模板,可以很方便的创建OpenGL、Qt、DirectX等常见应用,个人使用非常容易掌握,尤其对于初学者可以说是非常合适:
-
dev-c++
说起dev-c++,相信许多初学c语言的朋友应该非常熟悉,许多高校都采用这个软件作为教学,相比较功能齐全的code::blocks,dev-c++功能比较单一,仅支持windows平台,插件扩展少,而且不支持自动补全、语法提示等常见功能,初学来说可以很好的锻炼基本功,尤其是编码能力,但对于项目开发来说,效率有些捉襟见肘,而且现在官方也已经停止更新和维护:
智能强大的开发软件,适合于专业开发者
-
visual studio
说起visual studio这个大名鼎鼎的开发神器,相信只要是做编程的朋友无人不知无人不晓,号称宇宙第一IDE环境,只要你能想到的功能,vs几乎都能满足,除了基本的vb、c/c++、c#,新版本中也加入了python、java、node.js,智能补全、代码高亮、语法提示等功能非常不错,许多高级功能,包括cmake、单元测试等也能很好支持,初学来说不容易掌握,但熟悉后的确是一个开发利器,尤其是多人协作的大型项目:
-
clion
这是jetbrains公司专门为c/c++开发的一款软件,说起jetbrains,许多朋友应该非常熟悉,idea、pycharm、phpstorm这些良心软件都出自jetbrains,作为同类型产品,clion同样非常强大,智能补全、代码高亮、语法提示等功能非常不错,兼容cmake、单元测试、代码重构等高级功能,如果你需要跨平台开发,习惯了jetbrains全家桶,可以使用一下clion,很快就能掌握,当然,软件本身是不免费的:
目前就推荐这4个不错的c语言开发软件吧,初学来说可以使用code::blocks、dev-c++等简单易用的软件,熟悉后,可以使用visual studio、clion等专业强大的软件,当然,你也可以使用vs code、source insight等轻量级代码编辑器,都行,网上也有相关教程和资料,介绍的非常详细,感兴趣的话,可以搜一下,希望以上分享的内容能对你有所帮助吧,也欢迎大家评论、留言进行补充。