网络寻租

Programmer, Gamer, Hacker

我的技术储备

| Comments

image

从2006年7月开始, 我已经工作4年半了, 现在的年龄也不小了, 需要整理一下我这一辈子的技术方向.

任何技术都是为了实现特定目标来做的. 我的目标不是很明确, 但是大致方向上面应该还行:

那就是做软件开发(好吧, 不是很具体). 可能是客户端, 或者web, 或者手机, 但是现在还是以客户端为主, web也有一部分, 这个还是走一步看一步吧. 我个人是倾向于往web方向发展, 但是限于水平问题, 还是暂留客户端开发.

考虑到技术过时, 以及自己喜好的问题, 我还是专注在开源社区, 尤其是GNU/linux领域.

因此, 这里整理一下我需要深入的方向:

  • linux平台上面做开发.
  • 客户端/web/手机方向上面的应用软件开发. (具体侧重根据项目需求)

以后随着时间的推进, 我要能够专注积累平台的经验.

下面我要列一下, 我未来(一辈子)的技术储备, 这个文章随时更新.

编程语言

我打算专注在下面几种语言上面, 它们都有对应的适用场景:

抽象能力从低到高:

C – ? – python – lisp

  • C 底层平台语言 用来写性能相关/底层的代码, 以及阅读其他开源项目的代码. C语言是逃不过的, 并且至少在未来30年内不会被取代.
  • python 动态语言. python的简洁, 清晰, 高效开发, 大量的库支持, 几乎所有领域都能够参与, 我采用它作为主力开发语言. 近来python使用者越来越多, 我也需要深入挖掘, 以应对开发者增多带来的技术贬值现象.
  • ? 能够处理复杂度的静态语言 在C和python中间, 我觉得还是会有一个间隙语言, 需要足够的性能, 以及能够处理复杂度. 本来C++是挺适合的(它应用在在Qt和游戏业上面), 但是由于学习成本比较高, 以及对于我来说使用场景不多, 暂时不打算深入. 或许go/lua是好的选择?
  • lisp 抽象语言 我需要有一个充分的抽象语言, 来让我能够用任何自己想用的方式来写代码. lisp简洁的语法, 以及强大的macro功能, 能够支持我的需求. 并且也带来一些优越感.

领域知识

上面只是语言工具的部分, 下面是具体的技术领域(所谓的内功):

算法

虽然我断断续续看了CLRS, 但是基础还是非常薄弱, 需要定期花时间学习..

linux

作为产品的基石平台, linux从内到外的了解都是需要的, 先跑LFS吧…

web

现在是web的时代, 我到现在都没有通读完过tcp/ip那套书, 以及对一些核心协议不是特别了解, 虽然能够使用, 但是该做的事情是逃不过的. 然后就是抽空看RFC.

编程能力

写代码的能力, 能够快速提出解决编程问题的方案, 并实现代码. 这样的能力什么时候都不会过时, 都值得训练. 需要经常做做题目…

设计能力

在不同场景下, 提出和验证方案, 并监督实现, 这个还是需要多多开发, 并经常针对项目做出总结.. 一直以来, 我都没有整理这方面的内容, 是该做这样的事情了.

具体技术

为了能够支持开发, 需要有强大的工具来做作成我的产品. 下面列出一些我需要深入研究的, 并且随着时间, 需要不断更新:

  • 开发工具: emacs

    • 能够根据需要设置成自己想要的方式.. 虽然我已经采用它开发超过2年, 但是还是很粗浅的应用, 不能按照自己的心意调整成想要的状态, 需要整理思路.
  • GUI库:PyQt

    • 这是我主力的用来写界面的库, 但是我对它底层不是特别了解, 这方面需要提高.
    • 最近出来了qml, 作为下一代的GUI语言, 我需要跟进时代.
  • web框架: django/web.py/Pyramid

    • 现在我只是使用过框架, 没有对框架有深入了解, 这样是不够的, 平时开发的时候看不出来, 遇到问题的时候无法解决, 需要弄懂一些基础概念: 整体处理流程/模板机制/数据库
  • 语言库: python库

    • 虽然python库非常好用, 但是还是需要知道下面是如何实现的, 以减少对特定产品的依赖. 最好能够阅读python源码和python库源码.

结论

从上面列出来的东西来看, 我贪多嚼不烂了… 现在先慢慢实际使用lisp吧, 把我的一些python代码用lisp来实现..

Comments