在我的工作中,我继承了一个广泛的,设计不良的网络组合。大多数页面都是用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中可能永远存在的将是我们多年前编写的解析脚本以及平面文件中的数据库信息。但这没关系,因为它们不与网页连接,而是与数据库连接。
感谢大家的投入,迄今为止它非常有用。
答案 0 :(得分:13)
似乎您的问题是遗留代码和非正式开发方法,而不是语言本身。因此,如果您已经有员工的Perl开发人员,为什么不开始现代化您的方法和代码库,而不是切换到新语言,并创建异构代码库。
Modern Perl在良好实践和强大工具方面提供了很多:强调测试,使用Test::*模块和WWW::Mechanize,数据库交互可以通过普通{{3}完成而且,使用ORM模块,如优秀的DBI,OO与DBIx::Class现在与更现代的语言相提并论,Moose使您可以在Apache中获得大量的权力。 Perl也有很多mod_perl。受到很多关注的是MVC frameworks。
投资一些Catalyst的副本,为几个关于现代发展方法的课程引进适当的培训师,并开始改变你的团队的文化。
如果您无法找到已经熟练掌握Perl的开发人员,您可以随时雇用优秀的PHP人员并对其进行培训,这应该不会太困难。至少他们学习新语言的意愿将是他们灵活性和改进意愿的良好信号。
总是很容易将代码的状态归咎于它所写的语言,但在你的情况下,我不确定是这种情况。 Perl Best Practices似乎没有问题在Perl中管理庞大的代码库,列表很长,但主要的Web公司都在那里,还有许多金融机构。
答案 1 :(得分:5)
我会引进一位非常擅长Perl
的人,至少看看当前的设计。他们可以告诉你Perl
代码到底有多糟糕,以及需要做些什么才能使它成型。
那时我会开始考虑我的选择。如果Perl
代码可以挽救,那么请雇用精通Perl
的人。同时培训一些现有员工,以帮助完成现有的代码库。如果您没有精通Perl
负责Perl
代码的人,您的代码库可能会变得比现在更糟糕。
只有它的形状很糟糕,我才会考虑放弃它用于另一种语言。那种语言是什么,这是你自己必须要考虑的事情。
P.S。我有点偏颇,我更喜欢Perl
答案 2 :(得分:1)
如果正则表达式很重要,我会选择一种有良好支持的语言。
如果你使用java,你将无法从perl代码中复制粘贴你的正则表达式代码,因为必须转义斜杠。所以我会投票反对java。
我不熟悉php足以知道它的正则表达式功能,但考虑到你的选择,我会选择python。您可以在python中创建更干净的代码。
红宝石也可以选择吗?它还具有良好的perl,如正则表达式支持,rails支持开箱即用的敏捷Web开发。
答案 3 :(得分:1)
首先让我指出MySQL's spatial extensions work with GIS。
其次,如果你有一群Perl程序员需要在新网站上使用ork,那么你最好的选择是选择一些他们不会有太多麻烦理解的东西。显而易见的“东西”就是PHP。当我学习PHP时,我在几年前做了一些Perl,并且很快就拿起了PHP。
切换到Java或.Net(甚至Ruby on Rails)这样的设计将是一个更为戏剧性的转变。
另外,对于Apache服务器,您已经设置了环境,并且可以合理地轻松地将任何开发作为Perl和PHP的混合进行。
关于你问题的最后一部分:如果你能再做一遍,你会怎么做?对我来说,这是一个单独的,基本上无关紧要的问题。事实上,你并没有倒退和重新开始,你只是......重新开始。因此,如果所有其他事情都是平等的,那么遗产支持,转型,技能发展和所有其他问题远比任何假设的问题重要得多,这个问题是你在完美世界中选择的内容。
喜欢它或讨厌它,PHP很受欢迎,很快就会无处可去。寻找狡猾的人来做这件事并不是太困难(好吧,教师们将他们从那些认为自己可以编码但不能自学的牛仔剧员那里过滤出来),这与基于网络的Perl相差不远。 / p>
答案 4 :(得分:1)
如果你的开发人员有任何好处,他们将能够处理任何被抛出的东西。决定使用哪种语言是一个非常棘手的战略位置,但我建议你在引入任何更多(即不要)之前仔细考虑。
当然,除非你有什么东西是绝对不能做的(或者不能做得很好)。
答案 5 :(得分:0)
我认为选择单一语言是关键,如果您的数据库主要是MySQL,那么PHP似乎是显而易见的选择。它自然适用于您的数据库,它是开源的,有大量的文档,源代码,不需要编译等。
人们来到并经历职位,任何网站都会随着时间的推移而发展。如果你有能力设定一些指导方针和规则,我会选择宽容,普通和易于学习的东西。
我也建议把它写下来,以便将来人们不再重新发明轮子。