Rust 就很离谱。那么多基础设施工程师么
TheoremProving
不过进入陌生领域了,Mathematica 也有定义证明。我就贴上了,这部分没做过。没有发言权了。
https://reference.wolfram.com/language/guide/TheoremProving.html
看看 Mathematica ? 不过我好久没用了,只在大学做实验用过。MA 里面不关心类型,而且帮助数学家们推演公式。先进的数学编程语言,是自己从头实现的。python 数学库和 MA 相比是个弟弟
潮流是个大摆锤,今天锤锤这,明天锤锤那。
静态型没啥未来。研究研究 SICP,抽象才是编程技术绝妙的地方。
比如你在书写数学,不会关心数字类型。未来的语言也不应该关心类型。这些都是底层的细节,应该被屏蔽掉。 今天之所以需要关心,还是迫于实现细节或者性能妥协。
动态语言依然是未来的方向。静态型的语言做做基础工具,会被当成汇编永远活在幕后。
emmm,这看起来很正常啊。
ruby 是动态语言,声明方法只会注册,真正执行的时候才会运行。
函数内返回函数,也是一个支持函数范式的特性。可以建立起函数式编程。py、js 里也是可以。
有意义。要不然 Ruby 的领域面就一直很狭隘,处在服务器侧的 web 领域(这只是个一个小小的地盘)。
拒绝 windows 等于拒绝了 —— GUI 程序、办公自动化、一大批新手玩家、外挂领域、等于拒绝市场上最大占比的操作系统。
ruby 能够在 win 上工作,终于 rb 可以和 python 一样也出 Excel 教程了!!!哈哈哈,与之一战
作好不容易
require 'benchmark'
def fib n
if n < 2
1
else
fib(n-2) + fib(n-1)
end
end
# 直接执行
puts Benchmark.measure {
8.times do
fib(40)
end
}
# 进程
puts Benchmark.measure {
8.times do
fork { fib(40) }
end
Process.wait
}
# 线程
puts Benchmark.measure {
8.times.map {
Thread.new{fib(40)}
}.each{|t| t.value}
}
# Ractor
puts Benchmark.measure {
8.times.map {
Ractor.new{ fib(40) }
}.each{|r| r.take}
}
方法 | user time | system time | user+system times | real time |
---|---|---|---|---|
顺序执行 | 84.713012 | 0.131839 | 84.844851 | 84.845332 |
进程 | 0.000214 | 0.002798 | 14.607795 | 14.787335 |
多线程 | 84.604395 | 0.145657 | 84.750052 | 84.744966 |
Ractor | 116.438639 | 0.148765 | 116.587404 | 14.853680 |
答案是 Ractor 和多进程差不多快
商业公司支持的语言,早晚受到限制。比如 Java,收割你。
Nodejs 的社区 npm 包质量太次,普遍进入维护期了,疯狂报 warning
Python 的问题在于永远无法拥有真正的 JIT。没有标准化实现,Instagram、Dropbox 使用 Python 的都尝试过研发 Python-JIT 已经失败了好几轮 Python 社区,我怀疑混入了 Node 社区的人,花式加一些无用的语法最近。
Ruby 唯一没有金主爸爸。这个角度,他是属于自由个人的选择。 Ruby 的 gem 幸存下来的,都经过一番洗礼,质量都挺高。保持小众,猥琐发育也挺好。要像 npm 那样,100w 的包,一半都失效了,各种问题。。。也是蛋疼。
小众好处也是一种筛选吧,真正热爱的人会继续搞好的。像 Java 作为大众蓝领语言,已经膨胀到难以理解了。
不管怎么样,我会继续偷着用 Ruby
可能这就是它的优势所在。
就像 lisp 程序,程序就是在写 AST 一样
Yep, I can
B 站直播怎么样,给老铁刷火箭
补充,想要运行里面的返回函数怎么办呢?
method(a()).call
可以用户 method 获得 :c 的函数主体,然后调用 call 调用它。
涉及到 2 个背景知识:
1.符号
符号 用 :xxx
来表示。符号用于 方法名、类名、常量。符号是一种特殊的数据类型,他唯一、检索速度快。所以被用于前者。想想是不是很合理?非常合理。为了性能。
2.返回值
ruby 认为所有函数都应该有返回。即使是返回空,也是一种返回。所以除了 显示调用 return 返回值,默认没有 return 的情况下,返回方法内最后一个计算值。它相当于
def a
return def c
'hello,world'
end
end
所以这里,函数内部被调用,没有 return 情况下,会返回 内部定义的函数名,函数名用符号表示,所以返回 :c
微软可以用 Mac 么
+1
所以都切换为电脑版搞
SQL 特殊地方,他是一个 三元逻辑系统 true、false、null 逻辑处理的时候,必须要考虑 null,除非这个字段加了 非 null 约束。
他的布尔值运算,也要遵循三元真值表。
(前几天看了,逃。。。
感觉远程这件事,算时间成本、租办公区成本,应该是比较共赢的。只是这个想法里面,对打工人利好,管理者应该不想。
速度上来了。以前 gitlab.com 访问起来非常非常慢
可以这样理解。毕竟 KPI 驱动、急功近利的晋升导向的不良氛围,而且维护性根本不可靠。而且做来做去就那点东西抄抄弄弄的。
实话是活,和国外还是有点差距。
他们家网站的插画,真是喜欢
答案如果找到了,AI 不就造出来了。如果 AI 造不出来(不能被复现) 说明答案还没找到。
有时候我觉得,这跟 Ruby、Rails 都没什么关系。
市场上有的是未成熟的技术就有人上赶着去用。Go、Rust 周边设施都没完善起来。Nodejs 也是乱七八糟的情况。
新技术替代旧技术,有一大部分原因是一种技术营销的结果。
另外还有一个国情特殊,国内的人喜欢迷信有国外大厂背景的技术比如 Google,仅此而已。国外大厂推出了什么,国内就会换一波。这几年一直都是这样。
国内缺乏上游技术制造的氛围和生态,所以总是换来换去。
🆙
截止今天 Rubinius 2 年没又提交了。
看来东西也要看是否能坚持到底
如果自己,可能是正则、字符串替换。
这个是 Ruby 的 Syntax 范畴,肯定是 他的 解释器里面 Parser 部分实现的。转成 AST,以语法的形式处理。