接下来,姐姐给大家讲一件过年时发生在姐姐身上的趣事:
小侄子:阿姨,你会编程吗?
答:是的。...
侄子:那你教我怎么做网络上的黑客。用电脑,黑匣子,打一堆不知所云的字符,随时可以偷别人账户里的钱。
这是违法的吗?...
这时二叔走过来说,那不是儿童编程吗?我的孙子正在学习这个。
我阿姨也来凑热闹,说:“啊,我邻居家孩子刚学编程,一个月三四万,虽然风不吹雨不下。”
答:现在编程是趋势,国家也开始鼓励青少年学习编程,培养编程思维。未来社会会越来越智能化,如果你不知道这个东西,你就会慢慢落后。
大妈:那你给我们讲讲,我们学习一下。...
我:先说一堆……
除此之外,也有朋友通过一些视频和笑话,对编程有了自己的理解。
所以他们会问我,程序员掉头发吗?你会写机器人吗...不知不觉中,编程似乎成了家喻户晓的名字。
虽然每个人对【编程】的理解不同,但是每个人都在或者将要接受编程的相关知识(包括一些老人和小孩)。那么,编程到底是什么?你确定你什么都知道吗?
接下来雅姐就带你通过以下几个层面,对编程有一个全面正确的认识。
第一关 编程初印象1.1编程为什么会发生?
大家都说艺术来源于生活。你知道【编程】从何而来吗?为什么会产生?
当代大学生和打工仔每天都在纠结同一个事情,就是吃什么?
因为工作地点离家远,早上时间不够,或者宿舍根本打不着火,又不想出门,不能自己做饭。于是,一种“生活需求”应运而生——外卖。
所以外卖来源于我们生活中的需求,点外卖是通过【编程】实现的。
比如超市收银员。
假设一个顾客买了100样东西,如果他用计算器加起来,会浪费时间,还可能算错。但是如果你用编程来完成一个软件,那就不一样了。你应该见过超市的收银设备,它的内部系统也是程序化的。扫码获取价格,用程序自动进行加法。最后,还可以提示更改金额。速度也节省了人力物力。
另外还有医院挂号系统,你每天用的微信/支付宝等等。,都是编程的杰作。
原来【编程】来源于我们的生活需求,是为了让我们的生活更加便捷,我们每个人都直接或间接地参与到编程的某个环节中。
如果你还觉得有点困惑,我们再来看另一张图:
图中的【思维】是指我们需要的各种需求,也就是我们希望计算机为我们做什么。
图中的表达式是计算机可以理解的指令0和1。
而如何把我们的思维表达出来,让计算机执行,需要我们(程序员)来完成。
这是雅姐要讲的第二个问题,编程的宏定义。
1.2编程的概念
用一句话来解释[编程]就是写能让计算机执行某件事情的代码。
描述的再详细一点,就是为了完成某个需求,把解决问题的步骤用计算机能理解的语言写成指令。这是【编程】。
所以,我们可以看到编程中有几个部分:
1)需求——要解决的问题或要完成的任务;
2)把这个需求变成现成的计算机可读代码;
3)计算机执行代码实现需求。
那么请思考:编程中最重要的【核心】是什么?
没错,就是上面说的第二部,解决了这个问题,而且是八成成功。
至于怎么解决,嘿嘿,放心吧。让我们休息一会儿,喝点水,放松一下,进入下一关。
第二关 从生活视角理解编程欢迎来到第二层。我们继续说最后一关结束时留下的悬念。
也就是如何把【需求】一步步写成计算机能读懂的代码,也就是【逻辑】。
其实在我们对编程领域知之甚少的时候,并不是一定要看一些专业的科普文章,因为里面的专业术语会让你觉得晦涩难懂,从而产生畏难情绪。
所以,亲爱的姐姐选择用我们生活中最常见的场景,带你去体验一下。什么是【逻辑】?“步”是什么?“流程”是什么?
2.1计算机中的“步骤”和“逻辑”
场景一:假设,今天早上想吃煎蛋,但是不知道怎么做。于是我找到了一个食谱,如下:
从菜单上可以看出,只要按照操作菜单的【步骤】去做,最后应该就能得到一个煎蛋。
这个食谱也可以理解为,只要按照这个12345,最后就会完成相应的任务。
但是这个时候,肯定会有一些朋友产生疑惑:不,这个煎蛋不是我做了以后做的。相反,它变成了一个黑暗的盘子...为什么?
哈哈,这个问题是对的。因为不能只有【步骤】,还需要【逻辑】。
什么是“逻辑”?我们一起看第二场吧。
场景二:记录我一天做了什么。日记如下:
从日记中可以看出,逻辑有三种,即顺序、分支和循环。
序列结构:先做什么,再做什么。
比如早上起床,先刷牙再洗脸。
比如日常工作中,先打卡,到工作站,再打开电脑,写代码。
分支结构:判断条件和选择条件。
比如不下雨,你不带伞;如果下雨,你带把伞。
比如遇到上司,对领导说早上好(谄媚的表情);遇到同事,说吃早饭了(微笑)。
结构:反复做一系列操作。
比如代码出了问题,就要调试、修改、调试、修改、调试、修改,直到问题解决。
那么当[逻辑+步骤]的时候,就形成了一个新名词叫做[过程]。
所以在煎鸡蛋的场景中,一些小盆友怀疑鸡蛋做不出来是对的。
因为我们还是需要【逻辑判断】,比如煎蛋是小火还是大火?酱油多少才算适量?如果每个步骤都加入了适当的逻辑,最终的程序就不会出错。
2.2计算机中的“过程”
好了,如果你让电脑帮你煎蛋,过程会是这样的。
你会发现过程是非常严谨的,并不像我们看的菜谱那么随意。
严谨性好吗?当然,如果你不小心,你可能会失去你的银行账户里的钱,然后,你就要哭了~ ~
好了,这就是雅姐用两个生活场景给你解释的——编程是怎么回事。
我们再总结一下:编程其实就是把我们的需求一个个变成【流程】,写进电脑,让电脑帮我们执行。
最近怎么样?不是很流行吗?想继续挑战吗?
程序员眼中的编程是什么?请看下一关。
第三关 从专业角度认识编程欢迎来到第三层。本关姐姐再来讲讲程序员眼中的编程,也就是从专业角度讲什么是编程。
温馨提示:这一关涉及到很多专业术语,不过别着急,雅姐会一一为你讲解。...
3.1数据结构
言归正传,有一本书叫《算法+数据结构=程序》,书名其实是从专业角度对编程的定义。
翻译成中文就是“算法+数据结构=程序”。这里提到两个专业术语,[算法]和[数据结构]。
首先来说说什么是【数据结构】。
数据结构实际上是数据存储的方式。所谓存储就是保存数据以防丢失。
让我们用几个生活中的例子来理解:
人群在火车站的售票亭排队。
乘客排队买票。第一个排队的人可以先买票。站在后面的终于可以买了。
如果我们把乘客看成数据,这个数据结构就是【队列】。
特点:先进先出。
我小时候玩过的玩具枪。
玩具枪可以一颗一颗装圆子弹。往弹匣里装子弹的时候,是一颗一颗往下压的。但射击时,最后压进去的子弹先出来,第一颗压进去的子弹最后出来。这种结构被称为“栈”。
特点:先进后出。
计算机的文件夹
一个文件夹可以包含多个子文件夹和文件,子文件夹可以包含下一级的子文件夹和文件。
这个结构可以理解为【树形结构】。是文件树的“叶”节点,子文件夹可以是树的分支或“叶”。
它的特点是:分支和层级关系。
这个时候,肯定有朋友又有疑惑了。为什么需要这么多数据结构?有什么用?
答案是肯定的,因为存储数据结构的不同方式决定了要执行的任务的顺序和速度。如果你使用适当的数据结构,你的程序将获得最佳性能。
3.2算法
现在,我们再来说说【算法】。
算法是可以解决问题的方法。
好像有点抽象。我们举个例子。比如,我们要在人群中寻找“穿蓝衣服白裤子的人”。人太多了,我们一眼都找不到。那么怎么找呢?
方法有很多。在这里,雅姐简单说两句:
第一种类型:
先找穿蓝衣服的人。
从蓝色衣服中寻找穿白色裤子的人。
判断是不是男的。
第二种类型:
先除掉所有女人。
排除那些不是蓝色的。
排除那些不是白裤的。
以上两种方法最后都能达到我们的目的,都是算法。那么它们各有什么优缺点呢?
要看我们面对的是什么样的群体(数据):如果这个群体中女性较多,那么第二种方法优势明显。
因此,在编程中,我们一直在努力寻找解决问题的最佳算法。
说到这里,雅姐突然想起一个笑话,讲给你听。
一个程序员下班,老婆打电话说:“你去超市买十个苹果,下班回家。如果你看到一个西瓜,买一个。」
结果程序员只带了一个苹果回家,悲惨的命运不得而知。但导致他犯错的思维逻辑是编程中的算法逻辑:“没看到西瓜,买十个苹果;如果你看到西瓜,买一个苹果。」
总的来说,【算法】就是运用逻辑解决问题。算法和数据结构的结合就是程序。而程序的设计就是编程。
这时候你可能又会想,编程到底是一种知识还是一种能力?
我姐认为【懂编程】是计算机知识积累的结果,但是【会编程】是一种实践能力。
类似的还有:有些人很懂车,但不会开车上路。所以理论要结合实践~
好了,真正知道什么是编程后,姐姐会继续给你讲一些你不知道的编程冷知识,下一关,标准会让你开口~
第四关 科普编程知识欢迎来到第四关。我们这一关主要是普及一些编程知识,让你对编程有更透彻的了解,饭后有更多的谈资~
1:常识:编程是谁发明的,是如何进化的?
说来话长。让我们听听你姐姐的意见。
你猜怎么着很久以前,在电子计算机诞生之前,计算机的角色是由(女性)人来扮演的。
因为大部分计算都是由人类女性手工完成的,所以这些女性被统称为“计算机”。
但是后来大家发现人工计算很浪费时间,也有误差,于是慢慢研发出了一种叫做[true 空 tube]的东西。
这些true 空电子管有一个有趣的特点:true 空电子管两端节点的电流可以用三个管脚控制。这使得true 空电子管在处理模拟信号时变得可行。true 空管可以控制机器,传输模拟信号。
后来,数学家们意识到,如果我们可以使用布尔运算,我们就可以在理论上创造出机器来执行这些运算。所以人们用这个理论来建造一些【机械计算机】,但是由于机械计算机速度慢,成本高,没有真正的应用。
下图是【机械电脑】:
接下来是【固态晶体管】,可以提供和真空晶体管一样的功能,但是体积更小,价格更便宜,寿命更长。所以电脑变得越来越便宜,应用越来越广泛。
但由于操作人员(程序员)必须坐在终端前开闭开关,非常不方便,所以后来他发明了打卡法,可以更简单方便地切换开关。
下图是打孔的纸孔。穿孔卡上有许多扁平电缆,每一行都有可以穿孔的孔。这些线路和开关相互匹配。
现在,人们不再每天操作那些无聊的开关,而是程序员去打洞。每行代表不同的指令。有一台机器可以连接到电脑上阅读这些指令。
这样,我们可以在穿孔卡片上写程序。这样减少了相当大的工作量,写一张卡片可以用很长时间,也避免了重复造轮子的问题。
然后,天才格蕾丝·霍珀的妹妹,后来被称为“计算机程序之母”,想出了一个好主意。
她建议可以设计一个程序,让人们用类似英语的语法写下自己想做的事情,然后用这个程序把英语翻译成机器语法,交给机器执行。
于是,她发明了世界上第一个编译器,命名为A-0。那时候还没有组合语言和编程语言。所有程序员都得把[程序]翻译成[机器码]的形式,01101010110,在纸上打孔,然后送到机器上阅读。
编程因为A-0【编译器】迎来了曙光。虽然只是科技史上的一小步,但确实是革命性的。它改变了人们思考编程的方式,创造了一种抽象的思维方式。这意味着人们可以在更高的层次上思考。也改变了人们对如何写程序的思考。
之后逐渐衍生出了今天的编程。...
2:常识:编程语言和编程是一个概念吗?
所谓编程语言,其实就是一种可以被计算机读懂的语言。它也有发展的历史。你感兴趣吗?
坐在长椅上听你妹妹说话。
第一种编程语言是机器语言。很简单。有多简单?
简单到只用“1”和“0”两个数字就能编程。
也很气人。你有多生气?
就像把盐和味精混在一起,你就能挑出一粒白糖混进去。
虽然机器语言难学、难懂、不可重复、编程复杂,但速度极快。但是人类通过机器语言和计算机对话,类似于外国人用中文和中国人对话。所以对于人类来说,0.00001秒和0.000000001秒没有区别。所以,你的机器语言跑得再快,也无法赢得人类的心。
于是,汇编语言诞生了。
汇编语言,其中用助记符代替机器语言中的操作码,用地址符号或标号代替指令或操作数地址。大概相当于那个。这些学汉语的外国人已经开始学拼音了。
然而,汇编语言所做的只是编译机器语言。所以代码的移植和推广还是很困难的,理解代码的设计意图也有不小的障碍。
终于在1956年,一种高级编程语言诞生了,它受到了成千上万人的喜爱,也让无数程序员秃顶。
FORTRAN,这种注定围绕着无数聪明脑袋的光辉语言,其实是一个不太喜欢编程的约翰·巴尔克斯发明的。
作为高级编程语言家族中的长子,虽然历经几代更迭,但在数值计算、科学与工程技术等领域仍占据着强大的主导地位。慢慢变老,但要记住,你叔叔永远是你叔叔。
当然,编程语言并不是说越合格越吃香。根据Toibe 2019年10月发布的程序语言排名。
70年的c语言,95年的Java,91年的Python,现在势头正盛,坐上了第二的位置。
此外,在排名前十的语言中:
70后,C语言脱颖而出;
80后有三种语言上榜,最好的是83年正式命名的C++,排名第四;
90后有四种语言上榜,其中Java和Python表现最好,其次是PHP和JavaScript
00,名单上只有两种语言,即C#和VisualBasic.NET。
我们有理由相信,未来会有更丰富、更便捷、更人性化的编程语言出现。也许有一天,人类的语言可以直接翻译成机器语言...
所以,正在犹豫要不要学编程的小伙伴,你还在等什么?赶紧学吧...
3:常识:什么是编程思维?计算机思维呢?
首先,计算机思维和编程思维是一个概念,我们可以解释一个。那么什么是编程思维呢?
有这样一个笑话,学编程之前,1000是一个整数,学编程之后,整个数字就是1024!
学术上讲,编程思维是解决问题的算法和代码实现过程的集合。编程思维有两个组成部分,一个是算法设计,一个是代码实现。
其实学习编程最重要的不是掌握编程的语言,而是要学会编程过程中使用的思维方式是“编程思维”。
编程思维的核心不是编程语言,也不是语法,甚至不是算法或者数据结构本身,而是如何分解问题,从中发现规律,建立解决问题的模型,并映射到合适的数据结构和算法,然后我们就可以根据算法编写程序。
盖茨、扎克伯格、乔布斯等前辈都用经验告诉我们,拥有编程思维的人是成功的一半——不仅逻辑严密、思维缜密,解决问题和管理能力也不是普通人能比的。
好了,这次到此为止。不知道你收获了多少?
另外,对于我们现在的大部分朋友来说,学习编程技术是最重要的!种一棵树最好的时间是十年前,其次是现在。对于准备学习编程的人来说,想要提升自己的核心编程能力(内功),不妨现在就开始!
学习分享编程书籍:
学习视频分享:
整理(源码,项目实战视频,项目笔记,基础入门教程)。
欢迎转行学编程的伙伴,学会用更多的材料比自己思考成长更快!
如果你对C/C++感兴趣,可以关注边肖,后台私信我:【编程通信】我们一起学习吧!可以获取一些C/C++项目学习视频!你已经设置了关键词自动回复,自动收到就好!



