我是一个有点高级的C++/Java开发人员,最近对Python感兴趣,我非常喜欢它的动态类型和高效的编码风格.我目前在我的小编程需求上使用它,比如解决编程问题和编写脚本,但我很好奇是否有人在企业级项目中成功使用了Python?(最好使用现代编程概念,如OOP和某种类型的设计模式)
如果是这样,你能解释为什么你选择Python (特别是)并给我们从这个项目中学到的一些经验教训吗?(随意比较项目中的Python与Java等的使用)
我正在使用Python开发复杂的保险承保应用程序.
我们的应用软件基本上以公司可以订阅的形式重新包装我们的精算模型.这项业务是基于我们的精算师和他们深刻的思想.我们没有打包一个相对固定的聪明算法.我们通过网络服务向客户租用精算大脑.
精算师必须能够自由地进行变革,因为他们可以更深入地了解导致索赔的各种因素.
静态语言(Java,C++,C#)可以提前锁定数据模型.
Python允许我们拥有一个非常灵活的数据模型.他们可以自由添加,更改或删除因素或信息源,而无需大量的开发成本和复杂性.鸭子打字允许我们在没有大量返工的情况下引入新的作品.
我们的软件是一种服务(不是包),所以我们有一个无休止的集成问题.
静态语言需要复杂的映射组件.通常是某种可配置的,XML驱动的映射,从客户消息到我们不断变化的内部结构.
Python允许我们将映射作为一个简单的Python类定义,我们只需调整,测试和投入生产.这个模块没有任何限制 - 它是一流的Python代码.
我们必须做广泛的,长期运行的概念验证.这些涉及众多具有不同数据馈送和自定义功能的"假设"场景.
静态语言需要经过仔细的规划和思考才能创建另一个演示,还有另一个客户提供的文件映射到当前版本的精算模型.
Python需要更少的计划.鸭子打字(和Django)让我们敲出一个没有太多痛苦的演示.数据映射是简单的python类定义; 我们的精算模型处于相当稳定的通量状态.
我们的业务模式需要经过一定程度的协商.我们与信息提供商的合同相当复杂; 这些并不像精算模型那样频繁变化,但这里的变化需要定制.
静态语言在关于合同的假设中绑定,并且需要相当复杂的设计(或变通方法)来处理商业伙伴谈判交易的大脑屁.
在Python中,我们使用广泛的测试套件并进行大量重构,因为各种合同条款和条件都向我们传达.
每周我们都会得到一个类似"我们能处理像X这样的规定吗?"的问题.我们的标准答案是"绝对".接下来是一小时的重构,以确保我们可以处理它,如果交易以这种形式达成.
我们主要是一个RESTful Web服务.Django开箱即用了很多.我们必须编写一些扩展,因为我们的安全模型比Django提供的安全模型更严格.
静态语言不必发送源代码.不喜欢安全模型?支付供应商$$$.
动态语言必须作为源提供.在我们的例子中,我们花时间仔细阅读Django的来源,以确保我们的安全模型与Django的其余部分完全吻合.我们不需要 HIPAA合规,但无论如何我们都在构建它.
我们使用信息提供商提供的Web服务.urllib2很适合我们.我们可以快速建立界面原型.
使用静态语言,你有API,你写,你运行,你希望它工作.开发周期是编辑,编译,构建,运行,崩溃,查看日志; 这只是为了使界面达到峰值,并确保我们拥有正确的协议,凭据和配置.
我们在交互式Python中运行界面.由于我们以交互方式执行它,我们可以立即检查响应.开发周期缩短为Run,Edit.我们可以在下午加入Web服务API.