只有程序员需要学编程吗?
今天,学习编程的大部分还是程序员和期望成为程序员的朋友。编程在大众眼中还是一种专门的职业技能,学了,是用来找工作的。
不过,作为一个积年的老程序员,作者认为:在不是很久远的将来(也许三五年,也许十来年之后),编程将从职业技能逐步蜕变为通用技能。
我们可以类比“识字”这个技能来看——
百十年前,大多数老百姓都不认识母语文字。当年具备了“认得字”这一技能,就可以获得比大多数人工作环境更优越,报酬也更高的职位。那时,识字无疑一种职业技能。但到了今天,识字率已经逼近100%,具备此技能已经不再是任何职场加分项。相反,如果在今天不认字,那恐怕注定只能从事低端工作了。
未来,编程将成为人人都会做的事情,职场中的一员,除了要具备听说读写本国语言的能力外,还得能够读写代码。而职业写代码的人,将越来越少。
类似的技能还有:
驾驶——汽车工业发展起来后,职业司机会越来越少,驾驶逐渐成为人们的通用技能。
即使一时无法达到社会全员编程的地步,至少正在朝着这个方向发展——
越来越多的互联网行业非技术岗从业人员,比较典型的像产品经理(PM),都在自学编程。
如果大家留意一下儿童教育的话,不难发现:儿童编程已经成K12教育领域的一匹绝尘黑马,在短短几年中异军突起,大有进入主流教育体系的势头。
编程的核心是什么?
从语言特征(词汇、语法等)的角度来讲,最复杂的编程语言远比最简单的自然语言简单得多。
我们学习各种自然语言是为了日常生活与人交流、收发信息,学习编程语言又是为什么呢?
是为了用编程语言描述事物、概念,以及它们之间的相互关系和运行方式,将大千世界转化为计算机能够理解的电信号,驱动硅晶金属构造的计算机部件去完成任务!
编程的核心在于通过各种各样的算法去实现具体的业务逻辑,把繁杂的过程抽象化、可计算化。
从纯粹软件的角度讲,甚至可以说:算法 数据 == 计算机程序。
受过计算机科班教育的人一定上过一门课:数据结构,这门课是计算机科学的基础,它的核心内容就是各式各样的算法,它们是几代计算机科学家从解决现实问题中提取出的套路——这些才是编程的核心。
简单而言,"学编程"就是学习用编程语言编写算法!
研习算法,修炼内功
计算机技术从诞生起就处在飞速发展之中。编程语言从无到有,从少到多,从最初的01代码,机器语言到后来百花齐放的高级语言,此消彼长,兴衰交替。
各种工具、框架更是日新月异,各领风*三五年乃至三五月就被淘汰者成百上千。但是经由现实问题中提炼出来的经典算法,却经得起时间的考验。
这些经典算法是计算机发展过程中世界上最聪明的一小撮人千锤百炼出的,解决某些模式问题的方法和策略。
这些方法和策略基于人类几千年文明史的思维基甸,又经历了最严格的数学分析和验证,本身既是人类文明的结晶,同时又是一种有效的思维训练。
用数值表达现实事物,用运算描述任务目标,再通过算法处理数据找到达到目标的最优化路径——这个思维的形成过程,远比学会模型本身更为难得。