为程序员量身定制的12个目标--2)

        7)关注安全

  很少有程序员具备好的安全习惯。如果你对自己的数字安全很在意,你就会对你写的代码安全性更加关心。确保你在每个站点都使用了唯一的高安全系数密码。使用加密的密码管理器来管理你的密码,例如 PasswordSafe 或者 KeePassX。如果你还没有对整个磁盘加密,留出时间完成它。(在 Mac 上可以轻松完成)

  每年都要研究过去 12 个月中前 10 位的安全漏洞。他们是如何发生的?在编程中需要怎么做能够避免在你的代码中出现这些漏洞?

  下面是另外一些你需要尝试的安全任务:

  • 在 Apache 中加入 SSL 验证
  • 使用RSA 或 AES 实现密码系统
  • 试着破译你的无线网络密码
  • 用 WireShark 侦听你的网络通讯
  • 设置基于密钥的无密码 ssh 登录
  • 自己运行 nmap;配置你的防火墙
  • 建立端口扫描
  • 为 USB 驱动器加密
  • 监控日志文件
  • 设置 cron 任务定期更新你的程序

  译注:

  nmap:linux 下的网络扫描和嗅探工具包

  8)备份你的数据

  每年花一些时间检查你的备份策略。

  花一个月时间将备份花费的时间减到最小。

  使用基于云的备份服务,比如 Mozy 和 Carbonite,很容易建立无缝自动备份。

  更全面地防御可以选择为每个人分发硬盘,对每台电脑使用像 Time Machine 这样的自动备份工具进行备份。

  对重要文件使用异地远程仓库进行版本控制。

  9)学习更多理论知识

  计算机科学有丰富的理论基础。

  了解最新进展的同时还要加强对经典开发理论的掌握。

  每年在下列主题上花一个月时间:

  • 形式语言
  • 自动机与可计算性理论
  • 计算复杂性理论
  • 形式化方法
  • 语义学
  • 算法与数据结构

  译注:

  形式语言:按一定规律构成的句子或符号串的有限或无限的集合。

  自动机:是有线状态机(FSM)的数学模型。

  可计算性理论:研究计算的可行性和函数算法的理论。又称算法理论。它是算法设计与分析的基础,也是计算机科学的理论基础。

  计算复杂性理论:计算复杂性理论是理论计算机科学的分支学科,使用数学方法对计算中所需的各种资源的耗费作定量的分析,并研究各类问题之间在计算复杂程度上的相互关系和基本性质,是算法分析的理论基础。

  形式化方法:在逻辑科学中是指分析、研究思维形式结构的方法。

  语义学:研究自然语言中词语意义的学科。也可以指对逻辑形式系统中符号解释的研究。

  对于刚起步的程序员,可以先看一看下列文章:

  • 用 Haskell编写 CEK风格的解析器(或语义分析器)
  • 通过推导进行语法解析
  • 遗失的方法:如何对 Okasaki的红黑树执行删除
  • 通过推导使用 Scheme进行正则表达式模式匹配
  • 将郑则表示转换成非确定性自动机(NFA)

  译注:

  CEK:CEK 机器是由 Matthias Felleisen 和 Dan Friedman 开发的λ-演算的力学模型。

  Haskell:一种纯函数式编程语言,以美国数学家 Haskell Brooks Curry 命名。

  10)接触艺术和人文

  工程师往往轻视艺术。他们没有意识到艺术和人文是基础升华的重要因素。史蒂夫·乔布斯乐于指出将技术与人文结合的重要性,事实也却是如此。

  艺术和设计原则同样适用于人和计算机之间的交互。不要忽视这些原则。艺术和人文的训练让直觉更加敏锐,而这方面的练习是难以用数字来计量。工程师需要知道如何衡量那些他们不能计量的事物,而不是只是统计他们可以计量的内容。

  每年至少有一个月学习下面列出的主题:

  • 工业设计
  • 哲学
  • 摄影
  • 绘画
  • 素描
  • 音乐及音乐理论
  • 电影
  • 文学

  社会科学同样会对计算机科学家有很大帮助,尤其是经济学和哲学。

  11)向新的软件学习

  一个为自己的软件寻找灵感的好办法就是向新的或新型应用程序学习。例如,如果你从来没有尝试过 3D 建模软件,可以尝试Blender。抑或是,如果你从来没有接触过 LaTeX,请真诚地试着去了解它。

  在学习过程中,请注意你喜欢什么和讨厌什么。真诚地问自己,这些观察到的内容是否在你的软件中存在。在工作中很难看到自己的缺点,但发现别人的不足却很容易。天下没有哪个父母认为自己的孩子长得难看。请学习看到自己作品的不足。

  12)完成一个自己的项目

  如果你整天为别人写代码,那么为自己写程序能让你记得当初为什么会成为程序员。每年为自己选择的项目分配一个月的时间,完成核心功能,将其开源发布。

  原文:mattmight  编译:敏捷翻译 – 唐尤华


你可能感兴趣的:(算法,加密,正则表达式,Scheme,haskell,语言)