Perl vẫn là một ngôn ngữ hữu ích, khả thi? [đóng cửa]


77

Tôi biết nó có thể đã được hỏi trước đây, nhưng ở đây không có gì ...

Perl vẫn còn một cái gì đó sẽ được coi là hữu ích? Nếu ai đó là một lập trình viên mới (hoàn toàn mới đối với lập trình hoặc chỉ vài tháng / năm kinh nghiệm) thì Perl có phải là thứ được coi là đáng để học không?

Perl vẫn được sử dụng với tần số? Nó vẫn còn phổ biến?

Hay là Perl sắp chết so với các ngôn ngữ như Python, Ruby, PHP, ASP.NET, v.v.?

Về cơ bản, nó nắm bắt được điều này:

  • Nó vẫn được sử dụng / nó vẫn được sử dụng thường xuyên? Nếu có, nó có chết không? Nếu không, nó sẽ làm cho trở lại?
  • Nó có phải là thứ đáng để học hỏi không?
  • Làm thế nào để nó so sánh nhu cầu với các ngôn ngữ như Python về cả mức độ phổ biến và khả năng sử dụng / khả năng tồn tại? Các ngôn ngữ như Python hay Ruby có thể được coi là sự thay thế cho Perl không?

Ngoài ra, các phiên bản mới hơn của Perl có thực sự mang lại sự cải thiện lớn cho cộng đồng Perl và có thể đưa Perl trở lại trung tâm so với các ngôn ngữ khác không?

BIÊN TẬP:

Được rồi, tôi cho rằng đây là một câu hỏi hay hơn, được sắp xếp lại:

Perl vẫn đang phát triển, hay nó đang "chết"? Nó vẫn là một ngôn ngữ đáng để học và sử dụng? Những dự án nào nó thực sự "tỏa sáng" so với các ngôn ngữ khác? Điều gì làm cho Perl trở thành một ngôn ngữ để lựa chọn? Về cơ bản: Perl đang trở nên lỗi thời so với các ngôn ngữ khác, và nếu vậy, bạn có mong muốn điều đó thay đổi, hoặc tiếp tục?

Và cảm ơn tất cả những người đã trả lời cho đến nay, cuộc thảo luận đã thực sự thú vị!


12
Chúng ta đừng đánh mất quan điểm, theo TIOBE, nó vẫn nằm trong top 10, trước cả Ruby và thậm chí là JavaScript.
Daniel

Câu trả lời:


60

Trước hết, tốt hơn hết là định hướng .

Các doanh nghiệp nói về Perl 5 khi nói về Perl, nhưng trên một vùng đất xa xôi, ngoài hòn đảo suy nghĩ sâu sắc , bộ lạc ủy ban thiết kế vẫn đang nấu một phiến đá khổng lồ của Perl 6 (và nó gần như đã sẵn sàng, với một động cơ được viết bằng Haskell và được cung cấp bởi nước mắt của các vị thần )

Ok, điều đó nói rằng, Perl 5 được sử dụng cho ngày hôm nay là gì?

  • hệ thống web / intrawebs cũ - một số sẽ không chết

  • khai thác dữ liệu / phân tích thống kê - công cụ regex perl, ngay cả khi hơi lỗi thời , ( PCRE, một thư viện được tạo ra, đưa nó lên theo bất kỳ cách sở hữu nào và nó là PHPcông cụ mặc định ) vẫn tốt cho phân tích đơn giản

  • Quản trị hệ thống UNIX - Perl sẽ luôn được cài đặt trên UNIX.
    Bạn có thể tin tưởng rằng nó có sẵn ngay cả trên Mac OS X.

  • tạo mẫu mạng - nhiều chuyên gia mạng cốt lõi đã học Perl khi tất cả đều là cơn thịnh nộ; và họ vẫn làm bằng chứng về khái niệm của họ với nó.

  • bảo mật - nhiều chuyên gia bảo mật cũng vậy, cần tạo mẫu nhanh . (và sửa lỗi tự động nhanh) Perl có thể, và không, bao gồm cho điều đó.

Bộ sưu tập CPAN mở rộng rất tiện dụng , khi xử lý các nguyên mẫu.
(Pin có thể không được bao gồm, nhưng chúng vẫn ở ngay trên kệ )

Tuy nhiên, hãy nhớ những hạn chế :

  • Hỗ trợ đối tượng trong Perl rất khó khăn , bạn ban phước cho các tài liệu tham khảo và làm những thứ không lành mạnh trong tên của các đối tượng, sau đó tự hỏi tại sao bạn lại gặp rắc rối ngay từ đầu.
  • Đọc Perl của người khác không chỉ là một nghề thủ công, đó là khoa học và cũng là một điều đau đớn .
  • Perl là tiện lợi, nó làm cho bạn nghĩ tiện lợi, nó làm cho bạn cảm thấy tiện lợi, bạn trở thành một ngôi sao nhạc rock lập trình . Bây giờ, hãy nghĩ về việc thức dậy và đi làm trong một văn phòng đầy những ngôi sao nhạc rock : đó là một "chiếc thuyền đá" cứng. Mong đợi biến động hoang dã.

19
@WorldEngineer đồng ý, nhưng điều tồi tệ nhất là đến từ perl, Ruby hoàn toàn không cảm thấy tiện lợi : nó chỉ cảm thấy như một phiên bản perl bị câm, kém hiệu quả.
ZJR

12
Tôi chỉ thấy một nhược điểm ở đó. Cá nhân, tôi tình cờ được ban phước cho các tài liệu tham khảo của mình, nhưng, đối với những người không có Moose (trên CPAN), một hệ thống đối tượng đủ tốt mà các ngôn ngữ khác đang sao chép nó. Và, trong khi tôi yêu sự nhanh nhẹn, tôi đã không gặp nhiều ngôi sao nhạc rock tự ám ảnh mình trong thế giới Perl. Có những nhà phát triển nghiêm túc, có kỷ luật (những người tình cờ thích khuấy động trong thời gian rảnh rỗi) trong cộng đồng Perl hơn là những ngôi sao nhạc rock. (Tôi từ chối rõ ràng là một lập trình viên nhạc rock cho đến khi và trừ khi phụ nữ bắt đầu ném quần lót của họ vào tôi trong khi tôi viết mã.)
Dave Sherohman

3
@johannes vẫn phải đối phó với Luật Van Rossum: "Whenever you find a python executable preinstalled, it's the wrong version"Hệ quả:"sometimes the right version is available, but it has the wrong name"
ZJR

2
Perl vẫn còn khá lớn trong không gian tin sinh học.
dietbuddha

3
+1 cho quản trị hệ thống. Tôi chưa bao giờ thấy một hệ điều hành dựa trên unix không bao gồm perl. Tôi thậm chí đã nhìn thấy nó trong một số hệ điều hành linux nhúng đã sử dụng Busybox cho vùng người dùng của họ
Earlz

23

Theo tôi, sau khi làm việc với Perl một lần nữa sau một vài năm gần như không sử dụng nó, nó tốt hơn bao giờ hết. Perl 5 có rất nhiều điều tuyệt vời trong CPAN, thậm chí OO có thể được thực hiện ngay bây giờ. (Có một cái nhìn về Modern Perl )

Perl 5 là xa chết. Chỉ cần xem một số trang web Perl và CPAN và trên đường chân trời có một ngôn ngữ hoàn toàn mới - Perl 6.

Có rất nhiều nguồn tài liệu trên web, blog và các bài thuyết trình về lý do tại sao nó không tệ và tại sao nó có tiếng xấu mà nó không xứng đáng - chỉ cần nhìn vào những điều đó để hiểu.


7
Theo tôi CPAN là tuyệt vời nếu bạn cần một bánh xe có hình dạng bất kỳ, nhưng kém tuyệt vời hơn nếu bạn cần một nhà máy sản xuất xe hơi.

@ ThorbjørnRavnAndersen CPAN là tuyệt vời nếu bạn cần một bánh xe có hình dạng bất kỳ. Vấn đề là đó shape($wheel) == 'round' ? available_in_cpan($wheel) : false;không phải là một bộ lọc hợp lệ.
Jason Lewis

Chỉ vì OO tồn tại trong Perl không có nghĩa là nó thực sự tốt.
kirbyfan64sos

22

Điều chính mà Perl vẫn dành cho nó là CPAN - có rất nhiều mô-đun được viết sẵn mà rất dễ dàng để tìm thấy thứ bạn cần.

Điều đó nói rằng, tôi sẽ không học Perl. Perl là một ngôn ngữ tuyệt vời cho những người đã biết nó (như tôi), nhưng Python dường như (từ quan điểm của người ngoài cuộc của tôi) là ngôn ngữ tốt hơn để thực hiện loại tệp nhanh và bẩn phân tích văn bản mà Perl từng là " đi đến "ngôn ngữ cho.


Và bạn có nghĩ rằng điều đó giúp nó vượt trội so với các ngôn ngữ khác không? Hoặc điều đó chỉ mang lại bằng với các ngôn ngữ khác. Ví dụ, .NET framework dường như cũng được đóng gói với các phương thức và lớp hữu ích khác nhau.
Bob

6
@Paul Tomblin - Đó là một cách khá thô để đặt nó. "Điều chính mà perl vẫn đang thực hiện cho nó ..." <- Điều chính C / C ++ dành cho họ là rất nhiều phần mềm vẫn được viết trong đó. Bên cạnh đó, họ là rác rưởi.
Rook

Đồng ý với Idigas, vì bạn có thể nói tương tự về việc Java có rất nhiều gói ...
Izkata

1
Câu hỏi không phải là "C ++ hay Java là ngôn ngữ tốt". Câu hỏi là liệu Perl có còn khả thi hay không. Và có hai lý do tại sao tôi vẫn viết ứng dụng web của mình bằng Perl: CPAN và tôi có rất nhiều mã tôi đã viết.
Paul Tomblin

7
Nếu tôi đã bắt đầu bây giờ, có lẽ tôi sẽ sử dụng Python. Nhưng tôi sử dụng Perl vì tôi giỏi Perl.
Paul Tomblin

19

Khi tôi quyết định học Perl như ngôn ngữ đầu tiên của tôi vài năm trước, có một số yếu tố dẫn dắt quyết định của tôi:

  • Có rất nhiều tài liệu tham khảo tốt về ngôn ngữ?
  • Tôi có thể dễ dàng tìm thấy sự giúp đỡ với câu hỏi của tôi?
  • ngôn ngữ được sử dụng tích cực bởi một dân số đa dạng lớn?
  • Có những dự án tích cực sẽ giúp tôi với mục tiêu của mình?

Đối với tôi câu trả lời là có. Tôi là người thiết kế đồ họa. Tôi đã học HTML và CSS từ nhiều năm trước nhưng cần nâng cấp các kỹ năng của mình sau khi khách hàng muốn nhiều hơn từ trang web của họ. Tôi đã sử dụng các khung php khác nhau, điều đó cho tôi lỗi để thực sự học lập trình. Tôi đã thực hiện rất nhiều nghiên cứu và tìm thấy các dự án được hỗ trợ tốt như Bộ công cụ mẫu cũng như các dự án mới như Perl Dancer và Mojolicy. Các tài liệu đi kèm với Perl đã rất hữu ích cũng như thư viện các ấn phẩm.

Tôi đã tìm thấy danh sách thư Perl khá thân thiện với người mới bắt đầu và hoạt động. Trên PerlMonks mọi người từ khắp nơi trên thế giới đến với các câu hỏi và câu trả lời cho một loạt các ứng dụng. Có một số trang web tin tức Perl hoạt động, blog và luồng. Những tài nguyên này đã dạy tôi rất nhiều về Perl và lập trình.

Cấp, đó là kinh nghiệm của tôi. Tôi không biết chính xác có bao nhiêu người đăng nhập vào các trang web này, đăng ký danh sách thư hoặc xây dựng các ứng dụng web của họ, ví dụ, bằng cách sử dụng Perl. Tôi cũng không thể nhận xét về trải nghiệm của mình tốt hơn hoặc tồi tệ hơn như thế nào nếu tôi chọn một ngôn ngữ khác để bắt đầu. Tôi không nghi ngờ rằng tôi có thể tìm thấy nhiều khía cạnh tích cực tương tự trong cộng đồng của các ngôn ngữ khác. Có thể nói tôi vẫn hài lòng với lựa chọn mà tôi đã đưa ra.


Tôi đã học Perl như ngôn ngữ đầu tiên của tôi vào năm 1996 vì tôi mới chuyển sang Linux từ Windows cho hệ điều hành chính của mình. Perl chưa bao giờ là một ngôn ngữ web tuyệt vời (mặc dù PHP là sự chắt lọc thuần túy của tất cả những điều ác mà Perl phải cung cấp), nhưng nó thật tuyệt vời khi thay thế cho các tập lệnh bash. Vấn đề xảy ra khi mọi người cố gắng giả vờ có một thứ như viên đạn bạc.
Jason Lewis

16

Sự phổ biến của một ngôn ngữ có rất ít liên quan đến khả năng tồn tại hoặc khả năng sử dụng của nó. Perl vẫn là một ngôn ngữ rất có thể sử dụng. Danh tiếng của nó, xứng đáng hay nói cách khác là không thân thiện với người mới cuối cùng có nghĩa là không ai mới sẽ học nó nếu họ có thể giúp đỡ nó. Lý do duy nhất tôi không sử dụng nó nữa là không ai khác tôi biết sử dụng nó nữa.


5
Vì vậy, không phải là tuyên bố "Lý do duy nhất tôi không sử dụng nó nữa là không ai khác tôi biết sử dụng nó nữa" cho thấy thực tế rằng sự phổ biến có lẽ có liên quan đến cả khả năng tồn tại hoặc khả năng sử dụng của nó? Dù sao, đó không phải là vấn đề của tôi, điều tôi thực sự muốn biết, liệu Perl có còn hữu ích không? Khi nào bạn chọn nó hơn các ngôn ngữ khác (như trong, khi nào nó thực sự tỏa sáng)?
Bob

1
Lanuages ​​tồn tại như một phương tiện biểu đạt cho người khác, nói rằng mức độ phổ biến của một ngôn ngữ đối với giá trị mà nó thể hiện là không có cơ sở trong quan điểm của tôi.
sai lầm ngớ ngẩn

4
Điều này rất dựa trên môi trường ... Nếu bạn là một * nix sysadmin, các lựa chọn của bạn để hoàn thành các nhiệm vụ phổ biến sẽ chuyển sang Perl so với sed + awk + grep + bash ... và Perl thường dễ hơn là nhớ 4 cú pháp cho một kịch bản một lần.
Jason Lewis

12

Đối với hồ sơ, tôi đã lập trình trong Perl 5 trong khoảng 15 năm, vì vậy tôi hơi thiên vị. Phải nói rằng, tôi thực sự thích Perl. Đừng lắng nghe những người không tán thành và đừng nghĩ rằng tuổi của nó bằng cách nào đó là một chỉ số về giá trị của nó. Cách tốt nhất để xem Perl là xem nó so với các ngôn ngữ khác:

  • PHP - PHP là một ngôn ngữ lập trình web khá tốt; đừng hiểu lầm tôi Nhưng, đó chỉ là ngôn ngữ lập trình web. Ngay cả các ứng dụng web cũng cần cronjobs của chúng để thực hiện các quy trình và bạn phải thực hiện một số nội dung lạ để thực hiện điều đó. Không bao giờ phải viết một tập lệnh nhanh cho quản trị viên UNIX hoặc phân tích tệp văn bản. Thêm vào đó, PHP không có CPAN.

  • Ruby - Ngôn ngữ quá mới và "kịch bản kiddie" cho thị hiếu của tôi. Điều duy nhất tôi nghe về Ruby là Ruby on Rails. Perl có Catalyst và Dancer (dưới dạng khung MVC), đây là những MVC tốt, nhưng nó không phải là nền tảng của ngôn ngữ. Bạn sẽ không tìm thấy "Ruby" như một yêu cầu trong công việc cung cấp bất cứ lúc nào sớm (nếu có). Thêm vào đó, Ruby không có CPAN.

  • Python - Theo lời của Larry Wall, Python chỉ là dầu rắn. Python quan tâm đến khoảng trắng và ngôn ngữ cuối cùng tôi sử dụng quan tâm đến khoảng trắng là BASIC. Ngoài ra, giống như BASIC, về cơ bản, nó được thiết kế để trở thành ngôn ngữ mới bắt đầu dễ sử dụng. Cuối cùng, không có CPAN ở đây.

  • Java - Java là một ngôn ngữ con có vấn đề. Khái niệm này là để máy ảo này chạy trên bất kỳ nền tảng nào, nhưng vì sự phổ biến rất lớn của ngôn ngữ trong các khóa học đại học, bạn thấy các ứng dụng Java ở mọi nơi mà chúng không nên có. Ví dụ: không nên tồn tại các ứng dụng web dựa trên máy chủ nội bộ. Đó là một máy chủ duy nhất với thông số kỹ thuật do họ xác định và nó được bọc trong một VM riêng biệt với dung lượng bộ nhớ hạn chế. Java đã cồng kềnh và họ không có CPAN.

  • C # - Tôi thực sự đã sử dụng ngôn ngữ này khá lâu rồi và dường như tôi đã hình thành mối quan hệ yêu / ghét với nó. Có thể quá tải các phương thức với các thông số khác nhau là mát mẻ và thú vị. Nhưng, nếu bạn muốn một ngôn ngữ sẽ làm hỏng mọi dòng mã của bạn về kiểu truyền , thì C # là dành cho bạn. Chúa ơi, nó muốn bạn đặt diễn viên rõ ràng MỌI NƠI! Làm cho các lớp học trở nên thú vị, nhưng bạn đột nhiên nhận ra rằng bạn đang dành nhiều thời gian hơn để tạo ra các lớp học để biến ngôn ngữ chết tiệt này thành CÔNG VIỆC hơn là thực sự viết mã thực sự.

    Ngoài ra, C # không có ... được, nó có .NET, nó thực sự tốt và mở rộng. Tuy nhiên, tôi vẫn thích CPAN hơn vì bạn vẫn có thể viết các mô-đun của riêng mình và phàn nàn với tác giả về một lỗi hoặc lỗi thiết kế. Và tất cả đều miễn phí. Thêm vào đó, Perl sẽ hợp tác với Perl.NET trong tương lai, vì vậy chúng tôi có thể sẽ thiết kế các ứng dụng Windows trước đó rất lâu.

Perl là một ngôn ngữ tuyệt vời có:

  • Biểu thức thông thường - Nếu đó là một điều mà Perl có thể làm tốt, thì đó là thao tác văn bản. Đúng, nhiều ngôn ngữ có biểu thức chính quy, nhưng Perl gần như đã phát minh ra chúng, và có một lý do tại sao grep có chế độ "Biểu thức chính quy Perl" hoặc tại sao Oracle có một phần về "Phần mở rộng chịu ảnh hưởng của Perl trong Biểu thức chính quy của Oracle". Nó được tích hợp sẵn và không yêu cầu bất kỳ mô-đun nào.

  • Tính linh hoạt - Bạn có ba loại biến cơ bản: Vô hướng, Mảng và Băm. Đó là nó. Đó là tất cả những gì bạn cần. Bạn không có int, byte, chuỗi hoặc bất kỳ thứ nhảm nhí nào. Perl chỉ ra nó tốt. Và bạn có thể sử dụng các tài liệu tham khảo tất cả những gì bạn muốn mà không sợ rò rỉ bộ nhớ hoặc khiến toàn bộ PC bị sập. Ngôn ngữ chỉ hoạt động.

  • Tính di động - Perl hoạt động tuyệt vời trên web. Nó hoạt động rất tốt trong UNIX. Nó thậm chí hoạt động khá tốt trong Windows. Nó không phải là chim bồ câu với một chức năng duy nhất. Đó là một công việc tất cả, nhưng cũng là bậc thầy của (hầu hết) mọi thứ.

  • Thật dễ dàng để làm rất nhiều với một ít mã - Đưa cho tôi một tệp trống 1K và tôi có thể viết tất cả mọi thứ với không gian đó. Ngay cả một lớp lót Perl cũng rất tuyệt để thêm vào một ống dòng lệnh.

  • CPAN - Tôi không thể nhấn mạnh rằng sẽ tốt như thế nào khi tìm thấy bất cứ thứ gì bạn cần cho bất cứ thứ gì. "Bất cứ điều gì" là gì? Chà, làm thế nào về các mô-đun DB cho mọi cơ sở dữ liệu hoặc điều bạn có thể tưởng tượng, từ Oracle đến iPod đến CSV đến Adabas đến Yaswi? Làm thế nào về một số máy chủ web đầy đủ tính năng? Làm thế nào về trình đọc tệp Excel, hoặc mô-đun SNMP hoặc mô-đun đọc nhận xét cho các dòng gỡ lỗi hoặc mô-đun giúp bạn lập trình nhanh hơn? Một dự án mà tôi đang thực hiện ngay bây giờ là viết một trình tạo bản đồ Terraria động, tăng cường từ một mô-đun hiện có có tên Games :: RolePlay :: MapGen. .NET sẽ không bao giờ có cái gì đó như thế.

    Ngoài ra, thật dễ dàng để cài đặt bất kỳ mô-đun nào thông qua CPAN. Lấy nó từ Debian. Cài đặt nó trực tiếp từ CPAN. Nó làm một công việc tốt như apt-get trong việc giải quyết các phụ thuộc. Tôi không có vấn đề gì khi nói sysadmin của tôi cài đặt mô-đun X từ CPAN, vì đó chỉ là một lệnh đơn giản.

Vâng, nó có những sai sót, và vâng, tôi thiên vị về nó, nhưng có lẽ bạn đã nghe thấy những tiêu cực quá nhiều lần. Họ không vượt trội về mặt tích cực, không phải bằng một cú sút xa.


14
-1 chủ yếu vì không nhận ra rằng các ngôn ngữ khác có công cụ tốt như vậy nếu không tốt hơn CPAN. Maven Central cho Java chẳng hạn? Nó có nhiều tạo phẩm hơn CPAN và nó là 0-liner để cài đặt các tạo phẩm Maven vì chúng tự động được xác định thông qua phân tích phụ thuộc của Mô hình đối tượng dự án. Ngoài ra, tôi ít kinh nghiệm hơn với Ruby Gems nhưng tôi tin rằng chúng gần tương đương với CPAN.
mikera

8
PHP có PEAR. Và đó không chỉ là ngôn ngữ lập trình web.
MattBianco

25
Tôi sẽ không nói bạn hơi thiên vị. Bạn rõ ràng thiên vị. Tôi không thể tin rằng bạn có thể xem nhẹ Python chủ yếu vì nó có khoảng trắng đáng kể và vì Larry (chắc chắn không phải là nguồn khách quan ở đây) đã sử dụng dầu rắn biểu hiện. Và không có lời mời làm việc nào cho Ruby cả? Lần cuối bạn nhìn thấy thị trường việc làm là khi nào? Ít nhất là đặt một số nỗ lực trong việc cố gắng thiết lập thông tin đăng nhập của Perl.
Muhammad Alkarouri

6
-1 cho một quan điểm rõ ràng thiên vị và không được nghiên cứu về các ngôn ngữ khác. Tôi đồng ý rằng Python là dầu rắn, nhưng Ruby == "script kiddie" là vô lý. Tôi chưa bao giờ thấy một nỗ lực xâm nhập dựa trên Ruby trên bất kỳ máy chủ nào tôi duy trì. Nó chủ yếu là Python. PHP là một ngôn ngữ lập trình được chấp nhận theo nghĩa nào? Thần thông. Nhận xét của bạn về C # thể hiện sự ngây thơ đáng kinh ngạc về việc gõ và / hoặc hướng đối tượng. Dính vào Perl, anh bạn. Nghiêm túc mà nói, tôi sẽ luôn yêu thích Perl vì đây là ngôn ngữ lập trình 'thực sự' đầu tiên của tôi và rất tuyệt vời cho các nhiệm vụ sysadmin, nhưng câu trả lời này còn tệ hơn cả xấu.
Jason Lewis

8
+1 Để loại bỏ mọi ngôn ngữ tôi từng yêu thích (hoặc ghét) - ngoại trừ Perl, tất nhiên. :-)
jpaugh

12

Hiệu suất là một trong những lý do chính để lựa chọn perl. So với Python, Ruby hoặc bất kỳ ngôn ngữ kịch bản dựa trên JVM nào, nó nhanh như chớp.

Đây là lý do tại sao nó không bao giờ được thay thế trong không gian khai thác dữ liệu, tất cả các ngôn ngữ (freebie) khác đều chậm hơn khi xử lý khối lượng dữ liệu lớn.


6
Bạn có thể cung cấp hỗ trợ / điểm chuẩn cho khẳng định này? CNTT dường như đối với tôi là điểm chuẩn cuối cùng tôi đã thấy cho Perl so với Ruby / Python được ưa chuộng sau này, đặc biệt. khi bao gồm cả việc thực hiện thay thế sau này.
Jason Lewis

2
Bất kỳ nhận xét nào về hiệu suất phải là một khái quát trừ khi các bản phát hành và môi trường cụ thể được trích dẫn. Nhiều băng ghế dự bị ngoài kia - hentenaar.com/serendipity/index.php?/archives/ Khăn onlyjob.blogspot.com/2011 / 03 / Lỗi là khá điển hình. Bạn nói đúng, các phiên bản mới nhất của ruby ​​khá nhanh, nhưng, perl có các bản phát hành "nâng cao hiệu suất" thường xuyên nên không có vấn đề gì. LUA đánh bại mọi thứ.
James Anderson

Lua là đẹp rực rỡ.
Jason Lewis

12

Perl có vị trí của nó. "Danh tiếng xấu" của nó nói chung là do nó cho phép bạn linh hoạt tuyệt vời để làm những việc thực sự cần được thực hiện bằng một công cụ khác.

Nếu bạn tự hỏi mình câu hỏi "Tôi đang cố gắng đạt được điều gì? Và có công cụ thích hợp nào để cung cấp điều này không?" sau đó bạn là một phần của cách đó.

Nếu bạn đang viết một kịch bản nhanh, thì việc sử dụng ngôn ngữ kịch bản có ý nghĩa. Nếu bạn muốn tạo một ứng dụng phức tạp, thì bạn "có thể" viết nó bằng Perl, nhưng có lẽ bạn không nên.

Tuy nhiên, vì câu hỏi của bạn liên quan đến một lập trình viên mới, tôi có thể đề nghị để Perl một mình bây giờ không. Đơn giản vì bạn sẽ học được ít thói quen xấu hơn từ một ngôn ngữ kém linh hoạt.


3
Được rồi, nhưng Python là một tùy chọn hoàn toàn khả thi để tạo một kịch bản nhanh, nhưng bạn cũng có thể kéo dài nó để tạo các chương trình lớn hơn. Điều tương tự không đúng với Perl? Điều đó làm cho Python tốt hơn Perl?
Bob

@Bob: Tôi nghĩ đó chủ yếu là những gì bạn đã từng viết và sở thích của bạn. Đôi khi, cũng có một số thư viện perl tiện dụng mà bạn không có trong python và ngược lại.
dagnelies

1
@Bob: Tôi sẽ đề nghị anh ấy thử dùng python trước, nó thân thiện hơn. Sau đó, tôi sẽ bảo anh ta chọn một ngôn ngữ hoàn toàn khác là ngôn ngữ thứ hai, như Scheme.
dagnelies

1
@Bob: Toàn bộ .NET framework chỉ khả dụng trên Windows. Trong không gian Unix / Linux, Perl là một ngôn ngữ tuyệt vời để thay thế các tập lệnh shell, thực hiện quản trị hệ thống và bất kỳ thứ gì liên quan đến nhiều xử lý văn bản và không phải là nhiều thứ khác. Nó thực hiện mọi thứ trực tiếp mà (lần cuối tôi nhìn) Python cần một chút cấu trúc cho. Điều này thường làm cho Perl trở thành một ngôn ngữ lập trình chung tồi tệ hơn, nhưng tốt hơn cho các ứng dụng chuyên biệt hơn.
David Thornley

1
@Bob Thật ra, đó là một điểm thú vị. Perl thực sự tiện dụng nếu bạn có một tập lệnh shell đang làm căng các giới hạn của bash. Perl cung cấp nó khá dễ dàng, vì bạn có thể đặt backticks xung quanh hầu hết các lệnh và nó vẫn sẽ hoạt động.
Stephen Gross

12

Tôi bị thu hút bởi Python bởi cách bố trí của nó - cấu trúc khối là "những gì bạn thấy là những gì bạn nhận được" - và không hiểu tại sao có những người bị loại bỏ bởi điều này. Tôi nghĩ rằng nó đã và đang là một ý tưởng tốt.

Tôi đã trở lại Perl, mặc dù. Nó chỉ có vẻ tốt hơn nghĩ ra như một công cụ thực tế. Trong lý thuyết khoa học máy tính, Python và Ruby "tốt hơn". Nhưng tôi làm việc trong thế giới thực.

Ruby và Python là thời trang hơn trong số những đứa trẻ mới ra trường. Hầu hết các lập trình viên đang ở trên Facebook sẽ theo xu hướng hiện tại và đi với Ruby hoặc Python. Bài viết gốc minh họa điều này: nó kết hợp "Có đáng không" với "Nó vẫn còn phổ biến phải không?"

Tôi không biết cũng không quan tâm liệu Perl có "phổ biến" trong thế giới Facebook hay không. Nó có lẽ là ngôn ngữ kịch bản được sử dụng rộng rãi nhất trong số những người thực hiện được nhiều thứ, đó là một điều rất khác biệt. Một số người bình luận cho rằng ngôn ngữ yêu thích của họ có tài nguyên tương đương với CPAN không biết CPAN rộng và sâu như thế nào.


5
Khoảng trắng đáng kể là một ý tưởng khủng khiếp. Luôn là, sẽ luôn luôn được. Điều đó đang được nói, mặc dù tôi sử dụng Ruby ở bất cứ đâu có ý nghĩa, tôi vẫn có một vài tập lệnh Perl cho các tác vụ sysadmin mà tôi không có lý do gì để viết lại trong Ruby. Tại sao? Chúng hoạt động tốt, và chúng ở vị trí ngọt ngào của Perl. Tại sao tạo ra nhiều công việc?
Jason Lewis

1
Buộc mọi người thụt lề chính xác là một ý tưởng tốt bất kể ngôn ngữ. Các ngôn ngữ tốt hơn (như Python) chỉ đơn thuần là áp dụng nhiều lực hơn.
Brendan

10

Perl là ngôn ngữ để viết các công cụ dùng một lần. Có nhiều ứng dụng khác trong đó Perl ít nhiều liên tục và hữu ích, nhưng nếu bạn thiếu một lệnh shell để thực hiện một điều kỳ lạ, nếu bạn cần một sơ khai để lấy một số dữ liệu từ một ổ cắm lẻ, nếu bạn có tệp nhật ký hoặc một cơ sở dữ liệu và cần trích xuất một số nội dung theo cách ngoài tầm với của SQL, nếu bạn cần lấy một vài hình ảnh từ máy chủ hoặc nếu tất cả các mẫu trang web của bạn đều chứa cùng một loại lỗi và muốn sửa tất cả kịch bản Perl 10 phút là cách để đi.

Viết điều tương tự trong Shell có thể có khả năng nhưng do cú pháp kỳ lạ của cú pháp shell, sẽ mất nhiều thời gian hơn và có thể khó hơn nhiều. Viết cái này bằng bất kỳ ngôn ngữ "chuyên nghiệp" nào như C ++, C #, Java, v.v. sẽ mất khoảng một giờ để so sánh. Viết điều này bằng một ngôn ngữ kịch bản cạnh tranh như Python, Ruby hoặc PHP là một sự thay thế khả thi và có thể sẽ mất nhiều hơn 20% để viết.

Có, các chương trình trong các ngôn ngữ khác sẽ dễ bảo trì hơn và dễ đọc hơn. Nhưng nếu bạn cần một giải pháp NGAY BÂY GIỜ, Perl là con đường để đi.


8

Kiểm tra trang "tải lên gần đây lên CPAN" - trang . Có> 20 mô-đun mới hoặc mô-đun cập nhật đang được tải lên mỗi ngày. Tôi nghĩ rằng số lượng tải lên trung bình hàng ngày đã tăng chậm nhưng tăng đều đặn. Là lực hấp dẫn này là một dấu hiệu của một ngôn ngữ đang chết? Không!

Nó luôn gây ấn tượng với tôi về việc một số mô-đun quan trọng (ví dụ như lập trình web hoặc giao diện cho trình điều khiển RDBMS) đã được duy trì và cải tiến trong nhiều năm. Thường bởi tác giả gốc, hoặc bởi những người duy trì mới. Thường thì điều này đã tạo ra mã rất trưởng thành.

Để có được một mô-đun thành CPAN, các tác giả được khuyến khích phải đi một chặng đường rất dài để duy trì khả năng tương thích ngược (với các phiên bản perl 5 cũ hơn) cũng như tính độc lập nền tảng. Xem ví dụ http://matrix.cpantesters.org/?dist=DBI (DBI = giao diện cơ sở dữ liệu, lớp trừu tượng)

Ngoài ra, bản thân ngôn ngữ: Tôi hơi bối rối bởi tất cả các tính năng mới đã được đưa vào ngôn ngữ kể từ 5.10, 5.112., 5.14. Tôi chưa học được cách tận dụng các tính năng mới. Perl đã phát triển quá nhanh đối với tôi!


7

Tôi đã học Perl 4 và 5 trong khi thực hiện quản trị hệ thống từ những năm 90. Hôm nay tôi làm lập trình Java (trong đó việc gọi Perl thường không được mong muốn) và thỉnh thoảng tôi vẫn sử dụng Perl trên máy tính phát triển của mình. Điều này thường chỉ để thực hiện dữ liệu trên các tệp nhật ký trong đó các biểu thức chính quy trong Perl và giàn giáo để phân tích cú pháp văn bản trên các bộ định tuyến trong Perl làm cho nó rất dễ thực hiện trên một dòng lệnh.

Về cơ bản tôi sử dụng nó ngày hôm nay như là awk trên steroid. Đối với điều này là tuyệt vời.

Một trong những tính năng của Perl là có nhiều hơn một cách để làm hầu hết mọi thứ. Điều này cho phép bạn chọn một cách phù hợp với cách suy nghĩ của bạn - thật tuyệt vời khi chỉ cần hack một hoặc hai oneliner, nhưng không tuyệt vời khi phải hiểu mã Perl của người khác vì họ thường chọn một cách khác để làm điều đó phù hợp với cách suy nghĩ của họ .

Tôi sẽ coi Perl là một công cụ rất hữu ích mà bạn có thể muốn tìm hiểu nếu bạn tập trung vào những gì các biểu thức thông thường có thể làm để giúp bạn sàng lọc các tệp văn bản của mình. Tránh xa bất cứ điều gì để làm với các đối tượng.


Vì vậy, bạn nói rằng nó rất hữu ích cho các tập lệnh nhanh để xử lý văn bản?
Bob

Theo tôi có, sau đó nó thực sự, thực sự tốt. Nó cũng có thể làm những việc khác nữa, nhưng những thứ đó không được nướng tốt.

1
Mặc dù Perl rất giỏi trong việc xử lý văn bản thông qua các biểu thức thông thường của nó, nhưng không cần phải thông qua nó nếu bạn biết Python hoặc Ruby (hoặc có thể là PHP), tôi sẽ nói, vì chúng cũng rất tốt với các biểu thức thông thường. Python dài hơn một chút, mặc dù, nhưng nó cũng chắc chắn sạch hơn.
Eric O Lebigot

@EOL, nhưng cả Python lẫn Ruby và PHP đều không thể đứng đầu giàn giáo để phân tích cú pháp văn bản. Xem ví dụ tùy chọn "-i".

@ ThorbjørnRavnAndersen: Đồng ý, đối với một lớp lót: oneliners của Python (tùy chọn -c) thực sự dài hơn. :)
Eric O Lebigot

7

Trong một thời gian phát triển Perl5 bị đình trệ vì tập trung vào Perl6, điều này gây ra sự chậm trễ lâu giữa việc phát hành 5,8 và 5,10. Kể từ đó, cộng đồng đã thực sự bắt đầu nhận ra rằng Perl5 và Perl6 là các ngôn ngữ khác nhau và gần đây đã có những bản phát hành mới rất thường xuyên.

Perl gần đây đã giành chiến thắng trong một cuộc thi ứng dụng web bằng Catalyst (Mặc dù tôi thích Mojolicy hơn ) và một số thực tiễn Modern Perl mới mang lại nhiều ý tưởng OO sạch hơn cho Perl với những thứ như Moose.

Theo tôi, với tư cách là một nhà phát triển Perl, Perl có một di sản lớn cũng như một tương lai tươi sáng không chỉ là băng keo giữ các mạng công ty lại với nhau mà còn là một vị trí mới trong các ứng dụng web.


3

Tôi không phải là một lập trình viên chuyên gia. Nhưng tôi thấy Perl khá dễ học (tôi đã sử dụng sách lạc đà), luôn là một niềm vui và PerlMonks là cộng đồng giúp đỡ thân thiện nhất trong lập trình. Perl dường như đã mất đi sự hấp dẫn giới tính của mình về việc thuê Ruby và Python, nhưng chỉ trong một số ngành nhất định (đặc biệt là web).


3

Nếu bạn biết perl, việc tìm hiểu Powershell của Microsoft sẽ dễ dàng hơn. Về cú pháp của powershell, nó không có gốc perl , nhưng Powershell đã lấy nhiều tính năng và khái niệm từ ngôn ngữ Perl, ví dụ, ngoài đỉnh đầu của tôi: biến $ _, tiền tố với các giá trị @ và chuỗi / vô hướng với $, quy ước tập tin để đặt tên và lưu trữ các mô-đun, và, theo một cách nào đó, Tự động tải, để đặt tên cho một số.

Vì vậy, nếu bạn biết Perl, nó sẽ có ích, và việc học Powershell sẽ dễ dàng hơn một chút, hoặc nắm bắt được suy nghĩ của Powershell, hoặc giữ thành ngữ Powershell trong bộ nhớ dài hạn của bạn. Gặp Powershell mà không có một số nền tảng perl có lẽ là một chút lạ hơn. Chỉ cần nói.

Tất nhiên, ngôn ngữ Powershell đã thêm các công cụ mới, đặc biệt là tính thân thiện với .NET và không tiếp tục bất kỳ chức năng / toán tử nào của perl cung cấp "khả năng tương thích ngược" với các công cụ dòng lệnh unix.


2

Grant McLean chỉ tải lên một bộ phim ngắn dựa trên sự phát triển của mapofcpan.org , cho thấy cách CPAN phát triển theo thời gian với cách thức trực quan theo phong cách bản đồ. Nó khá tự giải thích về sự sống động của cộng đồng. Không chết.

Perl chắc chắn phải chịu đựng tiếng xấu của nó, vì nhiều truyền thuyết và vì cộng đồng không muốn và đừng cố biến nó thành ngôn ngữ lập trình hippest-in-the-world. Thật khó hiểu tại sao rất nhiều người hoàn toàn tin rằng đó là một ngôn ngữ khủng khiếp. Bạn có thể viết mã đáng sợ với bất kỳ ngôn ngữ. Perl có các thực tiễn tốt nhất như bất kỳ ngôn ngữ nào khác, bạn chỉ cần thực hiện nó theo nhiều cách để thực hiện triết lý cơ bản.

Tôi có thể thấy một lý do rất đáng buồn cho danh tiếng xấu này: trong một thời gian dài, các trang web cộng đồng Perl có các thiết kế UI rất xấu ( ví dụ như perlmonks.org chẳng hạn). Cá nhân tôi thực sự không quan tâm đến điều này , thậm chí tôi có thể đến Perl vì lý do này: không có nhiều trang web thời trang UI, nhưng bạn có thể tin tưởng vào các công cụ, cộng đồng với niềm tin nhiều hơn vì nó không cố gắng đẹp hơn nó Tuy nhiên, các công cụ chất lượng không có nghĩa là bạn không nên tập trung vào vẻ bề ngoài và cuối cùng đó là một loại sai lầm khi không quan tâm đến vẻ ngoài.

Ví dụ, một người bạn của tôi (người thích ngôn ngữ thời trang hơn) nói với tôi rằng logo Perl6 hiện tại rất kinh khủng và sẽ là một vấn đề để thu hút xác thịt trẻ đối với Perl. Nhiều vấn đề hơn là với một viên đá sáng hoặc bất kỳ logo nào được thiết kế tốt .

Tôi tin rằng đó là một lý do rất đáng buồn cho sự phổ biến, nhưng đó là những gì thống trị thế giới.


Nếu bạn sẽ không thể hiện sự chú ý đến chi tiết trên logo của mình, tại sao tôi phải cho rằng bạn sẽ thể hiện sự chú ý đến chi tiết trong các chi tiết sâu hơn của ngôn ngữ của bạn? Không phải chỉ là logo trông xấu, mà logo xấu cảm thấy có triệu chứng của một nền văn hóa không coi trọng cách mọi thứ được trình bày, và điều đó củng cố định kiến ​​đằng sau tất cả những trò đùa "ngôn ngữ chỉ viết"
Racheet

Tôi đã nghe nói về những người làm việc với tiếng xấu. Những người này là những người ủng hộ Perl hiện đại và phát triển theo hướng thử nghiệm. Các trang web như buildinperl.com , Questub.io đang thay đổi cách chúng ta nên xem xét trường hợp Perl. Duck Duck Go cũng là một thành công lớn, không ai có thể nói họ không quan tâm đến cách mọi thứ được trình bày. Ngay cả metacpan.org cũng là một cách mang đến cho người dùng CPAN (sức mạnh Perl chính) một trải nghiệm mới thông qua việc hiển thị mã, tài liệu và mô-đun tìm kiếm với giao diện người dùng đẹp. Tôi không tin vào logo ngôn ngữ: C có logo không? Một ngôn ngữ không phải là một thương hiệu.
smonff

1

Perl chắc chắn không chết. Nó chưa bao giờ được thổi phồng như một số ngôn ngữ khác.

Mặc dù đúng là như vậy, bản thân Perl là một ngôn ngữ cũ, nó có một cộng đồng sôi động và rất hiệu quả, giá trị của nó nằm trong thư viện CPAN. Tôi không nghĩ bất kỳ ngôn ngữ nào cũng có thư viện rộng lớn và toàn diện như CPAN. Thậm chí không có gì đến gần. Trong CPAN, bạn sẽ tìm thấy hàng ngàn mô-đun và khung, làm bất cứ điều gì bạn có thể tưởng tượng. Cần một máy chủ web? Có HTTP :: Máy chủ. Cần một cơ sở dữ liệu độc lập? Có Muldis :: DB. Bất kể nhu cầu của bạn là gì, bạn thường sẽ tìm thấy một số mô-đun đáp ứng nhu cầu của bạn, bạn chỉ cần chọn một mô-đun phù hợp nhất với ứng dụng của bạn.

Đối với Ruby, Python và các đối thủ khác, tôi nghĩ rằng cạnh tranh lành mạnh là một lợi ích to lớn cho Perl. Bất cứ điều gì mà các ngôn ngữ khác có được, cộng đồng Perl viết lại bằng Perl. Ví dụ, khi Ruby bay trên thành công của Rails, Perl có Dancer, điều này tốt hơn nhiều so với Rails.

Perl chắc chắn không chết, cũng không chết. Không có gì hào nhoáng xảy ra xung quanh nó, không có công ty nào, sẽ được hưởng lợi từ việc thổi phồng Perl, vì vậy nó không được truyền thông chú ý nhiều, và không phải đứa trẻ nào cũng biết Perl, nên ít nói về nó.

Đã hơn 6 tháng kể từ bài viết gốc của bạn. Trong trường hợp bạn vẫn chưa quyết định, hãy tự giúp mình và học Perl.


0

Tôi đã sử dụng perl để phát triển trò chơi web từ những năm 90 và sau khi nghỉ 3 năm, tôi đồng ý với poster trước đó. Tôi trở lại và thấy nó phát triển theo cách trên và xa hơn nơi tôi rời nó.

Có phải nó đang chết? Không phải là một cơ hội.

Nó khá hữu ích? Tôi sẽ lạc mất mà không có nó. Có lẽ đó chỉ là tôi, nhưng từ những phản hồi khác, tôi muốn nói đó là một sinh vật sống rất năng động.


-6

Tôi đã có hầu hết trải nghiệm web chuyên nghiệp của mình với PHP nhưng khi tôi trở thành một nhà phát triển, mọi thứ trở nên khó khăn hơn một chút, nhiều nhiệm vụ đơn giản là PHP không thể thực hiện hoặc thực hiện không hiệu quả. Tôi có thể giơ tay lên nhưng thay vào đó (nhờ google) tôi thấy mình trong các phiên ssh lợi dụng libreoffice, ffmpeg, fantemagick để viết các hàm xử lý bài cho PHP. Không bao giờ sử dụng nó trước khi tôi đi đúng cho PERL .. chủ yếu là vì Perl nằm hoàn toàn bên dưới ngăn xếp LAMP.

(1) nó được cài đặt sẵn trên tất cả các máy chủ LAMP hoặc ít nhất là có một vòng quay mới. (2) có một repo CPAN tuyệt vời để giúp bạn tiết kiệm nhiều thời gian. (3) nhanh hơn / an toàn hơn để thực hiện các tác vụ trong đó PHP chạy trên apache không thành công. (4) rất giống với PHP và dễ học.

Kết hợp các ý tưởng với PHP, nướng với PERL bằng BASH như mong muốn, lật theo MySQL sau đó phục vụ với HTML5 và một loạt jQuery. Đó là một công thức tuyệt vời.


1
Bất cứ điều gì để sao lưu những tuyên bố này lên?
Austin Henley
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.