程序员眼中的语言

    语言是一种工具,语言应需要产生,并应需要而发展。原始的语言和词汇是一种直接、具体的符号及符号组合。感性是理性的启端,发展了的语言是建立在自我描述之上的一种抽象。词汇是语言的材料,词法是语言的模板,语义则是语言的精神。

    抽象是实际需要,是选择的结果,一致性是抽象的目的,而抽象本身却是二义的。抽象意味着表示、分类、归纳、组织、演绎及错误。错误是选择和判断的一种,错误是抽象的特质本身也是一种抽象,错误因创造而生,伴随着抽象而来。人是有灵性的动物,会因需要创造各种抽象,并依赖于创造的抽象,称之为知识和智慧。而当依赖成为习惯时,有时灵性反而被禁锢了。

    语言可以用来表现世界、描述世界、记录和传递信息、知识及智慧、抒发情感、表达善恶、记录历史、传递宗教。但对程序员来说,组织、传递、保存、加工信息是语言的主要职责,而目的则是描述需求、分解需求、解决需求。程序员一般是现实主义者,即使有时看起来有些理想,程序员做事首先考虑的是实用,然后是工程化。

    数据和信息是程序语言处理的基本对象,而知识则是处理的依据,至于整个过程以及处理的效果如何,则受智慧影响,智慧的运用往往表现为利益的产生,但利益不应该是智慧的唯一。智慧是知识的选择与运用,也是人生的态度。

    数据和信息本身是混沌的,混沌不是问题,一种生命力的体现。信息的混沌主要表现在整体上,而观察细节时,则应该相对显得有序。混沌的信息对于我们来说并不十分好用,比较好用的是哪些按某种目的经过梳理的信息。梳理和加工是信息选择的结果,有选择意味着有丢失,正如鱼和熊掌很难兼得。好用与有用并不十分一致,好用应该是对有用的某种权衡。人有时可以很容易处理复杂的信息,而对于加工原始信息反而有些吃力。处理复杂信息需要的往往只是技巧,而处理简单信息则经常需要更多的基础积累,这也许是难度的所在。正如简单之所以复杂,是因为没有假设,复杂之所以简单,是因为有许多假设。


    程序语言需要合适的词汇、语法规则、语义去表述和定义处理信息的方式和模式。词汇是语言的基本特征,一些为数不多的词汇集合往往可以处理一大批问题。词汇集往往与要处理问题的某些侧面对应,有些词汇集适合描述问题、有些适合分解问题、有些适合表示问题的处理步骤、有些则适合于执行数值计算和逻辑演算、而有些则适合于数据的输出和表现。一个有益的语言可以对问题整个进行规划,梳理成合适的结构,而每个节点则由合适的语言,以合适的方式去操作。梳理是一个约束的过程,而分解操作则是融合和集成的过程,在这过程中要充分运用现有的成果,不能什么事都从头开始,即不可行也没有必要。


    在程序设计中,信息处理的最直接表现为分类和计算,计算是计算机本身所具有的能力,而分类更多的是信息选择的需要。分类在程序语言上表现为类型和实例,类型是一种规范、约束、划分。表示实例可以具有的一项和多项特征,并对这些特征进行约束,表现为这些特征可行的取值范围以及有效的操作能力。类型蕴含着组合,但在程序设计中,但主要用于实例的自我表征。实例一般具有某些类型特性,并在特性约束下具体取合适值,执行相应的操作。

    对于现有大部分语言来说,类型与实例的划分是清楚的,类型定义了一种规范,而实例则是这种规范的具体使用。但在实际应用时,并不是所有的情况都是这样地清晰。例如对于符号表来说,类型定义本身也是一种实例。而有些对象表现为半实例化半类型化的特性,而有些类型则完全依赖于实例化对象。类型和实例之间的这种关系,现在也许只是特例,但在以后会慢慢变成常态。概念与应用相关,在一种应用下明确的概念,在另外一种应用下则可能变得模糊。概念正确依赖于所处的环境,当概念开始与环境不符时,就会表现为例外的出现,例外是一种环境改变对固有逻辑的冲击,例外是抽象的幽灵,却是自然的常态。

    程序员很实在,一般只做力所能及的事,偶尔去思考一下,只是给所做的事情,找一个说服自己的理由。

posted @ 2012-04-10 21:25  走在溪边  阅读(302)  评论(0)    收藏  举报