问题标签 [modern-languages]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - 您是否发现仍然需要可以更改的变量,如果需要,为什么?
我听到的反对函数式语言的一个论点是,单一赋值编码太难了,或者至少比“普通”编程困难得多。
但是通过我的代码,我意识到我真的没有很多(任何?)使用模式,如果你用一种相当现代的语言编写的话,这些模式不能用单一的赋值形式来编写。
那么在一次调用范围内变化的变量的用例是什么?请记住,在这种情况下,循环索引、参数和其他在调用之间变化的范围绑定值不是多重赋值(除非您出于某种原因必须在正文中更改它们),并假设您正在编写一些东西远远高于汇编语言级别,您可以在其中编写诸如
或(如果未提供总和)
和
或者
当您需要时,并有列表推导、地图/收集等可用。
您是否发现在这样的环境中您仍然想要/需要可变变量,如果是,那是为了什么?
澄清一下,我不是要求背诵对 SSA 表格的反对意见,而是要求这些反对意见适用的具体示例。我正在寻找带有可变变量的清晰简洁的代码,没有它们就无法编写。
到目前为止我最喜欢的例子(以及我期望的最好的反对意见):
Paul Johnson 的Fisher-Yates 算法答案,当您包含大 O 约束时,它非常强大。但是,正如 catulahoops 指出的那样,big-O 问题与 SSA 问题无关,而是与可变数据类型有关,并且将这些放在一边,算法可以在 SSA 中相当清楚地编写:
/li>jpalecek 的多边形面积示例:
这可能仍然写成:
或者,由于有些人反对这个公式的密度,它可以被改写:
/li>Princess 关于用不可变结构实现 O(1) 队列的困难的观点很有趣(并且很可能为一个令人信服的例子提供基础),但正如所述,它基本上是关于数据结构的可变性,而不是直接关于多重分配问题.
我对埃拉托色尼筛法的答案很感兴趣,但不相信。在他引用的论文中给出的合适的 big-O,提取尽可能多的素数生成器在使用或不使用 SSA 的情况下看起来都不容易正确实现。
嗯,谢谢大家的尝试。由于大多数答案要么是 1)基于可变数据结构,而不是基于单一赋值,以及 2)它们是关于单一赋值形式的,因此本领域技术人员很容易反驳,我将从我的演讲和/或重组中划出界限(也许可以将其作为讨论主题作为备用,以防万一我在时间用完之前用完了单词)。
再次感谢。
c# - 没有 .NET 框架的 C#
使用像 C# 这样的现代跨平台编程语言编写带有 API 调用等的快速原生应用程序会很棒,不是吗?例如,如果您想编写一个简单的实用程序来帮助 IT 人员安装不需要其他组件的东西,用一种简单而现代的编程语言?或者如果你想写一个 3D 游戏,它应该很快,而 JIT 只会让它变慢......
为什么,为什么不可能?为什么这些东西没有原生的现代编程语言?
fortran - 具有 FORTRAN 优势的现代语言?
最近我一直在使用很多 FORTRAN 77,虽然我一开始有所保留,但现在我看到了这种语言的一些很棒的品质。这是:
- 简单易学(没有面向对象或函数式编程的复杂性)
- 易于阅读
- 快速计算数字
这些品质自然会吸引那些只想让计算机快速给出答案的非程序员工程师和科学家。但是基于它的年龄和一些基本假设,它有很多限制。我怀疑非程序员是否能轻松地理解 Fortran 更高版本的一些附加功能。
有没有一种现代语言像 FORTRAN 一样简单,数学应用也一样快,而且限制更少?或者是 Fortran 90, 95, 2003 的答案。. . ?