Press "Enter" to skip to content

Tag: 我看JavaScript

我看JavaScript(七)——程序构造理论与OO

理论的科学性取决于其对现象的可解释性。在前一文我们初步猜想了工程构造中构件的一些形式属性和处理原则(或许还很不成熟),现在我们开始尝试用其对【面向对象】的一些常见现象进行解释,同时对芭芭拉女士的观点的作出一些修正。

程序构造理论

我们之前说了,程序构造技术交叉了程序理论工程构造理论,简单的理解就是用前一文总结到的构件的处理原则(1构造理论),去处理程序(2程序理论)——对程序工程进行构件分解。

我看JavaScript(六)——工程构造与中间构件

接前一文,我们为推进程序构造理论,尝试分析一种可能的工程构造理论,作为程序构造理论的基础。但是,有关工程的理论,学界业界已经有一些认识,但似乎也不成熟(我特指工程构造的通用理论),在尝试总结一种通用的工程构造的理论(能基本解释程序构造原理即可)前,有必要了解下这方面的前沿情况。

学界有工程学的相关的学科或引导性课程,但就我查到的资料来看,似乎只有各种具体工程专业,例如土木程,电子工程,化工工程,生物工程等,并没有一门通用的工程学基础理论学科,研究有关【工程构造活动特性】的理论。

我看JavaScript(五)——程序构造与工程构造

前一文在尝试分析面向对象通识定义时,发现【面向对象】的定义其实只是一种工业演化的成果,成熟度不见得会很高,并且发现了主要原因是【面向对象】的理论基础——程序构造理论不成熟。文中举例了两种有关程序“抽象操作”的程序构造理论,并指出芭芭拉女士的一些不足,本文就这些业已发展的程序构造理论,再作一些推进。以此为解释JS的面向对象的特性打下基础。

我看JavaScript(四)——抽象与程序构造技术

上一文讲了JS的语言动态性,JS最为核心的特性之一;本文继续讲JS第二大核心特性——面向对象。语言动态性是语言现代性一方面,它是应网络或大型交互应用计算动态性而发展的;其实语言现代性更基础的一面是其「构造方式」,面向对象是语言在表达/构造/建造程序的方式和手段上改进。

JS是具备面向对象特性的,而面向对象技术传播多时已经为大部分开发者所熟悉,但认识不一定很准确。在解释JS具体的面向对象特性实现前,我们先复习一下何为“面向对象”,有关于这种风靡全球的编程技术的通用理论。先看看维基的定义:

Object-oriented programming (OOP) is a programming paradigm based on the concept of “objects”, which may contain data, in the form of fields, often known as attributes; and code, in the form of procedures, often known as methods. A feature of objects is that an object’s procedures can access and often modify the data fields of the object with which they are associated. In OOP, computer programs are designed by making them out of objects that interact with one another.

面向对象编程(OOP)是一种基于“对象”概念的编程范式,“对象”封装了计算数据(字段)和代码(方法),并且对象的代码常常访问其数据,这一点是对象的重要特性。在面向对象编程中,程序是由相互作用的对象组成的。

这个通识定义还是比较全面的,全面的指出了OO的1)属概念——编程范式;2)技术特征——将代码与相关数据封装在一起;和3)意义——用作构建复杂程序。一般的开发者都能基本读懂,并应用到实际上。但还是老问题,为什么OO是这样设计,就很少有人能道明白,要深入认识面向对象,做出优秀的(计算)对象设计,还需很多阐述。

我看JavaScript(三)——语言或程序的动态性

前一文中我们初步探讨了社区对「语言动态性」的一种通识:

动态语言将静态语言在「编译时的常见任务」,推迟到运行时,通过动态增加新代码、扩展对象及其定义,或修改类型系统来扩展程序本身。

就这种粗浅认识,提出几个关键问题:

  • 第一,编译时的什么任务推迟到了运行时?
  • 第二,扩展程序是什么意思,有什么意义呢?具体又是怎么做到的呢?

发现认识混沌的原因之一——程序理论的不成熟,并且初步给出一种或许也不成熟的程序结构理论。本文在此不成熟的程序理论上,对语言动态性作一次深入的解释的尝试。

我看JavaScript(二)——程序形式与形态

接着讲JS动态性,JS第一大核心特性。语言动态性是指什么,其实社区并没有一个比较一致的看法,有的说数据类型动态,有的函数定义动态,我们看看维基的定义:

Dynamic programming language, is a class of high-level programming languages which, at runtime, execute many common programming behaviors that static programming languages perform during compilation. These behaviors could include extension of the program, by adding new code, by extending objects and definitions, or by modifying the type system.

将静态语言在「编译时的常见任务」,推迟到运行时,通过动态增加新代码、扩展对象及其定义,或修改类型系统来扩展程序本身。

我看JavaScript(一)

javascript或JS是什么?这个问题对于有编程经验的人,或者有JS经验的人都是显而易见的,但是,却未必都深刻和全面。此文记录一下我目前对JS的一些认识。

应该说,JS是一种与互联网Web技术发展相伴相生的一种编程语言,从最开始“胶水”脚本语言,为表单提交进行数据验证功能,到现在支持开发单页应用(single page web application,SPA),完全面向对象式的编程,JS发展了很多高级的特性,这些特性如此之多,以至于给人的感觉JS,比较传统JAVA,C还要复杂的一种语言。