java - 不同语言中静态代码和有状态代码分离的差异

标签 java php python perl static

我注意到 Java、Python、Perl 和 Haskell/Clojure 对静态函数的处理方式截然不同。特别是,

1) 不同语言中静态函数的实现和使用方式有何惯用差异。

2)其中一些语言是否比其他语言具有“更完整”的静态方法与有状态方法的分离和支持?

例如:

在 clojure 中,所有函数本质上都是静态的 - 允许极端的模块化可组合性,不与对象以太中的任何事物关联。对于 java 程序员来说,Clojure 函数式编程可以描述为类似于静态函数。

同时,在传统的惯用Java中,通常存在一种混合,其中面向对象的功能维护内部状态,依赖外部静态方法来进行某些通常无状态的转换操作。

然后是脚本世界:我注意到在 Perl 和 Python 中,区分静态代码与有状态代码的概念并没有那么强调(更新:根据评论 - 也许这是由于多范式自然)。

最后,我们有面向对象的 PHP-5 开发人员,他们在处理静态与有状态(对象作用域)函数方面的编码似乎与 Java 开发人员类似。

对于来自不同背景的不同程序员如何对待静态功能的差异的任何其他见解都将真正帮助我与一些与我一起工作的 PHP/Perl 开发人员一起审查代码。

最佳答案

相关的区别可能是语言所强调的编程范式。 Functional Haskell 和 Clojure 等语言旨在消除副作用并强调确定性;将可变性或状态封装在像 monad 一样的想法中。这与 Imperative 形成对比语言。 Perl 和 PHP 是多范式语言,因此可以实现命令式风格,例如面向过程和面向对象的编码,甚至可以模拟函数式风格。

在与命令式程序员合作时,可能值得关注松散耦合和无副作用的设计模式,例如 Dependency Injection .

关于java - 不同语言中静态代码和有状态代码分离的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8611211/

相关文章:

javascript - Facebook 应用程序问题 - 无法获取权限,不断刷新

python - 转储 Python 字典时出现错误,表示它是 Pandas DataFrame

Java NIO 从输入流读取大文件

java - block 大小为 n 的 Spring Batch 作业仅写入第 n 行 n 次

java - 更新 TextView 导致 Android 应用程序崩溃

PHP 注册函数未正确插入到 phpmyadmin 表中

java - Spring Boot 。 HMAC 认证。如何添加自定义 AuthenticationProvider 和 Authentication 过滤器?

javascript - 在开发 WordPress 插件时无法解决使用 cookie 已发送 header 的问题吗?

python - 如何将tab键发送到python子进程stdin

python - 如何在sympy中为变量的下标写求和符号