Questions tagged «dynamic-languages»

8
为什么美国政府不允许动态语言用于安全项目?
我知道有些人目前正在为美国军方项目(安全级别低,非战斗人力资源类型数据)进行工作。 项目代码的初始状态已提交给军方进行审查,然后他们通过某种安全分析器工具运行了该程序。它返回了代码中已知安全问题的报告,并要求进行更改,这些更改需要在交付最终产品之前实施。 需要解决的项目之一是删除一部分用Ruby编写的项目,因为它是一种动态语言。 不允许在安全设置中使用动态语言的背景/原因是什么?这是政府采用新技术的速度缓慢吗?还是与静态语言(ala C ++或Java)相比,动态语言会带来额外的安全风险?

11
适用于动态语言的IDE-您可以获得多远?
我发现令人沮丧的是,动态语言应提供的开发速度如何因缺少IDE所能提供给您的静态对象的补全和其他资产而大大受到损害。 这不仅是减少打字量,还在于浏览API时获得的工作效率提高和无穷乐趣,而无需经常引用未与编辑器集成的文档。 到目前为止,所有IDE +动态语言组合-公平地说还不是很多-我尝试过: 越野车 慢 毫无头绪/过于狂热(如显示所有可能的完成) 或者根本不像Eclipse + Java那样完整。 我知道动态代码分析不是一件容易的事。但是人们不禁会怀疑- 这一段代码真的很难找出来吗? 所以我的问题是: 是否有任何特定的IDE(或更少的一体式安装程序)实现了对动态语言的完全出色的支持,还是这还是一个“未解决”的问题?

4
为什么许多鸭子式动态编程语言会使用基于类的方法而不是基于原型的OOP?
由于许多动态编程语言都具有鸭类输入法的功能,并且它们还可以随时打开和修改类或实例方法(例如Ruby和Python),因此…… 问题1)动态语言课程的需求是什么?为什么要用这种方式设计语言,以将类用作某种“模板”,而不是以原型方式使用而只是使用对象? 另外的JavaScript是原型为基础,但CoffeeScript的(JavaScript的加强版),选择基于类的方式。它也适用于相同的Lua(原型为基础)和MoonScript(类为主)。此外,ES 6中还有一门课。所以…… 问题2)是否暗示着,如果您尝试改进基于原型的语言,则应将其更改为基于类的语言?如果没有,为什么要这样设计?

5
里斯科夫替代原则与内省或鸭类打字不相容吗?
我是否正确理解在对象可以自我检查的语言(如鸭式语言中常见的语言)中不能遵守《里斯科夫替代原理》? 例如,在Ruby中,如果一个类B从一个类继承A,然后为每个对象x的A,x.class是要回报A的,但如果x是一个对象B,x.class是不会返回A。 这是LSP的声明: 令q(x)是关于类型T的对象x的可证明性质。那么,对于类型S的对象y,q(y)应该是可证明的,其中S是T的子类型。 以Ruby为例, class T; end class S < T; end 如属性q(x) =所示,以这种形式违反LSPx.class.name == 'T' 加成。如果答案是“是”(与内省不兼容的LSP),那么我的另一个问题是:是否存在某种修改后的“弱”形式的LSP,它可能适用于动态语言,可能在某些附加条件下并且仅具有特殊类型的性质。 更新。作为参考,这是我在网络上发现的另一种LSP公式: 使用指针或对基类的引用的函数必须能够使用派生类的对象,而无需了解它。 还有一个: 如果S是声明的T的子类型,则将S类型的对象视为T类型的对象,如果将它们视为T类型的对象,则它们的行为也应与预期的T类型的对象相同。 最后一个注释为: 请注意,LSP全部关于对象的预期行为。只有清楚知道对象的预期行为后,才能遵循LSP。 这似乎比最初的要弱,并且可能可以观察到,但是我希望看到它正式化,尤其要解释谁决定预期的行为是什么。 那么,LSP是否不是编程语言中的一对类的属性,而是祖先类满足的一对类以及给定的一组属性?实际上,这是否意味着要构造一个尊重LSP的子类(后代类),必须知道祖先类的所有可能用法?根据LSP,祖先类应该可以用任何后代类替换,对吗? 更新。 我已经接受了答案,但是我想添加一个来自Ruby的更具体的例子来说明这个问题。在Ruby中,每个类都是模块,从某种意义上来说,Class类是类的后代Module。然而: class C; end C.is_a?(Module) # => true C.class # => Class Class.superclass # => Module module M; end M.class # => Module …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.