打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
永不过时的编程工具

from http://www.tuicool.com/articles/RVrmmqY

时间 2016-04-03 20:15:23 明珠夜话

我从事专业编程工作已经十年有余。有些过时的东西我早就应该把它们忘记了(噢,上帝呀,Cold Fusion),但是迄今为止,依然有许多工具、技巧和概念继续在我的工作中发挥着重要的作用。以下内容是我的一个小结。与此同时,我也希望了解一下你们的情况,这样我就不仅可以体验一下发现的乐趣,或许还能够从中找到一些我后悔当初没有早点儿学习的知识、理论或者工具。

关系代数 / 结构化查询语言

我对此深感幸运,十四岁那年夏季,我当时由于缺少朋友,所以除了独自翻阅一本名为 MySQL and mSQL 的专业书之外,实在没有什么其它更好的事情可干。在这本书的评论里,你虽然可以到这样的评价『粗略、不完整,而且几乎没有任何用处。』 但是不管怎样,我的确从中了解了结构化查询语言和数据库方面的知识。稍后不久,我又学习了关系代数(关系型数据库系统的基本理论和原理),这成为我一生中最有价值的一项投资。我几乎无法统计出仅 LEFT OUTER JOIN一条语句究竟有多少次拯救我于水火之中。

就在我加入 EnterpriseCo 公司之后,当我需要从 MySQL 转换到 Oracle 以及 MS SQL 的时候,关系代数的学习为我奠定了坚实基础。在没有编程框架或者关系对象模型库的情况下,知道如何与数据库进行交互,帮助我快速提升了职业生涯的发展。这就是为什么当我仅有20岁时,我就能承担下一份为新墨西哥州圣达菲市搭建一个定制化网站的项目,而不是像其他人那样,整天都在摆弄 Wordpress 或 Drupal 的各类功能插件。

如果你来自 Rails 或者其它一些能够直接支持数据库交互的开发框架阵营,你为你的职业生涯所能做的最好一件事情就是,学习关系理论和结构化查询语言。阅读 任意一本由 C. J. Date 撰写的书效果可能更加显著。

Unix 进程模型

理解 Unix 进程帮助我真正搞懂了,当我运行一个计算机程序时,究竟发生了哪些事情。当然,它也帮助我深入理解了一个 Web 服务器到底是个什么东西,以及当我编写一个 Web 应用程序时,我实际是在做些什么。《高级 Linux 编程》一书有 一个章节专门描述这个主题。实际上, 整本书都是免费的。

当你还不了解进程这个概念的时候,编程对你来说就会变得更为困难、甚至更加神秘莫测。你将很难理解一个程序的性能表现,你将很难理解一个程序如何与其它程序交互。当你实际运行一个自己编写的程序时,如果你对将要发生的事情,有一种概念模糊的感觉,学习 UNIX 进程模型将会对你清除这些障碍大有助益。

正则表达式

是啊,是啊,我们都听说过 这个笑话:『总有一些人,当他们面对一个问题时,直接的想法就是 ‘我应该使用正则表达式。’ 现在他们需要面对两个问题。』就我本人而言,我不太明白这个笑话想要表达的含义,因为正则表达式真 TMD 太牛逼了。我清晰地记得,18岁的时候,我在一个酒店担任夜间审计员,从晚上11点直到上午7点那段时间,当我翻阅完 O'Reilly 那本又厚又重的正则表达式教程书后,我完全被它所拥有强大功能震撼住了。我们总在说,程序员特别擅长与文本打交道,要是和正则表达式相比,根本不值一提。正则表达式是一个非常重要的工具,你通过 这个学习资源就能够学会并掌握它们。

有限状态机

正则表达式就是在有限状态机的基础上构建的。这是 一个关于有限状态机的优质教程,它给我们展示了一个正则表达式的具体实现过程。真是酷毙了!

我认为有限状态机应当属于计算机科学的基础理论范畴,但是由于我在大学只待了一年时间,而且在接下来的一段时间里,我主要参与编写了一些与电脑千禧年问题相关的程序,那是在计算机革命之前。直到大约六年前,我才开始接触到这一理论专题。当时,我与同事正在开发一个移动应用程序。我们遭遇的问题是,我们必须以一种特定的顺序初始化这个程序,但是,确保正确实现的逻辑关系却因为相互纠缠而变成了一团乱麻。

尽管我们在学习有限状态机上花费了一些时间,但是在我们掌握了这个概念之后,描述这个程序的初始化过程一下子变得非常简单和清晰 - 只需表示成序列化状态和过渡就可以了。从那时起,我发现了绝大多数的复杂用户界面代码都能采用这一方法加以改进和完善。就在几个月前,正当我使用 Hoplon编程框架从头设计与实现一个类似 typeahead的实时提示功能时碰到了一个难题。然而当我发觉这个难题可以利用所有可能状态进行跟踪就可以很好解决的时候,我只用了几分钟时间就把这件事搞定了,然后我迅速重归正常工作状态。

情绪 & 情感管理

在我的个人生活中,我一直在学习和尝试情绪管理的各种方法和技巧。这主要是源于我渴望改善他人生活的愿望。另外,从自私的角度来说,学习它们能够帮助我更好地完成工作。情绪管理可能是一项每个人都有待开发的最重要的一项元能力(meta-skill)。我的意思是说,情绪与情感恰好位于我们人类的核心部位。

这本 《非暴力沟通》一书是应对情绪问题的优秀学习与参考资源。另外,我的朋友 Alex Harms 最近特意撰写了 一本针对技术人员的专著,当然同样非常值得一读。

这些就是我个人选出的最好编程工具 - 我希望你们能从中找到对自己真正有用的东西!

作者: Daniel Higginbotham,程序员, 技术图书作者,热爱 Clojure

原文: Timeless Programming Tools

感谢:Qingniu 帮助审阅并完成校对。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Linux中进程分为哪几类?
Javascript学习笔记——基础篇
你知道线程和进程有什么区别吗?
深入浅出:JAVA多线程编程实战-基础篇
多线程的概念
什么是FastCGI
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服