学习编程越来越难了……

我写了几本使用Python来解释贝叶斯统计和数字信号处理等主题的书籍。随书一起,我提供了读者可以从GitHub下载的代码。为了使用这些代码,读者必须知道一些Python的相关知识,但这还不够,还需要一台装有Python及其支持库的计算机,同时他们必须知道如何从GitHub下载代码,以及如何运行他们下载的代码。

这就是很多读者陷入困境的地方。

有些人给我发电子邮件。他们经常表达沮丧,因为他们正在尝试学习Python,贝叶斯统计或数字信号处理。他们对安装软件,克隆存储库或设置Python搜索路径不感兴趣!

我非常同情这些反应。从某种意义上说,他们的挫败感是完全合理的:不应该像下载程序和运行程序那样难。

但有时他们的失望是错误的。有时他们会责怪Python,有时他们会责怪我。这并不完全公平。

我解释下我认为的问题是什么,以及我会提出一些解决方案(也许只是解决方法)。

根本问题在于使用计算机和编程计算机之间的障碍越来越大。

当我得到一个Commodore 64(1982年,我认为)这个障碍是不存在的。当您打开计算机时,它会加载并运行软件开发环境(SDE)。为了做某些事情,你必须至少输入一行代码,即使它只是另一个程序(如Archon)。

从那以后,有三种变化让用户变得越来越难以成为程序员

1)电脑零售商默认停止安装开发环境。因此,任何学习编程的人都必须从安装SDE开始 - 这是一个比您预期更大的障碍。许多用户从来没有安装过任何东西,不知道怎么做,也可能不被允许。现在安装软件比以前更容易,但仍然容易出错,并且可能令人沮丧。如果有人只是想学习编程,他们不应该先学习系统管理。

2)用户界面从命令行界面(CLI)转移到图形用户界面(GUI)。图形用户界面通常更易于使用,但它们隐藏了用户关于真正发生动作的信息。当用户真的不需要知道时,隐藏信息可能是件好事。问题在于GUI隐藏了程序员需要知道的大量信息。所以当一个用户决定成为一名程序员时,他们会突然遇到所有隐藏起来的信息。如果有人只是想学习编程,他们不应该先学习操作系统概念。

3)云计算将信息隐藏到了一个全新的高度。使用Web应用程序的人通常对其数据存储位置以及访问它们可以访问哪些应用程序只有一个模糊的概念。许多用户,特别是使用移动设备,他们不区分操作系统,应用程序,Web浏览器和Web应用程序。当他们上传和下载数据时,他们经常会对它的来源和去向感到困惑。当他们安装某些东西时,他们经常对将要安装的位置感到困惑。

对于一个使用Commodore 64成长起来的人来说,学习编程已经够难了。对于与云连接的移动设备成长的人来说,这就更难。

那么,我们能做些什么呢?这里有几种选择(我给它们取了好听的名字):

1)回到未来:一种选择是创建计算机,比如我的Commodore 64,它打破了电脑使用和编程之间的障碍。根据Eben Upton的观点,Raspberry Pi的部分动机是重新创建将用户转化为程序员的环境。

2)面对痛苦:另一种选择是在开始编程之前(或同时)教学生如何设置和使用软件开发环境。

3)延缓痛苦:第三种选择是使用云资源让学生立即开始编程,并推迟创建自己的环境。

在我的一堂课中,我们面临着痛苦; 学生在学习C的同时学习使用UNIX命令行界面。但该班的学生已经知道如何编程,并且他们有现场指导员来帮忙。

对于初学者,特别是独自工作的人,我建议延缓痛苦。以下是我使用的一些工具:

1)在浏览器中运行代码的交互式教程,如《How To Think Like a Computer Scientist》这本改编书 ;

2)在浏览器中运行的整个开发环境,如PythonAnywhere 等等;

3)包含完整开发环境的虚拟机,用户可以下载并运行(假设它们具有或可以安装运行虚拟机的软件)。

4)像Binder这样的服务在远程服务器上运行开发环境,允许用户使用浏览器进行连接。

在我的各种项目中,我使用了所有这些工具。除了交互式版本的“ How To Think...”之外,还有由Trinket改编和托管的Think Java的交互式版本。

在Think Python中,我鼓励读者至少在前四章中使用PythonAnywhere,然后提供转换为本地安装的说明。

过去我曾为一些课程使用虚拟机,但最近我使用了更多的在线服务,例如 由O'Reilly Media主持的Think DSP的这款笔记本。我所有书籍的存储库都设置为在Binder下运行。

这些选择可帮助人们开始使用,但它们有局限性。迟早,学生会希望或需要在他们自己的计算机上安装开发环境。但是,如果我们将学习编程与安装软件分开来,那么他们就会更容易成功。

更新:Nick Coghlan提出了第四种选择,我可以称之为拥抱未来:也许初学者可以从基于云的开发环境入手,并一直使用。

译者介绍:

左灿,四川大学在读研究生,研究方向为云计算、虚拟化,对该领域比较感兴趣。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180331A1FKWU00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券