读书笔记《Unix编程艺术》五

来源:互联网 发布:visor是什么软件 编辑:程序博客网 时间:2024/05/22 13:02

语言的分类

  • 语言的分类从基础的文本文件到最后的脚本文件,以下分类是语言从基础功能到不断复杂功能的演变:
    • 简单可读文本文件:/etc/passwd等
    • 结构化可读文件:SNG文件,sng中每一个可读字符对应PNG中一段比特位
    • 在某些上下文解释下开始执行行为的结构化可读文件:xml,html,正则表达式等
    • 声明性语言:通过约束条件来说明在解释性上下文中要完成的行为,如make,
    • 命令性语言:每个命令有其明确的含义,如awk等
    • 图灵完备语言:如dc,bc
    • 脚本语言:Perl ,Python等

设计微型语言

  • 在设计一门微型语言的过程中,考虑以下几点
    • 首先要考虑的是语言复杂度,建议尽量选取以上分类中靠上方的语言(越靠上越简单)。
    • 考虑扩展或嵌入现有脚本。扩展与嵌入的区别如下,用Python与C举例:
      • 扩展:动态载入C库或模块,C入口点称为扩展语言中的可见函数
      • 嵌入:向python解释器发送命令,然后接受结果值在C中使用,即解释器调用C库完成对应功能。
    • 编写自定义语法要保持最小立异性
    • 慎用宏
  • 三种做好微型语言设计的方式(两种好,一种坏)
    • 预先认识到可以使用微型语言设计把编程问题的规格说明提升一个层次
    • 注意到规格说明文件格式越来越类似微型语言
    • (坏)每次增加一个补丁或者一个仓促而就的特性,通过扩展编程微型语言
  • 各种微型语言及其优缺点

    • sng:

      • 功能:将Png的不可读的位图转为可读文件格式
      • 优点:透明性->结构化的数据文件使得编辑,转换等工具无需知道任何其它方的假设,只需要微型语言介质本身就可以彼此协作
    • 正则表达式:

      • 优点:简练
    • Glade:

      • 功能:GUI通过在界面面板上交互选择,放置窗体部件来生成GUI界面,GUI编辑器生成描述该界面的XML文件
      • 优点:符号与域之间的映射非常简单,对象之间的关系表得很直接,舍弃了必须经过思考才能理解的间接表达方式
    • XSLT:

      • 功能:描述文本流变换
      • 缺点:复杂
      • 但具备微型语言最重要的特征:
        • 有限的类型分类,没有记录结构或数组等类似结构
        • 对外部的有限接口
    • DWB,文档编制工作台:

      • 功能:分为三部分,预处理器,troff,后处理器
        • 预处理器:接受微信语言并将命令编译为troff请求
        • 后处理器:将troff输出转为设备能识别的语言
      • 优点:所有工具都共享一个通用文档的文本流表达,格式化系统划分成多个独立组成部分,可以分别调试改进。管道支持插入新的实验性的预处理器和后处理器,而不会干扰原有处理器
    • awk:

      • 功能:文本流过滤程序
      • 缺点:在复杂度与能力的取舍上不好,能力强大但是复杂度太高,易被python等脚本语言替代
    • bc和dc:

      • 功能:支持任意精度的计算
      • 优点:支持用户定义程序库,使得其具备额外功能——可编程性
  • 现代微型语言:要么非常通用而不紧凑,要么就非常不通用但紧凑
0 0
原创粉丝点击