首页 游戏 软件 资讯 排行榜 专题
首页
科技数码
这个小众的编程语言,无意间改变了全球程序员的命运!

这个小众的编程语言,无意间改变了全球程序员的命运!

热心网友
29
转载
2025-12-15

Git在Windows上没有原生的移植版本,而是用 MinGW(类似 cygwin)包装了 git,在Windows下无论是速度还是兼容性都很差。外界很少有人每天都使用它。

2005年4月是个神奇的月份,这一月同时出现了两大版本控制工具:Git和Mercurial。

Git如今人尽皆知,Linus创建Git的过程也是个传奇,但是早期的Git更像一个黑客工具“”,主要在Linux内核那个小圈子内使用。

Git在Windows上没有原生的移植版本,而是用 MinGW(类似 cygwin)包装了 git,在Windows下无论是速度还是兼容性都很差。外界很少有人每天都使用它。

相比而言,Mercurial更加引人瞩目,它的发布仅比Git晚了几天,但功能更完善,界面也更友好。

特别是Mercurial采用Python编写,跨平台能力很强,在Windows下用得很爽。

所以,Mercurial受到了很多公司和开源项目的热烈欢迎,Mozilla Firefox、OpenJDK、Python(3.5之前),Google,Facebook、诺基亚、Bitbucket等都在使用Mercurial。

如果按照这个势头发展下去,Git可能主要被Linux内核开发者使用(这也是Git要解决的问题), 而Mercurial将有机会一统江湖。

但是2007年10月18号的一个晚上,一群Ruby爱好者在旧金山的的聚会,无意间改变了这一切。

1."带火"Git

参加这天聚会的有个叫做Tom Preston-Werner的人,他对新生的Git非常感兴趣。

没错,确实是“新生”,2007 年 2 月,Git 1.5 版本发布,一改原来的命令不直观、工作流不友好、文档零散的情况,让Git 第一次“从黑客工具变成普通开发者可用的软件”。

Tom开发了一个叫Grit的软件,可以使用Ruby代码以面向对象的方式来访问Git。

很多年轻的程序员可能都不知道Ruby了吧?这门语言本来不愠不火,但是2004年由于Ruby on Rails的横空出世,让Ruby也天下皆知。

Ruby on Rails以其开创的“约定重于配置”,“Don't repeat yourself”的理念名扬天下,它的代码非常优雅,开发速度号称是Java的10倍,非常适合开发当时的Web2.0 ,无数开发人员都转投到Rails门下。

Twitter、GroupOn、Airbnb、Hulu等著名 在早期都是用Rails开发的。

Tom在聚会上兜售自己的想法:用Rails做一个面向程序员的 ,他们可以在上面保存、分享自己的Git代码库。

这个想法吸引住了Chris Wanstrath,Chris执行力惊人,说干就干,晚上10点24,就提交了第一批代码。

Tom 和 Chris 都有全职工作,两人就利用晚上和周六的时间开发,三个月的努力后,这个叫做GitHub的 上线了,它的口号就是:Socail Code Hosting。

图片图片

Social Code Hosting的核心卖点就是“fork + pull request”这种社交式协作模式。

之前最大的开源代码托管 是SourceForge, 你要想参与某个开源项目,比如修复了Bug,需要通过邮件的方式把代码发给开源维护者,很麻烦。

现在只要fork一个项目,在本地修改,然后发个pull request, 审核通过就可以合并,非常方便。

虽然这是一个革命性的变革,但任何新生事物的早期推广,都是非常艰难的,GitHub也不例外。

幸好,GitHub得到了Ruby社区的支持,2008年4月,Ruby on Rails率先抛弃Subversion,迁移到了GitHub。

这个大消息对整个Ruby社区产生了示范效应,自己钟爱的框架都跑到GitHub了,大家纷纷效仿,入驻了GitHub。

更有利的是,做RoR的程序员开发Web页面时都会使用JavaScript, 很多Ruby大牛也是JavaScript社区的核心成员,例如Yehuda Katz(Ember.js的作者,jQuery 和 Ruby on Rails核心成员), 这就使得JavaScript社区开始关注GitHub,并且纷纷向GitHub迁移。

如果你看到GitHub上有海量的JavaScript和Ruby 项目,就不足为奇了。

随后的故事大家都知道了,GitHub迅速破圈,吸引了Python、PHP、Java等社区的项目入驻,赢得了公司的支持,很快就形成了事实性标准。

Git也随着GitHub的崛起,从Linux内核社区走出,成为程序员必备的工具,如今再不会Git,可能连工作都找不到。

那些曾经使用Mercurial的公司也逐渐迁移到GitHub,Mercurial遭到重创,成为一些公司的小众选择。

毫不夸张地说,Ruby社区的人极大地影响了Git的命运。

2."催熟"Redis

Ruby社区不但影响了Git,还“催熟”了Redis。

2009年,有个叫大卫的人在Google Code上发现了一个名为Redis的项目,不知道他是否真的尝试过这个软件,还是觉得它很酷,于是就跑到HackerNews上发了一个帖子:

图片

(此时GitHub已经发布两年,但是Redis还是选择了Google Code,可见对新生事物的接受总是有一个过程)

这个帖子最早只有5个人评论,有3个人都在“安利”其他类似的支持Key-Value的内存数据库:memcachedb,Tokyo Cabinet,Datastore 。

只有一个人提供了真正的帮助,这个人就是 Ezra Zygmuntowicz,一位非常知名的Ruby on Rails开发人员,也是也是 Engine Yard 的创始人之一。

Ezra 不仅鼓励了鼓励了Redis作者antirez :“嗯,Redis真的很酷。......我真的很喜欢能够将列表存储为值...... 你能联系我吗?我很想跟你聊聊关于 Redis 的事。”

他还用Ruby迅速实现了一个Redis的客户端,发了一条推文:

图片图片

在Ezra的推动之下,Redis的技术价值迅速找到了最佳落地点——Rails 社区。

当时的Rails非常擅长开发Web2.0的 ,但是却难以扩展规模,这也是所有Web框架都遇到的通用问题。

Redis不但可以实现高并发的缓存,降低数据库的负载,还可以实现分布式Session,支持无状态扩展,这实在是一件利器。

不久以后,著名的Twitter采用了Redis,成为“标志性背书”,让 Redis 从小众走向主流。

可惜的是Ezra英年早逝,antirez发了一个帖子纪念他,其中特别提到:Ezra是第一个让Redis流行起来的人。

图片图片

3.Ruby社区为什么这么神奇?

你可能会说,Git和Redis那么优秀,是金子总会发光,没有Ruby/Rails社区,它们也能火起来。

确实是,但是我觉得时间线可能会被极大地拉长,因为大家对新事物的接受度都有一个过程。

其实Ruby/Rails社区不仅带火了Git和Redis,它还帮助多个后来大受欢迎的项目在早期获得关注:

Chef:基础设施即代码的著名工具

Capistrano:将Web应用自动化部署到多个服务器

Vagrant:虚拟机开发环境的自动化管理工具

Homebrew:macOS 上的软件包管理器

Jekyll:静态 生成器

Travis CI:继续集成平台

Rails社区能这么神奇,我觉得主要有这么几点:

1).Rails高度集成化,提供了从数据库到前端模板的完整方案。

大家都在相同的技术栈上开发,很容易共享最佳工具和实践,当Redis,Chef适配了Rails以后,所有人立刻就可以试用并反馈。

2)Rails核心团队本身就是一群积极写博客,录 screencast、做演讲的人,布道文化浓厚。

社区成员非常乐于在各种会议,MeetUp中分享自己的工具,GitHub的诞生就充分说明了这一点。

当时的 Rails 开发者大量活跃在 Twitter、博客圈和 GitHub,这些渠道的传播速度远超传统技术媒体,只要几位社区 KOL(如 DHH、Ezra)推荐,一个项目就能在一两周内火遍全社区。

可惜的是,大概是2013年以后,前端革命兴起,AngularJS、React、Vue 流行,让很多公司做了前后端分离,Docker和k8s又促进了微服务架构的流行,这都和Rails那种一站式的框架理念背离。

再加上Ruby性能劣势明显,在高并发、实时性要求高的业务里不具竞争力,没有在移动互联网、人工智能、大数据、IoT等领域抢占一席之地。

总之,技术的变迁让Rails不再流行了。

不过,有个叫José Valim的巴西人对Ruby做了“升级”,发明了一个叫做Elixir的编程语言,Elixir保留了Ruby灵活的语法和强大的元编程能力同时,又可以运行在Erlang虚拟机中,具备了高并发、容错和分布式的特性,特别适合开发分布式、可扩展的、高并发的应用程序,受到了很多大厂的喜爱。

来源:https://www.51cto.com/article/823684.html
免责声明: 游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

相关攻略

Atom支持哪些语言?Atom编程语言支持一览
编程语言
Atom支持哪些语言?Atom编程语言支持一览

Atom仅提供基础编辑功能,开箱即用语言含HTML、CSS、Ja vaScript等20余种,但仅限语法高亮与缩进;完整支持需安装对应插件链,如linter、formatter及CLI工具。 这里有个常见的误解需要先澄清:Atom编辑器本身并不“编译”任何语言,也不内置语言的运行时环境。它提供的核心

热心网友
04.30
Cursor AI 支持哪些编程语言?
AI资讯
Cursor AI 支持哪些编程语言?

一、主流编程语言支持 对于开发者而言,一款编辑器对核心开发语言的支持深度,直接决定了日常编码的流畅度。Cursor在这方面做得相当扎实,对几种主流语言提供了开箱即用的完整支持。这意味着,你无需折腾任何插件,就能获得从语法理解、智能补全到错误诊断和代码重构的全套能力。 具体来看: Python 开发者

热心网友
04.22
如何正确使用 calendar.add 处理跨月或跨年的日期计算
编程语言
如何正确使用 calendar.add 处理跨月或跨年的日期计算

理解 calendar add 方法的基本逻辑在处理日期和时间相关的编程任务时,calendar add 方法是一个常用且强大的工具。它的核心功能在于对日历字段进行算术运算,允许开发者方便地对日期进行加减操作,例如增加若干天、月或年。该方法的设计逻辑是“智能”地处理字段溢出,这意味着当对某个字段进行

热心网友
04.22
Spring 入门:理解并编写 applicationcontext.xml
编程语言
Spring 入门:理解并编写 applicationcontext.xml

Spring框架的核心配置基石在基于Spring框架的Java企业级应用开发中,XML配置文件曾长期扮演着至关重要的角色。其中,applicationContext xml文件作为Spring IoC容器的主要配置载体,是理解Spring依赖注入与控制反转思想的关键入口。它定义了应用程序中各个组件(

热心网友
04.22
在 Maven 项目中正确放置 applicationcontext.xml 的实战案例
编程语言
在 Maven 项目中正确放置 applicationcontext.xml 的实战案例

理解 applicationcontext xml 的核心作用在基于 Spring 框架的 Java 项目中,applicationcontext xml 是一个至关重要的配置文件。它充当了 Spring IoC 容器的蓝图,负责定义和管理应用中各个 Bean 对象及其之间的依赖关系。简单来说,这个

热心网友
04.22

最新APP

宝宝过生日
宝宝过生日
应用辅助 04-07
台球世界
台球世界
体育竞技 04-07
解绳子
解绳子
休闲益智 04-07
骑兵冲突
骑兵冲突
棋牌策略 04-07
三国真龙传
三国真龙传
角色扮演 04-07

热门推荐

SOL合约持仓量查询指南 如何查看SOL合约持仓数据与市场趋势
web3.0
SOL合约持仓量查询指南 如何查看SOL合约持仓数据与市场趋势

洞察市场先机:SOL合约持仓量深度解析与实战应用 在瞬息万变的加密货币衍生品市场,SOL合约持仓量如同一张实时绘制的“资金热力图”。它不仅揭示了多空双方投入的真实资本规模,更映射出市场情绪的微妙变化与潜在的趋势转折点。对于精明的交易者而言,掌握解读这张“地图”的能力,意味着能在市场博弈中抢占信息高地

热心网友
05.23
像素秘境唤灵师官网下载与正版安装地址获取指南
游戏攻略
像素秘境唤灵师官网下载与正版安装地址获取指南

《像素秘境·唤灵师》可通过九游APP或官网下载。在九游APP搜索游戏名即可预约并获取最新版,官网专区也提供高速与普通下载选项。两种方式均能便捷安装,专区还附有游戏攻略供参考。

热心网友
05.23
告别价格战中国车市迎来高质量发展新阶段
科技数码
告别价格战中国车市迎来高质量发展新阶段

车市价格战正处微妙临界点。二季度起,一股与以往降价潮不同的涨价暗流开始酝酿。截至五月中旬,至少15家主流新能源品牌已释放调价信号,或直接涨价,或收紧优惠,涉及比亚迪、特斯拉、蔚来等传统及新势力车企。

热心网友
05.23
上古卷轴5重制版奥杜因克星主线任务通关全攻略
游戏资讯
上古卷轴5重制版奥杜因克星主线任务通关全攻略

说起《上古卷轴5:重制版》的主线旅程,奥杜因克星任务绝对是一座绕不开的高峰。它不仅是叙事的关键转折点,更是一场对玩家策略、操作与耐心的综合试炼。想要征服这条恶龙,光有勇气可不够,一份清晰的行动路线图至关重要。接下来,我们就一起梳理一下这场终极对决的核心脉络与实用技巧。 一、剑指目标:前往奥杜因克星的

热心网友
05.23
SOL合约限价单最小价格单位详解与设置指南
web3.0
SOL合约限价单最小价格单位详解与设置指南

SOL合约限价单的最小价格单位是0 001美元。该单位是交易时报价的最小变动值,直接影响订单的精确性与灵活性。了解此规则对合约交易者有效设置订单和管理策略至关重要。

热心网友
05.23