愿你们一路前行——写给新手们的一篇文章

本文面向

  • 不知道Hello world但是想搞个大Hello world的人——也就是想学编程的同学。

  • 由于自身基础较差在学习的路上被虐的哭天喊地的同学。

写这篇文章的目的

  1. 自己当年刚开始学习时走过不少弯路(虽然现在还是坑在路上),当时如果一个不错的入门介绍——比如像这篇!那么肯定可以让学习效率翻一翻。

  2. 总有人问我:“感觉你们这行不错哦,可以和我说说怎么才能加入你们吗?”之类的话,然后我告诉他!@#$%^&*。然后过阵子总有人还会问我这个问题...恩,我快成复读机了。

  3. 总的来说,我想让上述的同学们少走弯路,更快进入这个神奇的世界。如果这篇文章能够帮助到你们,我会很高兴的。

学习语言前所要准备的

计算机科学基础——听起来很高大上?其实最主要的就是操作系统、网络、数据结构与算法。

我知道很多同学会不屑一顾:“这种理论上的东西没什么软用,我们要做的是酷炫应用层应用!”。那么来举几个栗子,别吃掉:

  • 关于操作系统的问题:在面试一些没有实际项目经验的实习生时经常能听到进程和线程的区别是?而且,几乎所有的编程语言都有这些概念。同时操作系统中的许多设计思想可以运用到一些系统设计中去。

  • 关于网络的最常见问题:简述当你在浏览器中输入 google.com并且按下回车之后发生了什么?其中的request和response概念在网络编程里是非常常见的。

  • 关于数据结构与算法。会培养你的计算机思维,以及一些解决问题的思路。

推荐相关资料(顺序为从简单到难):

  • 网络相关——《网络是怎样连接的》、《图解http》、《图解TCP IP第5版》、《计算机网络 第六版》(谢希仁)、《计算机网络 自顶向下方法》、《TCP IP详解》系列

  • 操作系统相关——《程序是怎样跑起来的》、《操作系统——精髓与设计原理》

  • 算法相关——《啊哈!算法》、《算法图解》、《算法 第四版》

标记为粗体的书我或多或少都有了解过,大多是比较轻松的教学风格,防止新手们在学习途中阵亡。

推荐一个相关算法学习的一个教学社区——计蒜客。另外,请好好学习英语。不然你以后会很吃力,而且你的发展也会遇到瓶颈。

在了解以上的知识以后,你相当于有了一个“不错的开局”。

选择一门你喜欢的语言

为什么要喜欢?因为喜欢你才会去经常用它,并会更加深入的了解它。

在这里罗列几个常见的语言:

  • Java:经过几年风风雨雨成为了最稳健的语言之一。其社区也非常活跃——这意味着你的疑问能够很快被解决。一般用于企业级应用和Android开发。

  • JavaScript:名字里带Java的语言,运气都不会太差哦。从一个玩具语言到如今变得越来越强大,能做的事情也是越来越多了——从前端跨越后端。另外不得不说,这个语言很有“特色”。

《Stack Overflow 发布 2016开发者调查报告:JavaScript最受欢迎,46%开发者没有相关学位》

  • PHP:什么?最好的语言?这只是个梗!它是语言界里的一棵常青树。用于WEB开发,就业面极广。

  • C:古老的语言。C语言和汇编一起学更加搭配哦。常用于嵌入式开发、Linux内核。

  • C++:俗称C艹。性能极高,但是代价是对开发者的要求也是极高的。服务器端的大杀器。

  • Go:Google爸爸家的语言。在云计算领域较为常见——因为其部署方便,作为Agent简直是最佳实现。另外一个特性是协程,可以简单理解为轻量级线程,但是完全由go自己控制。

  • Python:运维神器。很简单,易上手,能干很多事情。

关于动态语言和静态语言你所要知道的是:动态语言的项目大起来以后极其难维护,因为没有了类型推导。而且许多错误只有运行的时候才能得知,为了保证代码的健壮性,你必须得写单元测试。

参考文章:

  • 2017-04-23:启蒙老师马士兵:编程语言哪家强?

学习

学习是一件持之以恒的事情。尤其在这个行业,这句话愈发有道理——程序员的一辈子就是不停的学习、学习、再学习。才不会被行业淘汰。

在这里推荐几个新手用的上学习网站

  1. 慕课网——良心网站。但少数教程有坑

  2. 汇智网——讨厌搭建环境的同学看过来

  3. 极客学院——课程质量一般,似乎已经死了。Wiki里面资料挺多的

  4. [菜鸟教程——各种教程,但大多讲的比较浅[9]

  5. 自强学堂——类似菜鸟教程,但质量再低一点

  6. W3CSchool——老牌网站

  7. 图灵社区——很喜欢在这里买电子书,质量也不错
    请尊重版权

  8. 廖雪峰老师的博客——Python、Javascript、Git的教程
    不学Git你会后悔的

  9. CodeCademy——一个在线编程网站

社区

程序员是需要交流的。在交流中,我们可以学到更多知识。这远远比一个人学习学的快多了。

  1. GitHub——程序员标配,展现实力的地方。你可以在这里上传你所写的一些有意思的东西。还有,写一个好的README是很重要的。

  2. Stack OverFlow——一个活跃的问答社区。但是在问问题前记得Google一下,不然会很惨的。

  3. V2EX——很有意思的一个社区,有点卧虎藏龙的感觉。

  4. SegmentFault——一个问答社区,多逛逛是能找到不错的干货的。就是这里,你怎么看?

  5. 稀土掘金——好多干货。

  6. CSDN——商业化气息有点浓重的社区。它的下载节点非常好用。

其他推荐

除了学习的网站和交流的社区。我想你还会碰到一些麻烦,请看下面。

  1. 系统。此时此刻我想大喊信仰unix吧。mac和部分linux桌面发行版还是不错的——2015年最流行的10个Linux发行版。在这点上我还是比较机智的,我选择在Linux上进行开发。能节省不少折腾的时间——Windows下的幺蛾子实在多。

  2. Windows下有什么坑?Windows下的文本编辑器是个坑。如果你不是IDE党,推荐使用Notepad++。重度依赖文本编辑器的人可以考虑Atom,插件非常丰富。点击这里

  3. IDE。Eclipse可以算是一个万金油IDE,它的插件非常丰富。也许你的电脑上只需要一个IDE。

  4. Git——简单来说就是你给你的项目添加了很多代码去实现新功能但是突然发现搞砸了,在Git上输入一个命令就可以帮你“穿越时空”,回到没有添加新功能的时候。

  5. Google——百度是个坑,请用谷歌。what?你说我骗你?没有这个网站?骚年,看来你的上网姿势不正确。

  6. 上网的姿势。推荐使用Lantern,如果你使用付费版并使用了该邀请码:LKWVKX,可以获得额外优惠。

总结

简单的说明了开始学习编程前所要具备的基础知识,以及一些对语言的简单介绍。介绍了一下方便学习的网站以及一些社区,最后推荐了几个有效加快效率的“工具”。

最后,如果有什么不对的地方或者可以改进的地方请提出来!

你可能感兴趣的:(新手学习,新手,新手向,新手解疑)