问题标签 [dynamic-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.
functional-programming - Clojure 代理是否总是调用 super.method()?
在使用Clojure 代理时,fns
传递给代理应该覆盖现有方法,或者它们是否与super.method()
?
在下面的代码中, RequestHandler.get() 与代理一起被调用get []
。
编译/继承版本也是如此:
跟踪显示代理 get 被调用,然后是 super.get,这会引发(默认情况下)异常。
我试图找到一些关于 Clojure 代理的实际行为的词。有人可以提供帮助吗?
php - PHP:代码检查器,因为 PHP 是一种松散类型/动态语言?
我有一个基于 PHP 的小型应用程序,它的大小开始适度增长。
我开始关心管理我的 PHP 代码库,因为PHP是一种松散/弱类型的动态语言。
其他人如何管理基于松散/弱类型动态语言的代码?
是否存在用于 PHP 的预解析器,允许我对我的代码库运行检查以识别如下所示的内容?
更新:
上面的例子可能不是最好的例子,但本质上,我想传达的是,动态弱类型语言中的某些错误只有在代码在 RUN TIME 在生产环境中运行时才会被发现;然而,其中一些问题通常会在编译时在强类型静态语言中发现。
在将我的代码投入生产之前,如何在 PHP 中找到这些非算法类型的错误,而不必创建大量单元测试?
因此,在投入生产之前,是否存在我可以通过它运行我的 PHP 代码的任何东西,并且这个预处理器会解析我的代码以确保我只使用定义的变量等。基本上,检查我的代码以进行验证非算法类型的用途。例如,不尝试在字符串上执行代数等。
更新 2
请注意,这个问题仍然没有得到回答,因为我正在寻找一种方法来识别 PHP 中这些类型的“编译”类型的非算法错误,而不是运行时间。
python - 哪种语言最适合从动态语言开始
在为 JAVA 工作了很长时间后,我觉得也学习一些其他语言只是为了改变。这次我想花一些时间学习和阅读其中一种动态语言。这是最合适的一种,它涵盖了动态语言提供的大部分功能和可能很有趣的语法,也更接近大多数动态语言使用的语法。
BR,凯沙夫
java - 为什么Java排名第一?
为什么Java是最常用的编程语言?为什么大多数程序员的工作是 Java ?
不要误会我的意思吗?我喜欢 Java 并且我在 Java 中工作?我没有什么反对的吗?
此外,我正在尝试从 OOP 框架中学习其他一些东西,例如 Clojure 及其函数式编程。
但是,我想知道,为什么 Java 排名第一?我的意思是,动态语言(Ruby、Python、Php、JavaScript)的人说静态类型语言(Java、C/C++、C#)的人羡慕他们的生产力?他们说他们能更快地完成工作......
好吧,如果动态语言的生产力更高,那么 Java 怎么会站在它的立场上呢?
ironpython - 为 IronRuby 和 IronPython 提供案例
我想每个人都已经听说了一些关键开发人员离开动态语言团队的消息,因为他们认为微软对动态语言的支持正在减弱。
我非常喜欢 Python,并尝试经常使用它。因此,通过扩展,我关心 IronPython 并希望看到它继续发展。我相信很多人对 IronRuby 也有同感。但我仍然不太明白的是,.NET 开发人员为什么要关心 IronRuby 和 IronPython?
如果你要写一封信给微软,要求他们继续支持和开发 DLR 和 Iron 语言,你会使用什么论据?
如果您要说服您的雇主投入开发人员的时间来为尚未制作的 IronPython 或 IronRuby 的社区支持版本做出贡献,您将如何在商业价值方面使其合理化?
以下是我可以提出的几个有趣的用例,但如果我让经理思考上述问题,我可能不会觉得它们有说服力:
- 大型应用程序中的嵌入式脚本语言:一个有效的用例,但对于大多数开发人员来说似乎是一个小众场景。
- 测试和测试自动化:特别是 Ruby 有丰富的优秀测试工具和库可供选择,如果通过 IronRuby 让它们在 .NET 中可用,那就太好了。但似乎等效的 .NET 库正在填补这一空白,例如SpecFlow和Selenium 的 WebDriver。
- 在 Microsoft 堆栈上运行现有框架:如果 IronRuby 能够使 Ruby on Rails 能够在带有 IIS 和 MS SQL 的 Windows 上运行,这可能会鼓励在 Microsoft 堆栈上进行标准化的商店采用 RoR。
谁能想到更好的东西?
ruby - 什么时候在 Rails 中运行的 Ruby 类中包含模块?
我正在尝试编写一个方法来告诉我每个包含特定模块的类。看起来像这样 -
其中“Rateable”是我包含在多个模型中的模块。
我发现如果我在启动 rails 控制台或运行服务器后立即调用此方法,则会返回 []。但是,如果我首先实例化其中一个使用模型的实例,它将在结果中返回该模型。
那么什么时候包含模块呢?我猜这个过程比他的应用程序启动时晚。如果我不能在这个过程的早期以这种方式获得这些信息,有没有办法做到这一点?
language-agnostic - “method_missing”类型功能的合法用途是什么?
Ruby 有“method_missing”,Tcl 有“unknown”,大多数高度动态的语言都有一个等效的构造,当调用未定义的方法时会调用该构造。添加此类功能非常有意义;有些事情需要发生,并且没有理由不允许程序员重新定义该事情。添加起来相当简单,它可以制作一些简洁的“检查我的语言可以做什么”的演示。
这种行为在实际应用程序代码中真正有用的地方在哪里?
我能想到的只有:
- 也许对于在不展开堆栈的情况下启动调试器很有用(但我不确定这是否会算作“常规应用程序代码”,并且在大多数情况下异常也会起作用)。
- 对于“神奇的”代理对象.. 即在第一次使用时创建或加载而不更改接口的惰性对象(尽管这似乎很容易通过其他方式完成)。
还有其他合法用途吗?
澄清:我真的不认为“避免输入引号的语法糖”是合法的用途。别人可能会,我不会。
java - 从静态语言 (java/c#) 迁移到像 python 这样的动态语言的人的首要问题
对于从静态语言(java/c#)迁移到像 python 这样的动态语言的人来说,最大的问题是什么?
怎么做看起来很酷,但是重命名一个方法,或者添加/删除参数似乎太冒险了!
是为每种方法编写测试的唯一解决方案吗?
optimization - Steve Yegge 在“Dynamic Languages Strike Back”中提到的(当时)未发表的优化是什么?
我正在阅读 Steve Yegge 的Dynamic Languages Strike Back演示文稿的转录,当他开始讨论跟踪树时我注意到了这个评论:
老实说,我实际上有两个优化不能进入这个演讲,它们甚至比这更酷,因为它们还没有发布。在他们发表之前,我不想让猫从袋子里出来。所以这实际上只是冰山一角。
他指的优化是什么?
更新
几天前,我在一篇文章的评论中问了这个问题。但是,评论审核已打开(有 充分的 理由),因此尚未出现。
更新
自从我第一次尝试联系作者以来已经有几个星期了。有没有人知道其他联系方式?
c# - 发现 op_Addition 或 Expression.Add 的实现方法
我正在使用 Antlr 和表达式树编写一种语言。
我已经为我的树解析器定义了一个标准的工厂方法,以便在生成加法时使用,它对于内置的整数类型非常有效,现在我正在转向更通用的类型。
目前它非常天真,它只是这样做(进行中的 TDD 代码通常看起来很天真!?):
WherePromote7_2_6_2
生成遵循 C# 规范 7.2.6.2 规定的积分提升规则的 Convert 表达式(该语言将类似于 C#,但将与 JScript 交叉以及具有其他全新的关键字)。
自然地,我继续测试字符串添加 - 即"a" + "b";
我得到了错误:
System.InvalidOperationException: The binary operator Add is not defined for the types 'System.String' and 'System.String'.
很公平 - 我反映 System.String 并且确实没有定义该运算符。在这样的测试方法中生成表达式树:
表明确实创建了 Add BinaryExpression,但实现方法设置为其中一种string.Concat
方法。
我知道在某些情况下我将不得不考虑做这样的事情,但是有多少其他类型以这种方式定义加法?只是string
吗?
它是嵌入在 C# 编译器中的规则 - 还是有某种可发现的元数据可用于在其他类型上自动发现此类方法?
提前致谢!