随笔分类 -  Programming

顺序语句
摘要:顺序语句是程序语言控制结构中最基础,最简单和最容易理解的一种,它确定了为完成某个功能先做什么,后做什么。分为有依赖关系的顺序语句和无依赖关系的顺序语句。一、有依赖关系的顺序语句示例1var myForm = document.forms['myForm']var uname = myForm.una... 阅读全文

posted @ 2014-10-11 08:43 snandy 阅读(3185) 评论(2) 推荐(1) 编辑

子程序设计原则
摘要:子程序(routines)是为实现一个特定功能而编写的一个可被调用的方法(method)、函数(function)或过程(procedure)。如Java中的方法,C++里的函数。现代编程语言如Java、C++、VB、JavaScript、Ruby等都同时支持函数和过程。一般认为函数指具有返回值的子... 阅读全文

posted @ 2014-05-10 14:54 snandy 阅读(2996) 评论(1) 推荐(2) 编辑

各代程序设计语言拓扑
摘要:Wegner根据语言的功能和产生的时间,将一些流行的高级语言进行了分类。第一代 (1954-1958)Fortran IAlgol 58FlowmaticIPL V第二代 (1959-1961)Fortran IIAlgol 60CobolLisp第三代 (1962-1970)PL/1Algol 68PascalSimula代沟 (1970-1980)CFortran 77面向对象 近代 (1980-1990)Smalltalk 80C++Ada83Eiffel框架出现 (1990-)VBJavaPythonJ2EE.NET我们看看各代的拓扑结构,所谓拓扑指的是采用该语言开发后的基本物理构成单 阅读全文

posted @ 2013-06-27 11:56 snandy 阅读(1928) 评论(2) 推荐(2) 编辑

数据类型
摘要:大多数程序设计语言都有数据类型的概念,数据类型指定义一组数据值以及在这些数据值上相关的一组操作。我们知道计算机通过操作数据来产生结果,决定计算机程序执行认为难易程度的一个重要原因是可提供的数据类型与真实世界问题空间的匹配程度。因此,一种语言能支持多样化的类型与结构就成为关键。数据类型的概念是从过去50年间发展过来的最早的语言仅支持少量的数据结构,如Fortran 90之前通常用数组来模拟链表及二叉树。COBOL允许程序员指定小数的精度,并通过记录提供一种结构化的数据类型,跨出了Fortran I模式的第一步。PL/I更是将精度说明的功能扩展到整数及浮点类型,该功能从此也被引进到了Ada和For 阅读全文

posted @ 2013-01-27 11:41 snandy 阅读(2208) 评论(0) 推荐(2) 编辑

子程序(过程、函数、方法)
摘要:一般程序设计语言包含两种基本的抽象:过程抽象和数据抽象。过程抽象有时也称控制抽象。子程序在1950年以前就发明了,作为一种抽象那时候并未被完全接受。相反,最初它被看做是一种节省代码的机制,但很快子程序就被认可为过程抽象的一种方式。意识到子程序可以作为一种抽象机制,这产生了三个重要结果。人们发明了一些语言,支持各种参数传递机制奠定了「结构化程序设计」的基础,语言开始支持嵌套的子程序(如JS的function,Java的inner class)诞生了「结构化程序设计」,为试图构建大型系统提供了指导,利用子程序作为基本构建块子程序是最主要过程抽象机制。面向对象语言中的方法与子程序的概念十分相似,不同 阅读全文

posted @ 2011-08-29 14:58 snandy 阅读(19805) 评论(2) 推荐(4) 编辑

运算数的求值顺序
摘要:请注意,这里说的是运算数的求值顺序。而非运算符,运算符的求值顺序我们比较熟悉。比如a * b + c;1,先算乘方,再算乘除,最后算加减2,有括号,先算括号里面的,同一级运算按照从左到右的顺序依次进行这一点所有的程序设计语言都采取数学中数字的计算顺序。当然程序设计语言中还有一些不同于数学中的运算符。那运算数的求值顺序是如何的呢?如下// 求 a 和 b的和sum = a + b;1,从内存中取a的值2,从内存中取b的值3,进行相加运算貌似描述的很弱智,理所当然就是这样的。有人可能觉得先取b的值,再取a,然后相加。这样最后的结果也是一样的。的确是这样。但如果运算数是一个函数执行呢?sum = a 阅读全文

posted @ 2011-08-19 11:13 snandy 阅读(2250) 评论(2) 推荐(1) 编辑

函数的副作用
摘要:函数副作用 指当调用函数时,除了返回函数值之外,还对主调用函数产生附加的影响。例如修改全局变量(函数外的变量)或修改参数。函数副作用会给程序设计带来不必要的麻烦,给程序带来十分难以查找的错误,并且降低程序的可读性。严格的函数式语言要求函数必须无副作用。函数的副作用相关的几个概念,Pure Function、Impure Function、Referential Transparent。纯函数 ( Pure Function )输入输出数据流全是显式(Explicit)的。 显式(Explicit)的意思是,函数与外界交换数据只有一个唯一渠道——参数和返回值。函数从函数外部接受的所有输入信息都通 阅读全文

posted @ 2011-08-14 14:30 snandy 阅读(11335) 评论(4) 推荐(7) 编辑

存储绑定/生存期
摘要:上一篇提到了 绑定 中的 类型绑定 。这篇说说存储绑定,程序设计语言的一种根本特征取决于这种语言的变量存储绑定的设计方式。变量名 与 存储单元 之间的关联的这个过程称为 存储绑定 ,或称为 存储空间分配。变量名与存储单元的解除绑定的这个过程称为 存储空间解除绑定 。变量的 生存期 指该变量名被绑定于... 阅读全文

posted @ 2011-03-04 17:41 snandy 阅读(1917) 评论(3) 推荐(1) 编辑

类型绑定
摘要:在程序中引用一个变量前,变量名 必须被 绑定 到一种数据类型上。如 名字 abc 得知道它是语言中的基本类型(整型数字、浮点数字、布尔、字符串)或对象类型(内置类、自定义类)。根据 绑定时间 的早晚分为静态类型绑定和动态类型绑定。 一、静态类型绑定显示声明和隐式声明(JS等除外)都产生对类型的静态绑定。 二、动态类型绑定动态类型绑定时,变量的类型不是由声明语句来说明的,也不是像Fortain中通过名字的拼法来确定。而是通过赋值语句给变量赋值时,变量才与类型绑定的。与静态类型绑定不同,动态类型绑定给程序设计带来了极大的灵活性。如使用动态类型绑定的语言很容易写出一个通用程序。如求两个数的和// J 阅读全文

posted @ 2011-03-04 14:52 snandy 阅读(2212) 评论(0) 推荐(1) 编辑

变量的显示/隐式声明
摘要:显示声明 是程序中的一条说明语句,它列出一批变量名并指明这些变量的类型。C、C++、Java中// 显示声明 变量count,类型为int,占用空间大小各语言可能有所不同int count;JavaScript中// 显示声明 变量count,但不知其类型,也不知其占用空间大小var count;隐式声明 指通过某种默认协定的方法将变量名与类型绑定。如在Fortain中,一个以字母I、J、K、L、M或者N(或其对应小写)开始,它们被隐式的声明为Integer类型。否则为Real类型。Javascript中// 赋值语句其实隐式的声明了变量count,类型为数字,占用8个字节(64位浮点格式)/ 阅读全文

posted @ 2011-03-04 12:14 snandy 阅读(8338) 评论(0) 推荐(1) 编辑

绑定/约束
摘要:绑定/约束 (binding)指两个东西之间的关联。如 名字 与它所代表的事物。又如属性与实体之间的关联,又或者符号与操作之间的关联。早期的书翻译成约束,后期的多数称绑定。后续都称绑定。绑定发生的时间称为 绑定时间 (binding time)。绑定 和 绑定时间 是程序设计语言中了个非常重要的概念。绑定可以发生在语言设计时、语言实现时、编译时、连接时、载入时和运行时。 一、语言设计时多数语言中运算符、流程控制结构、内部类型、对象的构造形式等都是在语言设计时决定的。如星号(*)在语言设计时与乘法操作绑定。 二、语言实现时多数语言手册都留下了许多问题,要求语言的实现者去仔细考虑和决定如何实现?如 阅读全文

posted @ 2011-03-01 17:56 snandy 阅读(1764) 评论(2) 推荐(2) 编辑

变量的六个属性
摘要:变量 是机器存储单元在语言中的抽象。它是编程语言最重要的概念之一。变量有6个属性(或者说从6个方面去描述变量)名字/别名地址/左值值/右值类型作用域生存期/生命期1 名字/别名名字的概念在 名字/标识符 已经提到。当多个名字访问的都是同一个存储地址时(或者说多个名字都 绑定/约束 于同一个存储地址)... 阅读全文

posted @ 2011-03-01 14:40 snandy 阅读(9197) 评论(7) 推荐(7) 编辑

名字/标识符
摘要:名字 是指代表某些东西的有助于记忆的字符序列。名字可以使我们采用符号形式标识符引用变量、常量、子程序、形参而不用采用更低级的如地址一类的概念。从低级语言到高级语言的发展过程中,名字 是抽象出来的最重要的概念之一。名字不只是用于变量,也常用于常量、子程序、形参等。标识符一词常常与名字概念互换使用。一、名字的长度早期的程序设计主要用来解决数学问题,数学中常用的就是单个字符的变量。如x,y,z。Fortran1 打破了使用单个字符名字的传统,它最多允许使用6个字符。直至到Fortran77。Fortran95 中变量名字最多允许31个字符。C89/Java/JavaScript/Ada/C# 对名字 阅读全文

posted @ 2011-03-01 11:42 snandy 阅读(6507) 评论(5) 推荐(3) 编辑

索引数组、关联数组和静态数组、动态数组
摘要:数组分类:1、从数组的下标分为索引数组、关联数组/* 索引数组,即通常情况下所说的数组 */var ary1 = [1,3,5,8];//按索引去取数组元素,从0开始(当然某些语言实现从1开始)//索引实际上就是序数,一个整型数字alert(ary1[0]);alert(ary1[1]);alert(ary1[2]);alert(ary1[3]);/* 关联数组,指以非序数类型为下标来存取的数组 python中称为字典 */var ary2 = {};//存取时,以非序数(数字),这里是字符串ary2["one"] = 1;ary2["two"] = 2 阅读全文

posted @ 2011-02-27 08:56 snandy 阅读(13661) 评论(1) 推荐(9) 编辑