chaoz的杂货铺

生命有息、学无止境、折腾不止

0%

程序员练级攻略之笔记

专业基础篇内容简介:

在编程语言方面,推荐学习C、C++和Java这三个工业级的程语言。
理论学科方面,需要学习算法、数据结构、网络模型、计算机原理等内容。
系统知识方面会讲述 Unix/Linux 、 TCP/IP 、 C10K 挑战等专业的系统知识。

最后给出了你可以选择的几大从业方向。
  • 如果你对操作系统、文件系统、数据库、网络等比较感兴趣,那么可以考虑从事底层方面的工作。
  • 如果对分布式系统架构、微服务、DevOps、Cloud Native等有热情,那么可以从事架构方面的工作。
  • 如果是对大数据、机器学习、人工智能等比较关注,那么数据领域可以成为你一展身手的地方。
  • 如果你对用户体验或者交互等更感兴趣,那么前端工程师也是个不错的选择。
  • 此外,安全开发、运维开发、嵌入式开发等几大方向中,也为你提供了丰富多彩的发展空间。

与孩子一起学编程 这本书以Python语言教你如何写程序,是一本老少咸宜的编程书。其中会教你编一些小游戏,还会和你讲基本的编程知识,相当不错。

两个在线编程入门的网站:

Codecademy: Learn PythonPeople Can Program ,你也可以在这两个网站上学习Python,只不过是英文的。

在线编程的小练习

可以到 CodeAbbey 上去做一些在线编程的小练习。

###### 第二份入门教程,做个网页吧。
MDN的 Web开发入门 MDN全称是Mozilla Developer Network,你可以认为是Web方面的官方技术网站。这个教程会带着你建立一个网站。然后,你可以把你的网页发布在GitHub上。
这两份教程都很不错,都是从零开始,带着你从环境准备开发,一点一点地从一些简单而有意的东西入手,让你感觉一下编程世界是什么样的,相信这两个教程可以让零基础的你喜欢上编程。

提高英文能力的建议
  • 1、坚持Google英文关键词,而不是在Google里搜中文。

  • 2、在GitHub上只用英文。用英文写代码注释,写Code Commit信息,用英文写Issue和Pull Request,以及用英文写Wiki。

  • 3、坚持到YouTube上每天看5分钟的视频。YouTube上有相关的机器字幕,实在不行就打开字幕。

  • 4、坚持用英文词典而不是中文的。比如:剑桥英语词典 或是 Dictionary.com 。你可以安装一个Chrome插件 Google Dictionary

  • 5、坚持用英文的教材而不是中文的。比如:BBC 的 Learning English ,或是到一些ESL网站上看看,如 ESL: English as a Second Language 上有一些课程。

  • 6、花钱参加一些线上的英文课程,用视频和老外练习。

编程规范

我们在写代码时,最好参考一些已有的最佳实践。为什么要有编程规范和最佳实践,要让所有人按一定的规范来编程呢?有下面几个主要原因。

  • 可以让你的代码很规整,这有利于代码易读性,从而可以更容易地维护。
  • 提升开发效率,我们知道,效率来自于结构化,而不是杂乱。
  • 可以让你的软件避免一些容易掉坑的陷阱,也让Bug更少,质量更高。
  • 可以让团队成员更高效率地协作。
一些学习要点
  • 学习HTML基本语法。
  • 学习CSS如何选中HTML元素并应用一些基本样式。
  • 学会用 Firefox + Firebug 或 Chrome 查看你觉得很炫的网页结构,并动态修改。
  • 在一台Linux机器上配置LEMP - Ubuntu/Nginx/PHP/MySQL这个环境。
  • 学习PHP,让后台PHP和前台HTML进行数据交互,对服务器相应浏览器请求形成初步认识。实现一个表单提交和反显的功能。
  • 把PHP连接本地或者远程数据库 MySQL(MySQL 和 SQL现学现用够了)。
    这里,你可能会问我,入门时有三个后端语言,一个是Python,一个是Node.js,一个是PHP,你对这三门语言怎么看?老实说,Python我还看好一些,PHP次之,Node.js最后。原因是:
  • Python语言的应用面还是很多的。(当然,性能可能会有一些问题,但是用于一些性能不敏感的和运维或是一些小工具相关的,还是非常好用的。另外,Python的应用场景其实还是很多的,包括机器学习和AI也有Python的身影。用Python来做一些爬虫、简单的中间件、应用或是业务服务也是很不错的。)
  • PHP也是一个比较主流的简单的语言(PHP在目前来说还是一个比较主流的语言,但其发展潜力有限,虽然可以让你找得到工作,但是一般玩玩就行了)。
  • Node.js 号称 JavaScript 的后端版,但从目前发展来说,在后端的世界里,并不能承担大任,而且问题很多。一些前端程序员用它来做后端的粘合层,我个人觉得这样做法只是掩盖前后端配合有问题,或是接口设计思维上的懒惰,我还是希望前端程序员应该认真学习一门真正的后端语言。
入门级的编程知识

入门级的编程知识(有道笔记)

23个设计模式

学习面向对象的设计模式时,你不要迷失在那23个设计模式中,你一定要明白这两个原则:

  • Program to an ‘interface’, not an ‘implementation’

    • 使用者不需要知道数据类型、结构、算法的细节。
    • 使用者不需要知道实现细节,只需要知道提供的接口。
    • 利于抽象、封装,动态绑定,多态。符合面向对象的特质和理念。
  • Favor ‘object composition’ over ‘class inheritance’

    • 继承需要给子类暴露一些父类的设计和实现细节。
    • 父类实现的改变会造成子类也需要改变。
    • 我们以为继承主要是为了代码重用,但实际上在子类中需要重新实现很多父类的方法。
    • 继承更多的应该是为了多态。
系统知识一些学习要点
  • 用这些系统知识操作一下文件系统,实现一个可以拷贝目录树的小程序。
  • 用fork / wait / waitpid写一个多进程的程序,用pthread写一个多线程带同步或互斥的程序。比如,多进程购票的程序。
  • 用signal / kill / raise / alarm / pause / sigprocmask实现一个多进程间的信号量通信的程序。
  • 学会使用gcc和gdb来编程和调试程序(参看我的《用gdb调试程序》)。
  • 学会使用makefile来编译程序(参看我的《跟我一起写makefile》)。
  • Socket的进程间通信。用C语言写一个1对1的聊天小程序,或是一个简单的HTTP服务器。
喜欢这篇文章?打赏一下作者吧!

欢迎关注我的其它发布渠道