2009-02-21 10 views
6

Ich habe eine breite, schlecht gestaltete Web-Portfolio bei meiner Arbeit geerbt. Die meisten Seiten sind in Perl geschrieben, da die meisten Daten, die auf der Website aufgenommen, verarbeitet und angezeigt werden, in Form von Flat-Files vorliegen, die dann in unseren MySQL- und Oracle-Datenbanken sorgfältig regexed und datenbankgestützt werden müssen.Gemischte Sprache Web-Entwicklungsumgebungen

Als erste IT-ausgebildete Manager dieser Umgebung, ich nehme es auf mich selbst, um die Websites zu schrubben und einige Struktur in den Entwicklungsprozess zu legen. Eine der Möglichkeiten, die mir gegeben wurde, ist zu wählen, ob ich in Perl weitermachen soll oder nicht. Es gibt ein großes Inhouse-Talent für Java und PHP ist ziemlich einfach zu erlernen. Ich habe darüber nachgedacht, den Entwicklern die Zügel aus der Hand zu nehmen und ihnen die Sprache zu überlassen, die sie für ihre Seiten verwenden möchten, aber das klingt vielleicht problematisch, wenn der Typ, der PHP gewählt hat, von einem Bus angefahren wird. Im Laufe der Jahre wird die Einstellung von Perl-Programmierern immer schwieriger und die Komplexität der Beibehaltung von Legacy-Perl-Code von früheren Entwicklern, deren Hauptaugenmerk möglicherweise darauf gerichtet war, eine Seite zu erstellen, wird sehr ressourcenintensiv. Ein anderer, früherer (Nicht-IT-) Manager konzentrierte sich eher auf die schnelle Bearbeitung und sofortige Befriedigung der Seiten, als sicherzustellen, dass es beim ersten Mal richtig gemacht wurde (er wurde seitdem außerhalb unserer Niederlassung befördert).

Der Produktionsserver ist Solaris. MySQL hat die meisten unserer Daten, aber neue Projekte haben begonnen, Oracle immer häufiger zu verwenden (für GIS-Daten). Webserver sind universell Apache. Wir leben in einem Intranet, das vom normalen Internet getrennt ist. Unsere Entwicklung wird auf agile, iterative Weise durchgeführt.

In welcher Sprache auch immer geforscht wird, es gibt Ressourcen, um das vorhandene Entwicklungspersonal neu zu trainieren. Egal was passiert, die Daten, die in unsere Umgebung kommen, müssen zu Tode gefüttert werden, damit Perl nicht in absehbarer Zeit verschwindet. Meine Frage an die Community lautet: Was sind die Vor- und Nachteile der folgenden Sprachen für die oben definierte Web-Entwicklungsumgebung: Perl, PHP, Java, Python und - fügen Sie hier Ihre Lieblingssprache ein. Wenn Sie es noch einmal machen müssten, welches Sprachsetup hätten Sie gewählt?

Bearbeitungen und Erläuterungen: Lassen Sie mich ein wenig auf meinem ursprünglichen Beitrag klären. Ich werfe nicht alles weg. Mir wurde die Möglichkeit gegeben, den Kurs des Schiffes an etwas anzupassen, von dem ich glaube, dass es ein besserer Kurs ist. Selbst wenn ich eine neue Sprache wähle, wird der Perl-Code noch einige Zeit lang verfügbar sein.

Wenn ich Assembly als meine neue Sprache (haha) wähle, müsste ich die alten Entwickler wahrscheinlich auf den neusten Stand bringen, indem ich sie in einige grundlegende Assembly-Klassen schicke. Neue Seiten/Projekte wären in der neuen Sprache und die alten Seiten/Projekte müssten mit den neuen Seiten/Projekten gut spielen. Einige könnten eines Tages in die neue Sprache umgeschrieben werden, manche werden nie geändert.

Was wahrscheinlich immer in Perl sein wird, werden die Parsing-Skripte sein, die wir vor Jahren geschrieben haben, um Datenbankinformationen aus den flachen Dateien zu durchsuchen. Aber das ist in Ordnung, weil sie nicht mit den Webseiten interagieren, sondern mit der Datenbank interagieren.

Vielen Dank für Ihre Eingabe, es war bisher sehr, sehr hilfreich.

Antwort

13

Es scheint, dass Ihr Problem mehr Legacy-Code und informelle Entwicklungsmethodik als die Sprache per se ist. Wenn Sie also bereits Perl-Entwickler haben, können Sie Ihre Methoden und Codebasis modernisieren, anstatt in eine neue Sprache zu wechseln und eine heterogene Codebasis zu erstellen.

Modern Perl bietet eine Menge in Bezug auf bewährte Praktiken und leistungsstarke Tools: Testen betont wird, mit den Test::* Modulen und WWW::Mechanize können Datenbank-Interaktion durch Ebene DBI getan werden, aber auch ORM Module wie das ausgezeichnete DBIx::Class verwenden, OO mit Moose ist jetzt auf Augenhöhe mit modernen Sprachen, mod_perl gibt Ihnen Zugriff auf eine Menge Macht innerhalb von Apache. Es gibt auch einige MVC frameworks für Perl. Eine, die viel Aufmerksamkeit bekommt, ist Catalyst.

Investieren Sie in ein paar Kopien von Perl Best Practices, bringen Sie einen richtigen Trainer für ein paar Unterrichtsstunden über moderne Entwicklungsmethoden mit und ändern Sie die Kultur Ihrer Gruppe.

Und wenn Sie Probleme haben, Entwickler zu finden, die Perl bereits beherrschen, können Sie immer gute PHP-Leute einstellen und sie trainieren, das sollte nicht zu schwierig sein. Zumindest ihre Bereitschaft, eine neue Sprache zu lernen, wäre ein gutes Zeichen für ihre Flexibilität und ihren Willen, sich zu verbessern.

Es ist immer verlockend, den Zustand Ihres Codes der Sprache zuzuschreiben, in der er geschrieben wurde, aber in Ihrem Fall bin ich mir nicht sicher, ob das der Fall ist. Lots of big companies scheint kein Problem zu haben, riesige Codebasen in Perl zu verwalten, die Liste ist lang, aber die wichtigsten Web-Unternehmen sind alle da, zusammen mit einer Reihe von Finanzinstituten.

+1

Catalyst ist auch ideal für Web-Arbeit, die Legacy-Bits zusammenkleben müssen. Dinge wie Catalyst :: Controller :: WrapCGI und Catalyst :: View :: PHP sind speziell für diese Art von Klebstoff entwickelt. – singingfish

0

Ich denke, die Wahl einer einzigen Sprache ist der Schlüssel und wenn Ihre Datenbank hauptsächlich MySQL ist, dann scheint PHP die offensichtliche Wahl zu sein. Es funktioniert natürlich mit Ihrer Datenbank, es ist Open Source und es gibt Tonnen von Dokumentation, Quellcode, erfordert keine Kompilierung, etc.

Menschen kommen und gehen durch Positionen und jede Website wird sich im Laufe der Zeit entwickeln.Wenn Sie die Möglichkeit haben, einige Richtlinien und Regeln festzulegen, würde ich etwas wählen, das verzeihend, allgemeingültig und einfach zu erlernend ist.

Ich würde es auch schriftlich vorschlagen, nach unten, damit die Menschen in der Zukunft nicht das Rad neu erfinden.

+1

Jede moderne Sprache funktioniert mit mysql, also ist die Auswahl von PHP für die MySQL-Unterstützung ein dummer Grund. Ich sage nicht, dass Sie nicht PHP wählen sollten, nur dass dies kein guter Grund dafür ist. – mpeters

+1

mpeters ist richtig, MySQL allein ist kein guter Grund. Man könnte argumentieren, dass der Wechsel zu einem Standard-LAMP-Stack die Suche nach Entwicklern erleichtert, aber auch JAVA-Programmierer sind leicht zu finden. Gute Entwickler für jede Sprache zu finden, wird immer noch ein Problem sein. – acrosman

1

Wenn Regex wichtig ist, würde ich eine Sprache mit guter Unterstützung wählen.

Wenn Sie Java verwenden würden, werden Sie nicht in der Lage sein, nur einfügen kopieren Sie Ihre regex Code aus dem Perl-Code, weil die Schrägstriche zu entkommen. Also würde ich gegen Java stimmen.

Ich bin nicht vertraut mit PHP genug, um seine Regex Funktionen zu wissen, aber Ihre Entscheidungen gegeben würde ich für Python gehen. Sie können saubereren Code in Python erstellen.

Würde Rubin auch eine Option sein? Es hat auch gute Perl Regex-Unterstützung und Rails unterstützt agile Web-Entwicklung aus der Box.

1

zunächst lassen Sie mich darauf hinweisen, dass MySQL's spatial extensions work with GIS.

Zweitens, wenn Sie eine Reihe von Perl-Programmierer, die Schlepptau ork auf den neuen Standorten benötigen, dann ist die beste Wahl, etwas zu wählen, werden sie nicht zu viel Mühe Verständnis. Das offensichtliche "Etwas" ist PHP. Als ich PHP gelernt habe, habe ich vor ein paar Jahren Perl gemacht und PHP in kürzester Zeit aufgegriffen.

Umstellung auf so etwas wie Java oder .Net (oder auch Ruby on Rails) wäre ein weitaus dramatischer Wandel im Design sein.

Plus mit Apache-Servern haben Sie bereits Ihre Umgebung eingerichtet und Sie können wahrscheinlich jede Entwicklung als eine Mischung aus Perl und PHP relativ einfach inszenieren.

Was den letzten Teil Ihrer Frage: Was würden Sie tun, in es, wenn Sie es wieder über tun könnte? Für mich ist das eine getrennte und grundsätzlich irrelevante Frage. Tatsache ist, dass du dich nicht zurückziehst und neu anfängst, du fängst einfach ... von vorne an. Die Unterstützung, der Übergang, die Entwicklung von Fähigkeiten und all die anderen Themen sind also viel wichtiger als jede hypothetische Frage, was Sie in einer perfekten Welt wählen würden, wenn alle anderen Dinge gleich wären.

Liebe es oder hasse es, PHP ist populär und geht nirgendwohin bald. Geschickte Leute zu finden, um es zu tun, ist nicht allzu schwierig (nun, die Schwierigkeit besteht darin, sie aus den Autodidakten zu filtern, die denken, dass sie Code schreiben können, aber nicht können) und es ist kein weiter Schritt von Web-basiertem Perl.

5

Ich würde jemanden bringen, der sehr gut ist Perl, zumindest auf das aktuelle Design zu sehen. Sie könnten Ihnen sagen, wie schlecht der Code Perl wirklich ist und was getan werden muss, um ihn in gute Form zu bringen.

An diesem Punkt würde ich beginnen, über meine Optionen nachzudenken. Wenn der Perl Code retten kann, gut als groß, stellen Sie jemanden ein, der in Perl kompetent ist. Trainieren Sie auch einige Ihrer vorhandenen Mitarbeiter, um auf der bestehenden Codebasis zu helfen. Wenn Sie nicht jemanden haben, der in Perl verantwortlich für den Code Perl kompetent ist, kann Ihre Code-Basis sogar noch schlechter als es bereits ist.

Nur wenn es in schrecklicher Form war, würde ich darüber nachdenken, es für eine andere Sprache aufzugeben. Was diese Sprache ist, darüber wirst du selbst nachdenken müssen.

p.s. Ich bin ein bisschen voreingenommen, ich bevorzuge Perl

1

Wenn Ihre Entwickler gut sind, werden sie in der Lage sein, alles, was auf sie geworfen wird, zu behandeln. Entscheiden, welche Sprache zu verwenden ist eine ziemlich schwierige strategische Position, aber ich empfehle Ihnen, sehr sorgfältig zu überlegen, bevor Sie weitere einführen (d. H. Nicht).

Es sei denn natürlich, es gibt etwas, das Sie absolut nicht tun können (oder nicht tun können) mit dem, was Sie haben.

Verwandte Themen