开箱即用的编程平台,让学习代码之路弹射起步
2021-07-07 15:28:08 Author: sspai.com(查看原文) 阅读量:94 收藏

前言

对于很多想要尝试学习编程的新手来说,当他们饶有兴致地阅读相关的编程教材或观看有关的教学视频时,浇灭他们学习热情的,不是 Coding 或编程语言的复杂性,而是学习之初就要经历一系列繁复、容易出错的搭建环境地狱。

搭建环境不仅对于新手来说是个地狱,对于开发人员来也是个头疼的问题。有的时候我们就只是想把在自己机子上已经能跑通的代码,顺利地部署到实际使用的服务器上;又或者是能让其他同事帮我们,一起 Debug 或是进行一些 Code Review。重新搭建环境的过程既费时又费力,在过程中可能还会出现其他未曾遇到过的问题。

所以对于开发人员来说,大部分人都不想重新再装一遍环境或重新配置自己的电脑,毕竟这个过程往往都是吃力不讨好,更不用说没有一些编程基础,或者想要入门编程的新手,看到搭建环境的相关内容时头都大了。

所以,对于学习编程的新手来说,如果存在一个不需要搭建环境就能直接敲代码的地方,那这真的就是太「For Human」了!

交互式的 Playground

对一个零基础、毫无编程经验的新手来说,我都十分推荐通过 REPL 这种交互式方式来学习编程语言。

所谓的 REPL,即为「Read-Eval-Print Loop」四个单词的首字母缩写,意为「读取-求值-输出」循环这么一个过程1

比如我们可以在 Python 中通过 REPL 并使用 turtle 库在交互式界面中进行绘图。

在交互式环境中,每当我们敲下不同的命令,都可以从 REPL 过程中获取到计算机的反馈信息,以确保我们是否是有效的或正确的输入。

大部分动态类型脚本语言的解释器本身都支持 REPL 模式,比如 Python、JavaScript 等;当然一些静态类型编译语言也同样实现了相应的 REPL 模式,比如 Scala REPL、JShell(Java 9)等,帮助新手更好地学习这门编程语言。

repl.it

无论是脚本语言还是编译型语言,对于新手来说不应该陷入到搭建环境的陷阱中,而是直接进行纯粹的编程体验。

所以,像 repl.it 这样的网站就提供了十分适合每一位想要学习的新手,或是有基础想要学习新语言的程序员,直接在线 Coding 的环境。

正如 replit 官网描述的那样:

OUR MISSIONOUR MISSION Is to make programming more accessible. We build powerful yet simple tools and platforms for educators, learners, and developers.
我们的使命就是让编程容易上手。(因此)我们也为编程教育者、学习者以及开发者构建了强大且简单的工具和平台。

当然 replit 支持了大约有 50 多种编程语言,当中不仅包含目前使用度最广且常年霸榜的「常青树」,还包含了像 Rust 这样出世没多久的后起之秀。

repl.it语言支持

replit 有自己的商业模式和付费计划,但从个人练习的角度来说,免费的模式就已经足够一个人去练习并入门了。

我们只需要注册之后,点击左侧的 New Repl 选项并选择一门你想学习的编程语言之后,就可以看到 replit 已经为你将学习的编程环境准备就绪了。

之后我们只需要在里面任意玩耍即可!比如我新建一个 Python 的 REPL 之后,就可以拥有一个 IDE 一样的开发环境界面,此时我们不仅可以通过 Console 控制台看到命令执行的情况,还能通过 Shell 来使用 Linux 相关的命令。

greet.py 文件中,我们可以简单写下一段代码:

def greet():
    print("👋 Hello, SSPAI!")
    print("~~~~~~~~~~~~~~~~~~~~\n")

main.py 文件中,我们不仅能够写一些正常开发的代码,还能引用刚刚我们编写的 greet.py 文件中的 greet() 函数:

import requests
from pprint import pprint
from greet import greet


r: requests.Response = requests.get("https://httpbin.org/get")
if r.status_code == 200:
    response = r.json()
    greet()
    pprint(response, indent=2)

这里我们通过 requests 库访问 httpbin 这一用于简单的 Web 测试站点,然后访问成功的时候将访问结果以 JSON 形式赋值,并调用一下我们前面写好的 greet() 函数,最后将访问得到的 JSON 结果输出打印。

codepen.io

对于学习前端的新手来说,能在一个界面里直接同时并排书写 HTML、CSS 和 JavaScript 代码实在是再幸福不过了,毕竟前端「所见即所得」的方式有时候比后端的反馈来得更加直接。

在看 ElementUI 的文档时,我发现它提供的一个在线示例网站十分符合我上述的要求,能够让我们在一屏中直接预览到所有代码,而这个网站也是我经常在其他编程相关的 Youtuber 中出现的 CodePen

和 repl.it 一样简单,注册之后我们只需要按照网站引导操作即可,之后就可以直接在创建好的「Pen」中进行练习。

我们可以直接在一个 Pen 书写 HTML、CSS 和 JavaScript,同时 CodePen 还允许我们进行一些简单的相关设置,如是否自动保存、语法解释器等,我们可以点击对应部分左上角的小齿轮进入到设置窗口根据自己的需要进行设置。

当我们创建好一个用于编程的 Pen 之后,就可以进入到如图所示的页面布局,这里你可以通过右上角的「Change View」选项进行修改。

从布局中我们可以看到 HTML、CSS 和 JS(JavaScript)是依次垂直排列的。首先我们在 HTML 块中,输入英文输入法模式下的 ! 感叹号,此时 CodePen 会为我们提供自动补全的选项,该功能主要是通过 emmet 语法来实现,所以当按下 Tab 键之后会直接帮我们在 HTML 块中自动补全,一个基本的网页框架。此时需要我们填入的部分只有 <body></body> 标签部分:

<body>
  <h1>
    👋 Hello, 
    <a href="https://sspai.com/">SSPAI</a>
  </h1>
  <div>
    <iframe src="https://sspai.com/" frameborder="0">
    </iframe>
  </div>
</body>

这里首先是主要由两个部分组成,一个是标题 h1 的部分,当中为「SSPAI」几个字母加上了跳转链接,第二个部分是在盒子模型 div 中通过 iframe 标签将少数派的网页嵌入,并通过 frameborder 参数将嵌入的边框消去。

接着我们可以修改 CSS 样式来稍微对页面中的元素进行「外貌」上的修饰:

body {
  text-align: center;
}

h1>a {
  text-decoration: none;
  color: red;
}

iframe {
  height: 720px;
  width: 1280px;
}

根据花括号可以拆成三个部分,第一个部分主要是设置整个网页文字内容的对齐方式为居中对齐,这也就意味着在 body 标签之内的所有文字都会受到影响;第二个部分主要是通过 CSS 选择器的语法,选择 h1 下的 a 标签,将其带有链接样式的下划线去除,并将文字颜色调整为简单的红色;最后一部分主要就是设置嵌入网页的长宽。

之后我们可以再稍微试一试 JS 代码:

const h1 = document.getElementsByTagName('h1');
console.log(h1[0])
h1[0].style.color = 'blue'

最后的这段 JS 代码中,主要是通过 document 对象根据特定的方法取到 h1 标签,一方面将其输出打印在 console 控制台中,另一方面就是通过编码的方式将标题中的 Hello 单词颜色改成蓝色。

可以说,对于新手来讲,通过 CodePen 的这种「一屏统筹所有」的方式感觉,更容易让人感受到编程过程中的「所见即所得」,能及时看到自己在编码过程中的效果如何。

其他

除了前面介绍的第三方站点之外,有的编程语言其官方为了让学习者或使用者快速体验或上手使用这门编程语言,也提供了关于该语言的交互式环境。

比如 Apple 为了推广自家的 Swift 语言,最早在 WWDC 2016 上也推出了用于教育和学习的 Swift Playgrounds,我们可以在每个 iPad 上通过它来体验用 Swift 编程的乐趣。

图源 Apple官网

又比如我以前在简单接触 Scala 这门 JVM(Java Virtual Machine,即 Java 虚拟机)系的编程语言时,就通过官方的 Scastie 来进行练习。

还有就是我在去年十月份期间入门学习 Go 语言 —— 这一诞生于 Google 家的编程语言时,也是通过官方自带的 Go Playground 来进行练习。

不过由于这门语言自带「404」属性,所以可能需要一些特殊的魔法方法才能 Touch 到或是通过国内开发者自己搭建的 镜像版本 来练习。

基础的 Cookbook:菜鸟教程

除了上面介绍的一些纯运行环境的站点之外,还有许多既包含了一些相对基础的知识,同时又提供了在线练习环境的站点,比如我以前会经常性浏览的 菜鸟教程

菜鸟教程提供了大部分编程语言的基础内容,对于那些只是暂时想了解或体验语言语法的人来说,无疑是个很好的 Cookbook。只要你想要学习或了解的编程语言不是那么冷门,那么进入到菜鸟教程的官方网站之后,你一般能找到要学习的编程语言的相关内容。

除了我们能在上面浏览到相关内容之外,我们点击其页面上方的「菜鸟工具」之后,首先映入眼帘的就是菜鸟教程为我们提供的「编译工具」选项,它本质上也就是等同于上面介绍站点的在线运行环境,我们可以一边在上面学习,也一边实践。

虽然菜鸟教程上的知识可能有一部分不完全是最新的,但对于想要入门的新手来说基础的一些知识也需要花上一段时间去好好消化了。

数据科学:万物基于 Jupyter

对于一些想要学像数据分析、数据挖掘、机器学习或是深度学习这样数据科学领域技能的朋友来说,除了需要具备一些数理统计知识外,还可能需要通过代码来实践或验证理论想法。

因此像 Python、R 语言或 Julia 这样能将理论和实践连接到一起的脚本式编程语言往往比较被这部分人群所偏好。

在实践的过程中,我们会随时随地想要输出经过代码处理后得到数据或是图表的结果,并根据结果形成基本的结论或是报告。而这样能将代码、结果和文字结论组合到一块并被广泛使用的是一个名为 Jupyter Notebook 的东西。

图源 Jupyter 官网

Jupyter Notebook 是 Jupyter 开源项目中的一块核心部分,而该项目旨在横跨数十种语言提供交互式计算,以便能更好的进行开源软件、标准或是服务的开发。

早在以前我就写过关于 Jupyter Notebook 的相关内容(在线的 Jupyter Notebook 云环境)。但对于初学者而言,我们不一定要按照官网那样,去自己搭建一个用于学习或练习的编程环境,因为毕竟我们本身直接就可以通过既有的云环境来进行练习。

国内比较知名的几个:

而国外我有使用过的主要就是:

但不论是国内还是国外的平台,大部分都和 Jupyter Notebook 的布局和使用方法大同小异,或者说大部分都是基于 Jupyter 进行二次开发。

除此之外,这些平台本质上是为数据竞赛而生的,所以我们既能在这些平台上进行学习、练习,也能看到别人在不同比赛中的思路、代码案例,甚至我们也可以亲自参与平台上的数据竞赛,没准最后还能获得丰厚的奖金以及大厂 Offer。

如果只是入门数据分析、数据挖掘或是机器学习(不涉及 GPU),那么使用哪个平台进行 Coding 都无可厚非;如果是涉及到 GPU 以及深度学习这类需要借助显卡算力的学习,那么我上述所列的平台里,据我所知可能只有百度飞桨、Kaggle 和 Google Colab 三个平台支持。

但因受限于网络原因,后两个平台我们可能不一定有机会使用到,但百度飞桨提供免费限时的 GPU 算力,对于 AI 初学者或爱好者来说,无疑是个值得一薅的「羊毛」。

结尾

除了文中提到的平台,目前仍有「开箱即用」的编程环境,对于初学者来说无疑是个提高学习效率或保持编程热情的解决方案。

但这些编程环境并不是完美的,也不一定和我们实际写代码的场景相吻合。从知识体系的完整性层面上来说,当初学者已经真正入门或掌握某种编程语言或框架时,依然需要重新熟悉一下如何搭建一个编程环境,这样才更加贴合实际的编程实践。


文章来源: https://sspai.com/post/67541
如有侵权请联系:admin#unsafe.sh