《编程匠艺》读书笔记之二十一

第二十三章 编程领域大观——不同的编程分支
  • 不存在一个比其他语言都要好的编程语言,有许多不同的问题类别要在许多不同的环境下得到解决,解决方法的区别不仅仅是技术上的,它们在技巧上也会有所区别。
  • 熟悉你的领域并懂得它所独有的问题,这非常重要。
  • 编程有各种各样的类型,分别处于不同的问题域汇总,没有类型都有其独特的问题,并需要特定的技能和经验。
  • 应用程序有两个主要市场:塑装软件和定制应用程序。
  • 塑装软件是为大规模市场开发的,对于塑装软件开发人员来说,生存是很困难的,你不能控制代码运行的环境,它必须能够很好的应付各种版本的操作系统,以及不同的机器配置,可以与机器上安装的不同的库和其他应用程序很好的共存。
  • 定制应用程序是根据订单制作的,它关注的焦点不是引人注意的UI,不是永无止境的功能列表,编写这种软件没有任何商业限制,让它能够运行,交付它,得到付款。
  • 游戏编程是应用程序编程的一种具体形式,是否有好的理念,是区分优秀并且成功的游戏与一般的游戏的清晰界限。
  • 专业化游戏开发是一项趣味盎然的工作,但却是一个竞争异常激烈的行业,在这个行业中,需要开发人员能够跟上最新技术的发展,赶得上疯狂的截止日期,并能接受最后一刻没有商量余地的需求变更。
  • 如果编写应用程序的程序员需要从底层系统获得大量支持,那么就必须有人提供这些底层系统,这就是系统编程。
  • 系统软件的服务对象是应用程序的开发人员,它朝外接触的公共接口是一套API,食物链上游的软件将使用这些API。
  • 嵌入式系统的设计目的就是让它做一件事情,并做得很可靠。
  • 典型的嵌入式系统由一个小型计算机、一些专用硬件以及实时操作系统或一个简单的控制程序组成。
  • 简单的嵌入式系统只运行一个软件,不需要很复杂的线程编程环境——甚至连一个操作系统都没有。
  • 分布式系统是由多台计算机组成,处理和设计分布式系统引入了整整一个全新世界的问题。
  • 设计一个多个程序组成的系统,要使程序分布在不同的机器上,而所有这些机器都能像一个整体一样保持连贯的工作。
  • 有一些中间件系统采用面向对象的技术,还有一些采用更加步骤化的方法,中间件其实就是一个连接软件并允许某种程度的平台中立性,只要中间件在一个指定的平台上运行,客户代码就不必关心它正调用的平台是怎样的。
  • 网格计算和群集系统是特别的分布机制,有助于数字编程工作,使得高性能分布式的计算算法的实现称为可能,群集是高度耦合的系统,通常所有的机器都处于同一个机房,使用相同的硬件和操作系统,有某种集群中间件互联;网格是一种松散的耦合,它们可以分布在不同的地点,并运行异类环境,它们之间通过标准的网络协议进行通信。
  • 网络应用程序使你可以像对待自己本地的操作系统一样对待网络浏览器,网络不好的一面是用户的期望不停的提高,但是你的代码永远都不够稳定。
  • 编写网络应用程序的程序员面对的问题主要是怎样与可能用到的各种各样的浏览器打交道,处理这些浏览器的HTML特点和奇怪的JavaScript特性。
  • 企业编程就是要为整个公司提供系统,让所有分割的系统结合在一起,形成一个统一连贯的整体。
  • 企业编程与定制应用程序软件有很多共同特点。
  • 在企业编程中,你对执行化境有合理的控制权,因此,不必担心代码是否可以在每个版本的操作系统中都能运行,也不必担心这些代码是否可以在所有可以想象到的软件配置中运行。
  • 数字编程涉及科学的、高度技术含量的任务,使用大量数学知识。
  • 超级计算机不是一个主框架,主框架是一种高性能计算机,它的设计目的是为了同事满足尽可能多的程序一起运行,常在企业内充当集中式的计算资源。
  • 数学计算需要能快速运算高性能算法来充分利用计算平台的能力。
  • 每种编程类型都会呈现出一组不同的问题,而且每一个程序都有着其独有的复杂之处。
  • 每种编程都需要作出适合这种类型软件的基本设计决策。软件开发人员一般会专门从事于某一个特定的领域,并学会以适合其领域的方式进行思考。

  • 优秀的程序员:1. 了解他们所面对的问题的本质;2. 按照问题域来规划他们的代码和设计。
  • 糟糕的程序员:1. 有这天真而狭隘的软件世界观,他们不理解那些驱动其他软件开发类型的因素;2. 编写的代码与对应的问题域格格不入。
posted @ 2008-11-22 17:41  李潘  阅读(628)  评论(0编辑  收藏  举报