随笔分类 -  杂谈

摘要:对于lisp语言来说,抽象与应用是最基本的,而对于像C++这样的控制性语言,条带与位置应该我觉得也是蛮基本的,试试构造自然数?#include <vector>using namespace std;template<typename T>struct Nature{private: typename T::iterator iter; T * tape;public: static Nature zero(T& tape_){ Nature x; x.tape = &tape_; x.iter = tape_.begin(); ... 阅读全文
posted @ 2013-04-24 19:44 走在溪边 阅读(131) 评论(0) 推荐(0)
摘要:在编程中有时会把多个函数串在一起依次调用,以达到特定的目的,在这里我们把这样的调用方式形象地称为函数链调用。函数链中的函数有些是独立的,有些则只用在函数组合中,不会单独调用。对象的连续配置和组合是函数链调用比较常用场合,去除语法糖,linq也是一个函数链的运用。下面通过即时编译中的一个例子,来看看函数链的用法。 几种热门的语言C#、java、js都采用了即时编译的方式,即时编译需要有相应的汇编类库供调用,以便把VM代码转换成本地机器代码。 Apple的汇编类库是比较常用的,被firefox,webkit用于js的即时编译,下面的代码是Apple汇编类库的一般调用方式:masm.pus... 阅读全文
posted @ 2013-01-11 11:27 走在溪边 阅读(1911) 评论(0) 推荐(0)
摘要:对象的谓项设计是指用对象的本体特性,而不是形式特性来体现和区分对象的方式。通俗地说区分对象的方式是能力而不是出生。在谓项设计中,对象是由基础类生成,而不是由派生类生成,我们会更关注类的特性而不是类的继承关系。常用的描述是对象具有哪一类的特性,而不常说是哪一类的对象。 举个例子,比如对于卡车,在设计时只会定义汽车类型,而不会去定义派生于汽车的卡车类型。作为替代,在汽车中定义卡车特性的谓项。要区分一辆汽车是否是卡车,是看它是否具有卡车的特性,当它有卡车特性时,可以把它归于卡车一类,反之,则认定它不属于卡车。对于既有轿车特性,又有卡车特性的汽车,你可以认定它为皮卡。 另外之所以称为谓项设计,与对.. 阅读全文
posted @ 2013-01-03 13:57 走在溪边 阅读(965) 评论(0) 推荐(1)
摘要:html5是一场分合的大戏,看得人眼花缭乱;html5也是热词,时不时可以爆炒一顿,紧抓开发着的眼球;与html5相关的往往是五年计划、十年计划,在今天这样的环境下,可以説难能可贵,只是在赌开发者的耐性。1、理想与现实: html发展到现在,已形成了各种利益的生态,生态之间互相牵扯,互相平衡。所以当w3c满怀信心,以xhtml2.0去替换html时,碰壁也是难免的。在今天html5其实已经不是技术问题,而是技术背后的生态问题。对于权利者来说,技术并不是主要的,受控才是主要的。一项技术可以往前推,但必须受控,这就是潜台词。理想遇到现实,大腕如w3c,也只能徒呼无奈。2、浏览与应用: html.. 阅读全文
posted @ 2012-12-28 12:08 走在溪边 阅读(205) 评论(0) 推荐(0)
摘要:面向对象编程,是软件编程的重要方法,在许多人心理,也许就是唯一的方法。面向对象的编程方法,可以让我们很容易的把各种信息组合在一起,写出比较稳定、实用的程序,极大地提高了编程的效率。对象是如此好用,我们也对对象产生了依赖,甚至到了过度消费的地步。 阅读全文
posted @ 2012-12-24 21:11 走在溪边 阅读(1473) 评论(2) 推荐(2)
摘要:Iterator是序列概念的体现,Iterator指向值而不是值本身,因而也就具有两方面的特性,一方面Iterator可以指代值,另一方面具有序列指示特性,可以在序列中移动,指针和数组序号都具有这样的特性。Iterator(迭代器)可以说是std的灵魂所在,也可以这样说,Iterator为std的成功提供了保证。 Iterator为什么会如此重要,因为大部分程序都是图灵完备的,所以可以分析一下图灵机,我们把图灵机分成三个部件:条带、接口部件(包括移动和数据捡取部分)、处理部件。这三个部件中,接口部件对应就是Iterator,它是条带与处理部件的纽带,从中可以看出Iterator的重要性。... 阅读全文
posted @ 2012-12-24 10:47 走在溪边 阅读(2332) 评论(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 走在溪边 阅读(1492) 评论(6) 推荐(1)
摘要:程序的设计模式往往与计算机的体系结构有很大关系,以函数作为协议的主要表现方式,语言具有简单严格的语法结构,应该与冯·诺依曼体系,或者更准确的说与代码线性循序执行的方式不无关系。 冯·诺依曼体系是图灵机的实现,但从实现之初,两者便无多大交集,图灵机具有理想性质,是不考虑控制和执行成本的,而冯·诺依曼机器,最初的程序设计对计算成本是非常关注的,而且按照图灵机思想设计的程序,转换成通常的程序,会比较复杂而且显得不直观。正如lex与bison生成的程序代码,我们只会认为程序是对的,而很少会去阅读。 以控制机器的思想设计程序,是图灵机程序设计的主要方式,而对于计算细节(主要 阅读全文
posted @ 2012-09-21 13:17 走在溪边 阅读(2313) 评论(0) 推荐(1)
摘要:通用和专用是编程的永恒主题,编程的演化很大程度上是专用变通用的过程,归纳是更一般的叫法。专用与通用比较,往往具有更多的上下文约束,而程序设计则希望通过更细或更有效的分组、分类,而使这些上下文约束更通用,更具适应性。 对于企业应用来说,这样的约束一般来源于业务逻辑,而需求和程序设计也是围绕着业务逻辑的选择和处理展开。很多概念的形成有它自然的过程,如果经常把这些概念举在手上,反而如一座座山峰,遮住了事情本来的面目,这样也不利于这些概念的运用,当然拿来吓人或显摆的除外。 SQLDB关注于业务逻辑实体的结构及基本约束的一致性。NOSQL则揭示出业务逻辑实体的结构与业务逻辑对象的上下文相关性,也就是数. 阅读全文
posted @ 2012-07-06 15:18 走在溪边 阅读(1808) 评论(7) 推荐(2)
摘要:现在的系统与以前的系统相比更具有整体的性质,更关注系统间的协同。系统设计中要涉及的技术往往比较广、比较泛,开发这样系统,离开开发平台和框架往往寸步难行,同时开发框架和开发方式也需要不断演进,才能更好地满足需求。现代应用开发框架应该具有哪些特征呢?不妨试着来罗列一下:0、开放性和扩展性 a、开发性是指尽量采用标准和共识的东西,或者让部分设计成为标准或事实标准。 b、扩展性是指系统从开发到运行的各个环节除了可策略、可定义外,都要可定制,可编程。1、服务即数据、数据无界 数据存在于各种服务中,如文件服务、数据库服务、邮件服务、WEB服务等,有外部的,也有内部的。数据是一种需要、可以按需存取和读取.. 阅读全文
posted @ 2012-04-11 13:35 走在溪边 阅读(252) 评论(0) 推荐(0)
摘要:语言是一种工具,语言应需要产生,并应需要而发展。原始的语言和词汇是一种直接、具体的符号及符号组合。感性是理性的启端,发展了的语言是建立在自我描述之上的一种抽象。词汇是语言的材料,词法是语言的模板,语义则是语言的精神。 抽象是实际需要,是选择的结果,一致性是抽象的目的,而抽象本身却是二义的。抽象意味着表示、分类、归纳、组织、演绎及错误。错误是选择和判断的一种,错误是抽象的特质,本身也是一种抽象,错误因创造而生,伴随着抽象而来。人是有灵性的动物,会因需要创造各种抽象,并依赖于创造的抽象,称之为知识和智慧。而当依赖成为习惯时,有时灵性反而被禁锢了。 语言可以用来表现世界、描述世界、记录和传递信息、. 阅读全文
posted @ 2012-04-10 21:25 走在溪边 阅读(305) 评论(0) 推荐(0)
摘要:这几天,重读了高老爷子的java编程语言一书,就以博客为纸,做一些简记,有些凌乱,也不怕见笑了。另外顺带插一句,这一段时间重温了大学里的一些基础课程,觉得还都比较经典,受益也比较多。实用的书往往受益于一时,而有些书每一次翻起都会有些新的感受,建议大家有空的时候也可以多翻翻。 本文写的是关于java的,也许不适合这里,但我还是喜欢这里的草根味道,当然也不全是,毕竟全草根是很难存活的,但相对其他园子就草根多了,还是喜欢趴在这块草地上乱划拉几下。1、java语言是对c++语言的再思考,是对C++语言的选择、放弃和扩展。在当时新的需求要求更高的开发效率,要求更大众化。在很多应用方面,开发效率、简... 阅读全文
posted @ 2012-03-10 18:37 走在溪边 阅读(1413) 评论(0) 推荐(1)
摘要:按照编程的惯例,这是第0个问题。 1、从共性到个性、从模块到流程、从面向管理到面向操作,我们是否处在需求爆发的边缘?从纸带穿孔->汇编 -> C -> C++ -> java、C#,每一次需求的倍增,都会引起编程方式和编程语言的改变,这一次是否也会这样吗?效率、方便是每一次改变的基本要求,这一次是否也是这样?需求的增长往往催生新的工具,而新的工具又促进需求的释放。 2、关于虚拟化的问题,这里的虚拟化指的是系统和平台的虚拟化,而不是VMWare所指的虚拟化。虚拟化层次在不断提高,在满足需求的基础上,合适的虚拟化的边界在哪里?在这样的虚拟化平台下,编程上还会有操作系统,桌面 阅读全文
posted @ 2011-12-07 12:21 走在溪边 阅读(2115) 评论(5) 推荐(3)