Zoeken op website

Duik diep in het Python versus Perl-debat - Wat moet ik Python of Perl leren?


Wanneer een nieuwe programmeertaal wordt geïntroduceerd, ontstaat er vaak een debat onder enkele geniale geesten in de industrie, waarin de taal wordt vergeleken met de taal die zijn wortels al heeft verspreid. Er verspreidt zich vaak een soort buzz in de IT-industrie en de nieuwe wordt vaak op elk aspect vergeleken, of het nu gaat om functies, syntaxis of kern-CPU- en geheugenaspecten, inclusief GC-tijd en zo, met de bestaande in zijn soort.

Er kunnen veel voorbeelden van dergelijke gevallen uit het verleden worden opgepikt en onderzocht, waaronder het debat tussen Java en C#, C++, enz. Eén zo'n geval dat veel aandacht trok, was het debat tussen twee talen die in korte tijd na elkaar uitkwamen, namelijk Python en Perl.

Terwijl Python aanvankelijk werd uitgevonden als opvolger van de ABC-taal, slechts als een “hobby” programmeerproject (dat Unix/C-hackers zou aantrekken) voor de auteur die het vernoemde naar de serie van zijn grootste ster Monty Python.

Voorgesteld lezen: Aan de slag met Python-programmering en -scripting in Linux

Perl was bijna twee jaar eerder een Unix-scripttaal die bedoeld was om de rapportverwerking eenvoudiger te maken. Het was een mengeling van een combinatie van vele talen, waaronder C, awk, sed en shellscript.

Het ding dat de moeite waard is om op te merken is dat deze talen, die met verschillende bedoelingen zijn geëvolueerd, voortdurend worden vergeleken, wat mij ertoe heeft aangezet de redenen te bestuderen en te achterhalen, waarvan enkele belangrijke worden opgesomd, zoals hieronder:

  1. Beide waren gericht op het Unix-besturingssysteem, één voor hackers en anderen om rapporten te verwerken.
  2. Beide zijn objectgeoriënteerd (Python is de meer) en geïnterpreteerd, waarbij de ene sterk getypeerd en duidelijk is als het gaat om codering, bijvoorbeeld Python, en de andere lelijk typen met accolades toestaat om een blok weer te geven, bijvoorbeeld Perl
  3. Beide zijn in principe tegengesteld als we zeggen: Perl heeft veel manieren om één taak uit te voeren, terwijl Python zich richt op één en slechts één manier om dingen te doen.

Python versus Perl – Functies vergeleken

Laten we diep in dit debat duiken en proberen de algemene aspecten te achterhalen waarin deze twee talen van elkaar verschillen. Laten we ook proberen de bron van de waarheid te achterhalen voor veel clichés die in de branche te horen zijn en zeggen: “Python is Perl met zijwieltjes ” of “Python is vergelijkbaar met Perl, maar anders sterk> ” zodat we kunnen proberen af te ronden met een nauwkeurige oplossing voor dit eindeloze debat.

1. De schone syntaxis van Python versus de complexe syntaxis van Perl

Python heeft een enorm voordeel ten opzichte van Perl als het gaat om de leesbaarheid van code. De code van Python is een stuk duidelijker te begrijpen dan die van Perl, zelfs als je de code na jaren leest.

Met inspringing die het codeblok vertegenwoordigt en de juiste structurering is de code van Python een stuk schoner. Aan de andere kant leent Perl zijn syntaxis van verschillende programmeertalen zoals C, shell-scripting en zelfs awk- en sed-filters als het om reguliere expressies gaat.

Voorgesteld lezen: 15 nuttige ‘sed’-opdrachten voor dagelijkse Linux-systeembeheertaken

Afgezien hiervan zou code in Perl, omdat '{' en '}' een codeblok vertegenwoordigen en de onnodige toevoeging van ';' aan het einde van elke regel, een probleem om te begrijpen als je het na maanden of jaren leest vanwege de mogelijkheid van lelijke scripting.

2. Perl's ingebouwde versus Python's Regex en OS Operations-ondersteuning van derden

De Perl-taal ontleent zijn syntaxis aan C en andere UNIX-commando's zoals sed, awk, enz. waardoor het een krachtige en ingebouwde regex-ondersteuning heeft zonder modules van derden te importeren.

Bovendien kan Perl OS-bewerkingen uitvoeren met behulp van ingebouwde functies. Aan de andere kant heeft Python bibliotheken van derden voor beide bewerkingen, d.w.z. re voor regex en os, sys voor os-bewerkingen die moeten worden gewaarborgd voordat u dergelijke handelingen uitvoert.

De regex-bewerkingen van Perl hebben een 'sed'-achtige syntaxis, wat het niet alleen gemakkelijk maakt voor zoekbewerkingen, maar ook vervangen, vervangen en andere bewerkingen op een string kunnen gemakkelijk en snel worden uitgevoerd dan Python, waar een persoon het moet weten en onthoud de functies die in de behoefte voorzien.

Voorbeeld: Beschouw een programma dat zoekt naar een cijfer in de string in Perl en Python.

Import re
str = ‘hello0909there’
result = re.findall(‘\d+’,str)
print result
$string =  ‘hello0909there’;
$string =~ m/(\d+)/;
print “$& \n”

Je ziet dat de syntaxis voor Perl heel eenvoudig is en geïnspireerd door de opdracht sed, die voordeel haalt uit de syntaxis van Python, die de module 're' van derden importeert.

3. Geavanceerde OO-programmering van Python versus de oneliners van Perl

Eén kenmerk waarbij Python Perl overschaduwt, is de geavanceerde OO-programmering. Python heeft uitgebreide objectgeoriënteerde programmeerondersteuning met een schone en consistente syntaxis, terwijl het object OOP in Perl verouderd is en het pakket als vervanging wordt gebruikt voor lessen.

Voorgesteld lezen: Aan de slag met Python Django Web Framework

Bovendien zal het schrijven van OO-code in Perl veel meer complexiteit aan de code toevoegen, waardoor de code uiteindelijk moeilijk te begrijpen wordt. Zelfs subroutines in Perl zijn erg moeilijk te programmeren en uiteindelijk moeilijk te begrijpen later.

Aan de andere kant is Perl het beste vanwege de oneliners die op de opdrachtregel kunnen worden gebruikt voor het uitvoeren van de verschillende taken. Bovendien kan Perl-code uiteindelijk verschillende taken uitvoeren in minder coderegels dan Python.

Een shortcodevoorbeeld van beide talen waarin de mogelijkheid van Perl wordt benadrukt om meer te doen in minder LOC:

try:
with open(“data.csv”) as f:
for line in f:
print line,
except Exception as e:
print "Can't open file - %s"%e
open(FILE,”%lt;inp.txt”) or die “Can’t open file”;
while(<FILE>) {
print “$_”; } 

Voors en tegens – Python versus Perl

In deze sectie bespreken we de voor- en nadelen van Python en Perl.

Python VOORDELEN:

  1. Het heeft een zuivere en elegante syntaxis, waardoor deze taal een uitstekende keuze is als de eerste programmeertaal voor beginners die elke programmeertaal in de praktijk willen brengen.
  2. Heeft zeer geavanceerde en inherente OO-programmering, ook threadprogrammering in Python is veel beter dan Perl.
  3. Er zijn veel toepassingsgebieden waar Python de voorkeur heeft en zelfs beter presteert dan Perl. Vind ik leuk: Perl heeft de voorkeur voor CGI-scripting, maar tegenwoordig worden Python's Django en web2py-achtige webscripttalen steeds populairder en hebben ze een enorme aantrekkingskracht vanuit de industrie.
  4. Heeft verschillende SWIG wrappers voor verschillende programmeertalen zoals CPython, IronPython en Jython en de ontwikkeling hiervan is aan de ontwikkeling voorafgegaan van SWIG-wrappers voor Perl.
  5. Python-code is altijd goed ingesprongen en gemakkelijk te lezen en te begrijpen, zelfs als u na jaren de code van iemand anders of zelfs uw code leest.
  6. Python is goed voor verschillende toepassingen zoals Big Data, Infra Automation, Machine Learning, NLP, enz. enorme steun van actieve gemeenschappen omdat het Open Source is.

Nadelen van Python:

  1. Er zijn weinig gebieden waar de uitvoering in Python gewoonlijk langzamer is dan die van Perl, inclusief regex en op tekenreeksen gebaseerde bewerkingen.
  2. Soms is het moeilijk om het type variabele in Python te krijgen, omdat je bij zeer grote code tot het einde moet gaan om een type variabele te krijgen dat hectisch en complex wordt.

Perl VOORDELEN:

  1. Perl heeft krachtige oneliners en zorgt zelfs voor UNIX-pipes-achtige syntaxis die op de opdrachtregel kan worden gebruikt om verschillende taken uit te voeren. Het wordt ook beïnvloed door Unix en zijn opdrachtregelprogrammering, dus integreert veel door UNIX beïnvloede opdrachten in de codering.
  2. Perl staat bekend om zijn krachtige regex- en tekenreeksvergelijkingsbewerkingen, omdat het wordt beïnvloed door sed en awk-achtige krachtige UNIX-tools. In het geval van regex- en stringbewerkingen zoals substitutie, matching, vervanging presteert Perl beter dan Python, wat een paar regels code nodig zou hebben om de dezelfde. Ook veel bestands-I/O-bewerkingen en de afhandeling van uitzonderingen worden sneller uitgevoerd op Perl.
  3. Als het gaat om een taal voor het genereren van rapporten, is Perl sinds de introductie ervan altijd beroemd geweest als een van de belangrijkste redenen voor de auteur om een taal te ontwikkelen zoals Perl dat was voor het genereren van rapporten.
  4. Veel toepassingsgebieden waar Perl zijn nut vindt zijn Netwerkprogrammering, Systeembeheer, CGI-scripting (hier overwint Python Perl met Django en web2py), enz.
  5. Het is gemakkelijk om het type variabele te identificeren aan de hand van de symbolen die Perl ervoor gebruikt, zoals: ‘@’ identificeert arrays en ‘%’ identificeert hashes.

Nadelen van Perl:

  1. Perl heeft een zeer complexe code die het voor een beginneling moeilijk maakt om het te begrijpen. Subroutines en zelfs andere symbolen zoals: ‘$`’, ‘$&’ enz. zijn moeilijk te begrijpen en te programmeren voor een minder ervaren programmeur. Bovendien zou het lezen van Perl-code moeilijk en complex zijn om te begrijpen, tenzij je een kwaliteitservaring hebt.
  2. OO Programmeren in Perl is een beetje verouderd, omdat het nooit bekend is geweest om OO programmeren en veel bewerkingen zoals threading zijn ook minder uitgesproken in Perl.

Conclusie

Zoals hierboven te zien is, waar beide talen goed scoren wat betreft de toepassingen die ze targeten, heeft Python een beetje voordeel ten opzichte van Perl als eerste keuze voor een beginneling vanwege de schone en gemakkelijk te begrijpen code, terwijl Perl aan de andere kant beter presteert dan Python als het gaat om stringmanipulatiebewerkingen en enkele geavanceerde oneliners voor UNIX zoals OS en verschillende andere bewerkingen waar het bekend om staat.

Uiteindelijk draait het dus allemaal om het specifieke gebied waarop u zich richt. Al uw commentaar op dit artikel is welkom en wij verzoeken u uw mening over het onderwerp te geven als volgens u Python wint of Perl.