学习这些类库不是一项简单的任务,即使你是个领域专家;因为从领域到语言的映射不是直接的,你必须学习这种映射;这意味着一个陡峭的学习曲线;通常我们试图用大量的指南和文档来解决这个问题,但是学习这些将花费大量时间;当一个类库变得复杂的时候,它也变得更难以学习,程序员将因此失去学习它的动机
甚至当掌握了这种复杂的映射之后,依然还会很容易的误用类库,因为开发环境(像编译器和编辑器)不能帮助你正确的使用类库,对这些工具来说,调用一个GUI 对象的方法和调用一个DB对象的方法是一样的:它们都只是对象上的方法调用,没有任何更多的意思;记住哪些类和方法应该被调用,以什么顺序被调用,等等,都是使用者的责任
甚至即使你既是领域专家又是类库的使用专家,也仍然有使用类库编写的程序十分冗长的问题;相对简单的领域概念需要复杂的措施来正确的调用;例如,任何用过Swing的开发者都清楚这一点;编写简单的程序就已经花费太长的时间了,复杂的程序甚至更糟
Details of LOP
What Is a Program in LOP?
今天,百分之九十九的程序员认为编程就是编写一串计算机能够执行的指令集;我们被教育说计算机建立在图灵机模型之上,因此它们用指令集的术语来“思考”;但是这种编程的观点是有缺陷的,它混淆了编程的目的和手段;我将为你演示LOP为什么优于传统编程方法,但首先我必须澄清以下事实:一个LOP的程序,不是一串指令集;那么它是什么呢?
当我有一个问题要解决,我在头脑中思考解决方案,这个解决方案用单词、标记、概念、思想,或者任何你喜欢的称呼来表述,它是我头脑中如何解决问题的模型;我几乎从未把它们想象成一堆指令集,而是我正在工作的领域中特定的具有内在联系的概念的集合;例如,当我思考GUI领域时,我想象“这个按钮到那边去,这个输入域到这边来,这个组合框里面需要有一些数据的列表”;我甚至只是在头脑中把它画出来,根本不用任何言语
我之所以认为这种意念模型是一种解决方案是因为我能够用足够的细节向另一个程序员解释这个模型,使他能够坐下来编写一个解决这个问题的程序(比如用 Java);我不需要非得用编程语言的术语来解释这个方案,它可以是任意形式;比如,为了解释如何布局一个GUI的窗体,我只需要画出这个窗体;如果绘画有足够的细节,绘画本身就代表了解决方案;这种领域相关的表述应该就是程序。换句话说,应该有一种方法允许我们使用这种表述作为真正的程序,而不仅仅是与其它程序员交流的手段;于是这便导出了我对程序非正式的定义:一个程序是任何对一个问题无歧义的解决方案,或者,更精确一点:一个程序是对某个领域的某个问题的解决方案的任何使用领域相关概念表达的,精确定义的模型
这就是我认为程序员应该拥有创建他们自己的语言的自由的主要原因:这样他们就能够用更加自然的形式来表达解决方案;General-purpose的语言是无歧义的,但是太冗余和易于出错;自然语言(如英语)表达能力十分丰富,但目前它难以使用因为它太不精确太不形式化了;我们需要能够容易的创建形式化的,精确定义的,领域相关的语言;因此Language Oriented Programming将不只是编写程序,还包括创建用来编写程序的语言;我们的程序将被编写的更接近问题域而不是计算机指令集领域,因此它们将非常容易的被编写
Programs and Text
文章来源于领测软件测试网 https://www.ltesting.net/