Det er meget som at spørge, "hvorfor er der så mange felter i matematik? Vi har algebra, hvorfor har vi brug for geometri, beregning og væskemekanik?" Hvert programmeringssprog har til formål at løse et bestemt problem. Mere end et sprog kan være i stand til at løse det samme problem, men hver vil komme ind på det anderledes.
Her er nogle af de store forskelle i programmeringssprog.
Læsbarhed og vedligeholdelse
Nogle sprog er lettere for et menneske at læse, hvilket gør det lettere for en programmør at samarbejde om en anden programmers kode. Python har for eksempel et ry for at være let at læse. Det håndhæver strenge indrykning af linjer for at definere dets kodeblokke, hvilket gør det nemt at se på et program og finde ud af dens struktur. Andre sprog tillader også indrykning, men som et stilistisk valg, ikke som et krav.
I modsætning hertil er Perl et sprog, der gør det muligt for programmøren at skrive det samme program på mange forskellige måder, men programmets formål er muligvis ikke umiddelbart klart for en anden læser. Et sådant program kan være bekvemt at skrive, men det er svært for en anden at forstå og redigere.
Ydeevne
Nogle sprog tolkes, og nogle er samlet. Et kompileret program skal behandles af en præprocessor, compiler og linker, før den kan udføres af computeren. Denne specialiserede mellemliggende software udfører leksikalsk analyse, der oversætter programmet til maskinens sprog. Det kan også optimere de resulterende instruktioner og lede efter kloge måder at gøre programmet kører hurtigere.
Kompilerede programmer udfører typisk bedre end tolkede programmer. For eksempel er C, C ++ og Objective-C sprog, som typisk kompilerer til meget hurtig maskinkode. Videospil og systemsoftware er ofte skrevet på disse sprog for at presse hver enkelt ydelse ud af CPU'en.
På den anden side køres fortolket sprogprogrammer af software kaldet en tolk, som udfører programmets instruktioner uden først at kompilere dem til maskinkode. Selv om tolken i nogle tilfælde analyserer programmet til et mellemliggende sprog, hvilket resulterer i en vis optimering, er præstationen aldrig lige så hurtig som kompileret maskinkode.
En stor fordel ved fortolket sprog er deres potentiale for interaktiv udvikling. Fordi hele programmet ikke skal kompileres, før det kan udføres, kan koden køres interaktivt. Du er bekendt med dette, hvis du nogensinde har brugt operativsystemets kommandolinje: Du indtaster en kommando og ser resultaterne. En sådan grænseflade hedder en REPL eller "read-eval-print-loop". En REPL giver dig mulighed for at udføre kommandoer (eller kommandoblaster) individuelt og se resultaterne. Lisp, Perl, Python, NodeJS, Ruby og JavaScript er eksempler på tolkede sprog, der kan køres i en REPL.
Interaktive kommandorgrænseflader, som f.eks. Windows Command Prompt og bash, kvalificeres også som tolkede sprog. Programmer på disse "sprog" kaldes batch-filer eller skaluskripter.
Specifikke brugssager
Ofte er sprog specielt gode til at skrive bestemte typer af programmer. For eksempel er NodeJS designet til at skrive enkelt-gevind applikationer til internettet. Den ikke-blokerende fil I / O tillader, at programmerne fortsætter med at fungere ("ikke blokeres"), mens de venter på, at de krævede data skal overføres.
Et andet eksempel er R programmeringssprog, der specialiserer sig i statistisk analyse. Programmer skrevet i R drager fordel af indbyggede analytiske tests og modeller og værktøjer til effektivt at manipulere massive mængder data.
Let prototyping
Nogle sprog giver mulighed for hurtig prototyper: programmereren kan "bare begynde at skrive" og bygge komponent på komponent, indtil programmet er fuldt dannet.
For eksempel blev hjemmesiden Reddit oprindeligt skrevet i Lisp. Efter Reddit lanceret, blev hele webstedet omskrevet i Python af mange grunde, både tekniske og logistiske. Selvom refactoring hele koden var en stor virksomhed, udtrykte webstedets ejere ingen beklagelse. I et blogpost fra 2005 bemærkede de, at Lisp tillod dem at skabe noget uden at vide præcis, hvad det ville blive.
Tilgængelige biblioteker
Normalt, når du starter et nyt programmeringsprojekt, ønsker du ikke at genopfinde hjulet. Det vil sige, du vil ikke skrive funktioner til almindelige opgaver som at beregne en kvadratrod eller finde den første forekomst af et tegn i en streng. Af denne grund giver næsten hvert programmeringssprog et sæt standardbiblioteker af fælles funktioner. Programmører kan foretrække et sprog på grund af de biblioteker, det giver.
For eksempel leverer C-standardbibliotekerne yderst effektive funktioner til mange lavniveausystemoperationer. Perl tilbyder mange robuste biblioteker, og også CPAN-depotet for moduler, der skal downloades og bruges i dit program. Python giver et bredt udvalg af indbyggede funktioner og moduler til næsten alt under solen. Clojure, et Lisp-lignende sprog, der kører på JVM, har fordel af sin evne til at køre kode fra de omfattende eksisterende biblioteker af Java-objekter og -metoder.
Sikkerhed
Ikke alle sprog gør sig til at skrive sikker kode. C-programmeringssproget er for eksempel berygtet for at have funktioner (eller mangel deraf), som kan føre til ødelæggende sårbarheder som nullpeger-dereferencing. Andre sprog forsøger at løse disse bekymringer med strengere regler.
For eksempel sætter nogle sprog begrænsninger på, hvilke operationer der kan udføres på forskellige typer data. Det strengeste af disse sprog kaldes undertiden "stærkt skrevet", og de kan tilbyde ro i sindet til programmører, der prioriterer sikkerhed og stabilitet i softwareudvikling. Eksempler på stærkt typede sprog omfatter Rust, Nim, Ocaml og Haskell.
Sprog kan også sætte grænser for "mutability", evne til en dataobjekt til at ændre tilstand. I stedet for objekter, hvis værdier overskrives, favoriserer disse sprog "uforanderlige" objekter: værdier i hukommelsen, der ikke kan ændres uden eksplicit undtagelse. Immutable genstande har tiltrukket interesse, da multi-core CPU'er er blevet udbredt på grund af deres tendens til at fremme "trådsikkerhed." I et trådbeskyttet program kan mere end en processor operere på et sæt data med en stærkt reduceret risiko for fejl. Sprog, der prioriterer uforanderlige genstande, omfatter Rust og Clojure.
Fællesskabsstøtte
Når du skriver et program på et nyt sprog, hjælper det med at få adgang til et aktivt, lidenskabeligt fællesskab af udviklere, som aktivt bruger og bidrager til hinandens arbejde. Inden du vælger et programmeringssprog, kan du finde ud af mere om sprogets samfund. Nogle sprog har en spændende, dynamisk og levende brugergruppe, som du måske vil være del af, og andre sprog kan have lidt eller intet fællesskab.
udtryksfuldhed
Når man skriver et program, taler programmørens tanker og problemløsende evner ved at tale gennem det pågældende sprog. Som et resultat tendens programmerere til at foretrække sprog, hvor de er komfortable, udtrykker sig selv. Hvad der gør et sprog og programmør arbejde godt sammen er dog svært at definere. I sidste ende er den eneste måde at vide, hvilket sprog du er fortrolig med, at bruge forskellige sprog til forskellige projekter og sammenligne dem selv.