SICP 第三章总结

历时三个月,终于把第三章看完了。这三月发生了太多的意外,本文不打算说了,后面在写 2015 年终总结时再来谈谈这三个月的事情。如今回过头来看看第三章的内容,好像也不怎么难,只是内容涉及的面稍微广一些而已,下面来回顾总结一下第三章。

阅读全文

字符串,那些你不知道的事

最近在看《Dive Into Python 3》,第四章讲了字符串相关知识,看后才发现,字符串远比我们想象的要复杂多。就像该书所说的

阅读全文

SF 黑客马拉松赛后回顾

上个周末,也就是10月24、25号,参加了人生中第一次黑客马拉松(hackathon),虽然最终没有获奖,但是这个比赛过程中还是 hack 的挺爽,趁现在还有余热,纪录下比赛时的一些心得与收获。

阅读全文

转载『非科班出身的人学习编程不负责任指南』

来我们这个实验室里读研的学生可能自从来到这里的第一天就觉得自己的命运很苦逼。他们读本科时主修的是机械设计、制造以及自动化之类的专业,毕业时的简历上也顶多是写写擅长 MS Word、PowerPoint、UGNX、AutoCAD 之类的应用软件。他们有限的学习生涯里,怎么也不会想到来到这里竟然要首先重新学习 C 语言,然后还要学 C++,接下来还要学习 Python 或 Lua 什么的,而且竟然还不让用 Windows,只能用连个 QQ 都没有并且经常出故障的 Linux……

阅读全文

我的第一个玩具语言 JCScheme 问世了

记得在上大学那会,就想着能够实现个自己的编程语言。由于之前技能不足,一直没敢去尝试。现赶上国庆七天假期,SICP 看的也正起劲,终于鼓起勇气,把这个坑给填上了。甚是开心。
实现 JCScheme 这个语言前后大概用了一天时间,功能虽然简单,但是“麻雀虽小,五脏俱全”,编程语言中最基本的类型、作用域、函数都涵盖了,以后在扩展时也很方便。
如果你和之前的我一样,想实现一门语言但又苦于无从下手,那么你应该花半个小时看看本文,相信你肯定会有所收获。
本文没有复杂难懂的编译原理知识,没有学过编译原理的人不要害怕。

阅读全文

Java WeakHashMap 源码解析

前面把基于特定数据结构的Map介绍完了,它们分别利用了相应数据结构的特点来实现特殊的目的,像HashMap利用哈希表的快速插入、查找实现O(1)的增删改查,TreeMap则利用了红黑树来保证key的有序性的同时,使得增删改查的时间复杂度为O(log(n))

阅读全文

SICP 第二章总结

到今天为止终于把第二章看完了,相比于第一章,感觉难点少了些,这章主要是通过大量例子(主要有图形语言、区间运算、符号求导、集合的表示、通用型算术运算)来熟悉构造数据抽象的相关技能。下面来回顾总结一下第二章。

数据抽象的意义

在第一章中,只是进行了一些数值演算,这是比较简单的数据,并没有体现出数据抽象的意义,本章一开始就通过有理数的运算这个例子引出了数据抽象的意义。
数据抽象的基本思想,就是设法构造出一些使用复合数据对象的程序,使它们可以像操作数值等简单数据类型一样操作“抽象数据”。通过构造复合数据(与构造复合过程类似)可以达到下面的效果:

阅读全文

Java LinkedHashMap源码解析

上周把HashMapTreeMap这两个Map体系中比较有代表性的类介绍完了,大家应该也能体会到,如果该类所对应的数据结构与算法掌握好了,再看这些类的源码真是太简单不过了。

阅读全文

Java TreeMap 源码解析

上篇文章介绍完了HashMap,这篇文章开始介绍Map系列另一个比较重要的类TreeMap
大家也许能感觉到,网络上介绍HashMap的文章比较多,但是介绍TreeMap反而不那么多,这里面是有原因:一方面HashMap的使用场景比较多;二是相对于HashMap来说,TreeMap所用到的数据结构更为复杂。

阅读全文

Java HashMap 源码解析

继上一篇文章Java集合框架综述后,今天正式开始分析具体集合类的代码,首先以既熟悉又陌生的HashMap开始。

阅读全文