有什么小众的语言或框架,是值得学习 ?

2021-09-14 00:15:24 +08:00
 mmdsun

[请问有什么小众的语言或框架,是值得学习 ? 或者他们有哪些闪光点值得学习的?谢谢!]

平时总是在自己熟悉的领域编程,平时忽略了很多优秀但冷门的框架语言

感觉偶尔学习一下其他领域的知识,对自己熟悉的领域也有很大帮助.

由于领域不同还麻烦大家详细介绍一下,比如:

学习 Google Android 开发的库 Flow\LiveData 处理数据.

Reactive Extensions(Rxjava Rxjs 等)库了解 Reactive Programming 编程.

学习.NET 的 TAP 、EAP 、APM 异步编程模型,对封装多线程操作很有帮助。

6708 次点击
所在节点    程序员
45 条回复
wizzer
2021-09-14 17:29:59 +08:00
@DreamSaddle 开源项目
popil1987
2021-09-15 10:09:51 +08:00
@aristolochic 函数式语言性能得看问题本质,Rust 也默认不可变,写 React Redux 的 reducer 也不可变,而这两者又是允许可变的,这样设计性能受损同时带来了诸多好处。Haskell 处理 List 是 Lazy 的,不会马上处理 List 全部数据,提高了性能,Elixir 嘛,客观的讲性能方面只能对标 Python 的 FastApi 。写过 FastApi 的朋友可以感受到它的异步,已经很好了,但是存取文件之类的任务也得找相应的异步库。Elixir 的异步就非常流畅了,无脑起进程就好了。提高性能和 Python 一样,使用 C 扩展,C,Go,Rust 都可用。一般任务 GenStage 可替代消息队列,GenServer 让 Redis 可以不用
工具链确实好,文档更好,学习 Elixir 和库只要看文档就好了,例子丰富。Django Command 都没有 Mix 写个 Task 容易,除了生态比不上 Python
动态类型真的是不爽啊,不熟悉的函数必须看源码啊,文档都解决不了
嗯,对不算自己实现自己。Kernel.SpecialForms 构成了 Elixir 所有语法,算是翻译
aristolochic
2021-09-15 11:08:40 +08:00
@popil1987 我倒是不太认为 Laziness 就能成为性能的保障。Haskell 自己也说了 Purity 是为了 Laziness,Laziness 是为了 Non-Strict,Non-Strict 学术上是为了区分于 Strict 的 ML 语言提供统一的实验阵地、实践上是为了写出 More composable code,不为了手动确保求值的流式而耗费太多脑力。

表现上就是可以写一个无尽的递归斐波那契数列,存储历史值使递归栈扁平化,且 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
2021-09-15 13:07:08 +08:00
@gouflv solidjs 不是 jsx 语法吗,而且也是 [x, setX] = factory() 的做法。
Svelte 作者语:凡是需要 setX(newX) 的都不是响应式编程,最优秀的响应式编程是 Excel 。
你跟我说 malinajs 我也认了。
xingjue
2021-09-15 14:07:15 +08:00
php

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/801642

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX