编程学习

作为一个程序员,编程能力可谓是安身立命的本钱。从更大的范围来说-计算机科学已经覆盖了我们生活和工作的方方面面。

比如手机app给我们的生活带来了巨大的便利性,出去买个菜再也不用带钱包了扫描支付搞定。去国外旅行自驾游再也不用担心迷路了,有google map帮你指路。
不仅如此,还可以通过编程来处理一些复杂的问题,比如用人工智能下个围棋。2018世界杯要来了,通过机器学习分析FIFA世界杯历史数据,来预测小组出线情况和世界杯冠军的归属。


2018世界杯冠军预测

难怪当年乔帮主说:

每个人都应该学习一门编程语言。学习编程教你如何思考,就像学法律一样。学法律并不一定要为了做律师,但法律教你一种思考方式。

长期来看,编程可能成为在未来每个人必须要掌握的一项技能,如同英语,数学,写作一样重要。

什么是编程?


编程是通过编写计算机程序来解决问题。 程序是解决一个特性问题的计算机指令的集合。举个例子,比如给定一个很大的数字序列如{2,5,43,76,...,453},要求序列的和,查找最大数,求平均值等。对于这样的问题,人类通过笔算势必要花费大量的时间,而现代计算机cpu每秒钟大约能执行几百万次, 通过计算机程序执行几乎可以在瞬间完成。总得来说,编程就是根据需求写出代码,让计算机帮我们处理重复枯燥的体力活,更加高效地解决了问题。
在计算机领域对于编程,有一个更为精确的定义: 编程 = 数据结构 + 算法

入门


在互联网高度发达的今天,学习编程变得越来越简单。一个非科班出身的人,只要有一定的计算机基础,通过网上视频教程 和程序语言文档,可以在几周内学会一门程序开发语言并用来解决一些简单问题。

在去年苹果公司的全球开发者大会(WWDC)上,有一个澳大利亚年仅10岁的小哥Yuma成为最年轻的参与者,才上5年级已经开发出5个手机App。

yuma

只要有足够的耐心和兴趣,任何人都可以学会编程。

进阶


从事编程开发工作一段时间后,渐渐会遇到瓶颈。究其原因是因为对计算机知识的掌握不够深入扎实。对于用惯了高级语言(java,python)的开发者来说, 这类虚拟机语言带来好处的同时也屏蔽了很多底层的信息,如对操作系统内核调用的隐藏,代码库对于算法的封装。很多概念就这样知其然,但不知所以然了。

为了把编程能力提升到更高的一个境界, 有必要学习计算机的一些底层知识, 具体有如下三个方面:

  1. C语言
    学习C让我们更加了解系统的底层,如内存管理,指针的使用。

  2. 算法和数据结构
    前人总结出了大量的数据结构和算法来提升程序的性能和解决问题的技巧。

  3. 操作系统
    操作系统在背后帮我们做了大量的工作,比如cpu任务的调度,内存分配和管理,外部设备数据输入输出,文件的保存等。

  4. 计算机网络
    无论是开发一个网站还是基于分布式系统的比特币都离不开计算机网络。

练习,练习,再练习


编程是一项实践活动,光学不写不顶用,需要通过不断练习来提升编程能力。
如同写作,模仿是一个很好的手段。具体来说,可以找一个自己感兴趣的开源项目,模仿其系统设计和代码实现。

Linux内核的创始人,Git的缔造者Linus Torvalds说过:

做技术,从来没有捷径,拼的就是坐冷板凳的傻劲。

你可能感兴趣的:(编程学习)