【译】为何教Ruby

PS: 这是国外一位有20多年编程经验的培训师在Medium发表的对Ruby及编程的一些见解,无论是不是程序员均可以考虑看一下。若是你想学编程却苦于不知道选什么语言,或许这是一篇不错的参考。原文连接: medium.com/flatiron-la…程序员

Ruby

Ruby在市场上可能只是占有较小的份额。但这并非为何你应该学习它的理由。npm

做为Flatiron School的创始人兼院长,我以为针对最近一些学校把他们的课程焦点从Ruby转向Java所形成的影响写个反馈是很重要的,毕竟这意味着Ruby和Ruby On Rails的就业市场正在缩小,或者说它的流行度及重要性正在衰减。编程

回想我做为程序员的职业生涯,个人工做主要是使用ASP,JavaScript,PHP,C#和Ruby并伴随着少许其余的编程语言(包括Java)。做为一个老师,我使用Ruby On Rails还有JavaScript来教授Web开发已经有超过5年时间了,帮助了数以千计的学生开启他们的编码职业生涯。后端

在Flatiron School,咱们着迷于职位的产出。在这4年内,咱们把它放在重要的位置上,而且发布了独立审计及核实工做报告它详细描述了咱们的毕业生在就业市场中的表现。让咱们很是自豪的是,4年里咱们已经有超过1000个毕业生,却依然能够在技术领域维持着如此高的就业率。ruby

真相是编程学校里面教的程序设计语言,不该该与就业市场直接挂钩。咱们是代码训练营的先驱者,即使是在2012年,Java,PHP都比Ruby占有着更大的市场份额。并发

Very Long Term History

评估一个语言的流行度是一件困难的事情,可是https://www.tiobe.com/tiobe-index/ 这个网站包含许多测量手段,从社区指标,职位,还有相关平台的状况来综合评估。框架

IEEE Spectrum

IEEE Spectrum还提供了更多筛选项来查看一门语言的流行度。spectrum.ieee.org/static/inte…编程语言

代码训练营若是只是简单地针对最大的就业市场来进行教育是不现实的。使Flatiron School成功的因素是一门用于教授编程的课程不该该局限于特定语言,而应该把焦点放在抽像的及通用的概念上。并且其中最重要的是学习如何学习的元能力。固然一个Flatiron School的毕业生也会较为深刻地了解Ruby和JavaScript,可是他们如此有竞争力的根本缘由是他们能够快速地掌握任何东西。咱们的毕业生们会继续在工做中使用任何一门能叫的上名字的编程语言进行编程,其中就包括一个工程师在为波音757s贡献着Java代码。工具

不要用你所学的第一门编程语言来定义你本身

许多人以为一个程序员应该要由他所学的第一门编程语言来定义,这在我看来是很是短视的。程序员简单地把本身定义成一个Ruby程序员或者PHP程序员是不值得的。咱们是程序员而编程语言只是咱们的工具。咱们能够选择合适的工具来处理不一样的场景和问题。他们经过编码训练营给新进程序员们打上相似“Java”或者“Python”这样的标签在我看来是有危险的,我担忧学生们会被本身声称已经精通的编程语言永远地限制了潜在的能力。若是历来不教学生如何去学习一些特定语言以外的东西,就会对他们编程语言外的身份缺少自信。培训学校的压力来自于实用性,市场驱动,经过设置总体性,通用性更强并包含哲学思索能力的课程,可以更好的训练他们,并不只仅是为了第一份工做,而是一个更丰富的职业生涯。性能

Language

咱们都有本身喜欢的语言,咱们其实都很棒。

Ruby程序员的需求将愈来愈少这个宣言是无关痛痒的。正如我前面所提到以及将要阐述的我并不信奉教人们如何成为一个“[某语言]”程序员。咱们能够继续把Ruby做为首选语言,无论Ruby在就业市场中的需求如何,我对咱们的毕业生会持续保持竞争力这件事情充满信心。然而,有件很重要且须要说明的事情是Ruby依旧是被须要的技能并伴随着一个正在扩张的就业市场。Ruby On Rails依然是创业公司的选择,随着每一次“Rails new”的执行,将会会有许多新的企业诞生。除了创业公司以外,大规模的公开交易还有私人公司已经使用Ruby和它的生态圈许多年了,而且我看不到它中止的迹象。Ruby On Rails成为Shopify, GitHub, Twitch, Airbnb这些公司的主要后端技术栈,以及比这更多的是基于Ruby开发的DSL,这其中就有许多跟Ruby相关的使人惊叹的工做机会。但它的市场是否像Java那么大?不。但这都不要紧,毕竟无论是Java仍是Ruby,它们的市场都是很难饱和的,程序员不该该老是经过语言来诊断机会。

我并不以为围绕着成为一个“Java”,“Ruby”或者说“[某语言]”程序员来开发一门课程会是教育上的谨慎。这会使你的毕业生太同质化,界定了他们的工做机会,限制了他们的竞争力,而且在教他们为职业终身学习这件事上会面临失败。从随着Ruby及Ruby On Rails的流行度正在减小,某些课程焦点的切换这些事来看个人说法是值得怀疑的。依照经验并从一千多位毕业生身上,咱们看不到Ruby需求的缺少。咱们看到任意规模的公司依然继续拥抱着Ruby,而且一个好学校的毕业生应该有资格使用他们渴望掌握的任何一门语言来胜任相关的工做。

那么,为何是Ruby?

若是说学校所教的第一门编程语言并不会直接与职位输出挂钩,并且这也没那么重要,那么为何Flatiron School依然把Ruby做为首选教学语言,而不是像JavaScript那样的新热点或者是一些其余的如同Java那样的前沿编程语言呢?对于学生而言,第一门编程语言真正重要的是什么?

Love it

学生首次学习的无论是什么编程语言,最重要的事情是,这门语言会让他深深地爱上代码。

编程是一门艺术。像是诗篇,舞蹈还有音乐,无论是法国仍是西班牙的诗篇,现代舞蹈仍是芭蕾舞,古典音乐仍是高科技舞曲,这些实际的风格或者表达的语言对艺术而言都没那么重要。诗篇并不在于它是印度语,英语仍是德语的,而在于抽象观念,如押韵,韵律,比喻,隐喻,节奏,构成等等,固然还有其余-任何语言都可以表达的广泛概念。编程也不在意是用Ruby,Java,JavaScript仍是C#,而在于抽象的,语义学,封装,逻辑,接口等等,而且这些概念在每种编程语言中都会有所体现。

做为一个初学编程的人,最重要的事情是真正学习到那些通用的概念,这些概念会经过你的第一门编程语言表现出来。最危险的事情是你在“这是我为了找到工做所需学习的全部东西“这种观念下被教授第一门编程语言,你将永远学不会怎么去识别那些概念。会让你由于这一棵树而错失整个森林,也不会明白怎么去接触一门新的编程语言。你固然也会遗憾地错失代码中全部美好及优雅的东西。

编程的快乐并不会隐藏在一门或者另外一门语言的技术实现中,咱们会在编程的这些非凡媒介中找到快乐,就像是Ada Lovelace在“运营的科学”所说的中。Ada过去曾预言:

“运营的科学,尤为是做为数学的衍生物,它自身就是科学,而且有它自身的抽象事实和价值。”

学习编写代码却没有学会如何去识别工艺上的抽象真理是个不幸的事情。学习一门编程语言历来都不是学习如何编写代码最重要的。学习编码时最重要的事情是体会到代码自身惊异的美。学生应该深深地爱上代码。

咱们培训学生首先会让他们爱上代码,为了完成这个任务,Ruby是很好的选择。是什么让Ruby成为程序员美妙的初恋?这应该追溯到这门语言的设计。Yukihiro Matsumoto,就是咱们所知的Matz,一名日本程序员也是这门语言的发明者,明确地声明过他对这门语言的指望:

Ruby的目标是让程序员快乐,我着手发明一种可让我感受到快乐的编程语言,做为一种反作用,它也会使许多的程序员感到快乐。

Yukihiro Matsumoto

创造一门编程语言的理由能够有数百种,几乎全部的理由都会跟编码的场景有关--为了跨平台编译更容易,为了优化并行过程,为了“跑得更快”等等。至今我所知道的,在编程语言的历史上惟一为了你的快乐而发明出来的语言就只有Ruby。Ruby重视你(程序员)赛过重视机器。一个早期高产的Ruby程序员,他叫_why_the_lucky_stiff,曾在RailsConf 2016 Talk里面这样描述Ruby:

“Ruby是这样一种东西....用Ruby来写代码真的会让你爱上编码这件事,感受到热情和乐趣,它激烈地搅动你的心里,它是一门多么美妙的语言,固然我说得有点色情。方法调用是连贯的,脱下了括号,裸露地串联起来,这就像是......热情洋溢的红宝石。”

Book

这些以人为本的价值观念,不断体如今这门语言的设计选择当中。最鼓舞人心的可能就是Ruby为相同的任务提供不止一种方式。实现的选择一般被看作是一门语言的短板。现实中,Python在“Python之禅”中宣称这样一条价值观:“应该有一种-最完美的-显而易见的方式去作一件事情”。

Ruby却提供了无数种作事方式,Matz在一次会议上被问到为何他要这样设计一门语言,对于同一件事情却有多种方式去完成,而他的回答道出了Ruby的真心:

“我想要让Ruby的用户感到自由,我想要给予他们选择的自由,人都是不同的。”

于我而言,这无关编程,或者说这不只仅跟编程相关-它是一个文化价值观,关于自由的重要性。对Matz来讲,自由是经过有选择的能力来体现的。对一我的来讲是“合适”的东西,对另外一我的来讲却不必定是“合适”的,可是他们其实都没有错,他们只是不一样而已。并且他们应该有做为不一样个体的权利,且不受任何禁锢。我相信它在生命中的价值,宗教自由,婚姻平等,政治派别,固然也包括编码的自由。

一门编程语言拥抱着像快乐,自由这样的价值观可能看起来是无聊且异端的。毕竟,有谁会去在乎编程语言的意识形态?固然不会,毕竟是电脑在运行代码。那么关键点是什么?是什么让Ruby把人放在比机器更高的位置?为何在考虑教育的首选语言的时候须要关心语言设计的细微差异?

编程语言只是工具。工具就是那种看起来是可替换的且不重要的东西。而程序员的鼻祖Edsger Dijkstra曾经提出,“咱们所使用的工具对咱们思惟习惯和能力有深远的影响。”用通俗的话讲就是:“当你手里拿着一个锤子的时候,你看什么都像钉子。”

hammer and nail

你使用的工具将会影响你的思考方式。而你思考问题的方式是最重要的事情。所以,你用来解决问题的工具将会约束你的想法还会对你是否能解决问题形成影响。每个工具被设计出来都有它内在的价值。一个锤子的设计的价值主要在于它能够挥舞,在必定重量的固定锤头在前方连同轻盈修长的身体建立了用于冲击的长弧。一个螺丝刀的价值在于结合了长杆以及特定的螺丝头,你能够经过扭动它来完美处理各类尺寸的螺丝。你能用螺丝刀来锤一个钉子吗?或许能够,但在这种场景下,它是一个易用的,高效的,优雅的或者说是值得推荐的工具吗?不,对于人类而言做为工具最重要的是它将被如何使用和能被如何使用。

那么咱们能用Ruby来作什么?固然,我知道我本身喜好Ruby,我从事编程工做20多年懂得一大堆语言但却历来没有一门语言让我像对Ruby那般喜好。不只仅是我-许多开发者在学习Ruby以后都爱上了它。_why_the_lucky_stiff表达过一种情感,我想这也是许多开发者对Ruby的感受。

images

个人良心不会让我把Ruby当作一门计算机语言,由于这将会暗示着这门语言主要是为计算机工做的。若是一门语言设计出来首要的且最重要的目的是为了适应计算机,那么,咱们(编码者)就像是外国人在计算机这个国度寻找公民权。这就是计算机的语言而咱们是这个世界的翻译者。

可是当你的大脑能够用这门语言来思考,甚至能够用这门语言独特的文字还有语法来表达你本身的时候,你会怎么评价这门语言?这怎么可以被称为计算机语言呢?这是咱们的语言。用它来“说话”是很天然的事情。

咱们不能再把它称做计算机语言,它是用来表达咱们思想的语言。

这里还有一些关于Ruby的东西,我不能很完整地描述,多少会遗漏掉一些,就是Ruby的编程社区。为何Ruby开发者可以持续地为现代的Web开发提供创新的灵感呢?现在的Web开发在性能表现还有产出速度来看都是很快速的。最佳实践以及相关的约定在不一样语言之间是通用的,开发者的工具集以及工做流在今天都是必须品。Ruby开发者率先开拓Ruby On Rails这样的用于快速开发网站的框架,它的约定可以让你在5分钟以内构建出一个博客引擎。Ruby On Rails是第一个拥抱REST并让它成为标准的主流框架。不多的Ruby开发者会关心SVN版本控制以及Trac糟糕的用户界面,他们会拥抱Git还有GitHub。Express.js的DSL以及不少其余的特定领域语言都承袭于Ruby,如今也被其余语言沿用着。Heroku是无需麻烦配置,虚拟化,Web应用托管平台的鼻祖一开始是Ruby程序员为其余的Ruby程序员所建立的。Ruby程序员已经建立了许多使人惊叹的公司:GitHub, Twitch, Twilio, Airbnb, Shopify等等。Ruby这样一门趁手的语言,它的影响还有冲击力是至关大的。

这就是我阐述Ruby的方式,再次回到咱们所使用的工具中,创新须要作一些不同的事情。Ruby程序员组成的团队厌烦了Ruby On Rails处理依赖(你的应用程序用来加速开发进程的开源程序)的方式。为了解决这个问题他们建立了一个叫作Bundler的开源软件。每一种编程语言都有像Bundler那样的解决方案的相关实现,包括Facebook的yarn(npm的一种改进),几乎是直接沿用了Bundler的思想。这一切都是由于他们决定在管理依赖上尝试些不一样的东西。

大概相同的时间,另一组Ruby程序员在寻思若是人们能够出租他们额外的生活空间将件是多么好的一件事情。这是一个疯狂的想法,因此他们用Ruby On Rails迅速构建了一个可行的产品,并对其进行快速迭代。通过多年的修修补补最终有了市场还有点击率,因而咱们就有了Airbnb。

我能够说出许多Ruby程序员在编程界以及商界创业成功的故事,但并非声称这是Ruby社区独有的奇迹。我四周看了一下,改变世界的有许多使人难以置信的道路,咱们不可能全都了解,不过Ruby会占据其中的一条。

为何许多Ruby程序员可以经过创新与发明中取得成功?Ruby编程语言鼓励创新,而且咱们可以用它来创新。若是用锤子意味着摇摆,用螺丝刀意味着转动,则用Ruby编程意味着创造。Ruby这个工具但愿你能够感受到快乐,当咱们快乐的时候咱们就能够一边玩耍一边探索了。Ruby这个工具想要咱们重视表达并让你能够像使用人类语言那样纯粹地交流。Ruby这个工具但愿你不同凡响并创造出你本身的语言。Ruby开发者继承了这种价值观并发扬了人类具备创造性的精神。

image

为了解更多关于Flatiron School的事情,请访问这个网站,关注咱们的Facebook还有Twitter,以及你身边的即将到来的事件

Flatiron School是WeWork家族中让人感到自豪的成员。能够切换到咱们姐妹的技术博客WeWork TechnologyMaking Meetup

相关文章
相关标签/搜索