有什么小众的语言或框架,是值得学习 ?
source link: https://www.v2ex.com/t/801642
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
[请问有什么小众的语言或框架,是值得学习 ? 或者他们有哪些闪光点值得学习的?谢谢!]
平时总是在自己熟悉的领域编程,平时忽略了很多优秀但冷门的框架语言
感觉偶尔学习一下其他领域的知识,对自己熟悉的领域也有很大帮助.
由于领域不同还麻烦大家详细介绍一下,比如:
学习 Google Android 开发的库 Flow\LiveData 处理数据.
Reactive Extensions(Rxjava Rxjs 等)库了解 Reactive Programming 编程.
学习.NET 的 TAP 、EAP 、APM 异步编程模型,对封装多线程操作很有帮助。
ReferenceE 1 天前 via Android 1
说说自己的心得
.NET 的 TAP(Task Based pattern ?)是现在在用,并且是最新最典型的异步模型,你说的后面那两个已经 obsolete
学了这个模型的思维以后,你去看看 JS 语言的异步模型,就那个基于 Promise 的抬手式
设计思想完全是一致的,不过只是 C#静态 Task Generic 比 JS 的 Promise 精细一点罢了
agagega 1 天前 1
- OCaml 也是挺有意思的语言
- Swift 的面向协议编程
- C++的模版元编程以及 Type-rich programming (C++绝对不是冷门,但这些概念有很多人都没有深究过)
- Objective-C 的运行时实现,以及为什么语法如此鬼畜却有人称赞它优雅
还有就是各种《 7 周 7xxx 》的书啦,里面介绍的东西都挺不错。
mmdsun 1 天前 via Android
2i2Re2PLMaDnghL 1 天前
Svelte 才是真正的 Vue3 (暴言
用 Racket 写一个自己设计的语言。完全可以做出这样的测试语法:
((+ 1 1) . equals . 2)
((/ 1 0) . throws . division_by_zero)
hccsoul 1 天前
popil1987 1 天前
elixir:
后端语言,性能不咋的,实测和 python 的 fastapi 一个级别,但是它能使用 CPU 多个核心
因为是状态不可变,并发异步分布式及其简单,进程模型轻量,干什么事都是起进程即可
支持宏,可以定制语言,即所谓的 DSL,Kernel.SpecialForms 就是自己定义自己
模式匹配和管道,告别 if else
可以使用 erlang 的庞大生态,只需:xxx 调用,erlports 可以使用 python 生态,可以使用 c 语言生态提高性能
缺点就是不是静态类型,意味着不能让编译器(虽然也编译)帮你干点测试的活
elm:
前端语言,基本隔绝 js 生态,最新版本已经是 2019 年,没有大公司支持,但是拥有函数式编程语言的特性,运行和包大小都名列前茅,我的个人项目会完全用 elm 写后台,至于公司项目,建议向 js 生态跪下
mascteen 1 天前 via Android
GeruzoniAnsasu 1 天前
但是
Haskell
当真是开了一扇新世界大门,强烈推荐系统地学习一遍。或者 racket/Lisp 也可以。这些函数式语言一下拓宽了我对编程这件事一倍的视野,可以说又重新学了一遍编程,与那些脚本语言根本不可同日而语
ReferenceE 1 天前 via Android
你真的想要研究 async 系统,你应该是去深入研究 TAP,明白为什么要这么设计以及底层实现是什么。而不是在这个 APM 上面浪费时间
来自一位"略懂"C#的 async 咸鱼的建议
aristolochic 1 天前
我比较喜欢 Elixir 的一点主要是工具链做的好。还有 Phoenix 这种看上去很完备但仍然比较轻量(大概是出于显式的考虑,习惯设计脚手架而非宏
用动态类型大概是因为 BEAM 里 Erlang 的印记太明显了(也不是没有别的静态 BEAM 语言),以及 Dialyzer 也算能用(逃
另外……Kernel.SpecialForms 是用 Erlang 实现了一个 pass 吧?那个模块只是模式匹配了一些不能 unquote 的,以及 quote 本身。它的宏模型基本和 Lisp 一致,Lisp 都算不上 SpecialForms 自己实现自己。
popil1987 8 小时 56 分钟前
工具链确实好,文档更好,学习 Elixir 和库只要看文档就好了,例子丰富。Django Command 都没有 Mix 写个 Task 容易,除了生态比不上 Python
动态类型真的是不爽啊,不熟悉的函数必须看源码啊,文档都解决不了
嗯,对不算自己实现自己。Kernel.SpecialForms 构成了 Elixir 所有语法,算是翻译
aristolochic 7 小时 58 分钟前
表现上就是可以写一个无尽的递归斐波那契数列,存储历史值使递归栈扁平化,且 GC 能够保证立刻清除不需要的历史数据,就像有一个超厉害的缓存一样。这点在 ghci 和 ghc 编译出来的运行行为不同能够体现,ghci 里运行递归的斐波那契到 1000 位,以后算 1-1000 位都是秒出,即使再要求算 1000+,也是从 999 和 1000 开始的。而 ghc 编译的话由于知道那些值需要,所以不需要的值会立即被 GC 掉。这在 Strict 的语言根本不可能,它们没办法用图来表达值的关系,最终还是面向栈的。
(怎么感觉变成安利 Haskell 了)
不过怎么说正常写的 Strict 程序再加上图灵机要求的可变性,是不会比 Non-Strict 加上 Lambda 演算和 Laziness 要求的 Purity 慢的,而且应该说是 Strict 程序往往更快(只要脑子不抽)。所以单从模型上看,使用了 Stream 的 Elixir 程序和 Haskell 写出来是一致的,要说性能有差别也是 BEAM 的开销和类型检查的开销。只不过 Haskell 好说歹说也是静态的、直接编译到机器码的系统语言,还是要和 C/C++啊 Java 啊 Go 啊打一打,这下 List 就到了极限了,才不得已要出“数组”,导致一个学术语言为了解决实践问题搞出了复杂程度堪比 Rust 的“字符串类型矩阵”,还需要常备 cheat sheet,引来了不少老学究的嫌弃。
2i2Re2PLMaDnghL 5 小时 59 分钟前
Svelte 作者语:凡是需要 setX(newX) 的都不是响应式编程,最优秀的响应式编程是 Excel 。
你跟我说 malinajs 我也认了。
xingjue 4 小时 59 分钟前
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK