zoukankan      html  css  js  c++  java
  • 0--分析JDK及其他开源框架的初衷

    •   首先谈谈我对编程语言的体会。  

           程序语言是程序员和计算机交流的语言,自然而言地,程序员的角色是这样的:把自己对外部世界的认识,使用编程语言,转变成计算机可以接受的形式。程序员充当的是编程语言和外部世界的接口。一种语言,如面向对象编程语言,这是他的语言特性,换句话说,它规定了程序员必须如此这般地去向计算机描述外部世界,计算机语言环境才得以使用某种数据结构和算法实现编程语言所描述的东西。也可以说程序语言帮助程序员以更为轻松的方式去描述外部世界。照此,面向对象程序语言为我们提供了什么样的便利呢?

      在此,还是先谈一谈哲学。最古老的本体论,来自亚里士多德,还有他的范畴篇,以及柏拉图和理念学说,这些轴心时代的思想家,提出了对世界本源的最朴素的看法。这里说哲学不是要故弄玄虚,学舌什么艰深晦涩的概念吓唬人。而是因为,一种编程语言既然要让程序员以某种方式去描述世界,那么仅仅逻辑推理也能得出这样一个断言,该语言环境必须有它自己的世界观,才得以让广大程序员们不同程度不同侧面的但又使用一种统一的方式去向虚拟机描述外部世界。而面向对象正是基于来自古希腊最早的哲人们对世界的根本看法,基于他们的本原本体思想。

      我不是要鼓吹做程序设计要先当个哲学家,而是提醒自己,程序语言所固有的语言特性,必定蕴含着其对于世界的根本认识,有什么样的认识就有什么样的模式,而哲学认识因为其时代和历史环境,总有自身的局限性,因为哲学本身就是一种超越。在学习面向对象的基本概念时,尤其关注到实体之间的关联,在JAVA语言中的具体实现就是把类放在了类的属性,需要强调一点,属性这一概念的定义应该是这样:关于事物的性质和关系。“关系”在语义上是动词,有关联之意。属性不只是包含性质,即“描述”,因为事物的性质按照语义,一般都是一种描述,JAVA为我们提供了基本数据类型和String(量化和定性的描述),他们足够用来描述事物的性质。如果把另一个类的引用也叫做性质,就明显不妥,一个类是怎样像数字或文字一样描述性质的呢?所以此处应该是关系,动词。这一观点,在后来了解Peter.Chen关于E-R的论文时,得以印证,和我的观点如出一辙,而且陈氏也明确提出了他的哲学理念来自古代的柏拉图苏格拉底和亚氏。想想都为自己自豪,哈哈。

      但是说一点大家可能不提倡的,我认为真应该了解语言背后的哲学,比如面向对象,我们就应该去了解一下早期的本体论,这对于把我面向对象大有裨益,比如实体、相对者、种、属等等概念,以及这些概念在编程语言方面的是以怎样的特征来体现。这可能是计算机科学家要做的事,他们需要研究新的语言特性,不得不研究哲学,研究计算机哲学,但是我们起码也应该试着去尽可能较高的要求自己。

    •   未能体会到的编程语言的方面

        上面说的是体会,因为编程面对的是语言的外部特征,然而语言还有另一部分,在它的内部,对我这样的初学者来说,几乎是浑然不觉,那就是它的实现机理。对此我几乎是一无所知,但是我有这样的猜想,语言环境把编码转化成内存中的某种数据结构和算法,以实现程序的运行。我不是科班出来的,对数据结构也几无所知,我知道这是程序更较为本质的东西。我不想例证,但是我知觉做编程总绕不过这一环,即便是编程语言提供了很好的特性,在其他方面也总会有理由让你学习数据结构和算法。

    •   最后谈解读源码的初衷

        要分析源码的目的是,了解源码所提供的外部功能,以更深刻的认识各常用代码工具,分析源码的内部结构,以观摩面向对象思想的种种实现方式,更最终的目的则是,希望通过不断的阅读优秀代码,来揣摩编码人员的设计意图,提高自己的程序设计水平。更具体的说:掌握UML表示方式,并使用UML去分析代码;掌握分析代码的方法,形成一套自己的方法论;总结面向对象概念在代码中的实现方式;最终通过层层分析手段逆过程地还原出客户需求。解读源码的初衷不包括数据结构和算法的学习,这是我明年的学习计划,我认为数据库设计和虚拟机等方面学习数据结构和算法更为合适。也就是说此番源码的分析只侧重于关系、结构和功能。

      

  • 相关阅读:
    centos6安装部署ntp
    pttablechecksum和pttablesync修复主从不一致的数据
    clickhouse数据导入导出
    mongodb执行js结果输出文件
    rman验证备份有效性
    使用expdp和impdp进行goldengate初始化
    安装goldengate软件(ogg)
    sql ltrim rtrim
    2022
    Mqtt服务部署
  • 原文地址:https://www.cnblogs.com/10000miles/p/7451138.html
Copyright © 2011-2022 走看看