duangsuse::Echo
720 subscribers
4.31K photos
131 videos
583 files
6.54K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
Remove Golang. Although it has been working nicely, I am concerned the double GC will become a problem sometime down the road.
V8 和 Go 都有 GC 系统,而且 Go 的 GC 开始还被认为是低效的
大概之前的 issue 战为 Deno 吸引了一些中国大佬(
duangsuse::Echo
V8 和 Go 都有 GC 系统,而且 Go 的 GC 开始还被认为是低效的
(说到 GC 动苏还无法理解 Lua 的四色增量 Mark-and-Sweep GC 系统)
(说到自动内存管理想到 C++ 程序员都知道的 Rc)
(说到 GC 想到之前的一个问题:如果以后 Lime 用 C 重写要不要写 GC,最后的答案是不需要,别问我为什么,考虑一下 Lime 执行的方式)
Forwarded from 永久封存 | Yuuta 台 | 😷 #Pray4Wuhan (Yuuta)
酷安改默认头像了诶,好看
#酷安
Forwarded from 永久封存 | Yuuta 台 | 😷 #Pray4Wuhan (Yuuta)
发现现在 Yuuta 的 Chrome 地址输入建议 输入 git 的话第一个已不是 GitHub,而是 GitLab 了(
Forwarded from Ruby 资讯
现在 Python 大红大紫的原因是因为它经常用于机器学习,人工智能,数据分析等方面,其实这些 Ruby 也能做到,比如:

https://github.com/arbox/machine-learning-with-ruby
https://github.com/SciRuby/sciruby

但是在某些方面,Ruby 的应用还是一片空白,比如 AR,Docker 管理 (没有 gem 库),桌面 GUI 程序 (QtRuby 和 wxRuby 都已经几年没更新了)。

要想让更多人使用 Ruby,必须打破只知道 Rails on Ruby 这个错误观点,跟随当前热点,让大家知道 Ruby NOT Only Rails。
Forwarded from 永久封存 | Yuuta 台 | 😷 #Pray4Wuhan (Yuuta)
现在 Python 大红大紫的原因是因为它经常用于机器学习,人工智能,数据分析等方面
说得太对了,甚至中学信息课都开始学 PY
Forwarded from 永久封存 | Yuuta 台 | 😷 #Pray4Wuhan (Yuuta)
永远搞不懂解释型语言,这辈子都搞不懂的
Forwarded from 永久封存 | Yuuta 台 | 😷 #Pray4Wuhan (Yuuta)
可能是由于用了试验版 dll
#life #Ruby
最近打算写一本 Ruby 入门文档,算是内部文档吧
突然自我感觉良好或许可以拉几个人入坑,于是想自己出一个入门手册,能让无任何经验的小白变成入门 Ruby 的 Rubyist 并且会给予他们往后发展的资源,不会缺少开源精神培养

打算叫这本手册 《小白的 Ruby 红宝书》 ,使用 LibreOffice Writer 排版

有机结合类似《Metaprogramming Ruby II》的故事、Ruby BNF、示例于一体。

剧中你是上海二中的一名高一新生,加入了计算机社团并在社长 滑小稽 的带领下从编程小白逐步变成了解 Ruby 语法结构、通晓 Ruby OO 理念的 Ruby 家并愉快的使用你学到的知识编写一些简单的算法并继续在计算机社中学习 Ruby 元编程、Java、C、Scheme 相关的知识

文档中会包含 序言、致谢(随便致谢...)、目录、Future Reading

内容包含

c0. 字面量、语法结构上的块、函数调用(额外知识:一个简单的词法规则和分词逻辑)
c1. 运算符、引入 Proc 对象(额外知识:运算符重载)
c2. 函数定义和 Proc、方法调用、变量
c3. 对象和 Hash
c4. 控制流语句
c5. 类和模块
c6. 收尾、完整示例代码和 BNF


测试程序有

t0. 选择排序和快速排序算法
t1. 基于 Sinatra 的简单论坛后端(不使用数据库)


此外,还会有 Ruby 元编程、Java、C、Scheme 入门番外

希望这个假期能写完
另外有什么好的建议请立刻告诉我(谢谢
发展一波同志 🌚
比如包含更多优秀学习资源的社区链接什么的
感觉有点 * 了,霍金生前多次警告不要寻找外星人,现在你们又把他的声音发射到太空…
Forwarded from Solidot
霍金的声音将被发射到太空

英国知名理论物理学家霍金(Stephen Hawking)的骨灰本周五被安葬在西敏寺(Westminster Abbey),位于著名博物学家达尔文和科学家牛顿之间。安葬在西敏寺是一种极其罕见的荣誉,很少授予科学家。在霍金之前,最后两位安息在西敏寺的科学家分别是 1937 年的原子物理学家卢瑟福(Ernest Rutherford)和 1940 年的汤姆森(Joseph John Thomson)。霍金于今年三月去世,享年 76 岁。他写了多本非常受欢迎的科普著作。欧洲航天局(ESA)将把他的声音发射到太空。Media

https://www.solidot.org/story?sid=56877
下面是由奇特版本 Ruby BNF 翻译来的 Ruby EBNF
语法基于 Ruby v1.9
《小白的 Ruby 红宝书》 翻译

终结符 (无法继续用子表达式描述的符号)使用 ALL-CAPS 或使用 '' 包裹
非终结符 使用小写
[] 内的表达式可选
{} 内的表达式可以出现多次也可以不出现
| 切分多种可能的匹配情况
() 用于包裹表达式以提高运算符优先级

; Lexical rules
; Lexer 逻辑比这个特殊一些,不能当作是真正的词法规则,只能用于参考

; 内用规则
; dummy rules
any_char -> ; any character
char -> ; any character, alias for any_char
identifier -> ; sequence in /[a-zA-Z_]{a-zA-Z0-9_}/

; 正则
regexp -> /{any_char}/ ['i' | 'o' | 'p']
| '%r' char {any_char} char

; Heredoc 注释
heredoc -> << (identifier | string) {any_char} identifier

; 字符串
string -> '"' {any_char} '"'
| '’' {any_char} '’'
| '‘' {any_char} '‘'
string2 -> '%' ('Q' | 'q' | 'x') char {any_char} char

; 全局变量名称
global -> '$' identifier | `$` any_char | '$-' any_char

; 有效变量名
varname -> global | '@' identifier | identifier

operation -> identifier ['!' | '?']

; 有效方法名
fname -> identifier | '..' | '|' | '^' | '&' | '<=>' | '==' | '===' | '=~' | '>'
| '>=' | '<' | '<=' | '+' | '-' | '*' | '/' | '%' | '**' | '<<' | '>>' | '~' | '+@'
| '-@' | '[]' | '[]='

; 符号,如 :[]= :a :var
symbol -> ':' fname | ':' varname

; 赋值运算符,>>= 和垃圾 Monad 类型系统没关系
; 皮一下,吐 Monad 类型系统无聊的属性
op-assign -> '+=' | '-=' | '*=' | '/=' | '%=' | '**=' | '&=' | '|=' | '^=' | '<<=' | '>>=' | '&&=' | '||='


然后是真的语法规则

; 从小到大 233

; 字面量们如 2132、"Hello"、:Hello、%q[233]、<<AAAbbcAAA、/a-z/
literal -> NUMERIC | symbol | string | string2 | heredoc | regexp

; 变量值
variable -> varname | NIL | SELF

; 例子: { 'foo' => 'bar' }
; { :a => :b, :b => :c}
; 在 Ruby 新版里,应该使用 { a: :b, b: :c }
assocation -> arg '=>' arg
assocations -> assocation {',' assocation}

singleton -> variable | '(' expr ')'

; 方法参数列表
; 由于特殊逻辑使用 EBNF 表述起来很麻烦,简要说一下
; 你可以在参数列表里使用 '*' identifier 表示 vararg name
; 也可以使用 '&' identifier 表示自动转换 block 为 Proc 对象,这个 identifier 就是 Proc 参数名
; '*' vararg name 和 '&' block arg 后不能出现一般方法参数
; Ruby 新版还支持 default value,对于这种情况,identifier '=' expr 的视为一般方法参数
arglist -> identifier {',' identifier}

; 类似 ES 的 newline 自动切分
; def foo arg0 arg1; puts arg0; puts arg1; end
t -> ';' | '\n'

; 参数列表定义
arg-decl -> '(' arglist ')' | arglist t

args -> arg {',' arg}

; 方法调用参数
call-args -> args
| args [',' assocations] [',' '*' arg] [',' '&' arg]
| assocations [',' '*' arg] [',' '&' arg]
| '*' arg [',' '&' arg] | '&' arg
| command

; 这一部分我也蒙蔽(逃
block-var -> lhs | mlhs
mlhs -> [mlhs-item {',' mlhs_item}] ['*' [lhs]] | '*' lhs
mlhs-item -> lhs | '(' mlhs ')'
lhs -> variable | primary '[' [args] ']' | primary '.' identifier
mrhs -> args [',' '*' arg] | '*' arg

; 程序结构的 BNF
program -> compstmt
compstmt -> stmt {t expr} [t]
; 语句们
stmt -> call DO ['|' [block-var] '|'] compstmt END
| UNDEF fname
| ALIAS fname fname
| stmt IF expr
| stmt WHILE expr
| stmt UNLESS expr
| stmt UNTIL expr
| BEGIN '{' compstmt '}'
| END '{' compstmt '}'
| lhs '=' command [DO ['|' [block-var] '|'] compstmt end]
| expr

expr -> mlhs '=' mrhs
| RETURN call-args
| YIELD call-args
| expr AND expr
| expr OR expr
| NOT expr
| command
| '!' command
| arg

call -> function | command

command -> operation call-args
| primary '.' operation call-args
| primary '::' operation call-args
| SUPER call-args

function -> operation ['(' [call-args] ')']
| primary '.' operation '(' [call-args] ')'
| primary '::' operation '(' [call-args] ')'
| primary '.' operation
| primary '::' operation
| SUPER '(' [call-args] ')'
| SUPER
突然发现关注数目从 50+ 降了几个,估计是之前 LIF 提到的部分粉丝退了,是好事,毕竟他们看不懂 BNF( 🙈 #life #emmm