当使用诸如Python,C++,D或Ruby等多范式语言时,您在单个应用程序中混合了范例多少?在单个模块内?你认为以细粒度混合功能性,过程性和面向对象的范例会产生更清晰,更简洁的代码,因为你对每个子问题使用正确的工具,或者因为你在做类似的事情有3种不同的方式?范式混合的粒度
Q
范式混合的粒度
2
A
回答
2
不同的范例以不同的方式混合。例如,使用OOP不会消除来自外部库的子例程和过程代码的使用。它只是将程序移到不同的地方。
单纯以一种范式编程是不可能的。当你编程时,你可能会认为你有一个单一的想法,但那是你的幻想。您的结果代码将沿着边界落地并在许多范例的范围内。
2
我不确定我是否曾经这样想过。
一旦你开始“在Ruby中思考”,多范式就会融入...... Ruby。
Ruby是面向对象的,但我发现,其他的东西,如功能方面往往意味着目前存在的一些面向对象语言的“传统”设计patters都只是单纯的不相关的。迭代器是一个经典的例子...迭代是在Ruby中优雅地处理的东西,重量级的OO迭代模式不再适用。这在整个语言中似乎都是真实的。
1
混合模式的优势在于让您以最自然和最自然的方式表达解决方案。当它帮助保持你的程序逻辑更小时,这是非常好的事情。例如,与传统循环相比,按照某些标准筛选列表比用功能性解决方案表达要简单几倍。另一方面,为了从混合两个或多个范例中获益,程序员应该对所有这些范例合理流利。所以这是应该小心使用的强大工具。
0
不同的问题需要不同的解决方案,但如果您在同一图层中以相同的方式解决问题,则会有所帮助。疯狂地变化会混淆你和项目中的其他人。对于C++,我发现静态类型的OOP(在Python中使用zope.interface)适用于更高级别的部分(连接,更新,信号等)和功能性的东西,可以解决许多较低级别的问题(解析,坚果'螺栓数据处理等)更好地。
通常,动态类型的脚本系统对于选择和配置特定的应用程序,游戏级别以及其他类型都是很好的选择。这可能是语言本身(即Python)或其他东西(xml脚本引擎+ C++中的动态链接所必需的系统)。
相关问题
- 1. OpenGL ES - 粒子效应的混合
- 2. gnuplot的细粒度范围(网格)
- 3. 细粒度的Google OAuth范围
- 4. C#规范模式混合检查器
- 5. 合并不同的粒度数据
- 6. 在立方体设计中处理操作期的混合粒度日期维
- 7. 合并/混合单元格作为公式参数的范围
- 8. 细粒度粗粒度加密API
- 9. 混合,混合模式自举在Safari
- 10. css混合混合模式和蒙版
- 11. 问题与移动/粒/ alpha混合在统一的iOS打造
- 12. 粒子和子画面之间的混合
- 13. 服务粒度
- 14. 粒度WSDL
- 15. 角度$范围与$ watch的混淆
- 16. 混合区间的数字范围
- 17. Rails 4 - 粒度权限模式
- 18. PNG混合模式
- 19. 混合模式CSS3
- 20. 混合格式CSV
- 21. 建筑中粗粒度/细粒度的定义
- 22. 混合精度分配
- 23. Fortran整数精度混合
- 24. 灰度混合与OpenGL?
- 25. 在图像中结合了背景混合模式和灰度
- 26. OpenGL ES - 使用添加剂混合渲染粒子效果(FBO)
- 27. XNA在背景上混合添加剂颗粒
- 28. GDI的混合公式+
- 29. SVG中的混合模式
- 30. Rails中的混合形式