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