这是一个系列文章,目前共5篇。文章尽可能不涉及任何编程专业术语,努力做到让一般人都能读懂,所以,我会尽最大可能讲的通俗易懂些,便于为各位建立信心,同时也能让各位认知到这个行业的很多问题,避免再次走弯路,祝愿各位都能有所收获。
态度篇(这是我唯一希望你认知到的东西,你可以什么都忘了,但态度得端正。)
为什么985高校还是在上C语言?这难道不是大学教育的失败?
为什么现在985高校还是上C语言课?_zhumengyisheng的博客-CSDN博客现在工作它们不都在找java、PHP、golang之类的吗?可是为什么985大学了居然还在教学生古老的C++啊?这不是误人子弟?这难道不是大学教育的失败?https://blog.csdn.net/zhumengyisheng/article/details/121391642计算机那么好,为什么计算机专业出身的很多人毕业都转行不搞计算机了? 计算机那么好,为什么计算机专业出身的很多人毕业都转行不搞计算机了?_zhumengyisheng的博客-CSDN博客计算机那么好,为什么计算机专业出身的很多人毕业都转行不搞计算机了?为什么挤破头都抢不上的计算机专业,毕业工资那么高,分分钟年薪几十万,那他们为什么要转行呢?这里面到底有什么不为人知的秘密?到底是什么想不开让他们放弃了如此大好钱程前程?https://blog.csdn.net/zhumengyisheng/article/details/121391821
学习篇
编程语言第一课 入门 程序员的道与术https://blog.csdn.net/zhumengyisheng/article/details/121391210https://blog.csdn.net/zhumengyisheng/article/details/121391210
编程语言第二课 晋级 不忘初心 方得始终 https://blog.csdn.net/zhumengyisheng/article/details/121391458https://blog.csdn.net/zhumengyisheng/article/details/121391458
编程语言第三课 深入 想法也疯狂,创造一门语言想法也疯狂--创造一门语言_zhumengyisheng的博客-CSDN博客开天辟地走一遭学了那么多语言,敢不敢挑战一次自己,创造一门语言?语言从来都不是天生的,它们都是人写出来的,既然别人能写,那你能不能写?如果要创造一门语言,那么到底该怎么创造?https://blog.csdn.net/zhumengyisheng/article/details/121391567
我永远有句话送给你:
教程从来都不是最重要的东西,最重要的是你的学习态度。
认真学习,刻苦专研,严谨求知的态度,坐的了冷板凳,强大的肾功能,最后再乘以时间,后积才能薄发。从来都是:
台上一分钟,台下十年功。
哪个行业里那些拿高薪的人不是如此?没有人可以随随便便成功。
实践篇
是骡子是马总要拉出来溜溜,你学了那么多东西总需要找个地方去展示你的技术实力,这样不管你是面试也好,还是做个项目也罢,总得找个地方存放你的代码,以前都得自己买服务器,就那种机房放那种,家里明显不现实,所以大家现在都是自己买云服务器,很便宜,这种东西作为专业的程序员那是必备的,我一般主要买阿里云的,有十几台,腾讯云大概有个三四台,阿里云做的早些,市场份额也大,大概60%多市场都是阿里云的,所以一般优先买阿里云就成,如果腾讯云便宜的话,也可以买。
不管用不用,领个红包不要钱,万一你以后用也能当钱花。
阿里云限量红包,速领。阿里云限量红包https://promotion.aliyun.com/ntms/yunparter/invite.html?userCode=v6vhcyn8腾讯云新用户专享腾讯云优惠券_代金券_云服务器折扣券-腾讯云腾讯云优惠券,腾讯云代金券,腾讯云服务器折扣券https://cloud.tencent.com/act/vouchers/list?fromSource=gwzcw.2477393.2477393.2477393&utm_medium=cpc&utm_id=gwzcw.2477393.2477393.2477393&cps_key=b0c7af9380d6324294316347ba2c8a49阿里云最新活动 最新活动_阿里云最新活动,阿里云最全的优惠聚集地https://www.aliyun.com/activity?userCode=v6vhcyn8
腾讯云最新活动腾讯云11.11大促_腾讯云11.11优惠活动-腾讯云腾讯云推出11.11智惠云集活动:爆品秒杀,企业专享优惠,低至1折起;企业抽奖活动,100%中奖;免费领取11000元代金券!https://cloud.tencent.com/act/double11?spread_hash_key=3d5d628c89ca2247f5f05604d3ae5c3a&from=pre-2021double11 阿里云腾讯云所有优惠汇总浅谈VPS云服务器(内含神秘大额专属特惠)_zhumengyisheng的博客-CSDN博客怎么做一个网站?都需要什么?要个服务器?要个域名?去哪里买?哪个好啊?有优惠吗?所有的优惠都在这里了,给自己建个网站吧,毕竟要学以致用啊!https://blog.csdn.net/zhumengyisheng/article/details/121391896
以下为本次正文:
学了那么多的程序语言:C++,Python,golang,java,PHP,javascript.......等等,不知道你有没有一个疯狂的想法:自己写一门编程语言。
那么,究竟怎么才能写一门程序语言呢?放弃吧,你不会的,不可能的。但是我们今天,就是要把不可能变成可能,为可能寻找一丝希望。
再重复程序语言是什么?程序语言就是一门语言。
那么我们接下来要做什么?就是创造一门语言了呗!那么语言的本质又是什么?语言的本质是人们创造出来用以沟通的工具,也就是说我们在创造一个工具。一个什么样的工具?用来沟通的工具软件。所以我们明白了,其实语言的本质是人和人或人和物沟通的工具软件。那我们要写的语言,其核心本质就是创造一个人和计算机沟通的软件,然后人去使用这个软件的过程,就是编程语言的书写过程。
总算,学到今天这一步,你终于明白了,编程在做什么事情?就是在使用一个别人编写好的软件啊,按照人家规定的语法规范,其实就是说明书嘛,去使用一个软件的过程,这就是编程。
编程的本质其实是翻译,把人看懂的东西翻译成计算机看懂的东西。
下面我们进入一个语言的创造过程:如何创造一个语言?对不起,我也不会,不会怎么办?我们一直在说,程序语言就是语言,那就去看看语言构成的文章是怎么被人识别的,我们只需要去模拟这个识别过程,然后分解这个识别过程,就可以知道了。
当你看到这篇文章的时候,你该如何读懂它?
首先第一步:你找到第一句话的结束;
第二步应该是什么?是不是得把一个长长的句子分解成一个一个的单词?
第三步应该是什么?是不是理解每一个单词的含义,然后把这句话在你脑海里形成一个画面?
通过上面的三步,我们是不是就能理解了这句话的含义并且在脑海中形成了这句话的一个理解画面,我们要理解一篇文章是不是一直在重复上面的三个步骤?所以,我们在上面形成了一个核心思想:
分句--分词--理解
是的,一个人阅读一篇文章的过程是不是就是在不断的重复上面的过程?
那么如何写一门程序语言?如何定义一门语言?
第一步是什么?定义一种分句的规定,汉语用。分句,英语以.分句,大部分的程序语言以;分句,少数程序语言以换行分句,假如我们规定,在我们的语言中以$分句,那我们就知道了,只要我们写$符合就代表着我们这种语言一句话结束。
按照上面的说法,第二步我们应该完成分词的操作,就是把一句话分成一个个的字和词,也就是说我们需要做一个程序,这个程序能够完成按照一定的格式,把句子分解成一个一个的单词,比如我们规定2个空格代表一个单词的结束,那么它就会按照每两个空格一个单词把每个单词给我分解出来,直到遇见$这个分句的标志结束,然后这句话就被分解成了一个一个的单词。
第三步应该干什么?按照我们上面的说法,第三步是理解,对于程序语言来讲,第三步是干什么?理解就意味着执行呗,你在你的脑海中形成一个画面,程序语言按照分解后的结果完成对应页面的绘制,这完全是一样的好嘛!所以第三步我们应该做一个什么东西?我们应该做一个程序去执行这每一个字词。
好了,经过上面的描绘,我们大概知道了我们要干些什么?
我们需要定义一个分句格式,我们需要写一个分词程序,我们需要写一个执行程序
我们需要定义下来静态的东西(变量)怎么写
我们需要定义下来动态的过程使用怎么样的结构去写
还有吗?
好像够了
静态的变量和动态的过程我们只需要去定义好如何书写,其实无非就是定义了一种格式而已,只要你的执行程序能够正确的认识这种格式并且合理输出即可,你爱怎么定义怎么定义;
分句格式你爱怎么定义怎么定义,只要你的执行程序能够识别这种格式即可;
分词程序其实无非也就是按照一种制定的格式去拆解句子,你想怎么定义都行,只要写句子的人遵循你的格式即可;
再然后我们发现最重要的就是我们的执行程序了,执行程序是一种什么东西啊?
我们需要去了解一下执行程序怎么玩,经过我们对各种现有语言的分析,我们可以得出两种结果,执行程序分为编译型和解释型程序,它们有什么区别?
解析型语言执行程序的特点就是很直白的,我们读一行,分词一行,执行一行,然后从上到下依序执行;这个很容易理解;我们可以看到它最重要的特点是程序语言代码没有经过加工,直接扔给了执行程序去执行,所以一切都要从头开始;那么面对这样的问题,我们想加快程序语言的执行速度,能不能有什么办法呢?
一种语言要让计算认识,就必然要经过把人认识的可写的语言转化成计算机认识的代码,不然计算机也不认识啊,所以你的执行程序是一定要把这种语言转化成计算机可以认识的语言去执行的,或者说你一定要交给一个中介,这个中介知道计算机的脑袋里面都有什么,都认识什么,然后它再去沟通,所以我们如果想让程序更快的执行,就需要把人认识的代码转化成计算机认识的代码,如果我们直接去运行这种人认识的代码中间要经过转化过程比较慢,那么我们就选择直接保存转化后的代码,然后每次扔给计算机这种转化后的代码,计算机认识的代码,这样就可以直接执行了,所以我们把这种执行程序叫做编译型程序语言。
以上我们知道了,语言分为解释型和编译型,编译型更快,因为它直接执行的是计算机认识的代码,但缺点就是每次保存的都是编译 后的东西,你每一次的修改都需呀重新打包编译,最后再去运行这种编译后的结果,所以我们说它不够灵活,每次修改都要重新打包发布,而解释型的特点也很明显,每次直接改就好,但每一次都要从人直接可以读的代码来运行,相对而言速度就没有那么快。
所以,到这一步我们终于可以说,我们可以做到,创造一门语言,我们需要去定义上面的那些东东,需要去定义语言语法规范结构,我们需要去定义怎么输出,怎么分句,怎么定义变量,怎么分词,而最最最重要的是,我们需要根据我们自己的定义,去写它的解读程序,也就是说我们需要去写执行程序,到现在,我们终于明白了:
为什么说c语言是大多语言的源头
语言都是相通的
因为语言本身都是一种程序,我们用c语言去写了对应的执行程序,然后创造了一种语言软件,而你以前所谓的各种语言学习,都是在学习我们这种软件的使用和软件的升级,你以为你是在学习一门语言吗?不,你是在学习一个软件是怎么用的,你是在学习如何用好一个语言编写软件,语言不断出现的新语法,实质也就是这门语言软件在升级。
终于
可以回答开始的问题了
如何写一门程序语言?
本文完。