学习编程

Read the English version here: How I started to learn programming | Scarlett's Blog.

之前看到一个问题:如果能够回到高考前,你会做什么?我的回答会是:快去学Python,多讲英语。这两点在我现在看来,真的是非常重要又非常有趣的。

我在三月份开始正式学习编程。一开始是在Bioinformatics模块里学习R语言。后来开始学Python,诱因是暑假即将回国,国内的朋友说,学不会Python就别回来了。于是,深井冰的博主就去学Python了……如果你对统计和数据分析感兴趣的话,R是个很好的工具。比如在生物学里,用R来处理基因组、转录组(这个词好难听,英文的transcriptome比较好)和蛋白质组数据还挺方便的。否则的话,就从Python学起吧,因为Python跟自然语言比较像,上手超级容易。

Programming languages for data science

Resources

我们有上过三节编程课,课上老师发了一些R scripts作为参考资料。我当时强烈地感觉到,学编程不应该是坐在课堂里学的,这样的效率太低了,完全不如自己对着这些参考资料自学。这里是前两份script,第三份找不到了:Introduction to R: the cell is very different from our world, Basic string and DNA sequence handling.

另外一个很好的入门教程是A Little Book of R for Bioinformatics。这个教程同时介绍R语言和生物信息学的一些基础知识和研究问题,对学生物的人来说非常好,intuitive。这个作者还写了另外几个R语言小教程:Biomedical Statistics, Time Series, Multivariate Analysis.

我的Python入门教程是Codecademy上的Python教程。另外我还看了UNIX Fundamentals,学完这个就可以释放terminal的潜能了 :)

Practice to learn

我觉得学编程最好的方法是练习。比如写一些小游戏,用编程来做一些数学题等等。刚开始学Python的时候我做了一个Battle Game,安利给Felix玩。他给了我几个很有趣的反馈,比如玩家做出一次正确的猜测时,应该奖励一个回合。带着这些反馈再去修改程序,就是一个挺有趣的过程。当然,懒惰的博主并没有去改代码……

有一次上课,老师提了一个统计学的小问题:有50个红球,50个黑球,2个盒子,问如何分配这些球,使得盒子都不是空的,并且在任意一个盒子里取的一个球是红球的概率最高。我(和大部分同学)当时脑抽了,没有获得正确的直觉。于是我在R上写了个函数和for loop,把所有的distribution可能性算了一遍,which.max来找出这些可能性里最大的一个。虽然有点蠢,但是深井冰的博主当时觉得好开心……

我们当时写的三份作业在这里: homework 1, homework 2, homework 3. 是一些关于生物信息学的题目,还蛮有趣的。

R packages that I love

ggplot2:我可以玩一整天ggplot,画出来的图可以美哭……

dplyrtidyr:处理数据

knitr:写报告肥肠方便。

RColorBrewer:最近被这个package迷住了,太符合我的审美了…… Qualitative palettes比如Set1, Set2, Set3, Paired都好好看,颜色搭配地好舒服。我画图还有做Presentation都去那里找颜色。

页面顶端的icon就是用Keynote+RColorBrewer做的


Hmmm... Happy coding, beautiful nerds :)