博牛社区
https://bbbs.boniu123.cc/
什么是微型语言
2016-12-24
lxy254069025
恢复备份
导出
导入
更新
清空
关闭
More
保存
重做
撤销
预览
开始
框架
模块
您可以通过导出进行模板备份
我知道了
添加框架
添加模块
100%框架
1:1
1:2
2:1
1:3
3:1
1:1:1
tab框架
关闭
当前为
简洁模式
,您可以更新模块,修改模块属性和数据,要使用完整的拖拽功能,
请点击进入高级模式
关于博牛
联系我们
招聘广告
社区广告
Telegram
Twitter
Facebook
Instagram
Threads
论坛首页
菠菜圈
菠菜圈
游戏API
企业库
产业中心
我是提供商
游戏代理
我有需求
招聘求职
博牛招聘
招聘专区
求职专区
最新动态
Web3
东南亚新闻
国际新闻
产业新闻
全球展会
讨论广场
综合讨论
黑点曝光
畅游世界
美食之旅
生活服务
房屋租售
商品交易
外卖点餐
站务公告
公告专区
毛遂自荐
建议投诉
登录/
注册
博牛社区
›
讨论广场
›
综合讨论
电梯直达
»
返回列表
lxy254069025
等待验证会员
等待验证会员,当前积分3524,距离下一等级还需-3524积分
如何获得积分?
帖子
423
新博币
345
提现
提现
0
元
发表于 2016-12-24 18:36:57
3930
0
|
显示全部楼层
|
倒序浏览
楼主
在真正领略
Linux
下各种
微型语言
那震人心脾的功效之前,我们应该先要搞清楚一个
问题
——什么是微型语言?
在计算机这门科学技术诞生之后的几十年里,人们经过对大量的软件错误模式进行深入研究之后,得出了一个一致的结论:程序员每百行代码的出错率和所使用的语言是无关的。依此可以推断,如果可以用更少的代码行数来完成更多的功能,那也就意味着更少的bug。如何能够做到这样的效果
呢
?
人们首先想到的就是模块化编程,将各种独立的功能抽象成模块,然后像搭积木一样利用很少的代码将各功能模块组合起来。但是模块化编程并没有真正做到减少代码行数,毕竟每个模块也是需要一定量的代码去构成。
经过长期的模块化编程,人们发现在特定领域中总是有一些十分通用的功能模块,并且可以利用
配置
文件将这些功能模块组织起来去完成这个领域的多种不同的功能。因此这种方法开始流行起来,配置文件的结构也逐渐的复杂起来。但配置文件的结构不管有多么复杂,却很难表达复杂的控制逻辑,这迫使人们在需要处理复杂的控制逻辑时不得不再次向程序中添加新的代码。于是代码不断的膨胀,bug也随之滋生。
面对这种状况,人们的智慧发挥了无穷的作用,索性让配置文件具备逻辑控制能力算了。这个时候,有些具备了很强逻辑控制能力的配置文件,已经具备了顺序、循环、选择分支这写作为编程语言的三大要素,从而演变成了一种解释型语言。从此人们在针对特定领域编程时,只需要组织好一份“配置文件”就行了。虽然这个时候也可以算是一种编程行为,但总的代码行数要比使用C一类的通用编程语言少很多,bug自然也少了很多,而且还能更快的完成任务。
这种具备了逻辑控制能力的“配置文件”,就是微型语言。从它的诞生历程可以了解,它们都是针对特定领域的,不具备通用性,这也是称它们为微型语言的主要原因。
逻辑控制能力的强弱,决定了微型语言的表达性;功能涵盖范围的宽窄,决定了微型语言的通用性。当一个微型语言的逻辑控制和功能涵盖达到了与高级通用语言相同的高度时,它也就可以看作是一种新型的通用脚本语言了。很多时候,微型语言介乎于专属配置文件和通用脚本语言之间,它们之间的界限也非常的模糊。图2-1展示了配置文件到脚本语言的这种过度趋势。
在Linux中,微型语言是随处可见的,它们都是为专门应用领域特制的、大量减少程序行数的语言。比如前面说过的用于文本匹配的正则表达式、编写shell程序的一些实用
工具
(awk、sed、dc、bc)和软件开发工具(make、lex、yacc)等。
图1 配置文件到脚本语言的过度趋势
为特定领域设计微型语言是一种强大的设计理念,这也就是所谓的数据驱动编程。它可以让我们为手头的
工作
定义
自
己的高级语言,以便严格规定合理的方法、规则和算法。这样不但降低了全局复杂度,还增加了个人向同行炫耀的资本从而增加成就感。简直就是一石二鸟的绝妙方法。
但是讲解如何去设计一个新的高级语言,已经严重超出本书的范围了,那需要另外一本大部头的著作来完成。这样的著作比比皆是,但是笔者仅为各位读者推荐一本,就是拥有“龙书”之称的《编译原理》。但是别被人给忽悠了,“龙书”的主要作者是Alfred V. Aho,其它人的笔者不能担保其质量。
虽然讲述如何去做设计一个新的高级语言不属于本书的范围,但是让各位读者去领略一些Linux中常用微型语言,本书则是责无旁贷的。也是图2中所列出的大部分微型语言。想用好Linux,它们是必备的知识。
正则表达式在前面的章节中已经介绍过了,本章将不再复述;XML应该有太多人熟悉了,笔者还是不要在这里自毁形象了;make由于其可以
帮助
我们作为研究Linux下绝大多数开源软件源代码以及内核源代码的指路明灯,因此会单独拿出来一章着重介绍。至于lex和yacc,笔者还是知道天有多高地有多厚的,那是“龙书”的责任。余下的rpm、m4、groff、awk、以及bc和dc这是本章的全部内容,那么接下来我们就领略一下那些为这些为特定领域而设计的微型语言们的风采吧!
本专区转载内容来源网络公开渠道,版权归原作者,平台不承担真实性及立场。转载请注明出处。
如有侵权问题,请联系管理员处理:
Telegram @boniuom
个人签名
收藏
0
回复
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
浏览过的版块
畅游世界
我是提供商
美食之旅
外卖点餐
招聘专区
房屋租售
Web3
商品交易
关闭
博牛社区 x 菠菜圈
/1
免费企业入驻
产品曝光难?免费入驻,轻松对接资源方! 限时开放!让你的产品轻松被接入 免费入驻,连接无限可能!
查看 »