码迷,mamicode.com
首页 > 其他好文 > 详细

从汇编到AWK

时间:2015-05-13 10:18:03      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:编程语言   个人体会   

从大学起,陆陆续续学习或者接触了一些编程语言。
相对来说用得较多的有C语言、C++、汇编。
JAVA,JSP这些看过,没怎么使用过。
后面快毕业的时候接触了python,后面写过一点程序,感觉易用性较高。
 
在这些语言里面,自己投入过较大热情的只有汇编语言,当时觉得汇编语言离底层较近,
自己写的代码和生成的EXE反汇编后的结果差距不大,反正就是觉得比较酷,
加上当时对逆向这些比较感兴趣,以及看一本操作系统实现的书,阅读了不少汇编代码。
 
自己投入时间最长的一个汇编程序是一个数值计算程序,GUI界面。当时陆陆续续总共搞了几个月,
只能说当时真有时间,有耐心。
 
现在回头看当初做的这件事,感觉可以用一句话概括,就是:重复造轮子
 
尤其是对于浮点数的处理。两方面:字符串转换为一个浮点数,浮点数运算。
 
比起整数解析和运算,浮点数处理的工作要麻烦几倍。幸好当时用的编程环境里
带了一个用于解析字符串为浮点数的lib,里面已经包装好了(代码量不小)
 
写了这个程序以后,几乎没再使用汇编写过程序了
 
后面接触到python, 感觉有点瑞士军刀的感觉,比较好使
个人感觉就是 语言直接带一些高级数据结构,不用程序员自己写。直接拿来就用。
不用再写变量类型、申请内存之类的代码(当时还没搞过JAVA)
 
在近卫军做项目的时候,经常碰到一些文本处理任务,比如WORD中一张HBASE的表结构。
20多个字段,要变成一个DO, 每个字段上面还要加上一种注解。如果人肉复制粘贴,很蛋疼,问题是还不止一张表。
当时开发时间很紧张,问一个师兄有什么自动化方法没,他说他没搞过。
又比如, 针对前述那张表的测试数据来了,一个CSV,但是数据有错。。。
错得比较有规律,比如第1列缺失,可以由后面某列得出。
当时用notepad++的宏解决了一些问题,但即使这样也很不爽,费的时间还是不少。还是比较容易出错。
 
经常把碰到的一些文本处理需求记录在笔记里。准备后面抽时间用python或者VIM或者其他什么工具来解决。甚至准备形成一个函数库。
 
后面终于接触到了AWK,之前看过陈皓的博客,但给人的感觉是AWK只是一个命令行工具,可以带几个参数。
后面终于看到一段AWK脚本,长得很像C语言。于是去看了点资料,下载了AWK之父写的那本书。
 
原来别有洞天啊 
 
AWK的唯一目的是用于处理文本,并非通用型编程语言。
使用AWK, 省去了打开文件、关闭文件、读取下一行这些操作,
第一行代码就可以是要表达的逻辑
但这些不是重点,也不难
AWK , 给人的感觉是在面向模式编程。
 
正如AWK之父举的例子:

假设我们有一个文件,它的每一行都是一个名字后跟一个电话号码。我们假设其中一行为“Pope     15193741273”。AWK语言把第一域记作$1,第二域记作$2,??。现在我们想查Pope的电话号码,只需一行AWK语句:$1 == "Pope" { print $2 }

这条语句的意思是:若我们找到一行,其第一域为Pope,则输出其第二域(即电话号码)。现在你已经算是AWK程序员了^_^

 
关键词在于模式:AWK实际上是方便了对文本中的模式的识别分析和操作
正因为面向模式,省去了大量重复的工作。
而对于汇编语言,我觉得可以说是面向机器语言助记符的编程。
很多编程任务实际上首先做的是先识别模式,比如找到包含特定字符串的行。
但AWK把这种任务显式地定义出来,并且使用非常方便。

AWK程序是由一系列模式--动作对组成的,写做

pattern { action }
 
《自私的基因》这本书的作者说生命是基因的生存机器,基因编码了模式及其对应的行动模式。
如果作者看到AWK程序是这样构成的,他会作何感想?
 
我有时在想AWK的作者一定是面临大量的文本处理需求,他们在解决这些需求的过程中
梳理出了那些共同的东西,最终发明了AWK
 
AWK的作者有3位, 分别取姓名中的一个字母组合成AWK: 
Alfred Aho:龙书作者,曾任贝尔实验室计算机科学研究中心副主任,现为哥伦比亚大学Lawrence Gussman 计算机科学系教授
Peter Weinberger: a computer scientist best known for his early work at Bell Labs. He now works at Google.
Brian Kernighan:贝尔实验室的研究员,普林斯顿大学计算机系教授,他最早知名是因为他就是撰写最早的C语言标准“K&C”中的“K”。当然,还有他是经典C语言书籍《C Programming Language》的作者

一篇AWK之父访谈的链接,感觉挺不错

从汇编到AWK

标签:编程语言   个人体会   

原文地址:http://blog.csdn.net/haithink/article/details/45688895

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!