在我的工作中,我继承了一个广泛的,设计不良的网络组合.大多数页面都是用Perl编写的,因为站点上摄取,处理和显示的大多数数据都是平面文件的形式,然后必须在我们的MySQL和Oracle数据库中进行精心复制和数据库处理.
作为这个环境中第一个经过IT培训的经理,我正在自己去研究网站并为开发过程奠定一些结构.我给出的一个选择是选择是否继续使用Perl.Java拥有丰富的内部人才,PHP非常容易学习.我已经考虑过从开发人员那里拿走缰绳并让他们选择他们想要用于他们页面的任何语言,但是如果选择PHP的人被公共汽车击中并且其他任何人都无法修复它,那就好像很麻烦.
随着岁月的流逝,招聘Perl的程序员变得越来越困难,以及维护传统Perl代码的复杂性,以前的开发人员主要关注的可能只是让页面启动并运行,这变得非常耗费资源.另一位前任(非IT)经理更专注于快速周转和立即满足页面,而不是确保第一次就做好(他已经在我们的分支机构之外晋升).
生产服务器是solaris.MySQL拥有我们的大部分数据,但新项目已经开始越来越多地使用Oracle(用于GIS数据).Web服务器普遍是Apache.我们住在与常规互联网断开的内部网中.我们的开发是以敏捷,迭代的方式进行的.
无论选择何种语言进行推进,都有资源让现有的开发人员重新接受培训.无论如何,进入我们环境的数据都必须被重新编写为死亡,因此perl不会很快消失.我向社区提出的问题是,上面定义的web开发环境有以下几种语言的优缺点:Perl,PHP,Java,Python,以及 - 在这里插入你最喜欢的语言 - .如果你要重新做一遍,你会选择哪种语言设置?
编辑和澄清: 让我在原帖上澄清一下.我不会扔掉所有东西.我有机会将船的航向调整到我认为更好的航向.即使我选择了一种新语言,perl代码也会存在一段时间.
假设,如果我选择汇编作为我的新语言(哈哈),我必须通过将它们发送到一些基本的汇编类来让旧开发人员加快速度.新页面/项目将使用新语言,旧页面/项目必须与新页面/项目一起使用.有些人可能有一天会被改写成新语言,有些可能永远不会改变.
Perl中可能永远存在的将是我们多年前编写的解析脚本以及平面文件中的数据库信息.但这没关系,因为它们不与网页连接,而是与数据库连接.
感谢大家的投入,到目前为止它非常有用.
似乎您的问题是遗留代码和非正式开发方法,而不是语言本身.因此,如果您已经有员工的Perl开发人员,为什么不开始现代化您的方法和代码库,而不是切换到新语言,并创建异构代码库.
现代Perl在良好实践和强大工具方面提供了很多:强调测试,使用Test ::*模块和WWW :: Mechanize,数据库交互可以通过简单的DBI完成,但也可以使用ORM模块,如优秀的DBIx ::类,使用Moose的 OO 现在与更现代的语言相提并论,mod_perl使您可以在Apache中获得大量功能.Perl 也有不少MVC框架.引起很多关注的是Catalyst.
投资一些Perl最佳实践的副本,为现代开发方法的几个课程引入适当的培训师,并开始改变您的团队的文化.
如果你很难找到已经熟练掌握Perl的开发人员,你可以随时雇用优秀的PHP人员并对他们进行培训,这应该不会太困难.至少他们学习一门新语言的意愿将是他们灵活性和改进意愿的良好信号.
总是很容易将代码的状态归咎于它所写的语言,但在你的情况下,我不确定是这种情况.很多大公司似乎都没有问题在Perl中管理庞大的代码库,这个名单很长,但主要的Web公司都在那里,还有许多金融机构.
我会带一个非常擅长的人Perl
,至少看看当前的设计.他们可以告诉你Perl
代码到底有多糟糕,以及需要做些什么才能使代码处于良好状态.
那时我会开始考虑我的选择.如果Perl
代码是可以挽救的,那么就好了,雇用精通的人Perl
.同时培训一些现有员工,以帮助完成现有的代码库.如果你没有一个人精通不Perl
负责的Perl
代码,你的代码库可能会变得更糟比它已经是.
只有它的形状很糟糕,我才会考虑放弃它用于另一种语言.那种语言是什么,这是你自己必须要考虑的事情.
ps我有点偏颇,我更喜欢 Perl