阿里云
服务器地域选择
发表主题 回复主题
  • 15740阅读
  • 11回复

什么是微型语言

级别: 阿里大牛
发帖
9
云币
77
— 本帖被 夜之魅 从 开发者交流 移动到本区(2014-09-15) —
5d^sA;c  
  在真正领略Linux下各种微型语言那震人心脾的功效之前,我们应该先要搞清楚一个问题——什么是微型语言? Y =I'czg  
  在计算机这门科学技术诞生之后的几十年里,人们经过对大量的软件错误模式进行深入研究之后,得出了一个一致的结论:程序员每百行代码的出错率和所使用的语言是无关的。依此可以推断,如果可以用更少的代码行数来完成更多的功能,那也就意味着更少的bug。如何能够做到这样的效果 iy!=6  
人们首先想到的就是模块化编程,将各种独立的功能抽象成模块,然后像搭积木一样利用很少的代码将各功能模块组合起来。但是模块化编程并没有真正做到减少代码行数,毕竟每个模块也是需要一定量的代码去构成。 mdDOvm:&  
  经过长期的模块化编程,人们发现在特定领域中总是有一些十分通用的功能模块,并且可以利用配置文件将这些功能模块组织起来去完成这个领域的多种不同的功能。因此这种方法开始流行起来,配置文件的结构也逐渐的复杂起来。但配置文件的结构不管有多么复杂,却很难表达复杂的控制逻辑,这迫使人们在需要处理复杂的控制逻辑时不得不再次向程序中添加新的代码。于是代码不断的膨胀,bug也随之滋生。 KYI/  
  面对这种状况,人们的智慧发挥了无穷的作用,索性让配置文件具备逻辑控制能力算了。这个时候,有些具备了很强逻辑控制能力的配置文件,已经具备了顺序、循环、选择分支这写作为编程语言的三大要素,从而演变成了一种解释型语言。从此人们在针对特定领域编程时,只需要组织好一份“配置文件”就行了。虽然这个时候也可以算是一种编程行为,但总的代码行数要比使用C一类的通用编程语言少很多,bug自然也少了很多,而且还能更快的完成任务。 Eyqa?$R  
  这种具备了逻辑控制能力的“配置文件”,就是微型语言。从它的诞生历程可以了解,它们都是针对特定领域的,不具备通用性,这也是称它们为微型语言的主要原因。 aFm_;\  
  逻辑控制能力的强弱,决定了微型语言的表达性;功能涵盖范围的宽窄,决定了微型语言的通用性。当一个微型语言的逻辑控制和功能涵盖达到了与高级通用语言相同的高度时,它也就可以看作是一种新型的通用脚本语言了。很多时候,微型语言介乎于专属配置文件和通用脚本语言之间,它们之间的界限也非常的模糊。图2-1展示了配置文件到脚本语言的这种过度趋势。 ie95rZp  
  在Linux中,微型语言是随处可见的,它们都是为专门应用领域特制的、大量减少程序行数的语言。比如前面说过的用于文本匹配的正则表达式、编写shell程序的一些实用工具(awk、sed、dc、bc)和软件开发工具(make、lex、yacc)等。 o#Dk& cH  
O _ gGf  
Lg.gfny[(t  
%)1?TU  
'GWN~5  
7S :\"A7  
?e4YGOe.  
图1 配置文件到脚本语言的过度趋势 4E+e}\r:6  
Hzz %3}E  
  为特定领域设计微型语言是一种强大的设计理念,这也就是所谓的数据驱动编程。它可以让我们为手头的工作定义己的高级语言,以便严格规定合理的方法、规则和算法。这样不但降低了全局复杂度,还增加了个人向同行炫耀的资本从而增加成就感。简直就是一石二鸟的绝妙方法。 G>}255qY  
  但是讲解如何去设计一个新的高级语言,已经严重超出本书的范围了,那需要另外一本大部头的著作来完成。这样的著作比比皆是,但是笔者仅为各位读者推荐一本,就是拥有“龙书”之称的《编译原理》。但是别被人给忽悠了,“龙书”的主要作者是Alfred V. Aho,其它人的笔者不能担保其质量。 vn8aFA  
虽然讲述如何去做设计一个新的高级语言不属于本书的范围,但是让各位读者去领略一些Linux中常用微型语言,本书则是责无旁贷的。也是图2中所列出的大部分微型语言。想用好Linux,它们是必备的知识。 ? :%@vM  
  正则表达式在前面的章节中已经介绍过了,本章将不再复述;XML应该有太多人熟悉了,笔者还是不要在这里自毁形象了;make由于其可以帮助我们作为研究Linux下绝大多数开源软件源代码以及内核源代码的指路明灯,因此会单独拿出来一章着重介绍。至于lex和yacc,笔者还是知道天有多高地有多厚的,那是“龙书”的责任。余下的rpm、m4、groff、awk、以及bc和dc这是本章的全部内容,那么接下来我们就领略一下那些为这些为特定领域而设计的微型语言们的风采吧!
本帖最近评分记录: 3 条评分 云币 +3
zolo 云币 +1 不明觉厉 2014-09-04
小猪猪 云币 +1 一切都是浮云 2014-07-27
林林林林 云币 +1 你懂的!顶大牛 2014-07-23
关键词: Linux 微型语言
级别: 技术砖家
发帖
1925
云币
3578
只看该作者 沙发  发表于: 2014-07-23
你懂的!顶大牛
级别: 菜鸟
发帖
43
云币
88
只看该作者 板凳  发表于: 2014-07-24
Re什么是微型语言
昨天晚上把这个帖子看了两三遍,茅塞顿开!~
级别: 码农
发帖
240
云币
534
只看该作者 地板  发表于: 2014-07-24
比如 某些工程师 在处理数据和ip的时候会要求你只提供数据的一列(文本格式,不是xls那种)。 v7O&9a;  
H#8]Lb@@:  
你要是动用个c#,java,c++什么的就太费时间,用微型语言可能一句话就搞定了。
级别: 技术砖家
发帖
1361
云币
494
只看该作者 4楼 发表于: 2014-07-24
我顶你个肺啊~,大牛威武
级别: 架构狮
发帖
1438
云币
1888

只看该作者 5楼 发表于: 2014-08-30
学习了
级别: 小白
发帖
5
云币
5
只看该作者 6楼 发表于: 2014-10-29
Re什么是微型语言
不了解这个啊。。
级别: 菜鸟
发帖
46
云币
9
只看该作者 7楼 发表于: 2014-11-03
Re什么是微型语言
高大上的赶脚啊~~~~~~
级别: 程序猿
发帖
407
云币
69
只看该作者 8楼 发表于: 2014-11-06
从来没有听说过  第一次听到   学习了哈!
级别: 菜鸟
发帖
84
云币
7
只看该作者 9楼 发表于: 2014-12-06
Re什么是微型语言
级别: 新人
发帖
1
云币
2
只看该作者 10楼 发表于: 2015-09-04
Re什么是微型语言
能提炼一下让菜鸟也能听懂的东东吗?
级别: 新人
发帖
4
云币
11
只看该作者 11楼 发表于: 2015-12-22
Re什么是微型语言
学习了,活到老,学到老,说的很有道理 v&(X& q  
发表主题 回复主题
« 返回列表上一主题下一主题

限100 字节
批量上传需要先选择文件,再选择上传
 
验证问题: 阿里云官网域名是什么? 正确答案:www.aliyun.com
上一个 下一个