00:00
大家好,欢迎大家继续收看上硅谷的云计算课程,我是沈超老师。那这节课开始呢?我们开始来学习12编程课程。那么各位。十编程呢,我们说啊,12编程是所有语言当中最简单最简单的语言。为什么我敢下这样的结论,原因?12、编程啊,它和我们其他的程序应用的场景不太一样,什么意思?比如说不论是我们是用PP。还是用Java?我们写的程序,我们是干嘛的?你PPT是不是写的是网站Java呢,可以,比如说写的QQ,那他的他是不是就用这个目的是为了让更多的人来访问,或者更多的人来使用,对吧。那这个时候如果用这些语言,就是不止这两个啊,就是说我们绝大多数语言都是这种情况,如果我要想让他更多的人来访问他,或者说支持更多的人,这个这个支持他的更多的这种访问量。
01:01
那这种情况下,你是不是就要考虑一个问题,很严重的问题就是效率。什么意思,各位程序它是这样的。实现同样的功能,你1000个人去写,只要你不是抄了,你写了这个代码就绝对不一样,就有1000个样,虽然功能是一样的。比如说。你比如说我们这个浏览网站最简最最简单的,你们这个浏览网站这个这个上网访问他的那个购物车商品是不是可以加到购物车里,那就这么简单的这样的功能,那我们就说这种东西你1000个人去写,你写出来就算功能一样,但是它的代码是绝对不同的。那代码不同,它就有一个什么好坏之分了,效率高。还是效率低?有这样的一个问题,那各位。怎么来区分,或者说中高级程序员和初级程序员怎么区分啊,其实就是看他的这个代码使用的效率,其实是一个很重要的,这个怎么说呢,标准。
02:07
我们曾经有过这样的情况,什么情况?我们想要在我们的学校当中开发一个咨询系统。其实里面的数据量很小,主要保留的就是我们所有咨询学员的信息,呃,可能当时的时候,因为很多年前了,当时的时候信息量不大,可能也就是几万条数据。那这种情况下,而且它的使用人数非常少,就是我们内部员工在使用,那可能他的这个常年的这个小时匹配量访问量可能就是几个甚至几十个就很低呀。但是呢,这个时候我们让我们的学员来写了这样一个系统,就写了这样一个内部使用的这样一个系统,那么写完之后发现。我们的咨询师天天找我说那个,呃,这个老师你给看看吧,这个系统为什么这这么卡呀,哎,我跟你讲,我们大家都上课,你知道吗?很忙,哪有空是老给他看这个呀,所以这个就会推脱嘛,就说你可能这个姿势不对,你换个姿势你再试试,但是他天天找你,你就受不了了,那怎么办?进去看了一下发现。
03:10
只要有一个人点搜索,搜索都见过吧,在里边写搜索是吧,然后点搜索。这台服务器的这个CPU占有率就会达到99%。就会接近100%,其实就是100%。哎,各位,那我问你这个程序员写的这个网站,哎,我跟你讲,服务器新增再烂也不至于说一个网站的一次搜索就会把CPU资源耗完,这个事儿是绝不可能的。那这个只有一个原因,就是我们写这个这个网站的,或者写这样系统的这个工程师是学员,他呢可能实现了功能,但是呢,他根本没有考虑优化它的效率,所以就会出现这么可笑的东西,那这个现在就只能说他只能不能用了,就彻底扔掉了,之后就得重新开发了,那高级工程师呢。我们说啊,普通网页访问,我们可能一台普通服务器一个小时的访问量就能达到10万个PV,这个东西我们是算过了啊,大概这个数是没问题的,当然根据电脑的不同,这个量肯定是有变化的,那我们就说。
04:12
你想,那如果是这个初级工程师写了他们一个小时访问量,就是人家来买个PV,可能就会把它弄死,这台服务器就挂了,那换一个高级程序员呢?他能达到10万个P。这东西,这就是质的变化了。那各位,换句话说,如果我们写的是这样的一些程序,我们所有的程序员他都要这个究其一生,用他一生所有的努力,他的目的是为了干嘛,提高他写的程序的效率。各位,这里边有很多的这种说法,但是说白了就是,其实就是为了提高它的效率,为什么程序员经常看回忆录,他们说诶,我们我自己看我自己五年前写的代码,就会发现和狗屎一样,为什么自己这么感觉你这个水平提高了,你看你当时写的东西是不是就是初级,非常初级的东西,一看效率就很差,所以。
05:04
其他所有的程序。你都需要考虑提高它的效率,因为它的主要目的是给更多的人来提供访问。那如果要考虑提升效率,你就要不断的优化你的编程思想、编程思路,包括你的技术能力。那所以我们说其他语言。相对来说它都有这样一个要求,要优化。而善不是善是什么?各位,扇是给谁用?你身上写好的脚本绝不是给陌生的这些客户用的,它就是给你自己用的,或者说我们内部人员使用的。换句话说,他的访问人数或者使用人数不会太多,就你的一个团队的人,甚至就是你自己,你自己写的,你自己用,那这种情况下事儿是不需要考虑效率。各位。我们如果不需要考虑效率,那就是说怎么简单你就怎么写。
06:02
哎,各位思路简单会带来的就是代码比较这个长,或者是代码比较这个低效,代码比较混乱等等都有这个可能,哎,如果你想让你的代码高效,你可能就会思路要更加复杂,写出来的东西要更难,而上呢,我不需要考虑效率。他就是给你自己用了。所以我们写事的时候,我们给学员书。你只要能够实现功能就好,不论你写的这个代码有多恶心。其实我说都没问题,因为shall程序就是给你自己用的。那如果是,这就代表我们其实追求的东西,我们追求的其实就是实现功能,或者说我们追求的就是简单。逻辑上简单,哎,代码可以复杂,逻辑简单就行,比如说如果说,但是其他程序呢,他就要追求什么,他就要追求什么代码的精简,然后呢,逻辑可能就会更加复杂,明白他会追求这样的东西,那就会出现什么让人很难理解的代码,比如说三个循环嵌套,四个循环嵌套,这样写完效率可能很高,因为他的代码很经典,诶,这个都能理解,你写完了程序100行,人家写完之后,呃,你写的程序这个1000行,人家写完100行,那肯定100行的效率高,没什么道理,就只要都能实现同样的功能,肯定是。
07:21
而我们呢,不需要考虑这个。就是代码进界,你只要能实现功能,你代码写的多烂都可以。那我跟你讲,这就是本质的区别啊。一个是要追求这个精益求精的一个SH尔,只要实现功能就行,所以我们说没有其他语言像Sha尔这样。所以我们说事是最简单的一点,你只要实现功能就好,不需要考虑它的代码精简程度。这在其他语言都不可能做到。所以啊各位各位事。如果你上都学不好,那可能其他语言这个东西可能就真的你不太适合编程,当然啊,话这么说事尔虽然简单,有学员就问那说老师,那为什么事儿不能作为初始的入门语言,比如说我第一门语言要学,要学语言,我肯定学个简单的语言是更好上手,那为啥不学事儿呢?原因。
08:18
事,他需要对你对Linux比较熟悉,你才能写出这个程序功能。他的要求不是说你对代码有多要求高,它是要求你对Linux更熟悉,所以你们会发现,其实我们整个Linux系统管理的东西,我们已经讲了一大半。我们才开始讲12辩证。也是这个原因,所以事儿虽然简单,但是它并不适合作为零基础学员的初始入门语言,它只适合给运维工程师作为你的帮助工具。你一定要理解,12的目的是为了干嘛?写12程序是为了简化。是为了简化你的工作的繁琐程度,你天天需要重复干的事儿,比如说每天我都要备份一下,那那么手工备份能虽然很很不不难,四五条命令,但是我天天都要备份,我麻烦死了,我写个程序让它自动执行多好。
09:10
它是为了简化你的工作流程,所以它简单,但是并不适合对Linux不熟悉的,换句话说,这是我们最主要的自动化运维工具,对我们的运维工程师来讲,但是由于事儿太简单了,所以。如果稍微复杂一点的功能事儿可能就完成不了,那这个时候可能就会借助开撒。在Python的特点是粘合性,他什么都能干。那么拿它来写自动化解这工具它的功能,这是一个完整语言了。Python是一个面向对象的完整的这个程序语言,而SH是一个变相过程的简单的这样一种语言,它有些功能并不完善。所以如果要有复杂功能,可能就要借助开始,但是我还是说,绝大多数情况下,你们工作之中用到的自动化运维工具就应该是12条,这是我们运维工程师最主要的这样一个手段,我希望大家能够掌握它,OK,好。
10:12
各位。我们简单知道一下12语言的地位,再有一个,我提醒大家,这个编程思想确实和我们的运维思想不太一样。所以。我们运维工程师学编程很痛苦,反过来编程工程师学运维也好不到哪去,所以呢,咱们把这个东西打下基础,再一个我跟你讲编程思想这东西有点像这个武侠小说当中的这种什么打通任督二脉。就是你也可能能感觉得到,但是你摸不着,也说不清。哎,什么叫叫有运维思想啊,其实我说啊,说白了编程思想就是什么把人的思维方式。转变成计算机的。机器的思维方式,从而让机器能够识别,能够正常运行,这就叫编程,什么意思?
11:03
比如说在人的角度看来,我问你这个数是不是一。那我们一眼就能看出来,都不用思考这是你,但是你怎么让计算机来知道这是你,这就要按照他的思维方式来告诉计算机这个事儿在这运行,这就其实就是变的思想,当然识别一很简单啊,如果写成程序也很简单,但是呢,它的思路是不一样的,人是不用判断的,一眼一看就知道,因为我们是感性加理性思维都有。而计算机不行,计算机是纯理性,这其实就叫辩证思想。但是呢,各位每一个程序,其实我们后面写程序,我都会告诉你我是怎么想的。我怎么想起来这个程序思路是这样的一种情况,人家其实我就是在告诉你我的编程思想。但是这会带来一个很严重的问题,就是学员,我们所有没有接触过编程的学员,包括我们的编程初学学员都有这种感觉,什么感觉?老师你写的程序我能看懂,而且我看起来也觉得很简单,但是呢?
12:06
你只要让我写,或者你把你的程序让我稍微发生一丁点变化,我就不会改。其实我说各位,根本原因就是你没有建立辩证思想。那怎么解决这个问题?简单,其实这东西就一件事是吗?熟能生巧。你多练。一开始你不会写,没事儿你抄我了,你照了我的抄。先抄个两三遍,不是说你手写抄,就是程序里就照着抄程序,然后保证它能正确运行,这是第一点。第二遍吗?把所有的注释都删掉,删除注释。把注释删掉,然后自己默写,往上写注释,如果你能把注释写清楚,证明这个程序你看懂吗?第三点,把代码删掉,删除代码。然后留了注释,照着注释写干嘛,你如果能写出来,就证明这个程序你真会写了,你照着这样做。
13:02
练这么练这么几个或者十几个程序,你就会发现,慢慢的你就有点感觉了,换句话说。编程就跟我们前面讲的这个命令一样,它绝不是背下来,它是练会的,你一定要照着敲,就光看是没有任何意义的,你听清楚啊各位好了,我们强调一下12编程的这个重要性,也告诉你这东西其实是非常简单的语言,但是初学的时候其实还是很迷茫的啊,好,我们知道了这样的东西,我们来看看事儿的概述,这到底什么是事啊,各位。我们把事儿叫做命令解释器,什么意思?我问你。我们输入的命令LSCD对吧?我们的内核认识吗。我们的Linux内核认识吗?各位,Linux我们一直在讲所有的计算机,它只认识二进制0101啊,它只认识这个东西。所以你输的是abcd啊,内核是不认识的,那怎么办?就需要有这样一个翻译器,把它从命令行翻译成机器语言。
14:08
同时把它的结果从机器语言再反翻译成那另一行,这就是事尔干的事儿。所以我们说事就是命令解释器。那到底什么是事儿啊,其实我说各位你们在这里操作这个界面就是这儿。它几个功能,第一个功能给你一个提供操作的这样一个界面,你可以在上面输命令,第二个功能你输入命令之后回车,它把它翻译成为0101,然后呢,让内核能够看得懂。然后把内核的执行结果从零一链接,再翻译成这种abcd,也就是翻译成的结果再给你显示出来,那你能看懂就行,这就是12的作用。看明白了。看明白吗?所以我们操作的这个界面其实就是晒。那。Windows有事吗?各位,其实Windows也有,只是Windows不这么叫,Windows这个图形界面其实就是Windows的事儿,为啥?你看为什么我在这个开始这个地方单击左键会弹出开始栏,其实说白了就是Windows在这个像素框内检测鼠标单击,只要发现鼠标左键单击就弹出对应的程序,就这么简单,其实这个操作界面就是Windows的事儿。
15:23
就是Windows的事儿。各位,只不过Windows人不这么叫,人就叫图形界面而已,对吧?好,那我们知道了事是干嘛的,把命令。翻译给内核来看的,对吧,那上呢。我们说它除了可以接收单命令,就是我手工敲一个命令CD或者is,它能接收,能识别,能运行。他还支持什么?你把这些命令写成一个程序,脚本写成一个脚本。就把命令写成一个脚本,程序就写成一个集合,脚本其实就是一堆命令的集合,然后呢,脚本上也能认识,也能执行,也能反馈结果,所以Sha也支持编程,所以shall有时候我们也可以简称为shall编程啊,因为它支持程序脚本,OK,这就是的作用。
16:16
听明白了,简单知道一下就行,然后呢。我们linus当中的Sha尔,那不,我们现在主流Sha可能有这么多,那相对来说这种Sha淘汰太古老,这是最早的时候UNI斯用,那我们现在我们windownus的十使用的是被使。读作背时啊各位,那它相对来说各种情况都还好,唯一的东西就是。不太好学,那这个就是它的缺点,当然是和其他的程序SH来比啊,但是它的什么各种其他的性能都还不错,那这个现在你也没得敲,为啥Linux用的就是这个。有什么好跳的,所有的Linux就是它,那各位我们前面一直在说啊,说Linux是类unnux系统。
17:08
它和UN次数非常接近,那它到底有多先性?先性在哪?Linux和内核Li unnux,它的基本结构都是一样的,另外行通过内核调用加载这样的程序,甚至它们也都是使用Sha来接收我们的Li令。区别在于Linux的标准12是被时。而我们的unix现在的主流标准是是C,是。OK,那其实你就可以理解,它的基本操作都完全一样,但是有个别的命令不一样,因为它到底不是同一个事儿嘛,有个别的配置文件不一样,但是它九成五以上的内容都是相似的,都是一致的。啊,所以我们说如果你拿到苹果的笔记本或者苹果电脑,你会发现你用图形界面,我我反正有这感觉,我不会用,但是打开命令行,我能操作,能够用,哎,它几乎是一致,OK,所以说Linux是z unnux系统。
18:04
好,那各位,我们在Linux系统下有这样一个文件,ETC下的shes,这个文件里表示的是我们支持的什么,我们当前linus支持的事,当标准事,除了位之外这些事,什么C事事,包括这个事最简单的事,它都支持。那换句话说,我们是可以干嘛切换,直接打什么CR就干嘛。直接就切换成C12。但是啊,有人说,那我这样是不是就可以把Linux变成UN了,哎,各位还不对啊,不行啊,为啥事虽然切过去了,但是呢,它对应的命令。对应的文件都不存在,所以你依然没有办法正常操作,这里只是告诉你linus支持这件事啊,EIP退回来啊,OK,好,那这个文件简单了解一下就行,然后但是需要大家记数啊,我们的Linux的标准十二十倍式,好,这节课呢,我们做一下Linux的简住,同时啊share的简述,当然我们也介绍了一下share编程的一些特点,各位小心,Share编程是不需要考虑效率的,实现功能就好,你后面写的时候你也别怕,你写的这东西好像很笨,别人十行写完了,你写了30行,别怕,能实现就是好东西。
19:19
因为他只是给自己用。然后记下来我们linus的标准式叫做贝式就OK了,好,那这节课的内容就是这样,我们下节课再见。
我来说两句