这可能是最全的编程入门指南

为何要学编程

乔布斯说,「每个人都应该学习编程,因为它教会你思考的方式」。

我们学习编程,是不一定要成为程序员的。就像每个人都应该学习法律,但不是都要成为律师;就像每个人都应该学习经济学,但不是必须成为经济学家;就像每个人都要学习数学,也不是为了成为数学家。

不同的学科知识给予我们不同的思考方式,这些思考方式将贯穿在我们日常生活的点点滴滴。而编程本身就是一个培育思维的过程,可以帮助我们掌握逻辑思考的能力。

普遍存在于大学中的「学长效应」摧毁了一批又一批的计算机专业学生。你是否有过这样的经历:初入大学校园的你对未来的学习生活充满好奇,对计算机专业不甚了解,但兴趣满满。上过了一些课,觉得有些容易,有些则需要多花些时间钻研。你心中对专业的方向和未来发起疑问,来到网上或是通过各种途径联络学长,想问问自己专业未来的蓝图是什么样子的。

学长拍着胸脯告诉你,学这些没用,期末突击一下就能考过。你如释重负,像是看透了一切,觉得学长所言极是,很多课平时都不用去上,期末照样考过,学分照拿不误。

然后你发现在计算机专业中让你感兴趣的东西越来越少,再后来开始怀疑自己是不是选择错了方向,毕业后突击式地学习一门语言或是一项技术,然后找一份凑合的工作,看到公司有些技术人员拿着比自己多数倍的工资不明白为什么,甚至感慨大学白上了还不如去上个技校,反而觉得自己能干的事情越来越少了,太多新的技术需要学习和了解,对此感到应接不暇……

然而事实不应该是这样的,当你学过计算机科学导论后,就应当明白:计算机不是魔法,也不复杂,只是一切都发生的非常快而已!C 语言只有 9 种控制语句,却能编写出像 Linux 这样复杂高效的操作系统,还有 Nginx 和 Redis 这些高性能网络服务器也是纯 C 语言编写的!

计算机只知道一些最基本的语句和方法,再复杂的程序也都是由这些语句和方法组合而成,计算机真正的魅力和价值就在于我们可以将现实中的复杂问题抽象并转换成一系列简单步骤后,再放心交给计算机去完成。所以我们在学习过程中,真正训练和提高的正是发现问题、分析问题和解决问题的能力。

有人说「编程将成为人们新的读写能力」,其实这里强调的更多是编程背后的计算思维。

仔细想想,会发现我们其实一直都是这样在解决问题的。比如用洗衣机洗衣服的过程,先是根据待洗衣物的数量,为水位调节函数传入水位参数;接着,使用循环控制结构来设定漂洗函数被调用的次数;然后,为洗涤时间控制函数和脱水时间控制函数传入时间的参数值。最后,按一下「运行」的按钮,一切就都按照你的意愿来进行了。

在未来,一切都是可编程的,我们的生活、工作、学习效率也将大大提高。伴随着物联网的到来,我们会发现身边的一切都可以通过自己编程来实现定制化的服务,届时,生活质量的高低将更多体现在是否有能力通过编程技术来实现你的想法上。

如何学编程

多看好书

差书误人子弟,不但浪费时间和精力,而且打击人的信心,差书使人很久都不会,会让人怀疑自已的学习能力。  

现在的书很多,但好书很少,特别是被大家公认很有价值的好书更是少之又少。历经多年时间考验和市场风雨的残酷洗礼而仅存的巨著,更是极其稀少。中国历史上文学小说类书本多如牛毛,但仅存的巨著,也只不过<<红楼梦>>等四本名著而已,编程方面也是如此。

多动手

这一点很重要。而且特别重要。“纸上得来终觉浅,绝知此事要躬行。”陆游的千古名句说的就是这个道理,并且同样适合于编程方面。

用什么语言最好

这主要取决于应用领域,每种语言都有自已的长处和不足。

  1. 汇编语言和C语言在单片机及工控领域用较多。另外C语言也是一种通用语言,是学C++/C#的起点。
  2. C++系统编程等多个方面,最常用的编译器是VC。
  3. C#/Java网络编程方面新兴的。
  4. VB通用。
  5. 还有Delphi等等。

老九君建议:从未编过程的,就从学C语言开始。有基础的可直接学C++或是Java。

学习C和C++,不得不推荐的两本书非C/C++ Primer Plus莫属了。为什么呢?

  1. 这两本分别是C和C++的经典入门书籍,虽不能说经典的就是最好的,但是能够流行这么久,说明它经得起市场的考验。
  2. 内容全面详细,理论扎实。
  3. C和C++Primer Plus在豆瓣读书上评分分别是9.2和8.6,可见大部分人对这两本书的评价是比较高的。
  4. C++Primer Plus书中的涵盖了C++大部分知识点,并且严格符合C++的标准。计算没有详细讲解的知识,也列出了参考书目和概念。这本书应该是那种要让人不停复习,不停翻看的书。

PS:明天老九学堂商城将会上架这两本书籍,到时候有很多套餐和优惠大礼包。

训练的四个阶段

第一阶段:掌握一门编程语言

  • 学习内容:学习任意一种主流的编程语言,例如C++语言。
  • 学习目标:熟练掌握一种语言的语法和基本的编程技巧。
  • 学习时间:3个月左右
  • 注意事项:编程语言和编程工具是两回事情,编程语言是指C++、Basic、Object Pascal等程序设计语言,它们是像汉语、英语一样的抽象的语法规则,编程工具是指Visual C++ 6.0、Visual Basic 6.0、Delphi 7.0等包括了源代码编辑器、程序编译器在内的集成化、可视化的软件开发工具。

第二阶段:掌握一种编程工具

  • 学习内容:学习任意一种主流的编程工具。注意编程工具要和第一阶段学习的编程语言一致,例如你学习的编程语言是C++,那么编程工具要选Code Blocks、Visual C++ 6.0或者C++ Builder 5.0。
  • 学习目标:熟练掌握这种编程工具基本用法,例如:菜单、组件、程序跟踪调试、编写Windows程序等。
  • 学习时间:3个月左右
  • 注意事项:这个阶段侧重编程工具的使用,同时进一步熟习编程语言,最后达到能熟练编写各种基本的Windows程序。

第三阶段:掌握“算法与数据结构”这门课程

  • 学习内容:算法与数据结构,推荐许卓群的《数据结构》,高等教育出版社出版。
  • 学习目标:熟练掌握各种常用的算法与数据结构
  • 学习时间:4个月左右
  • 注意事项:这是一门不可或缺的软件开发课程,曾经有一本经典计算机专业书籍叫做《数据结构+算法=程序》,这说明了数据结构和算法的重要性。它能帮我们建立良好的程序分析与设计能力。

第四阶段:掌握“算法与数据结构”这门课程

  • 学习内容:软件项目的开发过程
  • 学习目标:掌握软件项目的基本开发过程和方法
  • 学习时间:4个月左右
  • 注意事项:自己完成一个模拟的小型软件项目,推荐做一个MIS(管理信息系统)软件。

最后:将完成的模拟软件拷到U盘,作为自己的作品去面试,以此踏上自己光辉的职业程序员之路!

原文发布于微信公众号 - 老九学堂(xuetang9)

原文发表时间:2017-03-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏跟着阿笨一起玩NET

GB2312转换成UTF-8与utf_8转换成GB2312

1911
来自专栏张善友的专栏

Using sqlite with .NET

The other day I found that there is a .NET wrapper for sqlite. sqlite is a very ...

2308
来自专栏c#开发者

简体-繁体内码转换API

 public class ANSIConversionAPI     {         const int SIMPLIFIED_CHINESE =...

3524
来自专栏calmound

JDBC

import static org.junit.Assert.*; import java.sql.Connection; import java.sql.D...

2644
来自专栏Pulsar-V

C# 数据类型之String转byte[]

string类型转成byte[]: byte[] byteArray = System.Text.Encoding.Default.GetBytes ( str...

2845
来自专栏C/C++基础

C#获取系统当前时间

ystem.DateTime currentTime=new System.DateTime(); 1.1 取当前年月日时分秒 currentTime=Sy...

1153
来自专栏吴小龙同學

时间工具类TimeUtil

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30...

3066
来自专栏海说

Java应用中常见的JDBC连接字符串(SQLite、MySQL、Oracle、Sybase、SQLServer、DB2)

Java应用中常见的JDBC连接字符串 Java应用中连接数据库是不可或缺的,于是便整理一些可能用到的JDBC的jar包及其相匹配的URL,以备日后查阅。 1)...

2750
来自专栏xingoo, 一个梦想做发明家的程序员

windows程序设计-第四章 system1.c

/*---------------------------------------------------- SYSMETS1.C -- System M...

23710
来自专栏码匠的流水账

聊聊spring cloud的LoadBalancerAutoConfiguration

本文主要研究一下spring cloud的LoadBalancerAutoConfiguration

1052

扫码关注云+社区