查看原文
其他

初学编程者如何摆脱搭建开发环境的困扰?

2018-03-18 Allen Downe CSDN

点击上方“CSDN”,选择“置顶公众号”

关键时刻,第一时间送达!

你是否也有过类似惨痛的经历:一不小心设错一个环境参数或路径,代码就死活也跑不起来;明明严格按照步骤搭建起来的服务器,又或者跟别人一模一样的环境,但就是运行不了……

图片来源于网络

本文就初学编程者面临的最大问题:如何搭建开发环境,给出了非常实用的解决方法,帮助初学者跳过搭建开发环境这个复杂又令人头疼的环节,直接进入编程的学习,从而更加享受学习编程的乐趣。

作者Allen Downey是富兰克林欧林工程学院的计算机科学教授,他曾出版《ThinkPython》、《Think Stats》、《 ThinkBayes》、《 Think Complexity》等Think系列丛书。

以下为正文:

我写过几本Python的书,解释贝叶斯统计(Bayesian Statistics)和数字信号处理等。在这些书出版的时候,我同时在GithHub提供了代码供读者下载。为了学习这些代码,读者必须了解Python的基本知识,不仅如此,他们还需要一台计算机运行Python和相关的代码库,所以读者需要知道如何从GitHub下载代码,并且需要了解如何运行下载的代码。

而许多读者在这里遇到了麻烦。

有些读者发邮件给我,在邮件中跟我诉苦,因为他们想学习Python、贝叶斯统计或数字信号处理。但是他们对于安装软件、复制代码库或设置Python搜索路径毫不感兴趣。

我非常理解读者的这些反馈。在某种意义上,他们的苦恼也完全是合情合理的,就读本书而已,何必搞得又要下载程序又要运行软件那么复杂呢?

但是,有些时候他们的苦恼选错了对象。有时他们会怪罪Python,有时又会认为是我的错。这就有点不太公平了。

我想在这里澄清下我认为的问题所在,以及之后我会给出一些解决的办法。

这个基本问题其实反映了使用计算机和计算机编程之间的跨度越来越大。

1982年在我使用Commodore64的时候,这个跨度是不存在的。你打开计算机的时候,它会加载和运行软件开发环境(softwaredevelopment environment:SDE)。你需要输入代码才能运行计算机,即便是运行另外一个程序,比如Archon(Archon: The Light and the Dark,1983年Free Fall Games开发的一款早期的棋盘风格游戏,富有战略趣味。)

之后,计算机的发展逐步加大了学习编程的难度,其中主要有以下三个方面的变化:

1)计算机销售商不再预置安装开发环境。

结果导致每个想要学习编程的人不得不从安装SDE开始,而安装过程往往比预想的复杂得多。许多用户从未安装过任何东西,他们不知道如何安装。如今安装软件的难度已经大大降低了,但是仍然很容易出错并打击用户的积极性。刚开始学习编程就需要学习系统管理知识,这本来就是不合理的。

2)用户界面从命令行界面(command-lineinterfaces:CLIs)演变成了图形用户界面(graphicaluser interfaces:GUIs)。

GUI非常易于使用,但是这个界面掩盖了后台的信息。如果用户不需要知道后台的信息,那么不显示固然没错,但是问题在于GUI掩藏了很多程序员需要知道的信息。所以当用户想要成为程序员的时候,他们要突然面对所有隐藏在后台的信息。刚开始学习编程就要学习操作系统的概念,这也是不合理的。

3)云计算将隐藏信息引向了更高的境界。

人们使用web应用程序的时候,对于数据存在哪里只有很模糊的概念,只知道通过某个应用程序可以访问数据。特别是许多移动设备上的用户,根本无法区分操作系统、应用程序、网页浏览器和web应用程序等的概念。在上传和下载数据的时候,他们经常搞不明白数据究竟是从哪里来的,又传到哪里去了。而在他们安装软件的时候,也不明白什么东西安装到了什么地方。

学习编程就连伴随着Commodore 64长大的人来说都很有难度。再来看看对于如今习惯了连接云端的移动设备的人,他们学编程那更是难上加难。

如此说来,我们该怎么办呢?我认为有以下几个办法:

1)回到未来:一种方法是创建Commodore 64一类的计算机,借以打破使用计算器和计算机编程之间的壁垒。这个想法部分来自Eben Upton的树莓派计算机(Raspberry Pi,是一款基于Linux的单板机电脑)。通过重建这类的环境将用户转变成程序员。

2)勇敢面对困难:另一种方法是,在学生学习编程之前(或同时),教他们如何搭建与使用软件开发环境。

3)回避困难:第三种方法是,使用云资源,让学生立即开始编程,将搭建个人环境的问题往后放一方。

在我的课程中,我鼓励学生勇敢面对困难,我的学生在学习C语言的时候,需要同时学习UNIX命令行界面。不过我班上的学生已经知道如何编程,而且他们有老师现场指导。

对于初学者,尤其是自学的情况下,我建议你暂时回避这个问题。下面是一些我曾经用过的工具:

  1. 在浏览器中运行代码的互动教程,比如你可以参考这篇如何像计算机科学家一样思考:http://interactivepython.org/runestone/static/thinkcspy/index.html

  2. 在浏览器上运行整个开发环境,请参考:https://www.pythonanywhere.com/

  3. 虚拟机包含完整的开发环境,用户可以下载然后直接运行。运行过程中,可以自动安装运行虚拟机的软件,并安装完整的开发环境。

  4. Binder等服务可以在远程服务器上运行开发环境,用户可以通过浏览器连接。

我曾在各种项目上,使用过上述工具。关于“如何思考”这个互动版本,这里还有一篇由Trinket发起并创建的关于Java的互动版本:https://books.trinket.io/thinkjava/

在《Think Python》一书中,我鼓励读者在前四章使用PythonAnywhere,并提供了本地安装指南(http://www.allendowney.com/wp/books/think-python-2e/)。

过去在课上我曾用过虚拟机,但是最近我比较喜欢用在线服务,比如O'Reilly为《Think DSP》一书提供的notebook(https://www.oreilly.com/learning/downey-thinkdsp-excerpt)。我所有的书上提供的代码库都可以在Binder上运行。

希望这些方法可以帮助初学者入门,但是这些方法都有局限性。迟早学生还是需要在自己的机器上安装开发系统。但是如果我们分开来学编程和安装软件,那么学生取得成功的可能性更大。

更新:Nick Coghlan推荐了第4种方法,我可以命名为“拥抱未来”:初学者可以从云端的开发环境着手,并且可以一直使用下去。

原文:http://allendowney.blogspot.tw/2018/02/learning-to-program-is-getting-harder.html

作者:Allen Downe

译者:马晶慧

责编:琥珀

————— 推荐阅读 —————

点击图片即可阅读


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存