展开讨论

经验与复盘经验摘录 · 机器翻译

我可以这么说(虽然我的职业生涯只有30年),或者更准确地说,这是其中一种……

… 我也可以这么说(虽然我的职业生涯只有30年),或者更准确地说,这是少数几种让我最惊讶的语言之一。从语言设计的角度来看,让我惊讶的是部分求值(partial evaluation)能被做到多远。虽然在表达能力上严格弱于AST宏(宏是“引用不透明”的,因此比引用透明的部分求值更强大——例如,部分求值无法访问参数的名称),但事实证明,它足够强大,不仅可以替代大多数“合理”的宏用法,还能替代泛型和接口。Zig的部分求值(comptime)之所以有这种能力,是因为它能访问反射功能。即使结合了反射,部分求值也比宏更容易使用。事实上,为了理解程序的语义,可以完全忽略部分求值(因为它不会影响计算的含义)。也就是说,…

源讨论为什么Zig这么酷?原帖 506 条评论 · 导入时统计
6

社区评论 0

还没有社区评论,来聊聊你的看法。

原讨论中的回复 6

仅展示本次导入中包含的直接回复。中文为机器翻译,可查看英文原文。

SR

这是真正的答案(还有其他优点)——这个回答做得很好且有区分度 每种大规模使用的语言都需要一个预处理器(看看TS中“使用服务器”和“使用GPU”的荒谬做法)——为什么它不和你使用的语言一样呢?

完整原文
AN

我同意。 我期待着一种未来高级语言,它能像comptime一样用于元编程/接口等,是强类型,但能像Python或JavaScript一样轻松地编写脚本。

完整原文
NE

精彩的评论!我同意关于comptime的观点,作为一位Rust程序员,我认为这是Zig明显优于Rust的地方,因为Zig拥有两种宏系统和声明式泛型语言。这可能是该语言最大的“杀手级功能”。

完整原文
TR

说得很好。过去20年里,大多数语言的发展都是通过向语言中添加更多特性来推进的,因为它们彼此之间都借鉴了关键字和执行语义。这就像一个邻里版的公司官僚体系,每个都看着街对面,然后决定“他们有一个我们没有的部门,我们最好也加一个这样的部门”。 我喜欢那些敢于尝试用更少的东西做更多事情的语言。Zig的编译时(comptime)功能尤其出色,特别是它取代泛型的方式,非常棒。 前几天我对于Elixir也有类似的感觉,当我意识到我可以用Erlang/Beam/进程邮箱构建出你可能在python.threading中找到的每一个标准的进程间通信(IPC)机制(如队列、互斥锁、递归锁、条件变量、屏障等)时。

完整原文
CR

> 因此它有“零成本抽象”这一特性,旨在提供一种高级语言的假象,而没有实际的高级抽象 这是什么意思? 比如(如果你想选另一个例子也可以),为什么C++的std::vector比Java的ArrayList更不抽象?

完整原文
CI

> 编写底层代码的开发者会失去他们需要的明确性以便于审查,而编写高层程序的开发者实际上并没有获得他们需要的抽象层次,以实现平滑的程序演进。 我过去曾将这种情况描述为语言“过于通用”或“过于多范式”。像Scala这样的语言试图在一个语言中同时具备Haskell和Java的特点。 > 我无法预测Zig是否会变得流行。 我认为在接下来的十年里,大型C代码库可能被LLM辅助迁移到Zig。一旦zigc可以编译C-Linux,就可以逐字节地(通过LLM辅助)将它们移植到Zig。这不会很快发生,但我认为这会是它的杀手级功能。 如果十年后Linux变成Rust+Zig的代码库,我也不介意。:)

完整原文
在 Hacker News 阅读

尊重不同观点,分享具体经验。

登录后即可发帖、评论、转发和引用。