1. 为什么需要学习编程?
如今,学习编程的人分为两类,一类是程序员,另一类是期望成为程序员的人。
编程这个事儿,在大多数人眼中还是一种特定领域的、专门的技能,认为学的人都是需要以此谋生的。
其实,我曾经跟一个作为一个“码龄”超过20年的老程序员聊过,他是这样认为的:在不久的将来(也许三五年,也许十来年之后),编程将从一个职业技能逐步蜕变为职场通用技能。
对此,我们可以类比“识字”这个技能来看——
百十年前,大多数老百姓都不认识母语文字。当年具备了“认字”这一技能的人,就可以获得比大多数人更优越的工作环境,报酬更高的职位。那时,识字无疑是一种必备的职业技能。
但到了今天,识字率已经差不多100%了,具备此技能已经不再是职场的加分项了。相反,如果在今天不认字,那恐怕注定只能从事低端工作了。而如今的职场环境,要比之前要求的多,除了基本的电脑办公软件,要求会编程,也在各个互联网公司的面试中开始蔓延开来。
类似的技能还有:
驾驶——汽车工业发展起来后,职业司机越来越少,驾驶逐渐成为人们的通用技能。
在未来,编程就会成为人人都会做的事情,作为势必要踏入职场中的一员,除了要具备听说读写本国语言的能力外,还需要能够读写代码。
不久的将来,职业写代码的人,将越来越少。取而代之的,编程将是每个职业人的必备技能,拥有更多技能的人,就更有拿到好 offer,升职加薪的机会。
即便现在一时之间无法达到社会全员编程的地步,至少是朝着这个方向发展,未来3年或5年,编程将成为互联网从业者的必修课。所以,在此我们要把握这个机会,勇敢的迎上新时代的机遇,只有把握先机的人,才会在未来的发展中有一席之地。
2. 那么编程的核心是什么?
从语言特征(词汇、语法等)的角度来讲,最复杂的编程语言远比最简单的自然语言简单得多 。
我们学习各种自然语言是为了日常生活与人交流、收发信息,那么,学习编程语言又是为什么呢?
其实是为了用编程语言来描述事物、概念,以及它们之间的相互关系和运行方式,将我们身处在的大千世界转化为一台计算机能够理解的电信号,驱动硅晶金属构造的计算机部件去完成任务!我们学会了这门语言,用来和计算机交流,在反过来作用于自己,创造更多的价值。
编程的核心在于通过各种各样的算法去实现具体的业务逻辑,把繁杂的过程抽象化、可计算化。
从纯粹软件的角度讲,甚至可以说:算法 + 数据 == 计算机程序 。
受过计算机科班教育的人一定上过一门课:数据结构,这门课是计算机科学的基础,它的核心内容就是各式各样的算法,它们是几代计算机科学家从解决现实问题中提取出的套路——这些才是编程的核心。
3. 经得起时间考验的通识技能
计算机技术从诞生起就处在飞速发展之中。编程语言从无到有,从少到多,从最初的01代码,机器语言到后来百花齐放的高级语言,此消彼长,兴衰交替。
各种工具、框架更是日新月异,各领风骚三五年乃至三五月就被淘汰者成百上千。但是经由现实问题中提炼出来的经典算法,却经得起时间的考验。
这些经典算法是计算机发展过程中世界上最聪明的一小撮人千锤百炼出的,解决某些模式问题的方法和策略。
这些方法和策略基于人类几千年文明史的思维积淀,又经历了最严格的数学分析和验证,本身既是人类文明的结晶,同时又是一种有效的思维训练。这种逻辑思维能力,也能用于平时的生活中解决问题,当你的逻辑思维被打通,你会发现没什么难事,都会有解决方法。
用数值表达现实事物,用运算描述任务目标,再通过算法处理数据找到达到目标的最优化路径——这个思维的形成过程,远比学会模型本身更为难得。
经过这种思考训练内化出的思维能力,也是学习者可以相伴终身的助力。