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

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

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

图片来源于网络

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

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

以下为正文:

我写过几本Python的书,解释贝叶斯统计(Bayesian Statistics)和数字信号处理等。在这些书出版的时候,我同时在Git Hub提供了代码供读者下载。为了学习这些代码,读者必须了解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

译者:马晶慧

责编:琥珀

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

点击图片即可阅读

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

  1. 从零开始Android游戏编程(第二版) 第一章 搭建开发环境

    第一章 搭建开发环境 难度:容易 工欲善其技,必先利其器.我们要做的第一件事就是搭建Android开发环境.本文只介绍Windows下的安装方法,Linux下的安装方法请参考官方网站的介绍. 与PC编 ...

  2. JAVA编程基础(一) 搭建开发环境

    夜黑风高话当年 本系列教程主要面向想学习编程的童鞋,不论你还是大学生还是进入职场,通读此系列教程,都会给你不一样的体验.童鞋,你几年级啦? 大一?恭喜你,猎奇.欣悦.感恩.憧憬,未知先觉,读到了此系列 ...

  3. 《iOS 8开发指南(第2版)》——第1章,第1.3节工欲善其事,必先利其器——搭建开发环境...

    本节书摘来自异步社区<iOS 8开发指南(第2版)>一书中的第1章,第1.1节1.3 工欲善其事,必先利其器--搭建开发环境,作者 管蕾,更多章节内容可以访问云栖社区"异步社区& ...

  4. Esp8266学习之旅① 搭建开发环境,开始一个“hellow world”串口打印。

    本系列博客学习由非官方人员 半颗心脏 潜心所力所写,不做开发板.仅仅做个人技术交流分享,不做任何商业用途.如有不对之处,请留言,本人及时更改. 基于C SDK的ESP8266开发技术全系列笔记 一.N ...

  5. 从零学Java(2)之搭建开发环境

    目录 从零学Java(8)之变量 从零学Java(7)之数据类型 从零学Java(6)之字面量和常量 从零学Java(5)之关键字和保留字 从零学Java(4)之编程规范 从零学Java(3)之第一个 ...

  6. Java Learning 000 搭建开发环境

    Java Learning 000 搭建开发环境 你需要两个软件: * JDK (Java Develop Kit :Java开发工具包) * eclipse (eclipse 集成开发环境软件) 安 ...

  7. 合宙Air724UG二次开发(1):搭建开发环境

    合宙Air724UG二次开发(1):搭建开发环境 文章目录 合宙Air724UG二次开发(1):搭建开发环境 1. 系统环境 2. 嵌入式4G发展现状 3. 合宙Air724UG支持Lua开发实现原理 ...

  8. PCL-1.8.1从源码搭建开发环境三(QHULL库的编译)

    原文首发于微信公众号「3D视觉工坊」:PCL-1.8.1从源码搭建开发环境三(QHULL库的编译) 首先,介绍一下QHull库. QHull是一个开源的程序软件,用来研究解决凸包问题,生成凸包形体.官 ...

  9. PCL-1.8.1从源码搭建开发环境二(FLANN库的编译)

    原文首发于微信公众号「3D视觉工坊」,PCL-1.8.1从源码搭建开发环境二(FLANN库的编译) 首先,快速近似最近邻搜索库FLANN-Fast Library for Approximate Ne ...

最新文章

  1. 推荐一些视觉SLAM的深度学习方法(下)
  2. 编程软件python中的if用法-python 函数式编程工具
  3. 也谈1+2+3+...+n的解答
  4. VelocityTracker简单介绍
  5. mysql中模糊查询的四种用法
  6. java高级教程_高级Java教程
  7. bind函数polyfill源码解析
  8. android checkbox监听另一个checkbox选中和不选中_一个真正0基础小白学习前端开发的心路历程...
  9. python爬取网站数据步骤_python怎么爬取数据
  10. Android API level 版本对应关系
  11. ProtocolBuffer for Objective-C 运行环境配置(真正测试过的)
  12. 某个目录下产品根据创建时间下架
  13. 程序员喜欢的5款最佳代码比较工具
  14. 办公计算机班半学期总结,计算机班的班主任工作总结.docx
  15. c语言数组文曲星猜数游戏编程,文曲星“猜数字”游戏的计算机模拟 —— 算法分析与实现...
  16. 【实用算法教学】——Apriori算法,教你使用亲和性分析方法推荐电影
  17. 具有自适应边界与最优引导的莱维飞行蚁狮优化算法-附代码
  18. Android 悬浮窗
  19. 今天端午节了,哈哈。。。
  20. 福禄克用CFP-Q-ADD实现光纤一级认证测试

热门文章

  1. python查找字符串所在行_使用Python CSV和glob查找匹配的字符串和打印行
  2. TypeScript报错--找不到模块“path”或其相应的类型声明
  3. css legend框大小,CSS-如何给 legend 标签设定宽度
  4. AUTOCAD建模足球实体
  5. 取代浏览器插件调试,VS Code 整合 JS 调试工具
  6. iPhone 13 的十大爆料:“十三”到底“香不香”?
  7. 微软再次“封杀” Flash Player!
  8. 职业发展加速器,埃森哲智能云服务创新中心热招云人才
  9. 一个基于运气的数据结构,你猜是啥?
  10. 10年资深面试官直言:80%人面试Java都会止步于此!