展开讨论

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

作为一名长期使用Python的程序员,我之所以尝试这门语言,部分原因是因为它的语法,…

…作为一名长期使用Python的程序员,我之所以尝试这门语言,部分原因是因为它的语法,但一旦我尝试编写一些实质性的内容,Nim源自Pascal、Modula和Ada等语言的背景就开始显现出来。不管语法如何,用它编程的感觉真的很像用Pascal/Modula。事实上,我刚开始使用它的时候并不了解Nim的历史或设计选择,但我年纪足够大,曾经写过不少Pascal代码,而当我刚开始使用Nim不久后,我就开始觉得,"这种感觉有点奇怪的熟悉。" 比如`type`和`var`块、序数类型、用枚举进行数组索引等等。

源讨论Nim 2.2.6原帖 88 条评论 · 导入时统计
4

社区评论 0

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

原讨论中的回复 4

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

CE

来自 https://nim-lang.org/faq.html : 为什么它被命名为proc? 在以前,procedure是常用的术语,而function则是一个数学实体,没有副作用。实际上在Nim中,func是proc {.noSideEffect.}的语法糖。使用def这个名字没有意义,因为Nim还提供了iterator和method关键字,而def代表define。

完整原文
WH

我一直想探索Nim有一段时间了,因为它感觉像“golang,但有python的语法和开发体验”。我写了一个简单的工具tt,允许我从所有设备跟踪时间到一个中心日志。真的非常简单: $ tt stats Time Tracking Stats Total entries: 39 First entry: Oct 21, 2025 23:04 Last entry: Oct 30, 2025 18:29 Tracking since: 228h 34m Days tracked: 5 $ tt "working on xyz today" Logged at 11:38:44 $ tt today Today (1 entries) 11:38:44 working on xyz today 代码相当难看,我觉得自己在用perl: proc groupIntoThreads(entries: seq[Entry], threshold: Duration): seq[seq[Entry]] = if entries.len == 0: return @[] var sorted = entries sorted.sort(proc (a, b: Entry): int = if a.timestamp < b.timestamp: -1 elif a.timestamp > b.timestamp: 1 else: 0 ) result = @[] var currentThread = @[sorted[0]] for i in 1..<sorted.len: let gap = s…

完整原文
CB

实际上echo不是一个语句 - Nim的语法比Python灵活得多,所以在Python中看起来像语句的东西实际上只是UFCS/命令行“调用”(宏/模板/通用/过程,即“例程”)。很容易自己编写一个print函数[1],这样做没有惩罚,除了标准库不提供“常用语言”。所以,这个轮子可能会被多次重新发明。 在cligen中有很多这样的东西,因为它是一个叶子依赖项( literally 1..3标识符的CLI“api”),所以很多“临时”的PLang测试者可能想围绕他们正在使用的某些过程编写一个简单的CLI。 此外,除了echo x,y与echo(x,y)或x.echo(y)或x.echo y相同之外,语法的灵活性比Python大得多。你可以定义自己的运算符,如`>>>`或`!!!`或`.*`。还有一些实验性的、可能有bug的co…

完整原文
MI

如果你真的想用def关键字而不是proc:你可以用sed做到这一点。 认真地说,不要这样做。我用过很多Python,但Nim是一门不同的语言。使用proc关键字有助于让你的大脑意识到你在写Nim,而不是Python。

完整原文
在 Hacker News 阅读

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

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