To be a good programer, I should Know about functional programming

What is Scala

Scala stands for Scalable language

Scala 融合了 面向对象 和 函数式 的特性。面向对象方便构建大型系统同时有利于拓展,而函数式对于处理有趣的功能点上能够快速的完成开发。(Scala’s functional programming constructs make it easy to build interesting things quickly from simple parts. Its object-oriented constructs make it easy to structure larger systems and to adapt them to new demands.)

关于scala应该包含什么类库

So the approach of attempting to provide
everything in one language doesn’t scale very well. Instead, Scala allows
users to grow and adapt the language in the directions they need by defining
easy-to-use libraries that feel like native language support.

阅读全文 »

JUnit设计原则

先来说说单元测试框架应当遵循什么原则:

  1. Each unit test should run independently of all other unit tests.
  2. The framework should detect and report errors test by test.
  3. It should be easy to define which unit tests will run.

JUnit 设计目标:

  1. The framework must help us write useful tests.
  2. The framework must help us create tests that retain their value over time.
  3. The framework must help us lower the cost of writing tests by reusing code.

Junit是如何实现单元测试框架应当遵循的原则的:

  1. Separate test class instances and class loaders for each unit test to avoid side effects (目标1)
  2. JUnit annotations to provide resource initialization and reclamation methods: @Before, @BeforeClass, @After, and @AfterClass (目标3)
阅读全文 »

编程语言开发札记

以下文字用于记录我在开发自己JVM语言过程中的学习历程,一是为了记录自己的成长,而是如果能够帮助有这方面需求的人,那就再好不过了 - Falcon

2013/12/24 平安夜

我的目标是制作JVM语言。目前搜集一些资料,但是JVM生成字节码方面的资料很少。

目前看了的资料有

http://stackoverflow.com/questions/3380498/create-a-jvm-programming-language

阅读全文 »

文中的所有描述都基于 Windows

对于Windows需要先安装 GitCurl, 然后我将配置 Vundle 来管理依赖,这样依赖的安装和删除都会很方便

安装步骤

阅读全文 »

海鸥

马年就这么悄悄地到来了,回家总是满满的幸福,各种好吃的马上补上,虽然有些事情是遗憾的,但是我相信未来是美好的,心怀乐观,总会将自己引入光明之道。

2013年对我来说是重要的一年,经历了很多艰难的事,越发感觉自己能力有限,回首过去5年自己无所作为,无比的懊悔,有些事情总是明白太晚。但是痛楚让自己醒悟了,现在终于知道自己该坚持什么,该放弃什么。我得承认自己能力有限,不要想象自己可以扭转乾坤,需要更脚踏实地的一步步前行。

阅读全文 »

Note to Java Annotation

本文是对 Java Annotation 基本知识的总结和梳理

Java annotation 官方说明

Annotations, a form of metadata ( “meta data” 我的理解是编程时就能确切知道的能够提供给运行时的信息), provide data about a program that is not part of the program itself. Annotations have no direct effect on the operation of the code they annotate.

从上面定义的话大概体会是这么个意思:

Annotaion 是对目标代码的标签性注释,或者叫说明,用来给Annotation所标记的对象打上标签,就好比人的名字,某种意义来说就是标签。比如某场活动中要找出所有叫 “张三” 的人,这个时候 “张三” 这个标签就起到标识的作用了。

比如Spring 提供的 Annotation, @Autowired, @Transaction 等表明了注解标注的对象在某种场景下会具有标识性。

阅读全文 »

之前写贝叶斯分类相关文章的时候,就想到如果我要写公式怎么办,如果直接用普通字符写出来恐怕不太美观,就像前面写标签云的时候一样,连个方程组写出来都很难看。于是就上网搜了些资料,看看怎么能像word一样显示数学公式。当然也顺便为了拯救难看的方程组。

一开始看到了开源中国上的关于MathML的文章,文章有点长没看完只看了开头。知道了MathML其实就是类似XML一样的显示数学公式的协议规范。

MathML 是一个用于标记数学表达式的 XML 词汇表,它包含两个子语言:Presentation MathML 和 Content MathML。Presentation MathML 主要负责描述数学表达式的布局(因此可与 TeX 或更早的 SGML 标记语言相比较,SGML 用于描述诸如 ISO 12083 之类格式的数学表达式的布局)。Content MathML 主要负责标记表达式的某些含义或数学结构。

阅读全文 »

MongoDB Aggregate Framework

MongoDB 2.1 多了新Feature - Aggregation Framework. 最近工作需要就稍微看了下,Mark之

Overview

Aggregation提供的功能map-reduce也能做(诸如统计平均值,求和等)。官方那个大胖子说这东西比map-reduce简单, map-reduce 我没用过, 不过从使用Aggregation的情况来看, 进行统计等操作还是蛮方便的。

总体而言,Aggregation就是类似Unix-like中的管道的概念,可以将很多数据流串起来,不同的数据处理阶段可以再上一个阶段的基础上再次加工。

阅读全文 »

最近一段时间读了几本不错的书:

《黑客与画家》

《代码大全》

《重构-改善既有代码的设计》

收获良多。不知不觉中自己曾经困惑的问题渐渐被解决了。困惑通常就像散列的点,散落在我们的知识网络中,没有一条线将他们连接起来。我不知道到底自己应该选择怎样的方向,所以选择多读书,多扩展知识面,这样的话说不定在读书过程中就能过无意的将两个散落的困惑连上线,从而将困惑解开,然后突然间或豁然开朗的感觉,这也许就是读书最美的地方,有点类似连连看的的感觉呢。

接下来说说看《重构》一书中收获的东西。

钻石要在阳光下才会闪耀

知识要在合适的时候出现,才会显现出其价值。当知识、阅历尚浅的时候如果直接告诉我们一个终极道理,我们是理解不了的。

阅读全文 »

This is my first post in hexo