编程语言基础
首先,为什么要有编程语言,编程语言是干什么用的?跟人们的吃喝拉撒睡有什么关系,一般来讲,人有一个常规的吃喝拉撒睡和一定的交际,参与社会活动,基本上应该就够了,关于个人价值的实现,各种成就等,似乎不是必需品,而吃喝拉撒睡是实实在在的必需品。那么,在社会的发展中,为什么会出现编程语言呢,它有什么用呢。
说白了,应该可以这么认为,编程的目的主要是让机器帮人们干活。比如,进行农业耕种的时候,和收获的时候,有机器帮人们进行一些劳动,那么人们就可以减少一些辛苦,让机器帮人们进行这些步骤,比如播种,还有农作物长成之后的收获,做成小麦、稻谷等的颗粒,人们主要进行晾晒和装袋,就基本可以了。包括犁地,以前犁地翻土需要人力和动物来完成,后来拖拉机这些机械就可以帮助人们和动物减少劳动的时间和精力。
说到这里,那么编程语言的出现似乎就是社会发展推动而产生的一个产物。应该就是这样的。就像人们说的几次工业革命,第一次是蒸汽机,就那个课本上的蒸汽机火车头,烧炭产生热量,通过热能转化成机械能,就是通过齿轮,连杆等机械构造,烧炭产生的热量推动了火车轮子的转转转,这个应该就是第一次工业革命,解决的问题是,也像以前语文课本上的什么什么河上的纤夫,就是很多人,背着绳子,拉着一个在河上的大船。以前的车,是马拉车,和上海滩影视剧上的黄包车,我们可以大概的总结为,在机械时代到来前,社会生产等经济活动主要依靠的是人力和动物的力量。相对来说,农业生产、运输等日常经济活动的同样的产出的情况下,比如同样种出来多少农作物,同样运输一些纺织物、茶叶等消费品,需要消耗的时间和人们的体力和精力会更多。也就是人们总结的,效率比较低。当然,也是文学爱好者说的,以前什么都很慢,一生只够爱一个人之类的,但是可能也不见得吧,古代好像一生爱很多人的情况也很多啊,人们冬天的取暖水平和夏天的乘凉水平,医疗水平,食物的丰盛程度,可能也并不是特别好,即使从文学艺术的角度来看,真正的文学艺术应该是既包含带有主人公光环的俊男靓女们的豪华生活,也有非主人公的人们的普通生活。这个普通生活只是一个泛称,具体人们的生活质量怎么样,应该是有一些客观现实的表述的。
总之,机械革命,帮助人们减少了很多体力劳动,然后让机械帮人们干活。现在我们也能直观的体验到,比如从A地到B地,假设是1000公里,那么走路和坐马拉车得各好多天吧,坐火车,传统火车,也就应该20个小时左右就到了吧。这个就是机械帮助人们做的事情,让人们的生活总体比以前方便了一些。社会的生产活动效率高了一些。
第二次工业革命,是电,各种各样流水线,有了电,跟之前的机械时代有什么不同呢。比如,90年代的三轮车,是要用摇把来打着的,原理应该是让内燃机转速达到一定程度,内燃机开始把柴油烧起来吧;再比如,90年代,摩托车的启动方式主要是要用脚使劲踩那个机械杆,叫啥记不起来了。这种情况下,主要还是靠机械力来驱动机器转动的。后来就发展为电子打火了,是拧钥匙,拧到启动的位置的时候,内燃机开始启动,再后来好像是钥匙拧到为止,然后按一下启动键,发动机开始启动。对了,还有打火机,之前zippo那种是这个领域的王者,加的是煤油吧,启动是靠火石摩擦带动的,后来主要是电子打火机。工业方面,各种电动机、电气控制系统、PLC那些,电力在机械时代的基础上又提高了效率,包括安全环保等这些。煤油灯换成了电灯。
第三次,就是这个电子计算机,电子通信。手机、电脑、无线设备,电子计算机让资讯变得更加发达,很多事情变得更加便捷。比如这些没这么发达的时候,买火车票和飞机票要去代售点买。现在大家觉得节假日抢票比较麻烦,但是之前节假日买票可能更加麻烦,现在抢票,手机点一些,等着系统排队,之前电子计算机没这么发达的时候,大家用的是普通手机或者还没用手机,要拿身份证到火车票代售点或者火车站去买,那种排队,是真的排队,是人站在那里排,电视上也会看到之前的场景,排队排了好多个小时,结果到跟前的时候,售票员说没票了,怎么搞。手机上抢票没抢到票和现场排队没买到票,客观现实是一样的,但手机排队买票和人站在那里排队买票就不一样了,手机排队买票,该干什么还干什么,吃喝拉撒睡照常进行,手机娱乐看电影都不影响,但是人在那里排队买票,想上厕所也得考虑一会后面的人还让不让再继续排在他前面。这个就是电子计算机帮助人们实现的一些生活的便利。具体来说,是机器帮助人们做了一些事情,就比如协调人们买票排队,并且是否购票成功会通知,还有现在人们经常用的点餐、快递、打车、电商购物等服务。之前点餐几乎没有,20,30块钱吃个饭,还让老板给你送过来,不太现实;之前邮寄一个东西,自己拿着东西去邮局排队,印象中,排队还行,只要手头不忙别的事,但是填单子真的麻烦,寄件地址收件地址,邮编,邮编是真记不住,问别人,别人还忙着呢,排队的人有时候也很多。现在由于机器算力的提升,手机上下个单,快递人员就会上门来拿,而且所耗费的时间一般跟预估的差不多。还有取款,取款机排队,有时候是取款机里面不够了,有时候是手续费太贵,跨省跨行的话,好像是1000收50,对,两顿饭。交水电费,也得排队,也得填单子。现在这些,手机上大部分都可以快速完成。人们经常怀念之前生活的好处,比如节奏慢,食品往往更靠谱等,同时机器确实也帮助人们在很多方面提高了效率,同时,也带来了速度太快的一些人们不能很好的处理的内容,从社会的角度来看,这些很复杂,不好说出来个123,总之,模糊的说,大概都是有好有不好吧。从实际吃喝拉撒睡的角度来说,机器的发展,确实给人们带来了很多不用排队的便捷之处。
我们单从排队这一件事情来说,是怎么让机器帮人们实现的呢。就说回到编程了,
编程就是让机器来做一些事情,不用人来做,那么就要告诉机器怎么做,机器只懂0和1,其他都是人们赋予它的,包括加减乘除与或非判断循环这些,这些可以称为算法吧。
所谓算法,就是0和1到底怎么算。那么人们怎么让机器知道这些呢,机器只管高电平和低电平也就是0和1,那么这些0和1是怎么计算的呢,底层来说是硬件。也是电和机械,比如cpu的指令集,就是接收到什么样的0和1,然后按照那个指令集里面的结构固定的算法来计算这些0和1,在硬件层面,电子制造方面能让硬件识别和计算这些0和1,这相当于信息的输出端。那么信息的输入端怎么输入指令给机器呢,比如让机器排队买票,人们不能直接给机器0和1,因为一句话可能是几万个0和1,人们怎么知道0和1怎么排列对应的是什么意思,相当于几万个甚至多少亿的0和1的组合代表什么意思,不是人类易懂的语言,但是人类要指挥机器干活,就要把信息传递给机器,这个就需要一个翻译,解释器和编译器,把人类易懂的语言翻译成多个0和1的组合,机器就能获得人们的指令了。人们发出的指令,开始应该是汇编语言,就是机器最容易懂的,但是对于人们来说,可能有点不够好用,所以人们从汇编语言就一点一点发展,到编程语言。其实到这里,觉得对于对计算机不够熟悉的人们来说,就有点不容易理解了。什么汇编、什么编程、不就是写代码吗、代码是什么、一串英文字母和英文单词和数字还有标点符号的组合。这些东西就是在那一直敲键盘。大家印象是这样的。事实可能也基本上就是这样的。但是想尝试从另外一个角度来看待计算机方面的工作人员所做的事情。从计算机的发展来说,其实有个比较合适的方式,是用计算机发明的时候,所用的语言来解释,这些方面的东西都是什么意思。比如关于西游记题材比较火的一款单机游戏,要理解这个游戏的一些设定,可能需要了解这个游戏的语言,会更好一点,也就是中文,如果能理解古文,文言文,那可能会效果很好。反过来说,要更好的理解计算机的一些设定,理解其设计的时候所用的语言,可能会很好,如果能理解其语言背后所代表的文化和含义,可能就会很好的理解当初人们发明设计计算机的时候,所用的一些词汇代表着什么意图。就像很了解中文白话文以及文言文所代表的其本身的意思,和背后的中华历史和文化的的意思,对于西游题材的游戏类的设计的理解,可能会很好。所以,计算机既然是以英文为基础发展的,那么从基础去了解其方方面面的基础是什么意思,可能会对于理解所谓编程、代码、计算机有比较合适和方便的理解。
program,人们说是编程,对,翻译过来是这样。可是,编程是什么呢?编写程序,程序是什么呢?是流程?是有顺序的流程?到底是什么?怎么理解?怎么生活化的理解?
program,来自于希腊语拉丁语法语什么的,它之前代表的意思是,记录、公告、声明、计划、方案。这就对得上号了。
比如,写一段英文字母数字和标点符号,还有回车,换行符这些。到底是在干什么?说成,是在写一个计划,一个方案,一个公告,一个声明,一个记录。是不是更好理解一点,可能是吧。
因为写那一大串东西,为了干啥,就是为了让编译器把它们翻译成0和1,让机器去干活,去计算也好,去驱动其他机械结构做什么也好,先不去管它。就是先管,这个program到底是在干啥,可以理解为就是写一个计划。这个计划要这么计划,要那么计划。这个计划就是写给机器用的,计划写好之后,让机器按照这个计划干活。那么这个计划,要先怎样,后怎样,怎么怎么样,这些可能就是行业人们所常说的算法。其实所谓算法,是不是可以理解成,这个计划到底是怎么计划的,来,详细讲讲这个计算的步骤和方案和细节。这么说,似乎就很好理解了。
理解什么?理解所谓的program是什么。
那么计算机方面工作人员,在那敲键盘,写一串英文自己和数字和标点符号等等这些,到底是在干嘛?理解成,是在写一份计划,这个计划是让机器帮人们干一些活的计划,听着好像就比较实在的。人们似乎也会理解起来很形象。
而且,不仅是形象不形象的问题,不比喻。那是不是真的在写一份计划呢,是啊,就是让机器干活的计划啊。工程师写的快,一般是这位工程师对这个计划或者这一类的计划非常熟悉,工程师一直在思考,不写,那就是这位工程师对这个计划需要更缜密的思考和前前后后方方面面的考虑,不是说直接写就好了,而是要构思个主体框架,就跟画画一样,先有个整个框架,再一笔一划画吧。
所以,program就是在写一份让机器干活的计划,事情客观是这样的,而不是比喻成这样。
而且program我们绕过所谓的约定俗称的翻译,其词语本身的意思,就是计划,节目表之类的,那节目表本身也就是一个活动的节目安排的计划。
所以,用计划来理解program这个动词和名词都是准确的
class 类 (班级,其实更有一个意思就是生物学上的划分,比如什么类目那种,犬科、猫科动物,那些意思,class在生物学方面翻译叫纲,反正也是一种种类的意思,也就是说,class本身就是一种具有相同特性的一些种类什么的,所以在计算机领域,也是一些框架式的共同特性的那种感觉。所以说什么定义一个类,什么的,那就是定义一些相同特征啥的,什么蓝本,什么模版,也是够能翻译的。随便怎么翻译吧,这玩意,了解它本身到底是代表啥意思,可能更接近这个词用在计算机领域时的本意,当时是用英语的,所以理解这个英语是啥意思,可能比反复琢磨翻译过来的中文是啥意思要合适一些。就比如把西游里面的一个什么元素翻译成英文给英文的用户看了,用户反复琢磨那个翻译过去的英文单词,可能还是琢磨不透为啥啊,什么意思啊,但如果用户懂中文,甚至很懂中华文化,他可能会很恰当的理解这些元素了。我们理解计算机方面的知识,也是类似,直接去琢磨它原文为什么那么叫,为啥啊,要是了解文化背景和词语含义,可能就理解的很好了。就比如program计划和class纲)
function 函数(函数是啥,function就是功能啊)
object 对象 (对象是啥,object就是物体啊)
attribute 属性
element 元素
list 列表
array 数组
dictonary 字典
set 集合
instance 实例
variable 变量
method 方法
define python里面定义函数的用词
oop object-oriented programming 看着物体写计划
不一一详细去说了,都是大同小异的
所以,可能编程语言的基础,就是首先刨除这些既定的翻译的概念的绕绕绕,看不懂,一脸懵逼。而是先去理解这些东西的英文到底是个啥,现在资讯这么发达,可以AI搜索,可以看视频对于单词的解释和举例,还可以查询这个英文单词的词根与来源,几乎都和实际生活有关系,跟农业生产有关系。因为语言的发展和和人类的发展都差不多节奏的吧,所以语言往往是由时代印记的。所以我们去查询这些单词的词根与来源,再看看网页视频上对于这些单词的举例和讲解。我们似乎就可以大概琢磨到,再计算机发展的初期,当初的那些人们为什么给计算机的这个那个起这个那个名称。
透过翻译,去看最初设计者是怎么想的,可能会方便理解计算机方面的各个基础知识吧。

2879

被折叠的 条评论
为什么被折叠?



