随笔分类 -  语言

摘要:在编程中有时会把多个函数串在一起依次调用,以达到特定的目的,在这里我们把这样的调用方式形象地称为函数链调用。函数链中的函数有些是独立的,有些则只用在函数组合中,不会单独调用。对象的连续配置和组合是函数链调用比较常用场合,去除语法糖,linq也是一个函数链的运用。下面通过即时编译中的一个例子,来看看函数链的用法。 几种热门的语言C#、java、js都采用了即时编译的方式,即时编译需要有相应的汇编类库供调用,以便把VM代码转换成本地机器代码。 Apple的汇编类库是比较常用的,被firefox,webkit用于js的即时编译,下面的代码是Apple汇编类库的一般调用方式:masm.pus... 阅读全文
posted @ 2013-01-11 11:27 走在溪边 阅读(1889) 评论(0) 推荐(0) 编辑
摘要:在上一篇 编程便笺:代码的图形(一) 一文中描述了如何用C++直接把结构语义图形化,在继续这个话题以前,我们先暂时放一放,做些准备工作。本文先来描述一下控制语义或者说是规则语义的图形化。 像上一篇文章所说,结构很大的程度上是体现地是几何的概念,也就是图形的概念。而控制语义的图形化离不开图灵机,对于这一点,有以下一些理由: 1、图灵机从表面上看,直接体现地是匹配控制的概念,控制是图灵机的核心; 2、图灵机的语言比一般语言更接近于图形,体现图形的特色,对于编程来说,大部分的时候是形式比实质更重要,换句话说,对于程序员来说,语义的表现比语义的实现更有感受。我们平时指的语言计算能力,应该是指... 阅读全文
posted @ 2012-12-28 14:49 走在溪边 阅读(1296) 评论(0) 推荐(1) 编辑
摘要:面向对象编程,是软件编程的重要方法,在许多人心理,也许就是唯一的方法。面向对象的编程方法,可以让我们很容易的把各种信息组合在一起,写出比较稳定、实用的程序,极大地提高了编程的效率。对象是如此好用,我们也对对象产生了依赖,甚至到了过度消费的地步。 阅读全文
posted @ 2012-12-24 21:11 走在溪边 阅读(1462) 评论(2) 推荐(2) 编辑
摘要:Iterator是序列概念的体现,Iterator指向值而不是值本身,因而也就具有两方面的特性,一方面Iterator可以指代值,另一方面具有序列指示特性,可以在序列中移动,指针和数组序号都具有这样的特性。Iterator(迭代器)可以说是std的灵魂所在,也可以这样说,Iterator为std的成功提供了保证。 Iterator为什么会如此重要,因为大部分程序都是图灵完备的,所以可以分析一下图灵机,我们把图灵机分成三个部件:条带、接口部件(包括移动和数据捡取部分)、处理部件。这三个部件中,接口部件对应就是Iterator,它是条带与处理部件的纽带,从中可以看出Iterator的重要性。... 阅读全文
posted @ 2012-12-24 10:47 走在溪边 阅读(2313) 评论(0) 推荐(0) 编辑
摘要:编程时,程序员心中会有图形,而有些代码本身就是图形,不但可读而且可看。#include "stdafx.h"#include <deque>#include <map>#include <string>using namespace std;//图形由点组成class TNode{public: wchar_t * name; //构造函数 TNode(wchar_t * _name):name(_name){} virtual const wchar_t * toString(){return name;}};class TEmp;// 阅读全文
posted @ 2012-12-16 14:11 走在溪边 阅读(1458) 评论(6) 推荐(1) 编辑
摘要:程序的设计模式往往与计算机的体系结构有很大关系,以函数作为协议的主要表现方式,语言具有简单严格的语法结构,应该与冯·诺依曼体系,或者更准确的说与代码线性循序执行的方式不无关系。 冯·诺依曼体系是图灵机的实现,但从实现之初,两者便无多大交集,图灵机具有理想性质,是不考虑控制和执行成本的,而冯·诺依曼机器,最初的程序设计对计算成本是非常关注的,而且按照图灵机思想设计的程序,转换成通常的程序,会比较复杂而且显得不直观。正如lex与bison生成的程序代码,我们只会认为程序是对的,而很少会去阅读。 以控制机器的思想设计程序,是图灵机程序设计的主要方式,而对于计算细节(主要 阅读全文
posted @ 2012-09-21 13:17 走在溪边 阅读(2287) 评论(0) 推荐(1) 编辑
摘要:通用和专用是编程的永恒主题,编程的演化很大程度上是专用变通用的过程,归纳是更一般的叫法。专用与通用比较,往往具有更多的上下文约束,而程序设计则希望通过更细或更有效的分组、分类,而使这些上下文约束更通用,更具适应性。 对于企业应用来说,这样的约束一般来源于业务逻辑,而需求和程序设计也是围绕着业务逻辑的选择和处理展开。很多概念的形成有它自然的过程,如果经常把这些概念举在手上,反而如一座座山峰,遮住了事情本来的面目,这样也不利于这些概念的运用,当然拿来吓人或显摆的除外。 SQLDB关注于业务逻辑实体的结构及基本约束的一致性。NOSQL则揭示出业务逻辑实体的结构与业务逻辑对象的上下文相关性,也就是数. 阅读全文
posted @ 2012-07-06 15:18 走在溪边 阅读(1774) 评论(7) 推荐(2) 编辑
摘要:现在的系统与以前的系统相比更具有整体的性质,更关注系统间的协同。系统设计中要涉及的技术往往比较广、比较泛,开发这样系统,离开开发平台和框架往往寸步难行,同时开发框架和开发方式也需要不断演进,才能更好地满足需求。现代应用开发框架应该具有哪些特征呢?不妨试着来罗列一下:0、开放性和扩展性 a、开发性是指尽量采用标准和共识的东西,或者让部分设计成为标准或事实标准。 b、扩展性是指系统从开发到运行的各个环节除了可策略、可定义外,都要可定制,可编程。1、服务即数据、数据无界 数据存在于各种服务中,如文件服务、数据库服务、邮件服务、WEB服务等,有外部的,也有内部的。数据是一种需要、可以按需存取和读取.. 阅读全文
posted @ 2012-04-11 13:35 走在溪边 阅读(232) 评论(0) 推荐(0) 编辑
摘要:语言是一种工具,语言应需要产生,并应需要而发展。原始的语言和词汇是一种直接、具体的符号及符号组合。感性是理性的启端,发展了的语言是建立在自我描述之上的一种抽象。词汇是语言的材料,词法是语言的模板,语义则是语言的精神。 抽象是实际需要,是选择的结果,一致性是抽象的目的,而抽象本身却是二义的。抽象意味着表示、分类、归纳、组织、演绎及错误。错误是选择和判断的一种,错误是抽象的特质,本身也是一种抽象,错误因创造而生,伴随着抽象而来。人是有灵性的动物,会因需要创造各种抽象,并依赖于创造的抽象,称之为知识和智慧。而当依赖成为习惯时,有时灵性反而被禁锢了。 语言可以用来表现世界、描述世界、记录和传递信息、. 阅读全文
posted @ 2012-04-10 21:25 走在溪边 阅读(291) 评论(0) 推荐(0) 编辑
摘要:这几天,重读了高老爷子的java编程语言一书,就以博客为纸,做一些简记,有些凌乱,也不怕见笑了。另外顺带插一句,这一段时间重温了大学里的一些基础课程,觉得还都比较经典,受益也比较多。实用的书往往受益于一时,而有些书每一次翻起都会有些新的感受,建议大家有空的时候也可以多翻翻。 本文写的是关于java的,也许不适合这里,但我还是喜欢这里的草根味道,当然也不全是,毕竟全草根是很难存活的,但相对其他园子就草根多了,还是喜欢趴在这块草地上乱划拉几下。1、java语言是对c++语言的再思考,是对C++语言的选择、放弃和扩展。在当时新的需求要求更高的开发效率,要求更大众化。在很多应用方面,开发效率、简... 阅读全文
posted @ 2012-03-10 18:37 走在溪边 阅读(1401) 评论(0) 推荐(1) 编辑
摘要:按照编程的惯例,这是第0个问题。 1、从共性到个性、从模块到流程、从面向管理到面向操作,我们是否处在需求爆发的边缘?从纸带穿孔->汇编 -> C -> C++ -> java、C#,每一次需求的倍增,都会引起编程方式和编程语言的改变,这一次是否也会这样吗?效率、方便是每一次改变的基本要求,这一次是否也是这样?需求的增长往往催生新的工具,而新的工具又促进需求的释放。 2、关于虚拟化的问题,这里的虚拟化指的是系统和平台的虚拟化,而不是VMWare所指的虚拟化。虚拟化层次在不断提高,在满足需求的基础上,合适的虚拟化的边界在哪里?在这样的虚拟化平台下,编程上还会有操作系统,桌面 阅读全文
posted @ 2011-12-07 12:21 走在溪边 阅读(2078) 评论(5) 推荐(3) 编辑