初学编程丨从零开始学习编程的基本路线,BAT程序员亲手总结!

编程并非说代码怎么写,框架怎么用,业务怎么转换为代码逻辑,这些都不是编程的要素(但倒是工做的刚需......)。我认为按照下面这个路线来学习编程,会使本身在学习的路途上少去不少问题(好比为啥会有多线程问题啊,什么是阻塞啊,为啥单线程模型反而更快啊,I/O为啥是阻塞的啊,为何要报NPL错误啊等等等等,可能不太恰当,打个比方嘛)。前端

先学一门程序语言

首先得掌握编程的逻辑。算法

要学会把生活中的问题,用程序语言的方式来转换。最简单的学习就是直接学一门编程语言。能够是C/C++,Python,Go,Java, C#,Kotlin,Swift等等面向对象语言,随便选一个喜欢的/之后会用到的均可以。spring

你会学习到变量、循环、条件判断、类与对象、基本数据结构的一些用法甚至更深一些,获取文件、控制栏输入输出等之类的东西。这是一门程序语言的基础。编程

而后最好开始学习数据结构

由于此时掌握了基本编程语言的你,是彻底能够把理论的数据结构转换为代码逻辑的。数据结构通常不须要了解一些底层复杂的机制,也暂时无需考虑并发问题。基本的线性表、树状结构、图型结构、查找/排序算法,高级数据结构等等,慢慢学习并总结,尝试用这些数据结构与算法去类比生活中的一些事务。那时你会发现,算法无处不在(就跟数学同样)。后端

能够上LeetCode看看了

掌握了编程语言与数据结构,就去刷题吧。鲁迅说过,刷题千万遍写代码若有神。大胆地刷吧,不会就看答案,去理解答案,而后思考并总结其方法,最好是写文章记录下来。写文章不要记流水帐,必定要你彻底弄明白了再去写,保证写下来的都是本身所领会到的(虽然百分之九十九都是别人写过的...认可吧这就是事实...)。LeetCode社区还会有一些比赛之类的,虽然我还没去体验过。设计模式

计算机是如何运做的?

若是你不知道计算机究竟是怎么运做的,那你也很难去深入理解你写的那些涉及多线程、I/O、文件、网络的代码的原理。《计算机组成原理》《操做系统》《计算机》这两本书也是计算机系学生的必修课。为啥要学这个,这不明摆着嘛。。浏览器

一开始挺枯燥的,慢慢看,有耐心一点。其中会有一些东西运用到数据结构,正好派上用场。缓存

要理解处理器、磁盘、网络、内存这些东西的基本运做方式,后面才能为你解决一些想不通的问题(好比读取文件时为啥CPU能够暂时挂起啥都不干)。服务器

看完这些知识后你也基本上理解了你写的代码究竟是在干吗了。微信

作一个网站或者手机App或者桌面App?

此时你应该基本掌握你学的这一门语言了。你想作一点什么,好比你学了Kotlin想开始作安卓应用?上google看开发文档或者买本书照着学就好了。照着步骤一步一步来,不会难倒你的。也许会有一些疑问,为啥这个地方会这么设计啊,为啥这些东西能够这么用啊,此时去学一些设计模式,而后你也许就能理解为啥源代码里一些东西会这么设计。

学网站的话,C#、Java、Python之类的均可以作到。另外因为网页确定是浏览器打开,因此你还得去学一学前端的东西(JS、Html、CSS)。难不到你的,只是作基础网页(基本的数据展现与输入)的话用不了太多知识。网上各类资源都有,去照着作就是了。另外学一学基本的UI设计、平面设计知识会让你写出来的网页更好看一些(起码得配上本身帅气的脸吧)。

后端好比Java(目前我只会这个),目前开发网站最须要的就是spring-boot了,百度去搜,或者掘金站内都有不少东西我就不讲了,能够基于servlet也能够基于netty来开发,随便你。甚至你还能够用kotlin来开发Java后台项目。Kotlin你就理解为是Java语言的一种方言就行了,百分之百兼容Java,且某些方面更好用。在学这些框架的过程你也会更加深刻地接触到I/O、网络、多线程的知识。学习一门语言到越后面就会发现知识都是相通的,前面学到的东西都能为你提供帮助。

桌面应用的话C#无疑是王者了。毕竟巨硬满天下。可是也有一些其余方法能够开发桌面应用好比基于JS的Electron、还有基于C++的Qt。不少,我比较推荐C#(若是你没学过C#能够去学一学,此时的你多学一门语言仅仅是一两周就搞定的问题,固然我指的是能用而不是深刻。多学一门语言也能让你认识到不一样的编程语言之间的差别与优缺点)。

继续深刻?服务器 or 客户端

服务器天然就是指Java这类后端方向的领域了,而客户端则表明了网页前端、桌面/手机App这类方向。由于两者注重的方向出现了差异。因此深刻工做的话,你就要在本身所擅长的领域多下功夫。

后端天然要去研究分布式、缓存、消息、SOA模型之类的东西,这些能让你的后端网站拥有更健壮的体格,让它们可以长久地运行下去;你要多了解一下服务器Linux系统,由于之后会常常打交道的。后端的东西很深刻,也许发展到必定程度你要根据具体的需求去建立轮子或者改造现有的轮子。任重而道远呐~

前端则更加注重用户体验,界面交互逻辑、性能之类的,由于是用户直接看到的、直接触碰到的。毕竟客户端就那么大(你面临的多是一台十年以上的IE浏览器 / 一台iPhone5 / 一台小米2S,你懂的,若是人人都是Surface Laptop或者iPhone11Pro或者华为保时捷那就没啥好担忧的了,不可能嘛),你要在有限的资源中不断挖掘性能,具体我就不懂了咱暂时也不会~~

写在最后

也许你须要学习一下英语,固然你会的话就当我没说。编程毕竟源自国外,学的东西都是从国外传来的,官方不少的资源都是英文版,因此英语格外重要。

也许不是很全面!但大概是一个比较正确的方向吧!但愿对你们有帮助吧~并且我本身是一个C/C++的软件开发工程师,若是你选择的是C/C++的方向的话,自学C/C++编程难度很大,不妨和一些志同道合的小伙伴一块儿学习成长,也有一些源码和资料分享!

笔者的C语言C++编程学习交流圈子,【点击进入】微信公众号:C语言编程学习基地

最后就以一份关于C/C++编程的学习路线来结束吧!

相关文章
相关标签/搜索