网站大量收购独家精品文档,联系QQ:2885784924

《程序设计实践》中文版.pdf

  1. 1、本文档被系统程序自动判定探测到侵权嫌疑,本站暂时做下架处理。
  2. 2、如果您确认为侵权,可联系本站左侧在线QQ客服请求删除。我们会保证在24小时内做出处理,应急电话:400-050-0827。
  3. 3、此文档由网友上传,因疑似侵权的原因,本站不提供该文档下载,只提供部分内容试读。如果您是出版社/作者,看到后可认领文档,您也可以联系本站进行批量认领。
查看更多
《程序设计实践》中文版

下载 第9章 记 法 在人的所有造物中,语言或许是最奇妙的东西了。 Giles Lytton Strachey ,《词和诗》 采用正确的语言有可能使某个程序的书写变得容易许多。正是由于这种情况,在实际程 序员的武器库里都有许多东西,不仅有像 C这一类的通用语言,还有可编程的 s h e l l 、脚本语言 以及许多面向特定用途的语言。 好记法的威力不仅表现在传统的程序设计中,也体现在各种特定问题领域。正则表达式 使我们能以非常紧凑的形式 (或许还有点像密码 )定义一个字符串类;H T M L使我们能定义交互 式文档的编排格式,其中还常常嵌入其他语言,如 J a v a S c r i p t程序; P o s t S c r i p t 能把整个文档 —例如这本书—表示为一个格式程序。电子表格和文字处理器也常常包含某种程序语言, 例如Visual Basic ,用以计算其中的表达式,访问有关信息,或者做格式编排的控制等。 如果你发现自己为某些平庸的事情写了太多代码,或者你需要表述某些过程却遇到了很大 麻烦,那么你正在使用的很可能是一种不适当的语言。如果合适的语言不存在,那么这很可 能就是个机会,需要你自己来建立一种。发明语言并不意味着是建立某种像 J a v a那样复杂的东 西,许多棘手的问题常常可以通过改变描述方式的办法来解决。请考虑一下 p r i n t f一类函数 的格式描述串,那就可以看作是一种控制数据打印方式的、紧凑的、描述能力很强的语言。 在本章中我们要讨论怎样通过记法去解决问题。这里还要展示一些技术,这些技术可以 用于实现你自己的专用语言。我们还要探索用程序来写其他程序的可能性,这是记法使用的 一种极端形式,也是很常见的。实际上,这种技术并不难使用,远不像许多程序员所认为的 那样。 9.1 数据格式 在我们最希望对计算机说的东西 ( “请解决我的问题”) 与为了使一个工作能够完成而必须 说的东西之间,永远存在着一条鸿沟。能把这条鸿沟填得越窄,当然就越好。好的记法使我 们能更容易说出自己想说的东西,又不太容易因为不当心而说出错误的东西。确实也有这样 的情况,好的记法能给人提供新的见识,帮助我们解决看起来非常困难的问题,甚至引导我 们得出新的发现。 小语言是指那些针对较窄的领域而使用的特定记法,它们不仅提供了某种好界面,还能 够帮助人组织实现它们的程序。 p r i n t f的格式控制序列是一个很好的例子: 格式串里的每个 %标记着一个位置,要求在这里插入 p r i n t f下一个参数的值。在一些可 省缺的标志或域宽说明之后,最后一个字符指明了所要求的参数类型。这种记法非常紧凑, 既直观又容易书写,实现起来也很方便。作为其替代物的 C++ 的i o s t r e a m和J a v a 的 170计计程序设计实践 下载 j a v a . i o看起来更笨拙,究其原因,虽然它们扩充到了用户定义类型,提供了类型检查,但 却没能提供一种特殊的记法。 也有些非标准的p r i n t f实现,它们允许人们在内部功能之外增加自己的方式。如果你使 用其他数据类型,经常要做它们的输出转换,有这种功能就非常方便。例如,一个编译程序 可能想用 % L输出行号和文件名;一个图形系统可能用 % P表示点,而用 % R表示矩形。在第 4 章 里我们看到为提取股票价格行情而设的字母数字的神秘序列,采用的也是类似想法,是为编 排股票数据的组合而提供一种紧凑记法。 现在我们在C和C + +里做些类似的例子。假设我们需要从一个系统向另一个系统传送一种 包含各种数据类型的组合数据包。在第 8章我们已经了解到,最清晰的一种解法可能就是把数 据包转换为正文表示。当然,标准网络规程所使用的多半是二进制格式,为的是效率或者数 据规模。现在的问题是:应该如何去写处理数据包的代码,使它能够可移植、高效率,而且 又很容易使用? 为使这个讨论更实在些,设想我们在系统间传递的是包含 8位、 1 6位和3 2位数据项的包。 ANSI C 告诉我们,8位数据总可以存储在 c h a r里,1 6

文档评论(0)

牛X文档 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档