@
cloudzhou #118
但凡,但凡,你去了解 GitHub 、Shopify 最近招聘,核心组件都在用 Go 等去重构
---------------------------------------------------------------------------------------------------
Github 我不知道他们是不是在用 go, 招聘的说明里, 含有各种语言, ruby, go, python, rust, c.
https://www.github.careers/careers-home
Shopify 根本没看到 go
https://www.shopify.com/careers/disciplines/engineering-data就算用 go 也没问题啊, 如果一项工作涉及密集计算, Ruby/Rails 的做法就是单独开发一个 gem, Ruby 的 gem 本来就可以用 C/C++, Rust, go 开发, Ruby 只做 Ruby 该做的事.
例:
https://github.com/sparklemotion/nokogiri https://github.com/ohler55/oj https://github.com/huacnlee/rucaptcha 我评价一个语言的工业级, 习惯是广泛使用的中间件
比如大数据下 Kafka Flink ,运维革命性 Docker K8s 等
很抱歉,没有找到 ror 的影子
---------------------------------------------------------------------------------------------------
你是谁? 你评价工业级? Shopify 处理的是全球几百万商户的电商交易,GMV 千亿美金量级; Github 世界级的交友平台, 这不叫工业级,还要什么叫工业级? Kafka 、Flink 、K8s 这些项目多是系统级、分布式基础设施,天然会选择 Go/Java 这类静态编译语言。但这并不说明 Ruby/Rails 不是工业级,而是 Rails 专注点在业务开发,CRUD, 而非造分布式中间件。
Kafka 、Flink 解决的是分布式系统的问题; Rails 解决的是应用交付的问题。Rails 在 Shopify 、GitHub 这种量级上的实践,早就证明它的工业级价值。你拿高铁去耕田吗? 拖拉机不香吗?
==================================================
我的核心观点是, 不是说 Ruby/Rails 多牛, 能搞定 Github 和 Shopify 这种大网站, 恰恰相反, 我的意思是, 99%的网站都达不到 Github 和 Shopify 的级别, 就开始焦虑大雁是蒸着吃还是煮着吃, 你先快点射下来再说啊, 大雁都飞走了, 你还在那折腾 DI, Servcie, Interface, 跟前端讨论返回 String 还是 Array, 还在 diss Microservice 团队没给你准备好支付队列.
我提到的 IoT 平台开发已经算是一个中大型应用了, 我们用了 K8s, Argo CD 动态调整 Rails 服务器数量, 同时启动了几个 Sidekiq 分布式队列做数据入库, 还有 Redis 做缓存, 服务器常年压力在 10% - 30%, Ruby 性能是差, 但服务器便宜啊, 内存白菜价啊.
说回原话题, 从 ORM 的角度, Active Record 用了 Ruby 的元编程, 极其优雅, 做到了零样板代码, model 自动生成, 代码极简:
class User < ApplicationRecord
end
然后就你在全网站内不用声明, 不用引用, 就可以随便写:
User.find(1)
User.where(name: "Alice")
User.find_by_name("Alice")
user = User.find_by_email("test@example.com")
user.save
user.update(email: "...")
user.destroy
model 里面也是元编程, 把数据库关系和校验逻辑变成声明式语法,开发者写起来就像在说人话。
class User < ApplicationRecord
has_many :articles
validates :email, presence: true, uniqueness: true
end
Active Record 背后的哲学就是 Convention over Configuration 。不用写映射文件, 不用手动指定列到属性的映射。
最后给大家泼一下冷水, Ruby 学校没教, 要自学, 考验自学能力, Rails 入门陡峭, 入门后一马平川. 你如果想开飞机, 不好意思, 要考证, 骑自行车不用考证.