2010年2月19日星期五

简单的数据脚本 - 篇二

这个...其实篇一不存在...只是觉得之前有一篇说简单的脚本解析,正好是内容上相衔接的。

其中内容涉及到算数表达式的解析,最基本的是加减乘除以及括号,要求是能对运算符的优先级正确处理。
在书TCPL中有一个很典型的范例,在表达式的文本中提取Token后,运用定义的几层不同级别的运算符处理函数间的调用,递归的进行多层表达式的运算。
函数的调用运用的了语言所实现的stack的使用,也可自己定义一个heap,表达式按又左至右处理,预读一个运算符,和之前的比较优先级来决定何处先执行运算。
更通常的方式是词法分析后,根据语法的定义产生优先级对应的解析树,再进行运算。
这是那篇中的相关内容,和下文只是目的有所不同。

数据有时需要单独的定义在一定格式的文本中,作用是
1.方便数据修改。这样不必为修改数据而重修改代码,免去编译时间,并减少修改时额外导致的错误。这样也实现了逻辑和数据之间的分离,而且有时候流程的逻辑也被划分为一种特殊的数据。
2.实现数据交换。固定格式的数据,可以被不同的程序或工具来处理。这既可以用来扩大数据的使用范围,也可以用来增加数据的处理手段。

数据文件的常见格式为二进制或文本文件。二进制文件一种简单的处理方式是通过C/Struct(以及其数组),可以很方便的在内存和文件之间读写。而Struct本身可用来放置不同的数据单元供使用,或者定义若干针对特定Struct的方法。变长类型或多层结构的定义,也可通过直接或间接的方法实现。不过这样定义的数据本身是不可执行的,但可以在程序中实现解析的方法。
相比而言使用文本的形式会更加友好和方便,至少是可以用通用的文本编辑器来查看和修改,进而文本数据的存放也有一些固定的格式比如csv,ini,xml,json。使用固定格式使人对文本结构可以有较直接的印象,而在实现上也有了通用的接口模块来减少实现和交换的成本。

在一个程序中提供插件或扩展,可以提供接口API或提供脚本引擎。
插件可以被编译为单独的dll或so,提供一个固定接口的初始化函数。我觉得geany和lua都在这种方式的实现上是简明实用的范例,而且都有详细独立的文档进行说明。
另一种就是解析一定格式的表示操作流程的文本,比如常见的BAT批处理文件,和一些程序中实现的宏语句。通常是被直接调用或触发来列出要执行的一系列操作,或得到需要的数据。
在这种文本在特性领域上的简明实用,而不是语言的通用或功能的完整。脚本自身特性的改变是随着程序的特性来定义的。(感觉自己在用的K-meleon也是不错的参考^_^,不过这类例子很广泛的说。)

上面扯远了,本是也要说一些具体的尝试的。
首先是类型与结构:因为是用C/C++实现的,所以就基于C类型了。
num(ber)类,包括整数int和浮点double两种数据储存的实现方式。str(ing),这是已知长度的char够成的二进制串。
结构上定义用vector/list等方式实现的sequence序列,以及map/hash这类用来实现的关联型数据。
除了和实现相关的,还可以定义:特殊类型空类型nil,和用以上基本实现的类型表示的布尔类bool/true/false,函数func(tion),对象obj(ect)。
函数可以用的序列表示,增加了可执行属性。此外有对stack的操作(至少是这种风格的吧)来实现函数参数与返回值的传入与返回,以及局部变量的环境。
对象可以用关联类型来表示,对象由数据(传统的Struct)和对其操作的成员方法(cpp中由函数和一个this指针来表示)构成,并可确定了自身实例于哪个类。对象关系可以是基于类继承,或也是基于原型继承的,即一个对象自身储存了指向自身原型的数据成员。
函数也可以看作包含invoke方法的对象,而自身存放局部变量的环境也可以用关联类型来实现。
(这个不同的方式貌似有很多种可能性的,再说一下,这里主要是参考了c/cpp,lisp,javascript,lua,dsl这些语言的风格)

实现代码中先是数据和结构的表示,下面实现的是通过解析文本来填充结构。
xml等类似的数据表示方式可以是直接接口和数据的。一个xml文件对应一个解析树固定的状态,可以使用接口来对这棵树操作而到一个新的状态。如果状态是只读的,解析树就只相当于XML结构的预处理了。
另一种用脚本来执行数据的定义操作,脚本自身有赋值或对象定义,同过一系列的操作获得一个新的状态,然后使用数据与结构相关的接口来获得数据或调用方法。
在自己使用的简单实现中,只提供了基本的词法解析。语句都按序列定义,为 对象+消息+参数 的形式。这样可以方便的使用运算式,但未表示优先级,需要定义多层的序列。
对于复杂类型可以通过脚本的执行来定义。为安全起见控制一个模块的作用范围和对次序的要求。

为以上的功能可以实现,包含了一个用于对解析树解析的模块。先简单的按对象分类然后根据消息判断操作的方法吧。不过动作加名词加副词的方式更传统和简明实用。

下面说lua的嵌入使用,这是自己实现脚本外的另一种选择。不过程序语言的组合使用和嵌入脚本BAT-Like是相似而不同的感觉。
1.在Lua中定义函数和数据供宿主使用(还涉及控制权是否交给脚本的问题,比如是否进行与用户间的交互)
2.编写模块做dll/so供lua使用
可以想到的实例嘛。。。

虽然有实现了脚本,但目前看其活动是随着宿主项目的。
题外:AVG脚本的双层结构感觉不错,json-like的纯数据做单独一个层。
恩...对于实现而言细节很重要的...全跳过了...
比如词法解析的方法啦,LUA接口的使用啦,扩展API的设计啦...
----
100319
QT内含了XML和JavaScript绑定

2010年2月11日星期四

巨大的夜

原文于09-7-18,本日目前状态草稿中。
以下为今天在文本上的改写,
初录于http://www.keyfc.net/bbs/showtopic-36708.aspx
对所写的内容已经麻木了。
黑夜,星空明亮。
月光清澈地透过云层。
微风安静地穿梭于
小镇的屋檐街角。

他——12-14岁的少年,
一个人在小屋里的床上,坐成一团,
双手抱着腿,头埋在身体里。
睡不着的样子。

他所正对的窗户半开着,
半开的窗帘在静静波动。
窗外隐约能见到树影,
静静地,立着。

有风了,
树叶摩擦着发出急促的声响。
而后风就开始变得巨大。
树影在窗外晃动,
枝叶不断地摇摆,
并越来越多地飞走在夜空中。

忽然间,被吹走的还有屋顶。
他抬起头望向夜空,愣住了。
星空发白,映出一个巨型人偶,
有方块构成的四肢和身体,
和高处无法被看清的头部。
正用一个个巨大的脚步,
践踏着镇上的房屋。

他一时僵住,
直到周围的墙壁在晃动中倒塌,
才回过意识,
往小镇的街道上跑去。

四处是慌乱的人群,
而他只在不知疲倦地向远方奔跑。
可是人偶的脚步实在太巨大了,
即使周围已见不到人影,
还能感受到身后临近的震动。
就是在面前的房屋,
也能不断地看到因震动而坍塌。

终于他知道此刻,人偶已经到他的身后了,
尽管尽全身的最后力气,猛地向前冲。
可是巨大的脚步仍落下巨大阴影正向他周围罩来。
他只能在最后去望了一眼自己的上方。

巨大脚落下了,又抬起。
地面有了凹陷,并腾起巨大的灰尘。
可是他感到刚才身体忽然间变得半透明,
身体仍保持着完好,自己一时不敢动。

巨人的晃动和声响渐渐去了远方,
周围的影像有了剥离破碎的质感。
他瘫坐下缩成一团,
手臂紧紧地抱住双腿,
在这块地面凹陷处的中央。

夜又变得宁静,
他周围的地面忽然闪起波纹般的绿色光感。
一株株异常美丽花朵从缝隙中生长出来,
半人高的样子。

他呆呆地看着周围,
然后伸出手来想摘一个。
可是手只是半透明的穿过花的枝干,
抬起手也不能体会到一丝花的触感。

他猛的缩回手来,
把头埋在身子里,
在此刻
不想被任何人听到
自己默默地啜泣之声。

夜空漆黑,在等待着黎明。
在每个人的心中,
是否有一个巨大的夜在膨胀,
一时压得自己喘不过气来。

书签 - 经济管理

《经济与管理概论》
叶才福, 宋旌等编著

相关摘录:

这本为非经管类专业的大学生编写的经济与管理概论教材,其目的既是为了普及经济与管理知识,更是为了帮助非经管类专业的学生拓展思路,提高综合素质,使其可以将本专业的科学技术知识更好地运用到生产开发中去。
教材编者结合多年的教学和管理经验,运用尽可能通俗易懂的语言,高度浓缩、概括和简化了经济学和管理学的主要内容和核心思想。通过本教材的学习,非经管类专业的学生能够较快地对现代经济生活,经营与管理的主要方面有个基本的了解。


本书分成以下五篇,第一篇介绍市场运行的基本规则,说明市场运作如何实现资源的合理配置;第二篇介绍企业管理理论,说明现代企业的管理和运作方式;第三篇介绍市场营销理论,说明企业如何赢得市场并占据市场,以及对经济发展有何作用和意义;第四篇介绍国际贸易,说明国际贸易的原理和规则;第五篇介绍金融知识和宏观调控,说明金融业在国民经济中的重要地位,以及如何运用财政货币政策实现国民经济均衡。本书高度浓缩、概括和简化了经济学和管理学的主要内容和核心思想。通过本书的学习,非经管类专业的学生能够较快地对现代经济生活,经营与管理的主要方面有个基本的了解。


目录

第一篇 市场运行
第一章 消费者行为理论
第一节 需求曲线的决定
第二节 需求弹性理论
第三节 效用理论
第四节 消费者的最优决策
本章小结
思考与练习
第二章 生产者决策理论
第一节 企业理论
第二节 投入与产出的最优决策
第三节 成本理论
第四节 供给曲线的决定
本章小结
思考与练习
第三章 市场均衡理论
第一节 市场价格和产量的决定
第二节 完全竞争市场
第三节 完全垄断市场
第四节 垄断竞争市场
第五节 寡头垄断市场
本章小结
思考与练习
第四章 市场失灵理论
第一节 垄断
第二节 不完全信息
第三节 外部性
第四节 公共物品
本章小结
思考与练习

第二篇 管理
第五章 管理概述
第一节 基本概念
第二节 古典管理思想
第三节 人际关系与行为科学理论
第四节 现代管理理论
本章小结
思考与练习
第六章 计划
第一节 计划的基础
第二节 目标管理
第三节 计划的工具与方法
本章小结
思考与练习
第七章 组织
第一节 组织的基础
第二节 组织结构的基本形式
第三节 组织人力资源规划
第四节 组织变革
本章小结
思考与练习
第八章 领导
第一节 领导的基础
第二节 领导的方式
第三节 领导理论
第四节 激励理论
本章小结
思考与练习
第九章 控制
第一节 控制的基础
第二节 控制的类型
第三节 控制方法与技术
本章小结
思考与练习

第三篇 市场营销
第十章 市场营销概述
第一节 市场营销的核心概念
第二节 市场营销观念的演变
第三节 市场概述
本章小结
思考与练习
第十一章 市场营销环境与市场营销调研
第一节 市场营销环境
第二节 市场机会
第三节 市场营销调研
本章小结
思考与练习
第十二章 目标市场营销战略
第一节 市场细分战略
第二节 市场选择
第三节 市场定位
本章小结
思考与练习
第十三章 市场营销组合
第一节 产品策略
第二节 价格策略
第三节 分销渠道策略
第四节 促销策略及其定制
本章小结
思考与练习
第十四章 市场营销发展新趋势
第一节 网络营销
第二节 服务营销
第三节 绿色营销
第四节 关系营销
本章小结
思考与练习

第四篇 国际贸易
第十五章 国际贸易概述
第一节 国际贸易的基本概念
第二节 国际贸易的历史作用与现实地位
第三节 当代国际贸易的发展及特点
本章小结
思考与练习
第十六章 对外贸易政策
第一节 对外贸易政策概述
第二节 各时期对外贸易政策的主要内容及特点
第三节 自由贸易政策和保护贸易政策的理论基础
第四节 保护贸易政策下的出口鼓励与管制
本章小结
思考与练习
第十七章 关税与非关税贸易壁垒
第一节 关税含义与种类
第二节 关税对国际贸易的影响
第三节 非关税壁垒的主要措施及其影响
本章小结
思考与练习
第十八章 关税与贸易总协定和世界贸易组织
第一节 关税与贸易总协定的诞生及主要内容
第二节 关税与贸易总协定的基本原则
第三节 关税与贸易总协定对世界贸易的作用
第四节 世界贸易组织
第五节 中国与关贸总协定及世界贸易组织的关系
本章小结
思考与练习
第十九章 国际贸易操作
第一节 国际销售合同的磋商与成立
第二节 国际贸易合同的基本条款
第三节 国际贸易术语
第四节 国际贸易付款方式
本章小结
思考与练习

第五篇 金融
第二十章 货币与货币制度
第一节 货币的产生与发展
第二节 货币的本质与功能
第三节 货币制度
第四节 货币在经济中的作用
第五节 货币的计量
本章小结
思考与练习
第二十一章 商业银行
第一节 商业银行及其组织形式
第二节 商业银行的业务
第三节 商业银行的经营管理
第四节 商业银行的存款货币创造
本章小结
思考与练习
第二十二章 中央银行的地位与作用
第一节 中央银行的产生与发展
第二节 中央银行的职能
第三节 中央银行支付清算系统
本章小结
思考与练习
第二十三章 金融市场的概念与功能
第一节 金融市场概述
第二节 货币市场
第三节 证券市场
第四节 外汇市场
本章小结
思考与练习
第二十四章 宏观经济均衡的基本原理
第一节 国民经济核算
第二节 国民经济的循环
第三节 国民经济均衡模型
本章小结
思考与练习
第二十五章 宏观调控的主要原理与方法
第一节 财政收支与财政政策
第二节 货币政策的工具及其操作
第三节 宏观调控的方法与效果
本章小结
思考与练习

本书定位于非专业的经济与管理教材。
我是去年九月中注意到这本书的,已经好些时间了。
最大体会是经济管理相关知识的价值在于
以有限的资源尽可能大的实现人的需求。
这涉及到市场上的
每个成员,
管理活动,
营销推广,
国与国之间,
以及所用的金融体系。
而不会去涉及道德层面。
不过利用经济活动等手段来满足人的更高需求,
也是社会活动的进行的重要方式与主要内容吧。


=====

《人月神话》
弗雷德里克·布鲁克斯

之前一直觉得此书很经典,当然那只是没看过了时候。
不过最近看了,也只是很大略的翻过了。
虽然也知道之前想法是不必怀疑,
因为实在觉得书中提出了一个个颇有价值的,
也是对于于阅读者的经历很有体系的梳理过程。
而所阅读的侧重反而从文本上有了转移,
更多是在寻找一个工程上的视角来审视遇到的问题。

目录
摘自:http://www.china-pub.com/7209

■ 焦油坑
编程系统产品
职业的乐趣
职业的苦恼

■ 人月神话
乐观主义
人月
系统测试
空泛的估算
重复产生的进度灾难

■ 外科手术队伍
问题
Mills 的建议
如何运作
团队的扩建

■ 贵族专制、民主政治和系统设计
获得概念的完整性
.贵族专制统治和民主政治
在等待时,实现人员应该做什么?

■ 画蛇添足
结构师的交互准则和机制
自律--开发第二个系统所带来的后果

■ 贯彻执行
文档化的规格说明--手册
形式化定义
直接整合
会议和大会
多重实现
电话日志
产品测试

■ 为什么巴比伦塔会失败?
巴比伦塔的管理教训
大型编程项目中的交流
项目工作手册
大型编程项目的组织架构

■ 胸有成竹
PORTMAN 的数据
ARON的数据
HARR的数据
OS/360的数据
CORBATO的数据

■ 削足适履
作为成本的程序空间
规模控制
空间技能
数据的表现形式是编程的根本

■ 提纲挈领
计算机产品的文档
大学科系的文档
软件项目的文档
为什么要有正式的文档?

■ 未雨绸缪
试验性工厂和增大规模
唯一不变的就是变化本身
为变更计划系统
为变更计划组织架构
前进两步,后退一步
前进一步,后退一步

■ 干将莫邪
目标机器
辅助机器和数据服务
高级语言和交互式编程

■ 整体部分
剔除 BUG 的设计
构件单元调试
系统集成调试

■ 祸起萧墙
里程碑还是沉重的负担
"其他的部分反正会落后"
地毯的下面

■ 另外一面
需要什么样的文档
流程图
自文档化 (SELF-DOCUMENTING) 的程序

■ 没有银弹-软件工程中的根本和次要问题
介绍
是否一定那么困难呢?--根本困难
以往解决次要困难的一些突破
银弹的希望
针对概念上根本问题的颇具前途的方法

再论"没有银弹"
人狼和其他恐怖传说
存在着银弹-就在这里!
含糊的表达将会导致误解
HAREL 的分析
JONE 的观点--质量带来生产率
那么,生产率的情形如何?
面向对象编程--这颗铜制子弹可以吗?
重用的情况怎样?
学习大量的词汇--对软件重用的一个可预见,但还没有被预言的问题
子弹的本质--形势没有发生改变

■ 《人月神话》的观点:是或非?
第一章 焦油坑
第二章 人月神话
第三章 外科手术队伍
第四章 贵族专制、民主政治和系统设计
第五章 画蛇添足
第六章 贯彻执行
第七章 为什么巴比伦塔会失败?
第八章 胸有成竹
第九章 削足适履
第十章 提纲挈领
第十一章 未雨绸缪
第十二章 干将莫邪
第十三章 整体部分
第十四章 祸起萧墙
第十五章 另外一面
原著尾声

■ 20 年后的人月神话
为什么会出现二十周年纪念版本
核心观点:概念完整性和结构师
开发第二个系统所引起的后果:盲目的功能和频率猜测
图形 (WIMP) 界面的成功
没有构建舍弃原型--瀑布模型是错误的!
增量开发模型更佳--渐进地精化
人月到底有多少神话色彩?BOEHM 的模型和数据
人就是一切(或者说,几乎是一切)
放弃权力的力量
最令人惊讶的新事物是什么?数百万的计算机
全新的软件产业--塑料薄膜包装的成品软件
买来开发--使用塑料包装的成品软件包作为构件
软件工程的状态和未来

■ 尾声:令人向往、激动人心和充满乐趣的五十年

■ 注解和参考文献

留两个话题:
消灭人狼的银弹

为什么巴比伦塔会失败的思考。
貌似自己最后就只剩这些在脑海中了。

不知《教堂与集市》以前有否提到,
是关于开源项目的方法与推动的,
开源不是目的更多的是种手段。