面向语言编程(LOP),从自动化代码生成更进一步

面向语言编程的通俗定义是:将特定领域的知识融合到一种专用的计算机语言当中,从而提高人与计算机交流的效率。

c语言什么程度才能学单片机(学单片机连C语言都没学好)(1)

自动化代码生成其实就是面向语言编程。语言不即是是编程语言,能够是图,也能够是表,任何能够建设人和机器之间交流渠道的都是计算机语言。软件开发历史上的一次出产率的飞跃是高级语言的创造。它让我们以更简洁的方式达到更复杂的功能。但是高级语言也有它的缺少点,那就是从问题领域到程序指令的过程很复杂。由于高级语言是为通用目标而设计的,所以离问题领域很远。举例来说,要做一个图形界面,我能够跟另一个工程师说:这里放一个按钮,那边放一个输写框,当按下按钮的时候,就在输写框里显示Hello World。我甚至能够随手给他画出来。

c语言什么程度才能学单片机(学单片机连C语言都没学好)(2)

文章相对比较长,字数比较多,大家可以先打开头像关注我,之后慢慢看,///插播一条:我自己在今年年初录制了一套还比较系统的入门单片机教程,想要的同学找我拿就行了免費的,私信我就可以哦~点我头像左下角黑色字体加我也能领取哦。最近比较闲,带做毕设,带学生参加省级或以上比赛///

对于我和他直接的交流而言,这已经足够了,5分钟。但是要让转变为计算机能够了解的语言,须要多久?

假如是汇编语言?(告诉计算机怎么样操作寄存器和内存)

c语言什么程度才能学单片机(学单片机连C语言都没学好)(3)

假如是C ? (告诉计算机怎么样在屏幕上绘图,假如响应鼠标键盘音讯)

假如有一个不错的图形界面库?(告诉计算机创建Button,Label对象,管理这些对象,放置这些对象,处理音讯)

假如有一个不错的开发框架 IDE? (用WYSIWYG工具绘制,设计类,类的成员变量,编写音讯响应函数)

假如有一门专门做图形界面开发的语言?

能够是这样的:

c语言什么程度才能学单片机(学单片机连C语言都没学好)(4)

通用的计算机语言是基于变量,类,分支,循环,链表,音讯这些概念的。这些概念离问题自身有着遥远的距离,而且表达才能非常有限。自然语言表达才能很强,但是歧义和冗余太多,没法格式化规范化。传统的思想告诉我们:计算机语言就是一条条的指令,编程就是写下这些指令。而面向语言编程的思想是,用尽量贴近问题,贴近人的思维的办法来描述问题,从而降低从人的思想到计算机软件转换的难度。

举一个游戏开发的例子。此时的网络游戏普遍的采用了C 或者C开发游戏引擎。而详细的游戏内容,则是由一系列二次开发工具和语言完成的。地图编辑器就是一种面向游戏的语言。Lua或者类似的脚本则被嵌入到游戏内部,拿来编写武器,技能,任务等等。Lua自身不具备独立开发应用程序的才能,然而游戏引擎的设计者通过给Lua提供一系列的,各种层次上的接口,将领域知识密集的赋予了脚本,从而大大提高了游戏二次开发的效率。网络游戏的鼻祖MUD则是设计了LPC来作为游戏的开发语言。MUD的引擎MudOS和LPC之间的关系如图:

用LPC创建一个NPC的代码类似如下:

c语言什么程度才能学单片机(学单片机连C语言都没学好)(5)

LPC造就了一大批业余游戏开发者,甚至成为很多人进入IT行业的起点。理由就是它简略,易了解,100%为游戏开发设计。这就是LOP的魅力。

优势和劣势

LOP最重要的优点是将领域知识固化到语言中,从而:

1.提高开发效率。

2.优化团队构造,降低交流老本,领域专家和程序员能够更好的合作。

3.降低耦合,易于维护。

然后,由于LOP不是通用语言,所波及的范围就狭窄很多,所以:

1.更容易得到稳定的系统

2.更容易移植

相应的,LOP也有它的劣势:

1.LOP对领域知识抽象的要求比框架更高。

2.开发一门新的语言自身的老本。幸好此时设计一门新的语言不算太难,还有Lua这样的“专用二次开发”语言的支持。

性能损失。不过相比开发老本的节省,在非性能核心局部运用LOP还是很值得的。

对单片机感兴趣的朋友可以找我,我录制了一些关于单片机的入门教程,有需要的童鞋找我拿就像,免费的,私信我“林老师”就可以拿~点击打开我的头像就能领取。

,