关于编程学习的七点思索

发表于:2014-01-14来源:justjavac作者:不详点击数: 标签:编程
关于编程学习的七点思索.中国古代思想家孔子(Confucius)功劳中包括对许多事物发表的见解, 从 平凡的幸运饼消息(fortune cookie messages)到明显荒谬的笑话, 如“Man who stand on toilet is high on pot.(立于[茅]厕, 乐于[尿]壶)”。

  中国古代思想家孔子(Confucius)功劳中包括对许多事物发表的见解, 从 平凡的幸运饼消息(fortune cookie messages)到明显荒谬的笑话, 如“Man who stand on toilet is high on pot.(立于[茅]厕, 乐于[尿]壶)”。

  他曾说过一段对人们学习编程有帮助的话:

  I hear and I forget.(耳听为虚)

  I see and I remember.(眼见为实)

  I do and I understand.(实践出真知)

  对大多数人来说, 坐在教室里听课远非学习编程的理想途径。辅以阅读介绍编程概念的书籍可能会有所助益, 但无法与通过有效阅读并思考其他人的源代码直至理解所获得的实践技巧相比。

  但是, 真的没有什么方法比喜欢自己动手写程序更能积累编程技巧。阅读一点只能学到一点, 而动手编程则能收获很多。找到你想简化的事情, 并编写一些程序代码来通过自动化使它们更容易处理。

  不幸的是, 搞清楚什么能做有时会是编程学习中最困难的地方。基于个人的经验, 答案似乎是你可以一躇而就, 而不是七上八下的事情, 并能通过顿悟来找到通过编写程序来解决问题的方法。

  在寻求这种顿悟时, 由于刚开始编程的人知识通常都非常有限, 绘制流程图有助 于以你喜欢的方式来事先准备。请这样来做, 至少在开始时, 包括搞清楚你每天使用电脑的流程, 把其中使用最多的部分简化绘制出来。一旦你整理出来, 就把在那 些情况下特别有用的编程技能作为早期学习的重点。这样的机会在一定程度上是稀缺的, 你可能要改变计算环境来提供这样的机会。

  需要做的最重要的事情是要找到一种方法来激励自己编写代码。

  下面是关于如何采取行动学习编程的建议。

  1、数据库管理系统(DBMSes)

  诸如PostgreSQLOracle、Microsoft SQL Server, 以及Informix这种专业、耐用的数据库管理系统通过存储过程或存储函数提供了脚本功能。最受广泛认可的语言选项也许是 Microsoft SQL Server和Sybase所使用的TransactSQL, 以及Oracle所使用的PL/SQL。 PostgreSQL提供了一个名为PL/pgSQL的类PL/SQL的程序扩展到SQL里, 但它也提供了包括PL/Perl、PL/Python、PL /Ruby和 PL/Tcl在内的其他语言的选择范围。

  这种编程机会虽然限定于一组特定的问题领域, 但如果你是一名DBA(数据库管理员)或你的工作涉及数据库开发报告, 将会亲身体验到这是非常有用的。

  2、插件

  许多新的电脑游戏提供了编写和加载插件的功能。例如, “魔兽世界 (World of Warcraft)”提供了一个使用Lua脚本语言的插件系统。随着Firefox声名鹊起和广泛使用, 现代网页浏览器往往也提供灵活的插件系统;在最简 单的情况下, Firefox的插件都是用JavaScript编写的。开放源码的浏览器在插件开发方面往往比封闭源代码的浏览器更具吸引力, 并且 Chromium浏览器的插件系统, 很可能成为插件开发者们的第二大目标, 这是因为谷歌Chrome浏览器高调的营销策略以及不设限的许可证 (permissive licensing)政策。

  PurpleEndurer注:Lua程序设计语言 是一个简洁、轻量、可扩展的脚本语言。 Lua读作/'lua/(噜啊), 是葡萄牙语中"Luna"(月亮)的意思。详见:http://zh.wikipedia.org/zh-cn/Lua

  其他许多应用程序具有插件和扩展系统, 可以提供充分的机会来培养这些迅速发展的编码技能, 甚至包括一些终端仿真器(terminal emulators)和基于控制台的文本编辑器, 如Vim。(透露一点好消息:我贡献了一点代码到urlpicker项目。)

  3、实践问题

  您可以尝试解决代码任务中的通用清单所提供的问题, 代码任务是特别为了给程 序员提供实习机会而专业设计的。欧拉(Project Euler)是一个比较流行的、不论编程语言的项目, 包括“一系列具有挑战性的数学/计算机编程问题”。欧拉项目收集了上百个问题, 这些问题一般从易到难, 足以让你忙碌很长一段时间。

  PurpleEndurer注:关于欧拉项目, 可访问:http://projecteuler.net

  其他例子包括RubyQuiz, 它多年来一直在ruby-talk的邮件列表中广受欢迎。另外还有CodeKata, 它是Dave Thomas的一个规模较小、寿命较短的项目。 Dave Thomas是《The Pragmatic Programmer(程序员修炼之道)》一书的合著者之一。

  PurpleEndurer注:关于CodeKata可访问 http://codekata.pragprog.com/

  这些选项不适合用作自我激励型探索性学习的任务, 因为它们会让人挠破头皮, 但如果发现其中的乐趣, 它们可以和其它方法一样用于编程实践教育。

  4、智能手机(Smartphones)

  应用程序开发行业中最大的新热潮是智能手机的应用程序。这种装置通常需要开发人员使用一种可将装置的功能发挥到极至的特定语言作为应用平台, 至少要以官方认可的方式进行。

  智能手机开发体系的一个新兴产业正在崛起, 即允许开发人员用非智能手机平台原生的其它语言编写自己的代码, 然后转化为原生语言的应用程序。因为不需要学习任何特定的智能手机平台的官方应用程序开发语言, Web应用程序也沾了光, 成为智能手机应用程序开发的一种方法。选择语言甚于平台的另一个 方案是使用像诺基亚的N900这样的设备, 它运行Debian发行的Linux系统, 可以运行的软件范围很宽——包括很多不是为智能手机设计的软件。

  侧重于多种方法开发智能手机应用程序的书籍和在线教程纷纷出现, 特别是Android和iPhone的设备。一些第三方框架将可以从HTML + JavaScript 到 Ruby 或 Python编写的代码“编译”为多种平台的“本地”应用程序, 有时不仅包括智能电话平台, 而且包括桌面系统。对这种情况也许最令人兴奋的是, 这些框架和 相关的IDE不倾向于试图解决所有的编程问题, 这与同样出色的编程方式的主要框架, 如Visual Studio和.NET框架有所不同。这使得人们有可能通过缩小选项至一个易于管理的问题领域来显著地简化开发过程。其结果是软件开发风格令初学者感到非 常易于接受。

  不足之处是, 在学习如何编程时, 你可能很难每天都编写新的智能手机应用程序。但是, 如果您的智能手机的操作系统是类Unix系统(如N900的), 同样的小工具开发项目在工作站和服务器中都非常有用。

原文转自:http://justjavac.com/other/2012/07/03/seven-thoughts-on-the-programming-learning.html