Czy Perl jest nadal użytecznym, realnym językiem? [Zamknięte]


77

Wiem, że wcześniej o to pytano, ale tutaj nic nie idzie ...

Czy Perl wciąż jest czymś, co można by uznać za przydatne? Jeśli ktoś byłby nowym programistą (zupełnie nowy w programowaniu lub zaledwie kilka miesięcy / lat doświadczenia), czy Perl byłby czymś, co warto uznać za warte nauki?

Czy Perl jest nadal używany z częstotliwością? Czy to wciąż popularne?

Czy Perl umiera w porównaniu do języków takich jak Python, Ruby, PHP, ASP.NET itp.?

Zasadniczo sprowadza się do tego:

  • Czy nadal jest używany / czy nadal jest często używany? Jeśli tak, to czy umiera? Jeśli nie, czy wróci?
  • Czy warto się tego nauczyć?
  • Jak porównuje popyt z takimi językami jak Python pod względem popularności i użyteczności / żywotności? Czy języki takie jak Python lub Ruby można uznać za zamienniki Perla?

Ponadto, czy nowsze wersje Perla naprawdę przyniosą znaczną poprawę społeczności Perla, a może przywrócą Perla z powrotem na scenę centralną w porównaniu do innych języków?

EDYTOWAĆ:

Okej, przypuszczam, że jest lepsze, przeredagowane pytanie:

Czy Perl wciąż rośnie, czy też „umiera”? Czy nadal jest to język, którego warto się uczyć i którego używać? Jakie projekty naprawdę „świecą” w porównaniu do innych języków? Co sprawia, że ​​Perl jest językiem do wyboru? Zasadniczo: czy Perl staje się przestarzały w porównaniu do innych języków, a jeśli tak, to czy spodziewasz się, że to się zmieni, czy będzie kontynuowane?

I dziękuję wszystkim, którzy do tej pory odpowiedzieli, dyskusja była naprawdę interesująca!


12
Nie traćmy perspektywy, według TIOBE wciąż znajduje się w pierwszej dziesiątce, wyprzedzając Ruby, a nawet JavaScript.
Daniel

Odpowiedzi:


60

Przede wszystkim zawsze lepiej jest ujednoznacznić .

Firmy mówią o Perlu 5, gdy rozmawiają o Perlu, ale na dalekiej krainie, poza głęboko myślącą wyspą , plemię projektantów opracowuje komitet , który wciąż gotuje potężną płytę Perla 6 (i jest prawie gotowy, z silnikiem zapisanym w Haskell i napędzany łzami bogów )

Ok, powiedział, że to, co jest Perl 5 wykorzystywane do, dzisiaj?

  • starsze systemy sieciowe / intrawebs - niektóre po prostu nie umrą

  • eksploracja danych / analiza statystyczna - silnik wyrażenia regularnego perl, nawet jeśli jest nieco nieaktualny (( PCREwyodrębniona biblioteka, doładowuje go w dowolny możliwy sposób i jest to domyślny PHPsilnik) nadal nadaje się do prostej analizy

  • Administracja systemem UNIX - Perl powinien zawsze być zainstalowany w systemie UNIX.
    Możesz liczyć na to, że będzie łatwo dostępny nawet w systemie Mac OS X.

  • prototypowanie sieci - wielu ekspertów od sieci bazowych nauczyło się Perla, kiedy było już na topie; i nadal robią z nim swoje dowody koncepcji .

  • bezpieczeństwo - także wielu ekspertów ds. bezpieczeństwa potrzebuje szybkiego prototypowania . (i szybkie zautomatyzowane poprawki) Perl może to ukryć.

Obszerna kolekcja CPAN jest bardzo przydatna w przypadku prototypów.
(Baterie mogą nie być dołączone, ale wciąż są tam, na półce )

Pamiętaj jednak o wadach :

  • Obsługa obiektów w Perlu jest do bani , błogosławisz referencje i robisz nieświęte rzeczy w imieniu obiektów, a potem zastanawiasz się, dlaczego w ogóle zadałeś sobie tyle trudu.
  • Czytanie Perla innych ludzi jest czymś więcej niż rzemiosłem, jest nauką , a także bolesną .
  • Perl jest fajny, sprawia, że ​​myślisz fajnie, sprawia, że ​​czujesz się fajnie, stajesz się programistą . Pomyślcie teraz o wstaniu i pracy w biurze pełnym gwiazd rocka : to „łódź, która mocno kołysze” . Spodziewaj się dzikich fluktuacji.

19
@WorldEngineer zgodził się, ale najgorsze jest to, że pochodząca z Perla, Ruby wcale nie czuje się głupio : po prostu czuje się jak głupia, słaba wersja perla.
ZJR

12
Widzę tam tylko jedną wadę. Osobiście lubię błogosławić moje referencje, ale dla tych, którzy tego nie robią, jest Łoś (na CPAN), który jest wystarczająco dobrym systemem obiektowym, że kopiują go inne języki. I choć uwielbiam szlachetność, nie spotkałem tylu obsesyjnych na punkcie gwiazd rocka w świecie Perla. W społeczności Perla jest znacznie poważniejszych, zdyscyplinowanych programistów (którzy lubią bawić się w wolnym czasie) niż gwiazdy rocka. (Wyraźnie zaprzeczam, że jestem programistą rockstar, dopóki kobiety nie rzucają we mnie majtkami, pisząc kod.)
Dave Sherohman,

3
@johannes nadal musi się uporać z prawem Van Rossum: "Whenever you find a python executable preinstalled, it's the wrong version"Wniosek:"sometimes the right version is available, but it has the wrong name"
ZJR

2
Perl jest nadal dość duży w przestrzeni bioinformatycznej.
dietbuddha

3
+1 do administrowania systemem. Nigdy nie widziałem, żeby system operacyjny oparty na Uniksie nie zawierał perla. Widziałem to nawet w niektórych wbudowanych systemach operacyjnych Linux, które korzystały z Busybox w swoich
obszarach

23

Moim zdaniem, po ponownej pracy z Perlem po kilku latach prawie nieużywania go, jest lepszy niż kiedykolwiek. Perl 5 ma wiele niesamowitości w CPAN, nawet OO można teraz zrobić. (Spójrz na Modern Perl )

Perl 5 jest daleki od śmierci. Wystarczy spojrzeć na niektóre strony Perla i CPAN, a na horyzoncie pojawia się zupełnie nowy język - Perl 6.

Istnieje wiele zasobów w Internecie, blogach i prezentacjach na temat tego, dlaczego nie jest źle i dlaczego ma złą reputację, na którą nie zasługuje - po prostu spójrz na te, aby je zrozumieć.


7
Moim zdaniem CPAN jest świetny, jeśli potrzebujesz koła o dowolnym kształcie, ale mniej świetny, jeśli potrzebujesz fabryki samochodów.

@ ThorbjørnRavnAndersen CPAN jest świetny, jeśli potrzebujesz koła o dowolnym kształcie. Problem polega na tym, że shape($wheel) == 'round' ? available_in_cpan($wheel) : false;nie jest to prawidłowy filtr.
Jason Lewis

To, że OO istnieje w Perlu, nie oznacza, że ​​jest naprawdę dobre.
kirbyfan64sos

22

Najważniejsze, że Perl wciąż do tego dąży, to CPAN - jest tak wiele wstępnie napisanych modułów, że bardzo łatwo jest znaleźć coś, czego potrzebujesz.

To powiedziawszy, nie nauczę się Perla. Perl to świetny język dla osób, które już go znają (jak ja), ale wydaje się , że Python (z perspektywy mojej osoby z zewnątrz) jest lepszym językiem do robienia tego rodzaju szybkich i brudnych analiz plików i tekstu, które Perl był kiedyś „ go-to "język dla.


Czy uważasz, że daje to przewagę nad innymi językami? Czy to po prostu równa się z innymi językami. Na przykład, środowisko .NET wydaje się być wypełnione różnymi przydatnymi metodami i klasami.
Bob

6
@Paul Tomblin - To dość prymitywny sposób. „Najważniejszą rzeczą, którą Perl wciąż ma na to ochotę ...” <- Główną rzeczą, na którą czekają C / C ++, jest to, że wciąż jest w nich napisanych wiele programów. Poza tym są śmieciami.
Rook

Zgadzam się z Idigas, ponieważ można powiedzieć to samo o tym, że Java ma wiele pakietów ...
Izkata,

1
Pytanie nie brzmiało: „Czy C ++ lub Java to dobry język”. Pytanie brzmiało, czy Perl jest nadal opłacalny. I są dwa powody, dla których wciąż piszę moje aplikacje internetowe w Perlu: CPAN i mam mnóstwo kodu, który już napisałem.
Paul Tomblin

7
Gdybym zaczynał teraz, prawdopodobnie użyłbym Pythona. Ale używam Perla, bo jestem dobry w Perlu.
Paul Tomblin

19

Kiedy kilka lat temu postanowiłem nauczyć się Perla jako mojego pierwszego języka, było kilka czynników, które wpłynęły na moją decyzję:

  • czy w języku jest wiele dobrych materiałów referencyjnych?
  • czy mogę łatwo znaleźć pomoc na moje pytania?
  • czy język jest w użyciu przez dużą różnorodną populację?
  • czy istnieją aktywne projekty, które pomogą mi w osiągnięciu moich celów?

Dla mnie odpowiedź brzmiała: tak. Jestem grafikiem. Nauczyłem się HTML i CSS wiele lat temu, ale musiałem podnieść swoje umiejętności, gdy klienci chcieli więcej na swoich stronach internetowych. Użyłem różnych frameworków php, które dały mi błąd, aby naprawdę nauczyć się programować. Przeprowadziłem wiele badań i znalazłem dobrze wspierane projekty, takie jak Szablon Toolkit, a także nowe, takie jak Perl Dancer i Mojolicious. Dokumentacja dołączona do Perla była bardzo pomocna, podobnie jak biblioteka publikacji.

Znalazłem listy mailingowe Perla całkiem przyjazne dla początkujących i aktywnych. W PerlMonks ludzie z całego świata otrzymują pytania i odpowiedzi na wiele różnych zastosowań. Istnieje kilka aktywnych witryn z wiadomościami, blogów i strumieni Perla. Te zasoby nauczyły mnie wiele o Perlu i programowaniu.

To prawda, to jest MOJE doświadczenie. Nie wiem dokładnie, ile osób loguje się na tych stronach, subskrybuje listy mailowe lub buduje swoje aplikacje internetowe, na przykład za pomocą Perla. Nie mogę też wypowiedzieć się na temat tego, o ile lepsze lub gorsze byłyby moje doświadczenia, gdybym wybrał inny język na początek. Nie wątpię, że udało mi się znaleźć wiele takich samych pozytywnych aspektów w społecznościach innych języków. Mogę powiedzieć, że nadal jestem zadowolony z dokonanego przeze mnie wyboru.


Nauczyłem się Perla jako mojego pierwszego języka w 1996 roku, ponieważ właśnie przełączyłem się na system Linux z systemu Windows dla mojego podstawowego systemu operacyjnego. Perl nigdy nie był świetnym językiem internetowym (chociaż PHP jest czystą destylacją całego zła, jakie ma do zaoferowania Perl), ale jest fantastyczny jako zamiennik skryptów bash. Problem pojawia się, gdy ludzie próbują udawać, że istnieje coś takiego jak srebrna kula.
Jason Lewis

16

Popularność języka ma niewiele wspólnego z jego żywotnością lub użytecznością. Perl jest nadal bardzo użytecznym językiem. Jego reputacja, na którą zasłużyła lub nie, jako nieprzyjazna dla początkujących w końcu oznaczała, że ​​nikt nowy nie nauczyłby się jej, gdyby mogli pomóc. Jedynym powodem, dla którego już go nie używam, jest to, że nikt inny, kogo znam, już go nie używa.


5
Czy zatem stwierdzenie „Jedynym powodem, dla którego już go nie używam, jest to, że nikt inny, kogo znam, już go nie używa” wskazuje na to, że popularność może mieć coś wspólnego zarówno z jego opłacalnością, jak i użytecznością? W każdym razie, nie o to chodzi w moim pytaniu. Naprawdę chcę wiedzieć, czy Perl jest nadal przydatny? Kiedy wybierasz spośród innych języków (jak w, kiedy naprawdę świeci)?
Bob

1
Języki fakultatywne istnieją jako środek wyrazu dla innych ludzi, mówiąc, że popularność języka w stosunku do wartości, którą przedstawia, jest moim zdaniem nieuzasadniona.
wpadki

4
Jest to bardzo oparte na środowisku ... Jeśli jesteś * sysadminem *, twoje wybory do wykonywania typowych zadań sprowadzają się do Perla vs. sed + awk + grep + bash ... a Perl jest ogólnie łatwiejszy niż zapamiętywanie 4 składni dla jednorazowy skrypt.
Jason Lewis

12

Dla przypomnienia programuję w Perlu 5 od około 15 lat, więc jestem trochę stronniczy. Powiedziawszy to, bardzo lubię Perla. Nie słuchaj naysayers i nie sądzę, że jego wiek jest w jakiś sposób wskaźnikiem jego żywotności. Najlepszym sposobem spojrzenia na Perla jest zobaczenie go w porównaniu do innych języków:

  • PHP - PHP jest całkiem dobrym internetowym językiem programowania; nie zrozum mnie źle. Ale to tylko internetowy język programowania. Nawet aplikacje internetowe potrzebują swoich cronjobs do przeprowadzenia procesów czyszczenia, a do tego trzeba zrobić kilka dziwnych rzeczy. Nie wspominając o konieczności napisania szybkiego skryptu dla administratora systemu UNIX lub parsowania pliku tekstowego. Ponadto PHP nie ma CPAN.

  • Ruby - Język jest zbyt nowy i „skrypciarz” jak na mój gust. Jedyne, co słyszę o Ruby, to Ruby on Rails. Perl ma Catalyst i Dancer (jako frameworki MVC), które są cholernie świetnymi MVC, ale to nie jest podstawa języka. W najbliższym czasie (jeśli w ogóle) nie znajdziesz „Ruby” jako wymogu w ofertach pracy. Ponadto Ruby nie ma CPAN.

  • Python - Według słów Larry'ego Walla, Python jest po prostu olejem wężowym. Python dba o białe znaki, a ostatnim językiem, którym się przejmowałem, był BASIC. Ponadto, podobnie jak BASIC, został zasadniczo zaprojektowany jako łatwy w użyciu język dla początkujących. Wreszcie, nie ma tutaj CPAN.

  • Java - Java to problematyczny język potomny. Pomysł polegał na tym, aby ta maszyna wirtualna działała na dowolnej platformie, ale ze względu na ogromną popularność języka na kursach uniwersyteckich aplikacje Java są wszędzie tam, gdzie nie powinny. Na przykład wewnętrzne aplikacje serwerowe nie powinny istnieć. Jest to pojedynczy serwer ze specyfikacjami, które definiują, i jest pakowany w osobną maszynę wirtualną o ograniczonej przestrzeni pamięci. Java jest rozdęta i nie mają CPAN.

  • C # - Właściwie używam teraz tego języka i wydaje mi się, że nawiązałem z nim relację miłość / nienawiść. Możliwość przeciążenia metod o różnych parametrach jest fajna i przyjemna. Ale jeśli chcesz języka, który będzie sukał w każdym wierszu kodu dotyczącego rzutowania tekstu , C # jest dla Ciebie. Mój Boże, chce, żebyś rzucił KAŻDY! Tworzenie zajęć jest fajne, ale nagle zdajesz sobie sprawę, że spędzasz więcej czasu na tworzeniu zajęć, aby ten cholerny język działał, niż pisanie prawdziwego kodu.

    Ponadto C # nie ma ... dobrze, ma .NET, który jest naprawdę dobry i rozbudowany. Jednak nadal bardziej podoba mi się CPAN, ponieważ nadal możesz pisać własne moduły i narzekać autorowi na błąd lub wadę projektową. I wszyscy są wolni. Ponadto Perl pracuje w kierunku Perl.NET w przyszłości, więc wkrótce będziemy mogli projektować aplikacje Windows.

Perl to świetny język, który ma:

  • Wyrażenia regularne - jeśli Perl może zrobić dobrze, to jest to manipulacja tekstem. Tak, wiele języków ma wyrażenia regularne, ale Perl cholernie je wymyślił, i jest powód, dla którego grep ma tryb „Wyrażenie regularne Perla” lub dlaczego Oracle ma sekcję „Rozszerzenia mające wpływ na Perla w wyrażeniach regularnych Oracle”. Jest wbudowany i nie wymaga żadnych modułów.

  • Elastyczność - masz trzy podstawowe typy zmiennych: skalary, tablice i skróty. Otóż ​​to. To wszystko czego potrzebujesz. Nie masz int, bajtu, łańcucha ani żadnego takiego badziewia. Perl dobrze to rozumie. Możesz używać dowolnych referencji bez obawy o wycieki pamięci lub spowodować awarię całego komputera. Język po prostu działa.

  • Przenośność - Perl działa świetnie w Internecie. Działa świetnie w systemie UNIX. Działa nawet całkiem dobrze w systemie Windows. Nie jest zaszyta w jednej gołębicy. Jest to jack-of-all-trade, ale także mistrz (głównie) wszystkiego.

  • Łatwo jest zrobić dużo za pomocą małego kodu - daj mi pusty plik 1K, a będę mógł pisać wszystkie rzeczy na tym miejscu. Nawet liniowiec Perl jest świetny do dodania do potoku wiersza poleceń.

  • CPAN - Nie mogę podkreślić, jak dobrze jest znaleźć wszystko, czego potrzebujesz do czegokolwiek. Co to jest „cokolwiek”? A co powiesz na moduły DB dla każdej bazy danych lub rzeczy, które możesz sobie wyobrazić, od Oracle przez iPoda, CSV, Adabasa i Yaswi? Co powiesz na kilka w pełni funkcjonalnych serwerów sieciowych? Co powiesz na czytnik plików Excel, moduł SNMP lub moduł, który odczytuje komentarze do linii debugowania lub moduły, które pomagają szybciej programować? W projekcie, który teraz wykonuję, jest pisanie dynamicznego generatora map Terraria, rozszerzonego z istniejącego modułu o nazwie Games :: RolePlay :: MapGen. .NET nigdy nie miałby czegoś takiego.

    Dodatkowo instalacja dowolnego modułu za pomocą CPAN jest bardzo prosta. Pobierz z Debiana. Zainstaluj go bezpośrednio z CPAN. Radzi sobie równie dobrze jak apt-get w rozwiązywaniu zależności. Nie mam problemu z poleceniem mojemu systemowi administracyjnemu, aby zainstalował moduł X z CPAN, ponieważ jest to proste polecenie jednowierszowe.

Tak, ma swoje wady i tak, jestem do tego stronniczy, ale prawdopodobnie już wiele razy słyszałeś negatywy. Nie przewyższają pozytywów, nie przez długi czas.


14
-1 głównie za to, że nie rozpoznają, że inne języki mają narzędzia równie dobre, jeśli nie lepsze niż CPAN. Na przykład Maven Central dla Javy? Ma więcej artefaktów niż CPAN i jest zerową linią do instalowania artefaktów Maven, ponieważ są one automatycznie identyfikowane poprzez analizę zależności modelu obiektowego projektu. Poza tym mam mniej doświadczenia z Rubinowymi Klejnotami, ale uważam, że są one mniej więcej równoważne CPAN.
mikera

8
PHP ma PEAR. I to nie tylko internetowy język programowania.
MattBianco,

25
Nie powiedziałbym, że jesteś trochę stronniczy. Jesteś wyraźnie stronniczy. Nie mogę uwierzyć, że potrafisz rozróżnić Python głównie dlatego, że ma znaczną spację i ponieważ Larry (z pewnością nie jest to obiektywne źródło) użył wyrażenia olej węża. I w ogóle nie ma ofert pracy dla Ruby? Kiedy ostatnio widziałeś rynek pracy? Przynajmniej staraj się ustalić poświadczenia Perla.
Muhammad Alkarouri

6
-1 dla wyraźnie stronniczej i nierozpoznanej perspektywy na inne języki. Zgadzam się, że Python jest olejem wężowym, ale Ruby == "script kiddie" jest absurdalny. Nigdy nie widziałem próby włamania opartego na Ruby na żadnym z obsługiwanych przeze mnie serwerów. To głównie Python. PHP jest w jakimkolwiek sensie akceptowalnym językiem programowania? Kombinowanie. Twoje komentarze na temat C # pokazują zdumiewającą naiwność dotyczącą pisania i / lub orientacji obiektowej. Trzymaj się Perla, kolego. Poważnie, zawsze będę kochał Perla, ponieważ był to mój pierwszy „prawdziwy” język programowania i jest świetny do zadań sysadmin, ale ta odpowiedź jest gorsza niż zła.
Jason Lewis

8
+1 Za znieważanie każdego języka, który kiedykolwiek kochałem (lub którego nienawidziłem) - z wyjątkiem Perla, oczywiście. :-)
jpaugh

12

Wydajność jest jednym z głównych powodów, dla których warto wybrać Perla. W porównaniu z Pythonem, Ruby lub dowolnym językiem skryptowym opartym na JVM jest błyskawicznie szybki.

Dlatego nigdy nie został zastąpiony w przestrzeni eksploracji danych, wszystkie inne (bezpłatne) języki są wolniejsze, jeśli chodzi o obsługę dużych ilości danych.


6
Czy możesz zapewnić wsparcie / testy porównawcze dla tego stwierdzenia? Wydaje mi się, że ostatnie testy porównawcze dla Perla vs. Ruby / Python sprzyjały temu ostatniemu, szczególnie. przy uwzględnieniu alternatywnych realizacji tych ostatnich.
Jason Lewis

2
Wszelkie uwagi dotyczące wydajności muszą być uogólnione, chyba że podano określone wersje i środowiska. Wiele benchmarków - hentenaar.com/serendipity/index.php?/archives/… onlyjob.blogspot.com/2011/03/... są dość typowe. Masz rację, najnowsze wersje Ruby są dość szybkie, ale Perl ma regularne wydania „zwiększające wydajność”, więc nie powinno mieć problemu z nadążeniem. LUA bije wszystko.
James Anderson

Lua jest całkiem płonąca.
Jason Lewis

12

Perl ma swoje miejsce. Jego „zła reputacja” jest na ogół spowodowana tym, że pozwala ci na dużą elastyczność w robieniu rzeczy, które naprawdę powinny być wykonane przez inne narzędzie.

Jeśli zadajesz sobie pytanie „Co próbuję osiągnąć? Czy istnieją odpowiednie narzędzia, aby to osiągnąć?” wtedy jesteście częścią drogi.

Jeśli piszesz szybki skrypt, użycie języka skryptowego ma sens. Jeśli chcesz stworzyć złożoną aplikację, możesz „napisać” ją w Perlu, ale prawdopodobnie nie powinieneś.

Ponieważ jednak twoje pytanie dotyczy nowego programisty, proponuję pozostawić Perla w spokoju. Po prostu dlatego, że nauczysz się mniej złych nawyków z mniej elastycznego języka.


3
W porządku, ale Python jest również realną opcją do tworzenia szybkiego skryptu, ale możesz go również rozciągać, aby tworzyć większe programy. Czy to samo nie dotyczy Perla? Czy to sprawia, że ​​Python jest lepszy niż Perl?
Bob

@Bob: Myślę, że to głównie to, do czego przywykłeś pisać i jaki masz gust. Czasami jest też przydatna biblioteka Perla, której nie masz w Pythonie i na odwrót.
dagnelies

1
@ Bob: Sugerowałbym, aby najpierw wypróbował Pythona, jest on bardziej przyjazny dla noobów. Następnie powiedziałbym mu, aby wybrał zupełnie inny język jako drugi język, taki jak Scheme.
dagnelies

1
@Bob: Cały system .NET jest dostępny tylko w systemie Windows. W przestrzeni Unix / Linux Perl jest doskonałym językiem do zastępowania skryptów powłoki, administrowania systemem i wszystkiego, co wymaga dużego przetwarzania tekstu i nie wiele innych. Robi rzeczy bezpośrednio, do których (ostatnio wyglądałem) Python potrzebował trochę struktury. Zasadniczo sprawia to, że Perl jest gorszym ogólnym językiem programowania, ale lepszy w przypadku bardziej wyspecjalizowanych aplikacji.
David Thornley

1
@ Bob Właściwie to ciekawy punkt. Perl jest naprawdę przydatny, jeśli masz skrypt powłoki, który przeciera granice bash. Perl dostosowuje się do tego dość łatwo, ponieważ możesz po prostu zastosować backsick wokół większości poleceń i nadal będzie działać.
Stephen Gross

12

Przyciągnął mnie Python ze względu na jego układ - struktura bloków to „to, co widzisz, to co dostajesz” - i nie rozumiem, dlaczego są ludzie, których to zniechęca. Myślę, że to był i jest dobry pomysł.

Wróciłem jednak do Perla. Wydaje się, że lepiej to przemyśleć jako praktyczne narzędzie. W teorii informatyki Python i Ruby są „lepsi”. Ale pracuję w prawdziwym świecie.

Ruby i Python są bardziej modne wśród dzieci świeżo po studiach. Większość programistów, którzy są na Facebooku, podąża za obecną modą i wybiera Ruby lub Python. Oryginalny post ilustruje to: łączy „Czy warto” z „Czy nadal jest popularny?”

Nie wiem ani nie obchodzi mnie, czy Perl jest „popularny” w świecie Facebooka. Jest to prawdopodobnie najczęściej używany język skryptowy wśród ludzi, którzy dużo osiągają, co jest zupełnie inną rzeczą. Niektórzy komentatorzy, którzy myślą, że ich ulubiony język ma zasoby porównywalne do CPAN, nie mają pojęcia o szerokim i głębokim CPAN.


5
Znaczące białe znaki to okropny pomysł. Zawsze był, zawsze będzie. To powiedziawszy, chociaż używam Ruby wszędzie tam, gdzie ma to sens, wciąż mam kilka skryptów Perla do zadań sysadmin, których nie miałem powodu przepisywać w Ruby. Dlaczego? Działają dobrze i są w najsłodszym miejscu Perla. Po co tworzyć więcej pracy?
Jason Lewis

1
Zmuszanie ludzi do prawidłowego wcięcia jest dobrym pomysłem niezależnie od języka. Lepsze języki (jak Python) po prostu stosują więcej siły.
Brendan

10

Perl jest językiem do pisania narzędzi jednorazowych. Istnieje wiele innych aplikacji, w których Perl jest mniej lub bardziej trwały i użyteczny, ale jeśli brakuje komendy powłoki, aby zrobić coś dziwnego, jeśli potrzebujesz kodu pośredniczącego, aby pobrać niektóre dane z nieparzystego gniazda, jeśli masz plik dziennika lub plik bazy danych i trzeba wyodrębnić część treści w sposób poza zasięgiem SQL, jeśli trzeba pobrać kilka obrazów z serwera lub wszystkie szablony stron zawierają ten sam typ błędu i chcą je wszystkie naprawić - biczowanie 10-minutowy skrypt Perla jest najlepszym rozwiązaniem.

Napisanie tego samego w Shell byłoby prawdopodobnie możliwe, ale ze względu na dziwne zastrzeżenia dotyczące składni powłoki zajmie to więcej czasu i może być znacznie trudniejsze. Dla porównania napisanie tego w jakimkolwiek „profesjonalnym” języku, takim jak C ++, C #, Java itp., Zajmie około godziny. Pisanie tego w konkurencyjnym języku skryptowym, takim jak Python, Ruby lub PHP, jest realną alternatywą i prawdopodobnie potrwa do 20% dłużej.

Tak, programy w innych językach będą łatwiejsze w utrzymaniu i łatwiejsze do odczytania. Ale jeśli potrzebujesz rozwiązania TERAZ, Perl jest właściwym rozwiązaniem.


8

Sprawdź stronę „ostatnio przesłane do CPAN” - strona . Codziennie przesyłanych jest> 20 nowych modułów lub zaktualizowanych modułów. Myślę, że średnia liczba codziennych wysyłanych danych powoli, ale stale rośnie. Czy to działanie jest znakiem umierającego języka? Nie!

Zawsze imponuje mi to, jak niektóre ważne moduły (na przykład do programowania przez Internet lub interfejsy do sterowników RDBMS) były utrzymywane i udoskonalane przez wiele lat. Często przez pierwotnego autora lub nowych opiekunów. Często tworzyło to bardzo dojrzały kod.

Aby wprowadzić moduł do CPAN, autorzy są zachęcani do przejścia bardzo długiej drogi do zachowania kompatybilności wstecznej (ze starszymi wersjami perl 5), a także niezależności od platformy. Zobacz na przykład http://matrix.cpantesters.org/?dist=DBI (DBI = interfejs bazy danych, warstwa abstrakcji)

Również sam język: Jestem nieco zdziwiony wszystkimi nowymi funkcjami, które zostały włączone do języka od 5.10, 5,12., 5.14. Nie nauczyłem się korzystać z nowych funkcji. Perl ewoluuje dla mnie zbyt szybko!


7

Nauczyłem się Perla 4 i 5 podczas administrowania systemem w latach 90-tych. Dzisiaj zajmuję się programowaniem w Javie (gdzie wywoływanie Perla zwykle nie jest pożądane) i nadal używam Perla od czasu do czasu na moim komputerze programistycznym. Zwykle służy to wyłącznie do analizowania danych w plikach dziennika, w których wyrażenia regularne w Perlu i rusztowania do analizowania tekstu w onelinerach w Perlu bardzo ułatwiają wykonywanie wiersza poleceń.

Zasadniczo używam go dzisiaj jako awk na sterydach. Do tego jest genialny.

Jedną z cech Perla jest to, że istnieje więcej niż jeden sposób na zrobienie prawie wszystkiego. Pozwala to wybrać ten, który pasuje do twojego sposobu myślenia - co jest świetne, gdy po prostu hakujesz razem jeden lub dwa oneliner, ale nie tak świetne, gdy musisz rozumieć kod Perl innych ludzi, ponieważ zwykle wybierają inny sposób, aby to zrobić, pasuje do ich sposobu myślenia.

Uważam Perla za bardzo przydatne narzędzie, którego możesz się nauczyć, jeśli skupisz się na tym, co mogą zrobić wyrażenia regularne, aby pomóc ci przeszukiwać pliki tekstowe. Trzymaj się z dala od wszystkiego, co ma związek z przedmiotami.


Powiedziałbyś, że jest to szczególnie przydatne w szybkich skryptach do obsługi tekstu?
Bob

Moim zdaniem tak, to jest naprawdę bardzo dobre. MOŻE robić inne rzeczy, ale nie są tak dobrze upieczone.

1
Chociaż Perl jest bardzo dobry w obsłudze tekstu za pomocą wyrażeń regularnych, nie trzeba go przeglądać, jeśli znasz Python lub Ruby (lub może PHP), powiedziałbym, ponieważ są one również bardzo dobre w wyrażeniach regularnych. Python jest jednak trochę bardziej gadatliwy, ale z pewnością jest również czystszy.
Eric O Lebigot

@EOL, ale ani Python, ani Ruby, ani PHP nie mogą przewyższyć rusztowania dla analizatorów tekstowych oneliner. Zobacz np. Opcję „-i”.

@ ThorbjørnRavnAndersen: Zgoda, w przypadku jednej linijki: oneliner w Pythonie (opcja -c) jest rzeczywiście dłuższy. :)
Eric O Lebigot

7

Przez pewien czas rozwój Perl5 był w stagnacji z powodu skupienia się na Perl6, co spowodowało duże opóźnienie między wydaniem 5.8 a 5.10. Od tego czasu społeczność naprawdę zaczęła zdawać sobie sprawę, że Perl5 i Perl6 są różnymi językami, a ostatnio pojawiły się bardzo regularne nowe wydania.

Perl niedawno wygrał konkurs na aplikację internetową przy użyciu Catalyst (chociaż wolę Mojoliciousa ), a niektóre z nowych praktyk Modern Perl przynoszą Perlowi dużo czystszych pomysłów OO z takimi rzeczami jak Łoś.

Moim zdaniem, jako programista Perla, Perl ma wspaniałą spuściznę, a także świetlaną przyszłość, nie tylko jako taśma klejąca, która utrzymuje sieci korporacyjne razem, ale także miejsce w nowej popularności aplikacji internetowych.


3

Nie jestem ekspertem programistycznym. Ale uważam, że Perl jest łatwy do nauczenia się (korzystałem z książki o wielbłądach), co zawsze jest przyjemnością, a PerlMonks jest najbardziej przyjazną społecznością pomocy w dziedzinie programowania. Wygląda na to, że Perl stracił seksapil, jeśli chodzi o zatrudnianie Ruby i Pythona, ale tylko w niektórych branżach (szczególnie internetowych).


3

Jeśli znasz perla, łatwiej jest nauczyć się Microsoft PowerShell. Jeśli chodzi o składnię PowerShell, nie ma on rdzeni Perla , ale Powershell wziął wiele funkcji i pojęć z języka Perl, np. Z góry mojej głowy: zmienna $ _, prefiksowanie tablic @ i ciągi / wartości skalarne za pomocą $, konwencje plików dla nazewnictwa i przechowywania modułów oraz, w pewnym sensie, automatyczne ładowanie, żeby wymienić tylko kilka.

Więc jeśli znasz Perla, przyda ci się i trochę łatwiej jest nauczyć się Powershell, zrozumieć sposób myślenia Powershell lub zachować idiom Powershell w pamięci długoterminowej. Spotkanie z Powershellem bez jakiegoś tła perlowego jest prawdopodobnie nieco dziwniejsze. Tylko mówię.

Oczywiście język Powershell dodał nowe rzeczy, w szczególności przyjazność dla platformy .NET, i nie kontynuował żadnych funkcji / operatorów perla, które zapewniają „wsteczną kompatybilność” z narzędziami wiersza poleceń unix.


2

Grant McLean właśnie przesłał krótki film oparty na ewolucji mapofcpan.org , pokazujący ewolucję CPAN wraz z wizualnym stylem mapy. To dość oczywiste o żywotności społeczności. Nie umieram

Perl z pewnością cierpi z powodu złej reputacji z powodu wielu legend i dlatego, że jego społeczność nie chce i nie próbuje uczynić go najmodniejszym językiem programowania na świecie. Bardzo trudno jest zrozumieć, dlaczego tak wielu ludzi jest absolutnie przekonanych, że to okropny język. Możesz pisać przerażające kody w dowolnym języku. Perl ma najlepsze praktyki jak każdy inny język, wystarczy zaimplementować go w więcej niż jednym sposobie realizacji filozofii bazowej.

Widzę bardzo smutny powód tej złej reputacji: przez długi czas strony społeczności Perla otrzymywały bardzo brzydkie projekty interfejsu użytkownika (tak jak na przykład perlmonks.org ). Osobiście tak naprawdę mnie to nie obchodzi , może nawet przyjechałem do Perla, ponieważ z tego powodu: nie ma zbyt wielu modnych stron internetowych, ale możesz zaufać narzędziom, społeczności z większą wiarą, ponieważ nie próbuje być piękniejszym niż jest. Jednak wysokiej jakości narzędzia nie oznaczają, że nie powinieneś skupiać się na wyglądzie, a ostatecznie to rodzaj błędu, aby nie dbać o wygląd.

Na przykład mój przyjaciel (który lubi modniejsze języki) powiedział mi, że obecne logo Perl6 jest przerażające i będzie problemem, aby przyciągnąć młode ciało do Perla. Znacznie większy problem niż w przypadku jasnego kamienia lub innego dobrze zaprojektowanego logo .

Uważam, że to bardzo smutny powód niepopularności, ale to właśnie rządzi światem.


Jeśli nie zamierzasz zwracać uwagi na szczegóły na swoim logo, dlaczego miałbym zakładać, że zwracasz uwagę na szczegóły w głębszych szczegółach swojego języka? Nie chodzi tylko o to, że logo wygląda źle, ale o to, że złe logo jest symptomatyczne dla kultury, która nie
docenia

Słyszałem o ludziach pracujących nad złą reputacją. Ci ludzie są zwolennikami nowoczesnego Perla i rozwoju opartego na testach. Strony internetowe, takie jak builtinperl.com , questub.io, zmieniają sposób, w jaki powinniśmy rozważyć przypadek Perla. Duck Duck Go to także ogromny sukces, nikt nie może powiedzieć, że nie obchodzi ich to, jak się przedstawia. Nawet metacpan.org jest sposobem na zapewnienie użytkownikowi CPAN (głównej mocy Perla) nowego doświadczenia poprzez wyświetlanie kodu, dokumentacji i modułów wyszukiwania z ładnym interfejsem użytkownika. Nie wierzę w języki logo: czy C ma logo? Język nie jest marką.
smonff

1

Perl zdecydowanie nie umiera. Po prostu nigdy nie był tak przereklamowany jak niektóre inne języki.

Chociaż prawdą jest, że sam Perl jest starym językiem, ma dynamiczną i bardzo produktywną społeczność, której wartość znajduje się w bibliotece CPAN. Nie sądzę, aby jakikolwiek język miał bibliotekę tak rozległą i tak kompleksową jak CPAN. Nic nawet się nie zbliża. W CPAN znajdziesz tysiące modułów i frameworków, które robią wszystko, co tylko możesz sobie wyobrazić. Potrzebujesz serwera WWW? Jest HTTP :: Serwer. Potrzebujesz samodzielnej bazy danych? Jest Muldis :: DB. Niezależnie od tego, jakie są Twoje potrzeby, zwykle znajdziesz kilka modułów, które spełniają Twoje potrzeby, wystarczy wybrać ten, który najlepiej pasuje do Twojej aplikacji.

Jeśli chodzi o Ruby, Python i innych konkurentów, uważam, że zdrowa konkurencja była ogromną korzyścią dla Perla. Cokolwiek dostały inne języki, społeczność Perla przepisała w Perlu. Na przykład, gdy Ruby leciała po sukcesie Railsów, Perl dostał Tancerza, który jest pod wieloma względami lepszy niż Railsy.

Perl zdecydowanie nie jest martwy, ani nie umiera. Nie dzieje się po prostu nic krzykliwego, nie ma firmy, która zyskałaby na zwiększeniu poziomu Perla, więc nie przyciąga on uwagi mediów i nie każde dziecko zna Perla, więc mniej o tym mówi.

Minęło ponad 6 miesięcy od twojego oryginalnego postu. Jeśli nadal nie zdecydowałeś, zrób sobie przysługę i naucz się Perla.


0

Używam perla do tworzenia gier internetowych od lat 90. i po 3 latach przerwy zgadzam się z poprzednim plakatem. Wracam i stwierdzam, że ewoluowało daleko poza to, co zostawiłem.

Czy to umiera? Nie ma mowy.

To jest użyteczne? Bez niego byłbym zagubiony. Może to tylko ja, ale z innych odpowiedzi powiedziałbym, że to bardzo aktywne żywe stworzenie.


-6

Zdobyłem większość moich profesjonalnych doświadczeń związanych z PHP, ale kiedy dorastałem, rzeczy stały się nieco trudniejsze, wiele zadań PHP po prostu nie mogło wykonać lub robi rażąco nieefektywnie. Mógłbym podnieść ręce, ale zamiast tego (dzięki Google) znalazłem się w sesjach ssh wykorzystujących libreoffice, ffmpeg, imagemagick do pisania funkcji post-processingu dla PHP. Nigdy go nie użyłem, zanim nie wybrałem PERL .. głównie dlatego, że Perl idealnie leży pod stosem LAMP.

(1) jest preinstalowany na wszystkich serwerach LAMP lub przynajmniej ma świeżą prędkość obrotową. (2) ma niesamowite repozytorium CPAN, aby zaoszczędzić mnóstwo czasu. (3) szybsze / bezpieczniejsze wykonywanie zadań, w których PHP działa na Apache. (4) bardzo podobny do PHP i łatwy do nauczenia.

Mieszaj pomysły z PHP, piec z PERL-em, używając BASH według potrzeb, przerzucaj zgodnie z MySQL, a następnie podaj HTML5 i odrobinę jQuery. To świetny przepis.


1
Coś na poparcie tych oświadczeń?
Austin Henley,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.