The Fall of Perl, Internettets mest lovende språk

Og fremveksten av Python. Har Perl en fremtid?

The Fall of Perl, Internettets mest lovende språk

Jeg hørte først Perl da jeg gikk på ungdomsskolen på begynnelsen av 2000 -tallet. Det var et av verdens mest allsidige programmeringsspråk, kalt Sveitsisk hærkniv av Internett. Men sammenlignet med sin rival Python, har Perl bleknet av popularitet. Hva skjedde med internettets mest lovende språk?

Perls lave inngangsbarriere sammenlignet med kompilerte språkalternativer på lavere nivå (nemlig C) betydde at Perl tiltrukket brukere uten formell CS -bakgrunn (les: script -kiddies og nybegynnere som skrev dårlig kode). Det skryte også av en liten gruppe kraftbrukere (hardcore hackere) som raskt og fleksibelt kunne skrive kraftige, tette programmer som drev Perls popularitet til en ny generasjon programmerere.

Et sentralt depot (Comprehensive Perl Archive Network, eller CPAN ) betydde at for hver person som skrev kode, mange flere i Perl -samfunnet ( Programmeringsrepublikk Perl ) kan bruke det. Dette, sammen med den vittige evangeliseringen av den eklektiske skaperen Larry Wall , hvis interesse for språk sørget for at Perl ledet i tekstanalyse, var en formel for suksess i en tid der mye tekstinformasjon spredte seg over Internett.



Da det 21. århundre nærmet seg, ble det utført mange visdomsperler for å flytte og analysere informasjon på nettet. Perl hadde en læringskurve - ofte noe som betyr at det var det tredje eller fjerde språket som ble lært av adoptere - men den satt øverst i stabelen.

I løpet til årtusenet ser det ut til at C ++ vil vinne, Java vil plassere, og Perl vil vise, sa Wall i den tredje State of Perl -adressen i 1999. Noen av dere vil uten tvil ønske at vi kunne slette de to øverste linjene, men jeg tror ikke du skal være urimelig bekymret. Vær oppmerksom på at både C ++ og Java er systemprogrammeringsspråk. De er de to sportsbilene foran løpet. I mellomtiden er Perl den raskeste SUV -en, som kommer foran alle de andre SUV -ene. Det er det beste i sin klasse. Selvfølgelig vet vi alle at Perl er i en klasse for seg.

Så kom opprøret.

Perl vs. Python Grudge Match

Så kom Python med. Sammenlignet med Perls rett-jakkede manus, var Python en skrå affære. Det tok til og med etter navnebroren, Monty Python's Flying Circus. Passende nok var de fleste av Walls tidlige referanser til Python lettsindige vitser på bekostning av det.

Vel, årtusenet gikk, datamaskiner overlevde Y2K , og tenårene mine kom og gikk. Jeg studerte matte, naturfag og humaniora, men holdt meg et stykke unna å skrive datakode. Min kunnskap om Perl forble som starten på en ny tekstfil: flyktig , etterfulgt av mye tomt plass å fylle opp.

På college, CS venner på Princeton fablet om Python som deres favoritt språk (til tross for populær professor Brian Kernighan på campus, som hjalp til med å popularisere C). Jeg trodde Python var nytt, men jeg lærte senere at det var rundt da jeg også vokste opp, bare ikke synlig på listene.

På slutten av 2000 -tallet var Python ikke bare det dominerende alternativet til Perl for mange tekstparingsoppgaver som vanligvis er knyttet til Perl (dvs. vanlig uttrykk innen bioinformatikk ), men det var også mest utropte populære språket , snakket om med eleganse og veltalenhet blant min krets av campusvenner, som likte å være en del av en oppegående bevegelse.

Sammenligning ved siden av hverandre: Binær søk

Til tross for Python og Perl veldokumentert rivalisering og designbeslutningsforskjeller - som vedvarer den dag i dag - opptar de en lignende nisje i programmeringsøkosystemet. Begge kalles ofte skriptspråk, selv om senere versjoner er retro-utstyrt med objektorientert programmering (OOP).

Perlenes avtagende historie

1987 Larry Wall slipper Perl ut i naturen

1988 Perl 2 utgitt

1989 Perl 3 utgitt

1991 Perl 4 utgitt

1994 Perl 5 utgitt

2000 - nåværende [/b] Perl 6 under utvikling

… Og akselerasjonen av Python

1991 Guido van Rossum slipper Python ut i naturen

1994 Python 1.0 utgitt

2000 Python 2.0 utgitt

2008 Python 3.0 utgitt

[ kilde , kilde ]

Stilmessig har Perl og Python forskjellige filosofier. Perls mest kjente mottoer er Det er mer enn én måte å gjøre det på . Python er designet for å ha en åpenbar måte å gjøre det på. Pythons konstruksjon ga nybegynnere en fordel: En syntaks med flere regler og stilistiske konvensjoner (for eksempel som krever innrykk i mellomrom for funksjoner) sørget for at nykommere ville se et mer konsistent sett med programmeringspraksis; koden som utførte den samme oppgaven ville se mer eller mindre den samme ut. Perls konstruksjon favoriserer erfarne programmerere: et mer kompakt, mindre oversiktlig språk med innebygde snarveier som gjorde programmering for eksperten til en lek.

I løpet av dotcom-tiden og den tekniske gjenopprettelsen fra midten til slutten av 2000-tallet, profilerte nettsteder og selskaper som f.eks Dropbox (Python) og Amazon og Craigslist (Perl), i tillegg til noen av verdens største nyhetsorganisasjoner ( BBC , Perl ) brukte språkene til å utføre oppgaver som er integrerte i driften av forretninger på Internett.

Men i løpet av siste 15 år , ikke bare hvordan bedrifter driver forretninger har endret seg og vokst, men det har også verktøyene de bruker til å vokse, ulikt til skade for Perl. (En økende trend som ble identifisert i den siste sammenligningen av språkene, En Perl -hacker i Land of Python , så vel som fra Python -siden en pythonistas evangeliseringsaggregator , også gjort i år 2000.)

verdenskrig kvinneplakat

Perls langsomme tilbakegang

I dag har Perls vekst stagnert. På Orlando Perl Workshop i 2013 fikk en av samtalene tittelen Perl er ikke død, det er en blindvei , og hevdet at Perl nå eksisterte på en øy. Når Perl -programmerere sjekket ut, dro de alltid for godt, for aldri å komme tilbake. Andre påpek at Perl er utelatt fra språkene for å lære først –I en tid der Python og Java hadde vokst enormt, og en ny aktør fra midten av 2000-tallet, Ruby, fortsetter å vinne terreng ved å tiltrekke seg nye brukere til webapplikasjonsarenaen (via Skinner ), etterfulgt av Django rammeverk i Python (PHP har også vært stabilt som det enkleste alternativet).

I bioinformatikk, der Perls posisjon som det mest populære skriptspråket drev mange 1990-talls gjennombrudd som genetisk sekvensering, har Perl blitt erstattet av Python og det statistiske språket R (en variant av S-plus og etterkommer av S , også utviklet på 1980 -tallet).

I vitenskapelig databehandling er mitt nåværende felt, Python, ikke Perl, åpen kildekodeoverherre, og utvider til og med på Matlabs regning (også en barn på 1980 -tallet , og på samme måte ettermontert OOP evner ). Og oppstart PHP vokste i størrelse til det punktet hvor det nå uten tvil er det vanligste språket for webutvikling (selv om posisjonen er dynamisk, som Rubin og Python har dempet PHPs dominans og er nå forankret som legitime alternativer.)

Selv om Perl ikke er i fare for å forsvinne helt, er det det står i fare for å miste kulturell relevans , en ironisk skjebne gitt Walls kjærlighet til språk. Hvordan har Perl blitt underdog, og kan denne trenden snus? (Og kanskje enda viktigere, vil Perl 6 bli løslatt!?)

Hvordan jeg vokste til å elske Python

Hvorfor Python , og ikke Perl? Kanskje et illustrerende eksempel på hva som skjedde med Perl, er min egen erfaring med språket.

På høyskolen holdt jeg meg fortsatt til de innebygde miljøene i Matlab og Mathematica, men programmeringsperspektivet mitt endret seg dramatisk i 2012. Jeg innså at manglende kunnskap om strukturert datakode utenfor den inngjerdede hagen til et skrivebordsprogram hindret meg i å fullt ut simulere hypoteser om den naturlige verden , enn si analysere datasett ved hjelp av nettet, som også ble et stadig mer intellektuelt og økonomisk lukrativt ferdighetssett.

Ett år etter studietiden bestemte jeg meg for å lære et ekte programmeringsspråk på en seriøs måte: En alt-i-en-fordypning som tok meg over kunnskapshumpen, slik at selv om jeg tok en pause, ville jeg fortsatt beholde nok til å plukke opp der jeg var sluttet. En eldre alun fra høyskolen min som delte lignende interesser - og en erfaren programmerer siden slutten av 1990 -tallet - overbeviste meg om favorittspråket hans for å sile og sortere tekst i bare noen få kodelinjer, og få ting gjort: Perl. Python, avviste han, var det akademikere pleide å tro. Jeg var i ferd med å bli kjent formelt.

Før jeg tok en endelig beslutning om hvilket språk jeg skulle lære, tok jeg en oversikt over nettressurser, lurte på PerlMonks , og skaffet seg flere brukte O'Reilly -bøker, the Kamelbok og Lama bok , i tillegg til andre nybegynnerbøker. Nok en gang, Python løftet hodet , og til og med Perl -forum og nettsteder dedikert til språket klaget den digitale beleiringen språket deres bukket under for . Hva skjedde med Perl? Jeg lurte. Til syvende og sist ubestemt fant jeg nok til å komme i gang (kvalitet fremfor kvantitet, tenkte jeg!), Og begynte å studere syntaksen og arbeide gjennom eksempler.

Men det skulle ikke være. I et forsøk på å overvinne den konstruerte fleksibiliteten til Perls syntaksvalg, traff jeg en vegg. Jeg hadde adoptert Perl for tekstanalyse, men da jeg godtok et tilbud om ingeniørutdanninger, byttet jeg til Python for å forberede meg.

På dette tidspunktet, CPANs enorme fordel hadde blitt fjernet ad hoc, hodgepodge -innsats fra ukoordinerte, men overveldende grupper av pythonister som nå samles i Møter , ved oppstart og videre høyskole og bedriftens campus å evangelisere Zen of Python . Dette har skapt mange problemer med import ( påpekt av Wall ), og pakke nedlastingssynkroniseringer for å få vitenskapelige databiblioteker (som jeg fant), men har også resultert i distribusjoner av Python som f.eks. Anaconda som inneholder de viktigste bibliotekene i tillegg til standardbiblioteket for å lette tidstariffen på import.

Som for å utnytte tidens beste, tekniske bokutgiver O’Reilly kjørte denne annonsen , betennende Perl -hengivne.


I 2013 var Python det foretrukne språket i akademia, der jeg skulle komme tilbake i et år, og uansett hva det manglet i OOP -klasser, tok det igjen i høyskoletimene. Python var som Google, som hjalp til med å spre Python og ansatt van Rossum i mange år. I mellomtiden utviklet motstanderen Yahoo (stort sett utviklet seg i Perl ) gjorde det bra, men falt forholdsvis lenger bak med å definere fremtiden for programmering. Python var favoritten og den sittende; rollene var byttet om.

Så etter seks måneder med Perl-innsats brøt dette virkelighetsstrået Perl-kamelens rygg og forårsaket et kupp som styrte programmeringsrepublikken som hadde etablert seg på min bærbare. Jeg forlot meg saftig lamaen . Flere uker senere kom det fristende løftet om a nytt MIT edX -kurs undervisning i generelle CS -prinsipper i Python, i tillegg til mange n00b -eksempler , gjorde Perls syntaks altfor lett å glemme i stedet for å angre.

Målinger av populariteten til programmeringsspråk, i tillegg til venner og andre programmeringsentusiaster jeg har møtt i utviklingssamfunnet det siste halvannet året, har bekreftet denne trenden, sammen med fremveksten av Ruby på midten av 2000-tallet, som har også spist bort på Perls allestedsnærværende i å sy sammen programmer skrevet på forskjellige språk.

For å se fremveksten av Python og Perls fall i mer empiriske termer, sjekk følgende heuristikk.

Tiobe Index Jan 2013 - Jan 2014

Python 8. -> 8.

Perl 9. -> 13.

Tiobe Index Long Term

1994 Perl 17.; Python 22

1999 Perl 5.; Python 22

2004 Perl 4.; Python 11

2009 Perl 7.; Python sjette

2014 Perl 10.; Python 8

Språkpopularitetsindeks juli 2013

Python 7.

Perl 9.

O'Reilly Technical Book Sales, 2003-2005

Python 1/6 størrelse Perl -marked -> Python 2/3 størrelse Perl -marked

Job Tractor, februar 2013 - januar 2014

Python 126 til 78 jobber, Perl unotert til 22 jobber

Trendy ferdigheter, 1/1/12 - 27/01/2014

Python 5%; Perl 4%

PYPL Popularity of Programming Language Index, januar 2013 - januar 2014

Python 6. -> tredje; kåret til årets språk

Perl: unotert

PYPL Popularity of Programming Language Index, 2004-2014

Python ~ 2,5% til ~ 11%

Perl ~ 7,5% til<2%

(Python overhaler Perl permanent i midten av 2007)

KDNuggets Top Language for Analytics, Data Mining, Data Science, 2011-2013

Python i 2011: 24,6% -> 36,1%

Python i 2012: 38,8%

Perl i 2012 9% -> 4,5% 2013 (merket 50% nedgang i fjor)

Python i 2013: 2. plass totalt, etter R

Selv om mange argumenter historisk sett kan forklare noen av disse studiene - kanskje Perl -programmerere ikke cheerlead språket sitt så mye, siden de er for opptatt med å programmere produktivt. Stillingsoppføringer eller søkemotortreff kan bety at et programmeringsspråk har mange feil og problemer med det, eller at det ganske enkelt er et stort midlertidig gap mellom tilbud og etterspørsel.

Det samtidige bildet, og et som mange i Perl-samfunnet nå erkjenner, er at Perl nå i hovedsak er et andre nivå språk, et som har sin plass, men ikke vil være de første flere språkene som er kjent utenfor datavitenskap-domenet, for eksempel Java , C, eller nå Python.

Fremtiden til Perl (Ja, den har en)

jeg tror Perl har en fremtid , men det kan være et for et begrenset publikum. Dagens Perl er mer egnet for brukere som har jobbet med språket fra de første dagene , allerede kledd for å imponere . Perls sære stilistiske konvensjoner, som å bruke $ foran for å deklarere variabler, står i kontrast til det andre deklarative symbolet $ for praktiske programmerere i dag - pengene som går til den fortsatte utviklingen og funksjonssettet til Perls frenemier som Python og Ruby. Og den høye aktiveringskostnaden for å lære Perl, i stedet for å implementere en Python -løsning.

Ironisk nok, mye på samme måte som Perl spøkte med andre språk, Perl nå finner seg selvmottakende ende . Hva er galt med Perl , av min erfaring? Perls eventuelle problem er at hvis Perl -fellesskapet ikke kan tiltrekke seg nybegynnere som Python vellykket har, risikerer det å bli som Barn av menn , svinner bort til stillstand; enorme lagre av hieroglyfe kode som truer i deler av Internett og i datasenterpartisjoner som hallene til Mines of Moria . (Fryktinngytende og historisk? Ja. Livlig? Nei.)

Perl 6 har vært en pågående utvikling siden 2000. Men etter 14 år det er ikke offisielt gjort , noe som gjør det til tilsvarende Kinesisk demokrati for Guns N ’Roses. Med Larry Walls ord : Vi prøver ikke å gjøre Perl til et bedre språk enn C ++, eller Python, eller Java eller JavaScript. Vi prøver å gjøre Perl til et bedre språk enn Perl. Det er alt. Perl kan være på samme selvforskyldte vei til perfeksjon som Axl Rose, og undervurderer ikke andre enn seg selv. Alt kan fortsatt være for mye.

hvorfor den amerikanske drømmen er uoppnåelig

Fraværende en spillendrende Perl-utgivelse (som fortsatt kan være for lite, for sent) folk som lærer å programmere i Python, trenger ikke å bytte hvis Python kan oppfylle deres behov, selv om det er allment ansett som nest eller tredje best i noen områder. Det faktum at du må importere et bibliotek, eller sette opp med en ekstra syntaks, er betydelig enklere enn transaksjonskostnaden for å lære et nytt språk og bytte til det. Så over tid forblir Pythons publikum ungt gjennom gateway -strategien som van Rossum selv var pioner i, Dataprogrammering for alle . (Denne innsatsen har vært en fullstendig suksess. For eksempel på MIT Python erstattet Scheme som det første undervisningsspråket for alle innkommende nybegynnere, på midten av 2000-tallet.)

Python pløyer fremover

Python fortsetter å få fotfeste en etter en innen interesseområder, for eksempel visualisering (der Python fortsatt henger etter annen språkgrafikk, som Matlab, Mathematica eller den siste d3.js), opprettelse av nettsteder (Django -rammeverket er nå et vanlig valg ), vitenskapelig databehandling (inkludert NumPy/SciPy), parallell programmering (mpi4py med CUDA), maskinlæring og naturlig språkbehandling (scikit-learn og NLTK) ... og listen fortsetter.

Selv om ingen av disse innsatsene er sentralt koordinert av van Rossum selv, øker en stadig voksende brukerbase og kommer til CS -studenter først før andre språk (for eksempel Java eller C), sjansen for at samarbeid innen disipliner vil dukke opp for å bygge en Python bibliotek for seg selv, i samme åpen kildekode -ånd som gjorde Perl til en suksess på 1990 -tallet.

Når det gjelder meg? Jeg er åpen for å komme tilbake til Perl hvis det kan tilby meg en vesentlig annen opplevelse enn Python (men å være frustrerende teller ikke!). Kanskje Perl 6 blir den utgaven. Imidlertid har jeg i mellomtiden fulgt rådene fra mange andre med et lignende dilemma på nettet. Jeg skal bare vent og C. .