01-为什么需要学习编程?「编程百问」
共 2968字,需浏览 6分钟
·
2022-05-12 18:23
1. 为什么需要学习编程?
你好,我是悦创。
今天,我将为你开启悦创的:编程百问。如今,学习编程的人分为两类,一类是程序员,另一类是期望成为程序员的人。
编程这个事儿,在大多数人眼中还是一种特定领域的、专门的技能,认为学的人都是需要以此谋生的。
其实,在小编基础编程的五年以来,逐渐发现:在不久的将来(也许三五年,也许十来年之后),编程将从一个职业技能逐步蜕变为职场通用技能。
对此,我们可以类比“识字”这个技能来看——
在十年前,大多数老百姓都不认识母语文字。当年具备了“认字”这一技能的人,就可以获得比大多数人更优越的工作环境,报酬更高的职位。你看,在那时识字无疑是一种必备的职业技能。
但到了今天,识字率已经差不多100%了,具备此技能已经不再是职场的加分项了。相反,如果在今天不认字,那恐怕注定只能从事低端工作了。而现如今的职场环境,要比之前要求的多,除了基本的电脑办公软件,要求会编程,也在各个互联网公司的面试中开始蔓延开来。
觉得还不够理解?其实,类似的技能还有:
驾驶——汽车工业发展起来后,职业司机越来越少,驾驶逐渐成为人们的通用技能。
在未来,编程就会成为人人都会做的事情,作为势必要踏入职场中的一员,除了要具备听说读写本国语言的能力外,还需要能够读写代码。
再来一个例子,你就懂了:
假如你是一名记者,这个时候你的职业是可以和我做 中文采访 采访。ok,这显然很好理解。那这个时候,如果你会英文,那你就可以做:英文采访 。你看,这样就能更好的辅助你是不是。
不久的将来,职业写代码的人,将越来越少。取而代之的,编程将是每个职业人的必备技能,拥有更多技能的人,就更有拿到好 offer,升职加薪的机会。
即便现在一时之间无法达到社会全员编程的地步,至少是朝着这个方向发展,未来3年或5年,编程将成为互联网从业者的必修课。所以,在此我们要把握这个机会,勇敢的迎上新时代的机遇,只有把握先机的人,才会在未来的发展中有一席之地。
2. 那么编程的核心是什么?
从语言特征(词汇、语法等)的角度来讲,最复杂的编程语言远比最简单的自然语言简单得多 。
我们学习各种自然语言是为了日常生活与人交流、收发信息,那么,学习编程语言又是为什么呢?
其实是为了用编程语言来描述事物、概念,以及它们之间的相互关系和运行方式,将我们身处在的大千世界转化为一台计算机能够理解的电信号,驱动硅晶金属构造的计算机部件去完成任务!我们学会了这门语言,用来和计算机交流,再反过来作用于自己,创造更多的价值。
编程的核心 在于通过各种各样的算法去实现具体的业务逻辑,把繁杂的过程抽象化、可计算化。
从纯粹软件的角度讲,甚至可以说:算法 + 数据 == 计算机程序 。
受过计算机科班教育的人一定上过一门课:数据结构,这门课是计算机科学的基础,它的核心内容就是各式各样的算法,它们是几代计算机科学家从解决现实问题中提取出的套路——这些才是编程的核心。
3. 经得起时间考验的通识技能
从计算机技术从诞生起就处在飞速发展之中。编程语言从无到有,从少到多,从最初的01代码,机器语言到后来百花齐放的高级语言,此消彼长,兴衰交替。【当然,这里还是要说:不管计算机如何发展,底层终将只识别:0、1。】
各种工具、框架更是日新月异,各领风骚三五年乃至三五月就被淘汰者成百上千。但是经由现实问题中提炼出来的经典算法,却经得起时间的考验。【后面给你讲:算法是个啥东西】
这些经典算法是计算机发展过程中世界上最聪明的一小撮人千锤百炼出的,解决某些模式问题的方法和策略。
这些方法和策略基于人类几千年文明史的思维积淀,又经历了最严格的数学分析和验证,本身既是人类文明的结晶,同时又是一种有效的思维训练。这种逻辑思维能力,也能用于平时的生活中解决问题,当你的逻辑思维被打通,你会发现没什么难事,都会有解决方法。
用数值表达现实事物,用运算描述任务目标,再通过算法处理数据找到达到目标的最优化路径——这个思维的形成过程,远比学会模型本身更为难得。
经过这种思考训练内化出的思维能力,也是学习者可以相伴终身的助力。
4. 算法究竟是个啥东西?
算法,究竟是什么呢?(令人抓耳挠腮,想不明白)
编程百问会持续更新,就简单分享一下两个概念:广义算法、狭义的算法。
广义而言,做一件事情/解决一个问题的方法,就是算法。
比如:Case1:烙饼得把面粉加水和成团,擀成片,加油盐后卷成卷切成大面剂子,面剂子封口后擀成圆形,上锅烙,反几次直到两面焦黄,出锅乃成——这是烙饼的“算法“。是不是瞬间 Get! Case2:做条裙子要先量尺寸,再裁布,然后缝纫镶边装拉锁——这是裙子制作的“算法“。……
所有的算法都体现为一个过程:
这个过程由若干工序(或称为步骤)组成;
这些步骤按照一定的流程来加工某些原料;
最终产生某种结果。
当然,要说起来,万事万物都有过程——一个东西放在那里不动还会生锈老化呢,都有“结果“的产出——比如铁锈。你是不是会想,那是不是万事万物皆为算法呢?
所以不用搞得那么玄妙,算法,原本就是人类创造的概念,四季更迭、万物消长这类“上帝的算法”并不在我们的讨论范围内。
我们关心的是:那些能够为我们完成任务或者解决问题的方法。换言之,我们讨论的算法一定有明确的目标,最终的产出也是为了达到目标。
那么总结一下,算法的几个重点要素就是:
1)目标
2)流程
3)原料
4)产出
小贴士:其中的流程是由若干步骤组成的,既然要产出结果,就不能没完没了。所以,流程中的步骤必须是有限的。这一点也叫做算法的有限性。
5. 计算机领域的算法「狭义的算法」
作为广义算法的一个分支,计算机算法自然也具有前面说的几个要素。广义算法流程的有限性对与计算机算法同样适用,此外,计算机算法的任何步骤都需要:
有确切的定义 —— 确定性。 能够被分解为计算机可执行的基本操作,并且每个操作都能可以在有限时间内完成 ——可行性。
计算机算法的流程实则是一个有限的操作序列,具体操作通过计算机指令来实现。
至于原料和产出,计算机处理不了面粉布匹,它能处理的只有数据而已。因此,无论是“原料”还是“产出”,于计算机算法而言,都是数据。
所以对于计算机算法而言,我们将原料称为输入数据,简称输入(Input),产出称为输出数据,简称输出(Output)。
那么把上面几点综合起来,计算机算法就是(划重点):
一个有限的、通过计算机指令实现的可执行操作序列; 这个序列接受输入; 对输入数据进行有限步骤的处理; 最终产生确定的输出,用以实现算法的目标。
这个定义这么看起来貌似有点乱。没关系,我们可以从内外两个方面来直观地了解一下算法是什么。
小贴士:从现在开始,我们所说的“算法”,如无特殊说明,指的都是计算机算法。
一讲就停不下来了,算法的剩下部分,请听下回分说。
“AI悦创·推出辅导班啦,包括「Python 语言辅导班、C++辅导班、算法/数据结构辅导班、少儿编程、pygame 游戏开发」,全部都是一对一教学:一对一辅导 + 一对一答疑 + 布置作业 + 项目实践等。QQ、微信在线,随时响应!V:Jiabcdefh
”
黄家宝丨AI悦创
隐形字
摄影公众号「悦创摄影研习社」
在这里分享自己的一些经验、想法和见解。
长按识别二维码关注