问题标签 [paradigms]

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.

0 投票
2 回答
535 浏览

programming-languages - 将此(二维、类逻辑表、可视化)编程语言/范式命名为(Subtext/Example Centric Programming)

我记得偶然发现了一个介绍新编程“语言”和范例的视频剪辑。“语言”本质上是 2D 和可视化的,因此与视频中的 IDE 和解释器紧密结合。

它一开始就像一个真值表,但变得更加复杂。条件用 X 轴表示,流程用程序的 Y 轴表示。

例如,要构建一个“绝对值”函数,定义输入和输出,我们称它们为 integerI和 integer O。单击I允许定义一个子案例,例如I < (const)。然后输入一个0作为常量,该I列分为两部分:I < 0I >= 0。一个连接到O,其中一个通过一个neg函数得到绝对值函数。

关键是丢失的病例可以立即和视觉识别;定义两个案例x < 0x > 0立即将x列分成三个,如果您忘记将x = 0案例连接到输出,那将是显而易见的。

这是尽可能简短的内容,同时仍为人们提供足够的信息来识别和/或对语言感兴趣,所以我会在这里剪掉它。看起来它只解决了一些与条件和逻辑有关的特定问题,但我记得“语言”足够强大,可以单独成为一种范式。

该视频还提出了一些很好的观点,即现代编程与大约 50 多年前的编程没有太大区别,即在电传打字机上输入基本上是一维的文本。

问题:语言/范式/IDE/解释器的名称是什么?

我主要是在找[名字]再找一遍视频,这样我就可以和我现在的同事讨论了。如果您对此有更多想说的,我们可以将这个问题变成社区 wiki 并开始讨论。

0 投票
3 回答
250 浏览

paradigms - 人们使用哪些支持 TDD 的工具/编程语言?

我想了解人们正在使用哪些支持测试驱动开发的工具/编程语言?

非常感谢,J

0 投票
3 回答
2144 浏览

oop - 有人可以向我解释为什么我需要函数式编程而不是 OOP 吗?

可能的重复:
函数式编程与面向对象编程

有人可以向我解释为什么我需要函数式编程而不是 OOP 吗?

例如,为什么我需要使用 Haskell 而不是 C++(或类似语言)?

函数式编程相对于 OOP 的优势是什么?

0 投票
6 回答
5177 浏览

programming-languages - 用于逻辑编程的编程语言比 Prolog 更新

有没有比 Prolog 专门用于逻辑编程的新语言?

0 投票
2 回答
762 浏览

oop - 面向对象的原则应该应用在过程语言中吗?

我知道原则上甚至可以将诸如 C 或 MATLAB 之类的过程语言转换为面向对象的语言。这个问题已经在这里这里得到了很好的讨论。

我发现这些讨论和其中的参考文献中缺少的是关于是否应该应用这些原则的说明。这样做有什么具体的收获吗?这显然是可能的,但这样做是否可取?在开源项目中是否有这种做法带来明显优势的例子?

澄清

也许一个例子是为了。

我继承了一些实现机器学习算法的 MATLAB 代码。基本上只有一个函数building_model,根据传递的标志,将训练模型或使用它来预测未来值:

模型本身是使用 MATLAB 持久变量实现的building_model

我已经building_model分成了两个功能,一个用于训练,一个用于预测。过去作为持久变量实现的模型现在被外部化了,可以这么说:

粗略地说,这是我可以在 MATLAB 中模拟 OOP 的某些功能的情况。我的建筑模型模块现在的行为很像一个类,有一个构造函数和两个方法model_trainmodel_predict. 我已经实现了某种程度的封装(尽管没有什么能阻止调用者摆弄 的内部model),并且原则上也可以容纳多态性。作为额外的奖励,我几乎免费获得命令/查询分离,因为model_predict不会返回model,因此可能不会改变model

(精明的读者会指出,MATLAB 已经有一个面向对象的系统。由于各种原因,包括性能和与旧版本的兼容性,我不能使用它。)

我可以在 C 中想象一个类似的机制,您可以在其中设计一些数据结构并编写函数,其第一个参数将是该数据结构的实例。

我想知道的是,我可以将这种编程方式推进多远?这是一种普遍接受的模式吗(在那里,我说过这个词)?有什么我应该注意的性能问题吗?

0 投票
2 回答
4832 浏览

android - 为什么Android平台不欢迎“直接数据库连接”的范式?

当我说“直接数据库连接”时,我的意思是使用类似 JDBC 的驱动程序在活动的上下文中调用和运行远程数据库查询,就像使用 SQLite 数据库存储本地参数一样。

直到我意识到我在互联网上几乎找不到任何关于这种数据库连接方式的教程或文档时,我想,不管大多数(如果不是所有)Android 设备都忍受不稳定的 Wi-Fi/3G 网络,连接到数据库应该这样做。

android.database.sqlite即使在 Android SDK 中,本质上也只支持本地数据库访问(aka )。并且在java.sql API的描述中指出,您必须提供自己的 JDBC 驱动程序才能使用此 API。

然后我开始意识到我直接连接数据库的意图是否首先在Android领域是错误的。

我阅读了很多书籍、wiki 和论坛,包括 Stack Overflow 上提供的大量答案。在我看来,很多人都在专注于完成某件事,并且过去的讨论通常以“如何为我的 Android 设备设计 RESTful Web 服务?”开始。但是,我需要彻底了解!而且我还需要原始 Android 开发者的权威引用。

0 投票
3 回答
232 浏览

oop - C++0x OOP 范式转变?

有没有,如果有,有哪些?

0 投票
3 回答
761 浏览

php - MVC 和程序状态 - 模型应该是哑巴吗?

我正在使用一个使用 MVC 范例的框架。它是 CodeIgniter,但我的问题不在于具体的框架 - 它更普遍地涉及使用 MVC 时的最佳实践。

我正在使用 $_SESSION 变量来维护一些状态变量(用户选择、一些临时首选项、一些数据过滤选项)。这很容易做到,但我发现我在模型和控制器之间拆分了这些变量的使用。有时我会在控制器中更新一个,然后在模型中查找它。这开始“闻起来”很有趣,因为在我看来,让模型“意识到”所有这些设置可能不是一个好主意。模型不应该只接受获取/操作数据的请求,而只关心请求中明确包含的内容(无需查找外部变量)吗?

这是一个示例: 我有一个名为 $_SESSION['regionFilter'] 的会话变量。这是在控制器中创建和更新的,代表用户想要“深入”到的销售区域。当控制器从模型请求一些数据时,我目前让模型查找 $_SESSION['regionFilter'] 变量,并在为数据库创建 SQL 时使用它。似乎让模型在程序状态方面“哑巴”可能更有意义,如果需要,让控制器以某种方式将 $_SESSION['regionFilter'] 变量捆绑到其请求中。

有什么想法吗?谢谢!


编辑: 谢谢大家的讨论。我知道有重叠的问题,但是很难找到关于该主题的一般性讨论——我对“MVC 模型程序状态”的搜索出现了大量关于 ASP.NET-MVC 特定讨论的问题,这些讨论陷入了困境细节。

我已将问题标记为已关闭。再次感谢您的想法!

0 投票
5 回答
13701 浏览

model-view-controller - MVC中Model的用途是什么?它真的有用吗?

我是新手,所以请耐心等待。我最近在几个项目中使用了一个 MVC 框架,一段时间后,我对 MVC 中“模型”的感知有用性感到失望。

我得到了控制器和视图的用处,我知道表示和逻辑之间的分离对于使代码在未来更易于维护很重要,尽管不一定更快或更健壮。

如果所有逻辑首先都应该放在控制器中,我看不到模型有任何用处,尤其是 Active-Record。我们已经有了一种强大且易于使用的语言来与数据库进行通信,对吗?它被称为 SQL。对我来说,当模型像活动记录一样实现时,它的有用性取决于您是否希望您的应用程序适合多个数据库。

所以我要问的是,如果你只使用一个数据库,为什么还要使用 Models 和 Active-Records?为什么不只使用 SQL?为什么要增加额外的复杂性?你们有任何案例研究/现实生活中的故事,模型实际上可以比仅使用数据库类和 SQL-away 做得更好吗?

再次,如果我看起来如此无知,我很抱歉,但我真的不知道为什么模型很重要。谢谢回答。

0 投票
5 回答
16407 浏览

dynamic - 为什么 Clojure 是动态类型的?

我非常喜欢的一件事是阅读不同的编程语言。目前,我正在学习 Scala,但这并不意味着我对 Groovy、Clojure、Python 等不感兴趣。所有这些语言都具有独特的外观和感觉以及一些特征。在 Clojure 的情况下,我不理解这些设计决策之一。据我所知,Clojure 非常强调它的函数范式,并且几乎迫使您尽可能使用不可变的“变量”。因此,如果一半的值是不可变的,为什么语言是动态类型的?

Clojure 网站说:

首先,Clojure 是动态的。这意味着 Clojure 程序不仅仅是您编译和运行的东西,而是您可以与之交互的东西。

嗯,这听起来很奇怪。如果一个程序被编译,你就不能再改变它了。当然,您可以与它“交互”,这就是 UI 的用途,但该网站当然并不意味着整洁的“动态”GUI。

Clojure 如何从动态类型中受益

我指的是 Clojure 的特例,而不是动态类型的一般优势。

动态类型系统如何帮助改进函数式编程

再一次,我知道不泄漏“int a”的乐趣;到处都是源代码,但类型推断可以减轻很多痛苦。因此,我只想知道动态类型如何支持函数式语言的概念。