3 回答
TA贡献1802条经验 获得超5个赞
他们每个人都有自己的优点-他们只是解决相同问题的不同方法。
在纯粹的过程样式中,数据往往与对其上运行的功能高度去耦。
在面向对象的风格中,数据倾向于带有一系列功能。
在功能样式中,数据和功能趋向于彼此之间具有更多的共同点(如Lisp和Scheme),同时在实际使用功能方面提供了更大的灵活性。还倾向于根据递归和组合而不是循环和迭代来定义算法。
当然,语言本身只会影响首选哪种样式。即使使用像Haskell这样的纯函数式语言,也可以以过程样式(尽管不鼓励这样做)编写,甚至可以使用像C这样的过程语言,以面向对象的样式(例如GTK +和EFL API)。
需要明确的是,每个范例的“优势”仅在于算法和数据结构的建模。例如,如果您的算法涉及列表和树,那么功能性算法可能是最明智的。或者,例如,如果您的数据是高度结构化的,那么如果这是您语言的本机范式,则将其组合为对象可能更有意义-或者,可以将其简单地编写为monad的功能抽象,是Haskell或ML之类的语言的原生范例。
您选择使用哪种方法,对于您的项目和语言支持的抽象才更有意义。
TA贡献2011条经验 获得超2个赞
我认为这些天可用的库,工具,示例和社区完全取代了范例。例如,ML(或其他任何语言)可能是最终的通用编程语言,但是如果您无法为正在做的事情获得任何好的库,那么您就搞砸了。
例如,如果您要制作视频游戏,那么C ++中会有更多优秀的代码示例和SDK,因此您可能会更好。对于小型Web应用程序,有一些很棒的Python,PHP和Ruby框架可以使您快速启动并运行。由于编译时检查以及企业库和平台,Java是大型项目的理想选择。
过去,用于不同语言的标准库非常小,易于复制-C,C ++,Assembler,ML,LISP等。这些库具有基础知识,但是当涉及到事物标准化时,往往会屈服像网络通讯,加密,图形,数据文件格式(包括XML),甚至基本的数据结构(如平衡树和哈希表)都被忽略了!
如今,Python,PHP,Ruby和Java等现代语言都提供了更为完善的标准库,并且您可以轻松使用许多优秀的第三方库,这在很大程度上要归功于它们采用了命名空间,以防止库彼此冲突,和垃圾回收,以标准化库的内存管理方案。
- 3 回答
- 0 关注
- 460 浏览
添加回答
举报