5、电子表格
如果使用了附带强大宏系统的电子表格程序, 你将拥有一个快速的方法来阅读其 他人(或物)代码, 并编写自己的代码。首先, 将你执行次数多、通常需要采取数个繁琐步骤的任务记录成一个宏。接下来, 打开宏的源代码, 阅读并进行编辑, 使 之更适合于一般用途。这是一个非常有限的方法, 不会带来多大的长进, 但可能会帮助你上路, 自然地喜欢上简单的脚本代码。
使用此类脚本的最常见的电子表格程序可能是微软Excel。 Excel所使 用的VBA是一种贫乏的语言, 但是如果你在日常工作中大量使用Excel, 这可能是无论如何你都该掌握的一种技能。 OpenOffice.org使用了类似的宏系统, 使用方法大致相同, LibreOffice也像微软Office一样, 提供了学习代码的机会。
在任何情况下, 编写程序的门坎都比编写简单的命令行shell脚本代码稍高, 因为菜单选项和按钮需要点击才能启用。入门的成本类似于用市场上的一种主要IDE开始一个新项目, 但是一个大幅缩水的“项目”。这会是一个不错的主 意, 可以确保这不仅仅是在日常开发环境中编写脚本的机会, 甚至是加以利用就会很有帮助的。
6、Unix
如果你定期使用一些类UNIX系统, 在寻找锻炼初期编程技能的方式时就具有巨大的优势。 UNIX在简单脚本自动化方面提供了比任何其他家庭通用操作系统的更多的使用机会, 这要感谢平台上管理脚本的极大灵活性。在最不复杂的情况 下, 一个管理脚本可能只不过是将一系列shell命令保存到一个文件中。在此基础上, 可以利用简单的循环和条件结构、输入输出处理、文件读写、计划任务来 进行扩展。
通过编写简单shell脚本爽过一把后, 花一段时间来学习如何用Perl、 Python和Ruby编写管理脚本对任何一个Unix系统管理员都是值得的。在Unix环境使用这些语言的关键技能包括通过UNIX管道和重定向访问文本流, 处理命令行选项, 读写文件, 使用正则表达式搜索和操作文本。管理员也想知道编程的公共基础知识, 比如处理输出, 循环(或在某些情况下递归), 以明确 界定的标准为基础, 通过使用条件判断结构编程来作出决策。
编写Unix命令行工具是一块沃土, 有许多机会将脚本语言的巨大能力用于编程。由于管理脚本开发的灵活性和简约性要求, 编写工具的范围可以从一些有用工具的最简例子到强大的服务器进程, 甚至大规模并行任务自动化, 负载平衡, 启发 式过滤, 和一些其他有趣的问题解决作业, 这些问题激起了世界上最好的程序员的兴趣。
虽然几乎所有通用操作系统都具有一些使用管理脚本的能力, 其中相当一部分用途比较窄, 另一些操作系统则比较均衡。 Unix在管理脚本的适用条件方面高人一等, 因为诸如主要Linux发行版和BSD Unix系统等Unix类系统共享相同的基本运行环境设计, 他们都可以从管理脚本和脚本平台之间的可移植性中受益 - 只要你按可移植性要求来写这些脚本(如通过使用sh或Perl而不是bash, 选择系统标准sysctl值而不是数据源的proc文件系统)。
这些工作也适用于除开非常高级, 动态, 解释型语言之外的其它语言。 C, C++, Haskell, Objective-C, Objective Caml, 以及大量其他选项正好合适各类简单Unix工具的编写任务。对于其中的许多语言, 即使要完成像小型管理工具的这样简单的工程项目, 也必须学会更 广泛的技能, 这一要求比Perl, Ruby和Bourne shell的这样的语言高。但这些任务与GUI应用程序开发、系统编程、其它经常使用(特别是在其他平台上的)的任务比起来, 其艰巨性对编程初学者来说要小得多。
实际上, 鉴于Unix哲学多年来提供了大量常用工具, 这些工具严格分工(大部分), 并工作良好, 类UNIX环境对编程新手的价值中有一部分是充分利用Unix命令行环境力量, 鼓励用户像程序员那样去思考, 而非观众。
7. Web网页
这是一个危险的建议, 通过玩JavaScript来学习编程。这不是因为 JavaScript是一种不好的语言, 而是因为追求动态用户体验的缘故, 网页已经被不加限制地滥用JavaSciprt弄得乱七八糟, 因而在网页上放纵 程序员新手可能会被认为是不负责任的。在网页中JavaScript也有一些积极用法, 而且可以让新手们对编写在浏览器中运行的桌面应用程序的想法愈来愈 感兴趣, 这给了我们在程序员职业生涯中尽早开始学习JavaScript的很多理由。
事实上, JavaScript是一种最常见的、单独的客户端网页脚本, 这也意味着JavaScript可能是最简单的语言, 通过阅读别人的代码就能学习。找到具有客户端动态元素的任何网页, 然后右键单击并选择查看页面源代码的选项, 你就会发现它布满了JavaScript的散落片段。对于更复杂的动态页面, (X)HTML的网页甚至可能引用一个纯代码的单独.js文件。
在把代码上传到公共访问的Web服务器前要细心检查;确保它是好的。如果你想让更多的有用脚本以本地方式来启动, 浏览器扩展性可以让你将任意脚本应用到你查看的网页上——而且只适用于你个人的浏览体验。 Firefox的Greasemonkey是一个例子。
征求有关代码的反馈
提高编程技能的另一个伟大方法是, 向自己身边的行家里手征求反馈, 并掌握他们分享给你的的知识。他们可能并不总是彼此认可, 但如果你认为他们是值得尊敬的优秀程序员, 他们所说的至少可以提示你思考新思想, 并以新的方式回顾旧观念。
征求反馈的方式很多, 这儿列出几种:
在开始工作时, 选择具有强大有益社区的程序语言, 如Ruby编程语言有ruby-talk邮件列表, Perl编程语言有PerlMonks网站。加入这些社区中的一个(或类似其中之一的), 并学习该语言的文化和最佳经验, 以及得到最有效帮助的方法。
与另一个程序员结对 。结对编程 (Pair programming)是一种时髦的做法, 已经通过敏捷开发方法的崛起而获得尊崇。两个人走到一起做一个项目, 但往往只有其中一个是在任何特定时间实际 编写代码。结组程序员轮流编写代码, 其中一人输入代码时, 另外一个则在后面阅读代码, 确保他们都得到大量的编码时间。就代码持续交谈可以帮助确保解决给定 问题的最好办法逐渐显现并最终采用。任何一个拥有顿悟的人在试图向另一个人解释一个问题时, 应该认识到结对编程的潜在价值。
寻求导师. 找到导师的地方, 可以是编程语言社区、朋友或同事之中、开放源码(Open Source)软件开发项目、重量级技术主题会议。学校可能是另一个找到导师的好地方, 所谓导师, 就是对你、宿舍室友甚至研究小 组有好感, 具有不那么传统而更互敬互让的辅导制关系的指导老师。在学习编程过程的初期, 与导师一对一的关系有时是获得反馈的最有价值的方式。如果你幸运地 寻得一位好的导师, 你应该好好利用这一资源优势, 并且永远不要认为这是理所当然的。
原文转自:http://justjavac.com/other/2012/07/03/seven-thoughts-on-the-programming-learning.html