程序员学习路线

关注并且回复C语言资料,可获得C语言视频学习资料及练习题目一套。


总结知识和打字都挺不容易的,如果这篇文章有让你觉得可以提升的地方,希望你可以用手指点一下关注或者转发,你的每一份支持是我坚持的动力。

我在这里提及一下我自己,知乎或者CSDN有很多人都比我厉害,我在总结知识的过程中也在不断的学习,尝试着用自己的一份努力去改写自己的命运。人生苦短,不能得过且过。



我们每一个人可能都会带有一份梦想来学习编程,成为黑客?做一些隐秘的事情?高工资人群?计算机爱好者?等等之类的
我觉得都有的,但是你想成就你的梦想,并不是想一想就能够完成的,你需要花费大量的时间和精力,”你今天的选择和努力,决定了你明天的道路“。


很多人都认为计算机这个专业很久之前就已经热门,市场对这方面的人才已经饱和了,但是我很肯定的告诉你,并不是这样子的。事实上,初级程序员是属于饱和了,比较难找到工作,但是中级和高级程序员都是稀缺的。现在的你,努力一样来得及去追赶。初级程序员使用工具,中级程序员修改工具,高级程序员创造工具。然而是什么造成了这种差距?是每个人对计算机底层的认识,以及算法思想上所造成的差距。有很多的人在学习编程的路上,就已经半途而返,我希望你们也能够坚持下去,有个清晰的目标。


这里不会提及太多关于程序员工资,岗位,更多的是关于对整个程序员的学习路线。


什么是语言?语言有分:机器语言,汇编语言,高级语言。

计算机是由无数个逻辑电路组成的,电路的逻辑只有0和1两个状态,0表示低电平,1表示高电平电脑只认识0和1这两个数字,所有的数据在电脑中都是以0和1组成的编码存储的。而机器语言就是二进制语言,只有0和1,在早期:

如果你要输出"hello world“可能就是000001111011之类的一串信息,于是为了产生了汇编语言,汇编指令是机器指令便于记忆的书写格式,把一大串00001110的代码化简为mov,add等的指令。随着电脑的发展,出现了高级语言,是以“人”的思维逻辑来描述电脑运行的语言,完全脱离了CPU的“思维”模式。

                                                                                    图片来自博客园




我们这里讲解下高级语言是怎么让电脑运行的:

高级语言的代码编译->汇编语言代码,汇编语言代码编译->机器码->电脑识别运行。


                                                                                    图片来自简书

            

因为要高级语言代码要经过一系列的编译才能运行,这些过程就体现出了很多的弊端。首先高级语言写的程序占用内存空间大,并且效率比较低。

如果有兴趣的话,可以去看看“64kb视频”,我们现在所用的一些软件都是以M来计算的,像一个比较小的程序就几KB了,但是64kb做成了一个视频。


那我们为什么要学习高级语言呢?这里得说它的优点:易学、可读性好、接近自然语言、可移植性强(可移植性是软件质量之一,这里可以忽略)


然后介绍下高级语言的学习路线:

因为我现在开设的公众号是C语言的基础课程,所以我重点讲C语言的进阶:

语言就是跟计算机沟通的一种方式,像andriod手机的app为什么用java写,苹果手机的app为什么要用Objective-C语言写,都跟它的系统有关系,像android操作系统本身是使用Java开发,用java语言去编写app,交流的会“无障碍”.


这里详细介绍下C:

首先先把C语言的语法理解并且明白,重点是优先级和结合性。

难点:数组和指针以及结构体。我也会尽量的把指针这一块给讲解清楚。


接下来可以学习C语言的标准库:

stdio.h:标准I/O库

math.h:数学库
string.h:字符串处理

stdlib.h:通用工具库
time.h:时间和日期库



当你把C语言的基础学的差不多的时候,就要开始”练“,多写一些基础的和经典的程序。也许别人问你会不会写贪吃蛇的时候,你可能想想发现自己还真不会。这里我解释一下:什么是算法,算法是一系列解决问题的清晰指令,然后用来解决现实生活的问题。贪吃蛇,你可以把它当作一个问题,设计一系列的算法去实现,然后再利用GUI(图形用户界面)做出视觉效果就能实现了,GUI这方面比较简单,可以自学。(前提是你要能设计出算法)




然后进阶C++以及学习数据结构:C跟C++的差别并不是很大,只不过由面对过程变成了面对对象,C++相较于C有一部分功能的升级和优化。如果你能把C学好,C++也不会是你的难题,这也是为什么那么多人主张从C语言开始入门的原因。


数据结构:数据结构是计算机存储、组织数据的方式,像顺序表,链表,栈,队,树等逻辑结构。学习这些有什么用呢?数据结构可以带来更高的运行或者存储效率,比如别人要找到他自己的信息,那么你要怎么去存储信息让计算机更方便的去找到他个人信息?别人设计的程序需要0.1秒,如果你设计的程序只需要0.01秒,那这就是你的竞争力。数据结构就是你超越别人的一个重要知识。


参加ACM竞赛:国际计算机学会。ACM是一个世界性的计算机从业员专业组织,创立于1947年,是世界上第一个科学性及教育性计算机学会,目前在全世界130多个国家和地区拥有超过10万名的会员。ACM是全世界计算机领域影响力最大的专业学术组织。提高自己解决一系列问题的能力。


推荐一些书籍:


必备:《C语言程序设计》:最小白的一本带你进入C语言的书。

      

《数据结构》:可以选择一本C++的数据结构,学习数据结构的同时学习C++,但是注意要分清C和C++。不要把面对过程和面对对象混淆。理解清楚面对对象和面对过程的概念。



《C primer plus》:你可以认为它就相当于一本字典,可以查库函数的资料。


C语言四大圣书的两本:《C 专家编程》:展示了优秀的C程序员所使用的编码技巧,以及对以及如何进一步学习C++等问题进行了细致的讲解和深入的分析。

《C缺陷与陷阱》:讲解C语言自身得陷阱和缺陷,减少代码中许多常见的Bug。



《深入浅出MFC》:也就是关于界面化设计的书,不太建议前期学,因此位置放到了最后面。


最后面的总结:语言其实很多都是相通的,当你把C语言学精之后,再去学别的语言,你会很快就上手,主要就是刚开始入门比较困难。

推荐练习的地方:PTA,或者是一些比较大型的OJ网站:杭州电子大科技OJ,北京大学OJ。


另外我想说最重要的一点:其实学习编程并不是说你一定要学的多厉害,用这个来赚钱,学习编程的目的是什么?是为了帮助我们更方便的生活。如果你是一个工作人员,也可以学习编程,你可以用编程让电脑为你减轻负担,将你每天重复的许多动作让电脑帮你做。这才是学习编程要达到的目的。

你也可以动手创造属于你自己的未来,不要轻易的看到前面的困难你就选择了放弃。命运是由自己书写的。



快点关注我们吧!