目前,我在学术环境中进行编程,因此我可以使用任何我想使用的东西。我在使用Boost图形库做一些事情,并且想知道是否值得花更多的精力来更深入地了解GP。
我很好奇-通用编程(GP)在行业中使用率很高吗?我的猜测是,大多数程序员更喜欢OOP或使用不强调或不支持GP的语言,因此,除了在C ++中调用STL数据结构/函数外,我的印象是GP并不是经常使用在实践中。但是,由于目前不在行业内,因此很高兴听到从业者的来信。
(在撰写本文时,我看到通用编程甚至不是有效的标签!)
目前,我在学术环境中进行编程,因此我可以使用任何我想使用的东西。我在使用Boost图形库做一些事情,并且想知道是否值得花更多的精力来更深入地了解GP。
我很好奇-通用编程(GP)在行业中使用率很高吗?我的猜测是,大多数程序员更喜欢OOP或使用不强调或不支持GP的语言,因此,除了在C ++中调用STL数据结构/函数外,我的印象是GP并不是经常使用在实践中。但是,由于目前不在行业内,因此很高兴听到从业者的来信。
(在撰写本文时,我看到通用编程甚至不是有效的标签!)
Answers:
我很好奇-通用编程(GP)在行业中使用率很高吗?
实际上,它很大程度上取决于团队和项目的环境。
例如,在视频游戏中,代码通常是“最简单”的(甚至有时过于简单),但在大型体系结构中。这是因为游戏开发人员有很多问题需要解决,并且不想打扰元编程(这是一种单独的非常抽象并且很难在C ++中使用的语言)。
同时,即使在那些商店中,模板的基本用法也很常见,您可以在某些引擎的某些非常特定的功能中看到一些基于模板的优化。
但是在游戏开发人员中,大多数人只会避免执行任何元编程。
现在,另一方面,由于不常见的性能和灵活性(在编译时)要求,某些不常见的真正复杂或繁重的处理应用程序需要某种繁重的元编程。我现在正在合力工作。
它并不常见,但它确实存在,并且某些利基领域(在某些科学或数字运算的嵌入式环境中)确实要求人们对元编程了解很多或希望学习。
在中间,大多数人只会将元编程用作“客户端”,而不是“设计师”。大多数元编程代码都捆绑在库中,因为库是用于代码的工具,还有什么比可以适应您迄今为止使用的自定义类型的库更好的呢?
Boost(http://boost.org)是一组库,其中一些库是由繁重的元编程黑魔法构成的,并且在许多C ++商店中都使用“ STL ++”作为STL的扩展(并且是)。并非每家商店都使用它是出于多种原因,例如编译器兼容性(某些Boost库可以使您的编译器在每次伤害您的感觉时都表示原谅...),而更多的时候是因为某些开发人员不喜欢无法理解工具在内部的工作方式(尝试了解Boost.Spirit ...)
无论您要工作的公司是什么,有些公司都会使用这种范例,有些公司会或多或少或什至禁止它们。
没有共识,因为没有人拥有相同的需求,背景或团队。
但是,显然,它仍然被使用。也许请问谁在他们的邮件列表上使用了boost来获取更多真实示例?
我很好奇-通用编程(GP)在行业中使用率很高吗?
泛型编程在学术上通常被称为参数多态性。在我公司,我们主要使用它来建立类型独立的数据编辑器,而不论其类型如何。您只是不像其他功能那样经常使用它,但这绝对是我不想错过的功能。当行为适合大量类型时,可以使用它。很明显,当您发现自己多次针对不同类型编写相同的代码时,就需要泛型。
我的猜测是,大多数程序员更喜欢OOP或使用不强调或不支持GP的语言,因此,除了在C ++中调用STL数据结构/函数外,我的印象是GP并不是经常使用在实践中。
至少从我的经验来看,您的观点是错误的。OOP和通用编程不是互斥的。实际上,您应该结合使用它们的协同作用。就像我之前说过的那样,您看不到它出现的频率与其他技术一样高是因为您不需要那么频繁。但这是一个强大的功能,可以极大地帮助您保持代码DRY的状态。哪种语言没有真正强调GP在高级编程中的支持?Tiobe Top 5的5种语言中的3种支持泛型/模板。而且PHP是动态类型的,因此实际上并不需要它们。所以呢?