How to Think Like a Computer Scientist 学习笔记(一)

How to Think Like a Computer Scientist 学习笔记(一)

gasp_lessons How to think like a computer scientist : Learning with Python v2nd edition

很不错的一个教程,不仅仅从头讲解了Python,更重要的是帮助我把计算机编程知识进行了一次梳理。

学习笔记(一)针对的是第一章 The way of the program

作为一名计算机科学家,最重要的是解决问题的能力。(Problem solving)

Python

编程语言可以分为高层语言(High-level language)和低层语言(Low-level language)。高层语言,比如c++,java,python,需要先转换成低层语言,比如汇编,因此会花费一些时间,这也是高层语言的缺陷。但是高层语言有很大优势

  1. 编程方便,容易理解
  2. 更加轻便(portable),可移植性更好,底层语言需要针对不同平台进行修改

高层语言转换为地层语言的程序有两种:解释器(interpreter)和编译器(compiler)。解释器读取代码,一步步执行代码。编译器把源代码 (Source code)编译为对象码(Object code),然后再执行。

现代的编程语言普遍采用了这两种方式,先把源代码编译为字节码(Byte code),然后在虚拟机(Virtual machine)中解释执行。

Python也采用了这两种方式,但是由于程序员编程的方式,一般把python看做解释性语言。Python有两种解释方式:shell modescript mode

什么是程序

程序是顺序的计算指令。它包含了input, output, math, conditional execution, repetition,任何程序都是由这几个要素组成的。

什么是Debug

程序的错误就是bug,解决bug就是debug

程序的错误分为三种:语法错误(syntax error),运行时错误(runtime error),语意错误(semantic error)。

对于一些人,编程和debug是同时进行的,可以保证程序的可运行性。

形式语言和自然语言

自然语言(Natural language)就是世界上的语言,英语法语等
形式语言(Formal language)是人们为了某个目的设计的,比如数学和化学中语言

形式语言有两个要素:tokenstructure。分析语言的过程就是parsing

相比于形式语言,自然语言不明确(ambiguity),重复(redundancy),literalness。

我的爱车被偷了

话说我的自行车已经跟随我多年了,自打高中就跟我上下学,每次高中聚会,很多同学都说,又骑这车来了,我的这辆车已经是我的一个标志了。

我的这辆车是什么样子的呢,飞鸽牌绿色26自行车,老款,无大梁。说来惭愧,这么多年,竟然没有几张这辆车的照片。

其实这辆车的车况已经大不如前,本打算等我出国就让他退役的,可是,让小人偷走,使它没有站好最后一班岗。

最后,仅希望这辆车能够卖到一个好人家。

如何在Windows下添加瑞典语输入法

如何在Windows下添加瑞典语输入法

thumbnail_sweden_input 即将迈向瑞典国土的我,对瑞典语也产生了兴趣。虽然用英语也可以应付大多数场合,但是会瑞典语还是有不少好处的。今天在UU群里又一次有人提出如何在计算机里输入瑞典语,这里要讲一下,瑞典语和英语有很大的相似度,但是多了几个字母:öÖ,äÄ,åÅ。看到了么,这几个字母在英文输入法下可是不能够打出来的。

安装瑞典语的输入法也很简单的,只需如下几步:

打开“控制面板”,找到“区域和语言选项”,选择“语言”标签,点击“详细信息”,弹出如下窗口。

sweden_lang_input

我已经添加了瑞典语,没有的同学不用着急,点击右方的添加按钮,选择“瑞典语”即可。

add_sweden_input

一般我们熟悉的切换输入法的快捷键可以修改一下,使之支持跨语种的切换。点击“键设置”按钮,找到“在不同的输入语言切换”,修改一下快捷键,我选择的是左边的Alt+Shift,当然自己习惯就好。

这样就可以输入瑞典语了。Hej då!

几个特殊字母的键位:

; -> ö
‘ -> ä
[ -> å

为Pidgin添加Twitter支持

为Pidgin添加Twitter支持

最初知道Pidgin是开始使用Ubuntu,很喜欢这种IM集成的软件,可以同时登陆GTalk,MSN等主流的即时通讯。今天碰巧在网上看到Pidgin可以支持Twitter,于是搜到了这款Pidgin插件,Microblog-Purple

Microblog-Purple是针对LibPurple开发的软件(如Pidgin,Finch)开发的插件,使用Google Code提供的SVN服务进行版本控制。

我使用的是Pidgin Portable的版本,也就是PortableApp.com开发的版本,绿色版本。这款插件也提供了针对Pidgin Portable的安装包,在Microblog-Purple主页的右方,可以找到下载链接,我所下载到的是microblog_.0.2.2_for_pidgin_portable_2.5.x-1.exe

运行后选择Pidgin的安装目录即可。

运行Pidgin就可以在新建的窗口找到Twitter选项了,同时,插件也提供了很多设置选项,最好将Use HTTPS的勾选上。

现在Twitter被墙掉了,所以要连接上Twitter,需要简单的修改一下Host文件。

在Host文件中添加如下内容

128.121.146.228 twitter.com
128.121.146.228 www.twitter.com
128.121.146.101 assets0.twitter.com
128.121.146.101 assets1.twitter.com
128.121.146.101 static.twitter.com
128.121.146.229 assets2.twitter.com
128.121.146.229 assets3.twitter.com
65.74.185.41 twitter.zendesk.com
65.74.185.41 help.twitter.com

Twitter账户设置好后,每隔60s(默认设置),就会抓取一次Twitter消息,如果有新消息,将自动弹出。

Pidgin真的是款很好的软件,市面上已经有很多类似软件了,但我感觉,Pidgin还是最好的一款。

Dom4j 中文问题

Dom4j 中文问题

第一次使用dom4j进行xml文件的处理,使用很简单,开发很高效。

测试中中文会出现乱码,看了一下生成的文件,默认为utf-8存储,这样乱码必然会出现。

解决方法也很简单,见如下代码

        OutputFormat format = OutputFormat.createPrettyPrint();
        format.setEncoding("gbk");
        XMLWriter writer = new XMLWriter(new FileWriter("commands.xml"), format);
        Document document = reader.read("commands.xml");
        writer.write(document);
        writer.close();

也就是在写入文件时设置一下编码格式就可以解决乱码问题。

TortoiseHg & Mercurial Eclipse

TortoiseHg & Mercurial Eclipse

近期在做一个小项目,使用Google Code存储代码,这才发现Google Code 已经支持Mercurial了。于是赶紧把Mercurial装入了机器,并安装了Eclipse的插件,下面简要介绍一下过程。

用过cvs和svn的同学们肯定了解这个小乌龟,不过针对Mercurial的版本TortoiseHg的小乌龟在后背上多了Hg两个字母。

Read More »

Intro to Distributed Version Control (Illustrated)

Intro to Distributed Version Control (Illustrated)

上篇介绍版本控制,这篇介绍了分布式的版本控制,与集中式vc相比,分布式vc有很多好处。

Traditional version control helps you backup, track and synchronize files. Distributed version control makes it easy to share changes. Done right, you can get the best of both worlds: simple merging and centralized releases.

Distributed? What’s wrong with regular version control?

Read More »

A Visual Guide to Version Control

A Visual Guide to Version Control

这篇文章介绍了Version Control版本控制的一些基本概念。

Version Control (aka Revision Control aka Source Control) lets you track your files over time. Why do you care? So when you mess up you can easily get back to a previous working version.

You’ve probably cooked up your own version control system without realizing it had such a geeky name. Got any files like this? (Not these exact ones I hope).

  • KalidAzadResumeOct2006.doc
  • KalidAzadResumeMar2007.doc
  • instacalc-logo3.png
  • instacalc-logo4.png
  • logo-old.png

It’s why we use “Save As”. You want the new file without obliterating the old one. It’s a common problem, and solutions are usually like this:

  • Make a single backup copy (Document.old.txt).
  • If we’re clever, we add a version number or date: Document_V1.txt, DocumentMarch2007.txt
  • We may even use a shared folder so other people can see and edit files without sending them over email. Hopefully they relabel the file after they save it.

Read More »

Uppsala University Library Toolbar

Uppsala University Library Toolbar

今天在Uppsala University的主页上闲逛,发现了一个好东西Uppsala University Library Toolbar。顾名思义,是一个浏览器中的工具条,现在支持IE和Firefox。

Uppsala University Library Toolbar的英文页面在这里。我使用Firefox进行安装,过程和普通插件是一样的,装好后重启Firefox就可以看到工具栏工作了。

与Google Toolbar很像,包含了

  • 搜索框
  • 一些Uppsala University Library的常用链接
  • Uppsala University的rss
  • 邮件检查
  • 在线广播
  • 本地天气

其实真的很实用,而其还支持扩展,在最右面有个加号按钮,点击就可以进入一个扩展网页,在喜欢的东西后面有添加按钮。

Toolbar的设置也很丰富,可以有选择的现实组件,这样不是Uppsala Uviersity的同学也可以使用这个toolbar了。

Email Notifier支持多账户,内建支持包括GMail,HotMail,Yahoo邮箱,还可以自己设置POP3,相当实用。

没想到Uppsala University的服务还挺不错的,连toolbar都搞了。记得在南开大学读本科的时候,几位学长做了Firefox南开版,内建了许多针对南开的快速链接,真的很好。

希望一些需要的朋友能够发现这个toolbar,方便自己的工作。

悼念季羡林老先生

今天上午,季羡林老先生在北京病逝,享年98岁。

说实话,我对现如今的大学教育没有什么好感,我自私的认为大学老师都应该是大家,这样的教育才有实质性的作用。作为一名理科生,我对国内的各种大家丝毫不感冒,唯独季羡林老先生,只有如季老这样的人物才有资格被称为大家。

如今的学术腐败等丑陋面在季老身上看不到,我看到的只有踏实的做学问。季老的学生钱文忠,虽然造诣上在国内绝对是屈指可数,但是缺乏了一种做学问的气质,那种傲骨。

希望季羡林老先生的逝世能够使人们对中国教育的现状有所反省,季老之后,我们还能在校园中找到一位大家么?