07年,我曾经买过一台二手电脑。08年10月,买了一台Acer的笔记本。上学时计算机基础和C语言都是必修课。还在10年修了Fortran。本身,我对技术很有兴趣。但说来惭愧,这些年来编程水平一直是应用在科学计算上多。离程序员这三个字莫名的遥远。可能是从跟数值打交道到跟数据打交道的距离吧。
11年学了Java,跟着Stanford的课来的。不过后来事情一多,也没继续了。Java也学了点皮毛。现在想来,打击挺大。心底都快认为自己是那种遇到困难就逃避、事事半途而废的人了。
幸好认识到这一点比较早。让我能在年轻时深刻反思自己:我究竟能不能一黑到底的完成一件事?
这上升到人生态度的事一定不能忽视了。今天看到几篇日志。一个是十年以上编程历史码农(liuben)写的中期回忆,一个是7年之痒的女程序员(clear_zero)写的。我再回想一下自己。脸唰的一下红了。我很清晰的认识到了自己离优秀差的远了远了远了。。。
奋发吧,骚年。如果2012这一年,天不塌地不裂山不崩石不烂,当我在垂垂老矣坐在藤椅上喝杯热茶眯眼晒太阳回忆年轻时的我时,我就把觉醒的这一年当成我的编程元年。
我的近期目标,就是能在一年内建一个自己的个人网站。
目标已定,那我该怎么行动起来呢?有句话说的好:如果你说“我要先学习一下再开始做”那么你永远不会真正开始。原谅接下来我引用别人的文章吧,我会先给出出处:
http://www.williamlong.info/archives/2700.html
http://coolshell.cn/articles/4990.html
步骤:
1、 学习一门脚本语言,例如Python/Ruby
可以让你摆脱对底层语言的恐惧感,脚本语言可以让你很快开发出能用得上的小程序。实践项目:
- 处理文本文件,或者csv (关键词 python csv, python open, python sys) 读一个本地文件,逐行处理(例如 word count,或者处理log)
- 遍历本地文件系统 (sys, os, path),例如写一个程序统计一个目录下所有文件大小并按各种条件排序并保存结果
- 跟数据库打交道 (python sqlite),写一个小脚本统计数据库里条目数量
- 学会用各种print之类简单粗暴的方式进行调试
- 学会用Google (phrase, domain, use reader to follow tech blogs)
为什么要学脚本语言,因为他们实在是太方便了,很多时候我们需要写点小工具或是脚本来帮我们解决问题,你就会发现正规的编程语言太难用了。
2、 用熟一种程序员的编辑器(不是IDE) 和一些基本工具
- Vim / Emacs / Notepad++,学会如何配置代码补全,外观,外部命令等。
- Source Insight (或 ctag)
使用这些东西不是为了Cool,而是这些编辑器在查看、修改代码/配置文章/日志会更快更有效率。
3、 熟悉Unix/Linux Shell和常见的命令行
- 如果你用windows,至少学会用虚拟机里的linux, vmware player是免费的,装个Ubuntu吧
- 一定要少用少用图形界面。
- 学会使用man来查看帮助
- 文件系统结构和基本操作 ls/chmod/chown/rm/find/ln/cat/mount/mkdir/tar/gzip …
- 学会使用一些文本操作命令 sed/awk/grep/tail/less/more …
- 学会使用一些管理命令 ps/top/lsof/netstat/kill/tcpdump/iptables/dd…
- 了解/etc目录下的各种配置文章,学会查看/var/log下的系统日志,以及/proc下的系统运行信息
- 了解正则表达式,使用正则表达式来查找文件。
对于程序员来说Unix/Linux比Windows简单多了。(参看我四年前CSDN的博文《其实Unix很简单》)学会使用Unix/Linux你会发现图形界面在某些时候实在是太难用了,相当地相当地降低工作效率。
4、 学习Web基础(HTML/CSS/JS) + 服务器端技术 (LAMP)
未来必然是Web的世界,学习WEB基础的最佳网站是W3School。
- 学习HTML基本语法
- 学习CSS如何选中HTML元素并应用一些基本样式(关键词:box model)
- 学会用 Firefox + Firebug 或 chrome 查看你觉得很炫的网页结构,并动态修改。
- 学习使用Javascript操纵HTML元件。理解DOM和动态网页(http://oreilly.com/catalog/9780596527402) 网上有免费的章节,足够用了。或参看DOM 。
- 学会用 Firefox + Firebug 或 chrome 调试Javascript代码(设置断点,查看变量,性能,控制台等)
- 在一台机器上配置Apache或 Nginx
- 学习PHP,让后台PHP和前台HTML进行数据交互,对服务器相应浏览器请求形成初步认识。实现一个表单提交和反显的功能。
- 把PHP连接本地或者远程数据库 MySQL(MySQL 和 SQL现学现用够了)
- 跟完一个名校的网络编程课程(例如:http://www.stanford.edu/~ouster/cgi-bin/cs142-fall10/index.php ) 不要觉得需要多于一学期时间,大学生是全职一学期选3-5门课,你业余时间一定可以跟上
- 学习一个javascript库(例如jQuery 或 ExtJS)+ Ajax (异步读入一个服务器端图片或者数据库内容)+JSON数据格式。
- HTTP: The Definitive Guide 读完前4章你就明白你每天上网用浏览器的时候发生的事情了(proxy, gateway, browsers)
- 做个小网站(例如:一个小的留言板,支持用户登录,Cookie/Session,增、删、改、查,上传图片附件,分页显示)
- 买个域名,租个空间,做个自己的网站。