2009-02-21 11 views
6

Tôi đã thừa hưởng danh mục đầu tư web được thiết kế rộng, không đúng với công việc của mình. Hầu hết các trang được viết bằng Perl vì hầu hết dữ liệu được nhập, xử lý và hiển thị trên trang web đều dưới dạng tệp phẳng, sau đó phải được tỉ mỉ tỉ mỉ và dữ liệu trong cơ sở dữ liệu MySQL và Oracle của chúng tôi.Môi trường web dev ngôn ngữ hỗn hợp

Là người quản lý CNTT được đào tạo đầu tiên về môi trường này, tôi tự mình nghiên cứu các trang web và đặt một số cấu trúc cho quá trình phát triển. Một trong những lựa chọn mà tôi đã đưa ra là chọn xem có tiếp tục trong Perl hay không. Có rất nhiều tài năng trong nhà cho Java và PHP khá dễ học. Tôi đã xem xét việc giải phóng các nhà phát triển và cho phép họ chọn bất kỳ ngôn ngữ nào họ muốn sử dụng cho trang của họ nhưng điều đó nghe có vẻ rắc rối nếu người chọn PHP bị xe buýt đâm và không ai khác có thể sửa nó. Những năm tháng trôi qua, việc thuê các lập trình viên Perl ngày càng trở nên khó khăn và phức tạp trong việc duy trì mã Perl cũ từ các nhà phát triển trước đó mà trọng tâm chính của họ có thể chỉ là việc thiết lập và chạy trang đang trở nên rất tốn kém. Người quản lý khác (trước đây không phải CNTT) tập trung nhiều hơn vào việc quay vòng nhanh chóng và thỏa mãn ngay lập tức các trang hơn là đảm bảo rằng nó được thực hiện ngay lần đầu tiên (kể từ khi ông được thăng cấp bên ngoài chi nhánh của chúng tôi).

Máy chủ sản xuất là solaris. MySQL có hầu hết dữ liệu của chúng tôi nhưng các dự án mới đã bắt đầu sử dụng Oracle ngày càng nhiều (đối với dữ liệu GIS). Máy chủ web là phổ biến Apache. Chúng tôi sống trong mạng nội bộ bị ngắt kết nối khỏi internet thông thường. Sự phát triển của chúng tôi được tiến hành một cách nhanh chóng, lặp đi lặp lại.

Bất kỳ ngôn ngữ nào được chọn để thúc đẩy, có các nguồn lực để nhân viên phát triển hiện có được đào tạo lại. Không có vấn đề gì, dữ liệu đi vào môi trường của chúng tôi sẽ phải được regexed đến chết vì vậy perl sẽ không biến mất bất cứ lúc nào sớm. Câu hỏi của tôi đối với cộng đồng là, những ưu và nhược điểm của các ngôn ngữ sau cho môi trường web dev được xác định ở trên là gì: Perl, PHP, Java, Python và - đưa ra ngôn ngữ yêu thích của bạn ở đây--. Nếu bạn đã làm nó lặp lại, bạn sẽ chọn ngôn ngữ nào?

Chỉnh sửa và giải thích: Hãy để tôi làm rõ một chút về bài đăng gốc. Tôi không vứt đi mọi thứ. Tôi đã có cơ hội điều chỉnh quá trình của con tàu theo những gì tôi tin là một nhóm tốt hơn. Ngay cả khi tôi đã chọn một ngôn ngữ mới, mã perl sẽ được khoảng một thời gian tới. Nói một cách giả thuyết, nếu tôi chọn Assembly làm ngôn ngữ mới của tôi (haha), tôi sẽ phải nâng cấp các nhà phát triển cũ bằng cách gửi chúng đến một số lớp lắp ráp cơ bản. Các trang/dự án mới sẽ bằng ngôn ngữ mới và các trang/dự án cũ sẽ phải chơi đẹp với các trang/dự án mới. Một số ngày có thể được viết lại thành ngôn ngữ mới, một số có thể không bao giờ được thay đổi.

Điều gì có thể sẽ luôn ở trong Perl sẽ là các tập lệnh phân tích cú pháp mà chúng tôi đã viết năm trước để sàng lọc và thông tin cơ sở dữ liệu từ các tệp phẳng. Nhưng đó là okay bởi vì họ không giao tiếp với các trang web, họ giao diện với cơ sở dữ liệu.

Cảm ơn tất cả các bạn đã nhập, nó đã rất hữu ích cho đến nay.

Trả lời

13

Có vẻ như vấn đề của bạn là mã kế thừa và phương pháp phát triển không chính thức hơn ngôn ngữ. Vì vậy, nếu bạn đã có các nhà phát triển Perl trên nhân viên, tại sao không bắt đầu hiện đại hóa các phương pháp và cơ sở mã của bạn, thay vì chuyển sang một ngôn ngữ mới và tạo ra một cơ sở mã không đồng nhất.

Modern Perl cung cấp rất nhiều về thực hành tốt và các công cụ mạnh mẽ: thử nghiệm được nhấn mạnh, với sự Test::* module và WWW::Mechanize, tương tác cơ sở dữ liệu có thể được thực hiện thông qua đồng bằng DBI, mà còn sử dụng các module ORM như tuyệt vời DBIx::Class, OO với Moose bây giờ là ngang bằng với các ngôn ngữ hiện đại hơn, mod_perl cho phép bạn truy cập vào rất nhiều quyền lực trong Apache. Ngoài ra còn có một vài MVC frameworks cho Perl. Một trong đó là nhận được rất nhiều sự chú ý là Catalyst.

Đầu tư vào một vài bản sao của Perl Best Practices, mang đến một huấn luyện viên thích hợp cho một vài lớp về phương pháp phát triển hiện đại và bắt đầu thay đổi văn hóa nhóm của bạn.

Và nếu bạn gặp khó khăn trong việc tìm kiếm các nhà phát triển đã thành thạo trong Perl, bạn luôn có thể thuê người PHP tốt và đào tạo họ, điều đó không quá khó. Ít nhất họ sẵn lòng học một ngôn ngữ mới sẽ là một dấu hiệu tốt cho sự linh hoạt của họ và sẽ cải thiện.

Việc luôn đổ lỗi cho nhà nước về mã của bạn bằng ngôn ngữ được viết, nhưng trong trường hợp của bạn, tôi không chắc chắn là như vậy. Lots of big companies dường như không có vấn đề gì khi quản lý các cơ sở mã lớn trong Perl, danh sách dài nhưng các công ty Web chính đều ở đó, cùng với một số tổ chức tài chính.

+1

Chất xúc tác cũng rất tuyệt vời cho công việc trên web cần gắn các bit cũ lại với nhau. Những thứ như Catalyst :: Controller :: WrapCGI và Catalyst :: View :: PHP được thiết kế đặc biệt để cung cấp loại keo này. – singingfish

0

Tôi nghĩ rằng việc chọn một ngôn ngữ là chìa khóa và nếu cơ sở dữ liệu của bạn chủ yếu là MySQL, thì PHP có vẻ như là sự lựa chọn hiển nhiên. Nó tự động làm việc với cơ sở dữ liệu của bạn, nguồn mở và có rất nhiều tài liệu, mã nguồn, không yêu cầu biên dịch, v.v.

Mọi người đến và đi qua các vị trí và bất kỳ trang web nào sẽ phát triển theo thời gian.Nếu bạn có khả năng để thiết lập một số hướng dẫn và quy tắc, tôi sẽ chọn một cái gì đó mà là tha thứ, phổ biến, và dễ dàng (er) để tìm hiểu.

Tôi cũng khuyên bạn nên viết xuống để mọi người trong tương lai không phát minh lại bánh xe.

+1

Bất kỳ ngôn ngữ hiện đại nào hoạt động với mysql, vì vậy việc chọn PHP để hỗ trợ mysql là một lý do ngớ ngẩn. Tôi không nói bạn không nên chọn PHP, chỉ vì đây không phải là lý do chính đáng để làm như vậy. – mpeters

+1

mpeters là đúng, MySQL một mình không phải là một lý do chính đáng. Bạn có thể lập luận rằng việc chuyển sang một chồng LAMP tiêu chuẩn hơn sẽ làm cho việc tìm kiếm các nhà phát triển dễ dàng hơn, nhưng các lập trình viên JAVA cũng dễ tìm. Việc tìm kiếm các nhà phát triển GOOD cho bất kỳ ngôn ngữ nào vẫn sẽ là một vấn đề. – acrosman

1

Nếu regex quan trọng, tôi sẽ chọn ngôn ngữ có hỗ trợ tốt.

Nếu bạn sử dụng java, bạn sẽ không thể chỉ sao chép dán mã regex của mình từ mã perl vì các dấu gạch chéo phải được thoát. Vì vậy, tôi sẽ bỏ phiếu chống lại java.

Tôi không quen với php đủ để biết các tính năng regex của nó, nhưng với lựa chọn của bạn, tôi sẽ đi cho python. Bạn có thể tạo mã sạch hơn trong python.

Ruby có phải là một lựa chọn không? Nó cũng có perl tốt như hỗ trợ regex và đường ray hỗ trợ phát triển web nhanh nhẹn ra khỏi hộp.

1

trước hết hãy để tôi chỉ ra rằng MySQL's spatial extensions work with GIS.

Thứ hai, nếu bạn có một nhóm lập trình viên Perl sẽ cần kéo ork trên các trang web mới thì đặt cược tốt nhất của bạn là chọn thứ gì đó họ sẽ không hiểu quá nhiều. Rõ ràng "cái gì đó" có PHP. Khi tôi học PHP tôi đã làm một số Perl năm trước và nhặt PHP trong thời gian không ở tất cả.

Chuyển sang một thứ như Java hoặc .Net (hoặc thậm chí Ruby on Rails) sẽ là một sự thay đổi đáng kể trong thiết kế.

Ngoài ra với máy chủ Apache, bạn đã thiết lập môi trường của mình và bạn có thể phát triển bất kỳ giai đoạn nào dưới dạng kết hợp giữa Perl và PHP một cách hợp lý dễ dàng.

Đối với phần cuối cùng của câu hỏi: bạn sẽ làm gì nếu bạn có thể làm lại lần nữa? Đối với tôi đó là một câu hỏi riêng biệt và không liên quan. Thực tế là bạn không tua lại và bắt đầu lại, bạn chỉ ... bắt đầu lại. Vì vậy, hỗ trợ di sản, chuyển tiếp, phát triển kỹ năng và tất cả những vấn đề khác quan trọng hơn bất kỳ câu hỏi giả thuyết nào về những gì bạn chọn trong một thế giới hoàn hảo nếu tất cả những thứ khác đều bình đẳng.

Yêu thích hoặc ghét nó, PHP là phổ biến và sẽ không đi đâu cả sớm. Việc tìm kiếm những người bị lẩn quẩn để làm điều đó không quá khó (tốt, các nhà khoa học đang lọc chúng ra khỏi những người viết kịch bản cao bồi tự học, họ nghĩ rằng họ có thể viết mã nhưng không thể) và nó không phải là một bước xa từ Perl dựa trên Web.

5

Tôi sẽ mang đến một người rất giỏi tại Perl, ít nhất hãy xem thiết kế hiện tại. Họ sẽ có thể cho bạn biết mã số Perl thực sự tồi tệ đến mức nào và cần phải làm gì để biến nó thành hình dạng tốt.

Vào thời điểm đó, tôi sẽ bắt đầu xem xét các tùy chọn của mình. Nếu mã số Perl có thể cứu vãn, tốt hơn là tuyệt vời, hãy thuê một người nào đó thành thạo trong Perl. Cũng đào tạo một số nhân viên hiện tại của bạn để trợ giúp về cơ sở mã hiện có. Nếu bạn không có ai đó thành thạo trong số Perl phụ trách mã số Perl, cơ sở mã của bạn có thể thậm chí còn tồi tệ hơn so với trước đây.

Chỉ khi nó ở trong hình dạng khủng khiếp, tôi có nên bỏ qua nó cho một ngôn ngữ khác không. Ngôn ngữ đó là gì, đó là điều bạn sẽ phải tự nghĩ về điều đó.

p.s. Tôi hơi thiên vị một chút, tôi thích Perl

1

Nếu nhà phát triển của bạn tốt, họ sẽ có thể xử lý mọi thứ. Quyết định sử dụng ngôn ngữ nào là một vị trí chiến lược khá phức tạp, nhưng tôi khuyên bạn nên suy nghĩ cẩn thận trước khi giới thiệu bất kỳ THÊM nào (ví dụ: không).

Trừ khi tất nhiên, có điều gì đó mà bạn tuyệt đối không thể làm (hoặc không thể làm một cách an toàn) với những gì bạn có.