Try Perl!

4 czerwca 2009

Poprzez swoje kanały RSS trafiłem na dwa ciekawe wpisy na temat Perla, głownie poruszające się w okolicach advocacy i badvocacy ;)

Chromatic w wpisie YAGNI Badvocacy and the Perlian Knot porusza kwestie niektórych perlowych problemów. Ogólnie to ciężko się ustosunkować co do niektórych, dla jednych wada, dla innych zaleta. Choć prawdą pozostaje, że Perl nie jest doskonały (czy cokolwiek jest?) i wiele rzeczy brakuje w 5 lub jest nieco spieprzonych, na szczęście większość tych braków i niedogodności zniknie z 6tki.

Jako przykład ładnego, małego i rzeczowego kawałka Perl advocacy, wolnego od bad advocacy, podaje wpis garu, który popełnił notkę Fast, concise and reliable code? Try Perl!

Wpis bardzo ciekawy, oddający wiele kwestii, których mi się nie udało przekazać w takiej dosyć ciekawej i milej formie w moim ostatnim wpisie o perlu – We love perl.

FUD‚u związanego z Perlem powstaje niezliczona ilość, a większość tych bredni ciagle zbiera swoje żniwo, przez co Perl jest bardzo źle postrzegany przez niektóre środowiska. Ale co my się będziemy martwic, to już ich problem, jak ktoś na prawdę nie zna to skąd może wiedzieć, jak to nieznane wygląda w rzeczywistości. Najlepiej zignorować takie komentarze…

W notce grau spodobał mi sie ten fragment:

Sure, you can write a complete wiki in 5 lines of Perl. But, of course, it doesn’t mean you should. Professional programs, written by professional Perl programmers, tend to be clear and scalable, yet still concise.

Oraz najkrótsze implementacje wiki w kilku skryptowych językach, jakie można znaleźć na stronie Shortest Wiki Contest.

Mityczna sprawa pisania kodu write-only przez niektórych uważana tylko za przypadłość Perla. Wiemy bardzo dobrze, że w każdym języku da się pisać paskudny kod.

Nawet w Pythonie:

#!/usr/bin/python
import re,os,cgi;d,h=os.listdir('.'),'<a href=wy?';p,e,g,s=tuple(map(cgi.parse(
).get,'pegs'));f=lambda s:reduce(lambda s,(r,q):re.sub('(?m)'+r,q,s),(('\r','')
,('([A-Z][a-z]+){2,}',lambda m:('%s'+h+'e=%s>?</a>',h+'g=%s>%s</a>')[m.group(0)
in d]%((m.group(0),)*2)),('^{{$','<ul>'),('^# ','<li>'),('^}}$','</ul>'),('(ht\
tp:[^<>"\s]+)',h[:-3]+r'\1>\1</a>'),('\n\n','<p>')),s);o,g=lambda y:(y in d and
cgi.escape(open(y).read()))or'',(g or p and[open(p[0].strip('./'),'w').write(s[
0])or p[0]]or[0])[0];print'Content-Type:text/html\n\n'+(s and', '.join([f(n)for
n in d if s[0]in o(n)])or'')+(e and'<form action=wy?p=%s method=POST><textarea\
 name=s rows=8 cols=50>%s</textarea><input type=submit></form>'%(e[0],o(e[0]))
or'')+(g and'<h1>%ss=%s>%s</a>,%se=%s>edit</a></h1>'%(h,g,g,h,g)+f(o(g))or'')

To może teraz czas na pythonowy golf? ;)

Przy okazji w ramach ciekawostek – Just another Perl hacker. Oczywiście nikomu nie polecamy pisać (produkcyjnego) kodu w tym stylu, chyba że na potrzeby perl golfa ;p

„Perl is a great language. It has many great features. Its ecosystem is impressive, and I believe that many of its features compare very, very favorably to other languages and communities.” Try Perl!

Podobne notatki:

Może zainteresują Cię również następujące, pododbne notatki:

Komentarze i nawiązania (5)

Kanał RSS komentarzy

  1. Oczywiście chromatic ma dużo racji w tym co pisze, ale nie należy zapominać o drugiej stronie medalu: wszelkiego rodzaju fora, listy dyskusyjne, kanały IRC etc. poświęcone Perlowi są wypełnione ludźmi o ogromnym doświadczeniu; doświadczenie to można porównać jedynie ze zmęczeniem i zniechęceniem, jakie ich ogarnia, kiedy przyjdzie do udzielania odpowiedzi. Pytający nie są niekiedy w stanie pojąć, że 20-letni język ma prawo do pewnych idiosynkrazji, więc zamiast docenić odpowiedź wyjeżdżają z marnej jakości wykładami o projektowaniu języków programowania. Problem w tym, że nikt od nich tego nie oczekuje. Jeśli komuś nie podoba się Perl, to może dać temu wyraz w sposób pasywny – nie używając go, zamiast swoją aktywnością o wątpliwej jakości zabierać czas ludziom, których w sumie prosi o pomoc.

    Odnośnie wspomnianych 20 lat – Perl pojawił się na 4 lata przed Pythonem czy Javą i aż 8 lat przed Ruby oraz PHP, dopracowując się wersji 5.0 rok przed ukazaniem się tych dwóch ostatnich. Nie jest to oczywiście argument mogący usprawiedliwić którąś z (licznych) bolączek Perla, może jednak uzasadnić tempo, w jakim wprowadzane są zmiany. Na Perlu opartych jest kilka dość znacznych biznesów, które nierzadko zatrudniają ludzi pracujących nad jądrem Perla. Nikt z nich nie strzeli sobie w stopę i raczej będzie starał się unikać przykrych niespodzianek, niż myślał o mnożeniu dodatków. Podobnie mają się sprawy z PHP, tylko rzadko kiedy można przeczytać jakieś krytyczne uwagi pod adresem ich polityki opartej na „bug compatibility”.

  2. Chromatic bardzo ciekawie i rzeczowo pisze na Modern Perl Books i use.perl.org ;)
    Ostatnia wersja Perla – 5.10 wydana zostala prawie 1,5 roku temu, mysle ze znaczycy wplyw na proces rozwoju wersji 5 maja prace nad 6tka, ktore pochlaniaja wszelkie zasoby ludzkie.

  3. Nad wersją 6 pracuje znacznie mniej osób, wystarczy spojrzeć na logi gita: polecenie git log -n 10000 --pretty=format:%an | sort | uniq | wc -l w repozytorium Rakudo daje 58 wierszy, natomiast w repozytorium Perla 5.10 – 333 wiersze. Inny jest zresztą charakter prac, bo Rakudo to ewidentnie work in progress i potrafi zaskoczyć nawet Jonathana podczas prezentacji :) podczas gdy 5.10 powinien być raczej przewidywalny do znudzenia (i do produkcji).

Dodaj swój komentarz

Możesz użyć tych tagów XHTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Jeśli chcesz wstawić kilku linijkowy fragment kodu, użyj tagów <pre lang="x"></pre> (gdzie x język kodu np. cpp, perl, html). W ten sposób kod zostanie odpowiednio sformatowany i pokolorowany przez system.

Uwaga!

Na tym blogu działa system cache oraz filtr antyspamowy. Twój komentarz może być widoczny na stronie z pewnym opóźnieniem. Proszę o cierpliwość. Jeśli utraciłeś już wszystkie jej zasoby poinformuj mnie o tym, być może system uznał Cię za spamera ;)