Welcome 微信登录

首页 / 软件开发 / 数据结构与算法

基于文本替换的解释器:引入continuation

基于文本替换的解释器:引入continuation

基于文本替换的解释器:引入continuation2015-01-12当我写到这里的时候,我自己都吃了一惊。 环境、存储这些比较让人耳熟的还没讲到,continuation先出来了。 维基百科里对continuation的翻译是“延续性”。 这翻译看着总有些违和感而且那个条目也令人不忍直视。 总之continuation似乎没有好的中文翻译,仿佛中国的计算机科学里没有continuation这个概念似的。Continuation这个...
基于文本替换的解释器:递归定义与lambda演算的一些额外说明

基于文本替换的解释器:递归定义与lambda演算的一些额外说明

基于文本替换的解释器:递归定义与lambda演算的一些额外说明2015-01-12这一篇接在第一篇lambda演算的后面。讲讲一些数学知识。经常有些看似很容易理解的东西,一旦要描述得准确无误,就会变得极为麻烦。 软件工程里也有类似情况:20%的代码实现了核心功能,剩下80%的代码处理边界情况。 于是,所谓的准确描述里的大部分文字都在说明边界情况,核心概念只有寥寥几字——好比一件打满补丁的衣服,完全看不出原来的样子。 出现这种现象要么...
基于文本替换的解释器:加入continuation,重构解释器

基于文本替换的解释器:加入continuation,重构解释器

基于文本替换的解释器:加入continuation,重构解释器2015-01-12或许在加入continuation之前要先讲讲费这么大劲做这个有什么意义。 毕竟用不用continuation的计算结果都是一样的。 不过,这是一个兴趣使然的系列,学习这些知识应该完全出于好奇与好玩的想法。 所以我才不会告诉你们通过控制continuation可以实现call-with-current-continuation和异常处理等功能呢。我先简要描述一下加入conti...
基于文本替换的解释器:小结

基于文本替换的解释器:小结

基于文本替换的解释器:小结2015-01-12( ewcommand{mt}[1]{ ext{#1}})关于语法我们现在用的这种充满括号和前缀表达式的语法叫做“S表达式”。 S表达式看似奇怪,其实是一种简约风格的语法。 S表达式的表达式一般是这么设计的: 首先第一个词表示这个表达式的类别(如if表达式还是let表达式), 然后后面依次列出这个表达式的所有元素, 最后用一对括号把整个表达式括起来。 比如if表达式有三个元素条件表达式和...
单从Advice(通知)实现AOP

单从Advice(通知)实现AOP

单从Advice(通知)实现AOP2015-01-12如果你在实际开发中没感觉到OOP的一些缺陷,就不要往下看了!如果你不了解AOP,或类似AOP的思路,请先去了解一下AOP相关的认识。如果你是概念党,或是经验党,或是从众党,也请不要看了!我实现的只是一个小功能,是不是AOP我并不清楚,也不主要,标题那样写只是让大家一看就明白本文讲的大概是什么,况且我也想不出写个什么标题。因为我看了别人谈论的AOP,扯到好多东西,代理啦、emit啦等等天花乱坠的,不过一个...
你在用什么思想编码:事务脚本还是面向对象

你在用什么思想编码:事务脚本还是面向对象

你在用什么思想编码:事务脚本还是面向对象2015-01-12最近在公司内部做技术交流的时候,说起技能提升的问题,调研大家想要培训什么,结果大出我意料,很多人想要培训:面向对象编码。于是我抛出一个问题:你觉得我们现在的代码是面向对象的吗?有人回答:是,有人回答否。我对这个问题的回答是:语法上,是了,但是架构上或者思想上,不是。我们现在的大部分代码,如果要死扣一个名词的话,那就是:事务脚本。1:最开始的事务脚本在 Martin Fowler 的书中,存在一个典...
SOA、ESB、NServiceBus和云计算

SOA、ESB、NServiceBus和云计算

SOA、ESB、NServiceBus和云计算2015-01-12SOASOA 是通过功能组件化、服务化,来实现系统集成、解决信息孤岛,这是其主要目标。而更进一步则是实现更快响应业务的变化、更快推出新的应用系统。与此同时,SOA 还实现了整合资源,资源复用。SOA 服务的设计标准是粗粒度、高重用、灵活、标准。性能则并非首要考虑因素。SOA 的两大功能是集成、服务编排(BPEL、BPM)。WF 在 SOA 架构中,扮演服务编排的功能。参考架构:相关资源:ES...
编程中Foo和Bar的含义

编程中Foo和Bar的含义

编程中Foo和Bar的含义2015-01-121 前言在很多国外计算机书本和一些第三份开源软件的Demo中经常用到两个英文单词Foo,Bar。这到底是什么意思呢?从步入屌丝界的IT生活简单这两个单词到现在我还是不知道这两个单词的真正含义,今天有必要查查总结下。2 维基百科上的解释原文:The terms foobar, foo, bar, baz and qux are sometimes used as placeholder names (also r...
提前认识软件开发(1) 序言

提前认识软件开发(1) 序言

提前认识软件开发(1) 序言2015-01-24序言正式踏上软件开发岗位已经将近两年了,经历了很多,也学到了很多。“万事开头难”,学生转变为职业人的过程,恰似茧化成蝶的过程。1.为什么要写作本系列?在工作的过程中,我发现我们在学校里面学到的很多东西片面肤浅,根本达不到岗位的要求。像编码规范、研发流程等等学校里几乎不提及的知识,在实际的软件开发项目中却恰恰是异常的重要。在学校里面,我们欠缺的教育主要包括以下方面:第一,对编码规范的要求...
提前认识软件开发(2) 软件开发工程师常用的工具软件

提前认识软件开发(2) 软件开发工程师常用的工具软件

提前认识软件开发(2) 软件开发工程师常用的工具软件2015-01-24有一次,我打开电视机准备随便看看,无意中被一部战争片吸引住了。成千上万的共产党战士搭起云梯,想攻破一座城池。但是城楼上面的敌人负隅顽抗,拼了命地阻击我军的进攻。双方的伤亡都很惨重,但城就是攻不下来。眼看我军剩下的人不多了,突然不知从什么地方开出一辆坦克,两炮就把城门轰开了。我军趁势攻入城中,将敌人全部歼灭了。这类电视剧比较常见,相信大家看了不止一次。但是,我看完之后,那个场景还一直留在...
提前认识软件开发(3) 学校C语言教材的缺陷

提前认识软件开发(3) 学校C语言教材的缺陷

提前认识软件开发(3) 学校C语言教材的缺陷2015-01-24我在走出校门的时候非常的“轻狂”,认为自己在学校里面已经学得够多了,工作就只算是小菜一碟。但在工作中屡次碰壁之后,我才发现自己当时的想法是多么的天真。我们踏上工作岗位,一切几乎都要从零开始。对于大家“非常熟悉”的C语言来说,我们在学校里面学的非但不够用,而且在很多地方对大家还有“误导”的作用,让我们认为编程就是那么一回事了...
提前认识软件开发(4) 破除几个有关软件开发的错误观念

提前认识软件开发(4) 破除几个有关软件开发的错误观念

提前认识软件开发(4) 破除几个有关软件开发的错误观念2015-01-24我们做事情的能力能够有所提升,观念的转变是关键。从学生转变为职业人的过程是很艰难的,因为我们要与自己积累了多年的“老毛病”作斗争,这些“老毛病”包括:做事拖拉、不守时、不遵守规则、怕吃苦等。就像发射火箭卫星一样,摆脱重力的束缚所花费的燃料是最多的,一旦成功,那么以后的流程就会比较轻松了。所谓“万事开头难”,也就是...
提前认识软件开发(5) 重定义一些基本数据类型

提前认识软件开发(5) 重定义一些基本数据类型

提前认识软件开发(5) 重定义一些基本数据类型2015-01-24在编写程序的时候,定义变量是必不可少的,这时就要用到一些基本数据类型。也许你会说,定义一个变量有什么困难的,这是很容易办到的。要定义整型变量,直接用“int i;”语句就可以了;要定义字符型变量,直接用“char c;”就可以了。确实,这是学校教育教给我们的,但在实际工作中却不能这样做。为什么呢?原因很简单,因为这样写出来的程序,看起来很&ld...
提前认识软件开发(6):程序的版式和注释

提前认识软件开发(6):程序的版式和注释

提前认识软件开发(6):程序的版式和注释2015-01-24第1部分 重新认识C语言程序的版式和注释在《高质量程序设计指南(C/C++语言)》中,作者说:可以把程序的版式比喻为“书法”,好的“书法”可以让人对程序一目了然,看得兴致勃勃。确实,我们一打开程序,首先看到的便是程序的排版,我们的第一印象便是程序写得是工整还是凌乱。都说第一印象很重要,为了给大家留下好的第一印象,我们一定要注重程序的版式。此外,好的注...
提前认识软件开发(7) 变量及函数的命名

提前认识软件开发(7) 变量及函数的命名

提前认识软件开发(7) 变量及函数的命名2015-01-24最近看了一则笑话,大意是路人甲到电信营业厅去交电话费,给营业员说要充50块钱,那个营业员问了一句“How much?”。路人甲心想现在社会真的与以往不同了,连一般的营业员都开始流行讲英语了,于是便以不是很流利的口语说了一句“Fifty YUAN”。那个营业员一头雾水地看着他,说道“电话号码多少?”路人甲这才恍然大悟,原来是问我...
提前认识软件开发(8) memset()与memcpy()函数

提前认识软件开发(8) memset()与memcpy()函数

提前认识软件开发(8) memset()与memcpy()函数2015-01-24软件项目中的代码,少则数千行,多则上万行,但并非无规律可循。阅读了那么多代码之后,我发现有两个函数出现的频率很高,那就是memset()与memcpy()函数,它们都是C语言编程中经常要用到的。工作之余,我查了一些资料,现对它们作一个简单的说明。1. memset()函数(1)函数原型void *memset( void *dest, int c, size_t count ...
提前认识软件开发(9) C语言中的大括号

提前认识软件开发(9) C语言中的大括号

提前认识软件开发(9) C语言中的大括号2015-01-24在C语言中,大括号“{}”是一类比较特殊的符号。如果能够在适当的地方利用它,可使代码看起来非常的整洁,也能够从侧面体现出一个编程人员的专业修养。那么,在C语言中,大括号应该用在哪些地方呢?1.初始化数组变量在实际的软件开发项目中,变量在使用前应初始化,防止未经初始化的变量被引用。对于数组变量来说,恰当的初始化样例如下:char szString[100] = {0};定义了...
提前认识软件开发(10) 字符串处理函数及异常保护

提前认识软件开发(10) 字符串处理函数及异常保护

提前认识软件开发(10) 字符串处理函数及异常保护2015-01-24在软件开发项目中,经常有程序要对字符串进行操作。为此,C函数库中提供了一些用来对字符串进行处理的函数,使用起来非常的方便。但由于字符串都有长度,如果随意对不同的字符串进行连接和拷贝等操作,就可能出现意想不到的后果。因此,在实际开发过程中,十分强调对字符串处理函数进行异常保护。本文详细介绍如何正确运用字符串处理函数进行C程序设计。1. strcat和strncat函数strcat函数的作用...
提前认识软件开发(11) localtime与GetLocalTime

提前认识软件开发(11) localtime与GetLocalTime

提前认识软件开发(11) localtime与GetLocalTime2015-01-24在C语言中,有两个获取当前时间的函数:localtime和GetLocalTime。它们在诸如对账一类的程序中应用很广。本文对localtime和GetLocalTime进行较为详细的介绍,并举例说明它们的用法。1.前言在C语言中,获取当前系统时间的操作时有发生。例如,在对账程序中,需要在对账文件名中加入当天的日期及时间。一般而言,经常使用的获取当前时间的函数有两个:...
提前认识软件开发(12) 配置文件读取及文件操作

提前认识软件开发(12) 配置文件读取及文件操作

提前认识软件开发(12) 配置文件读取及文件操作2015-01-24在通信领域的软件开发项目中,C语言是主流的编程语言,而文件操作在其中又占有很重要的地位。此外,为了体现产品的灵活性,可添加配置文件对某些重要的参数进行按需配置。这就要求程序能够准确读取到各个配置项的值。本文以一个实际的小软件为例,介绍了C语言中配置文件的读取方法和重要的文件操作函数的使用方法,为相关软件开发项目提供了有益的参考。1.前言在一般的软件项目中,常常需要用C语言对文件进行操作。在...
<< 171 172 173 174 175 176 177 178 179 180 >>