Hvilke sprog skal du lære til datalogi?

Datavidenskab er et spændende felt at arbejde i, der kombinerer avancerede statistiske og kvantitative færdigheder med den virkelige programmeringsevne. Der er mange potentielle programmeringssprog, som den håbefulde dataforsker kan overveje at specialisere sig i.

Selvom der ikke er noget korrekt svar, er der flere ting at tage i betragtning. Din succes som dataforsker vil afhænge af mange punkter, herunder:

Specificitet

Når det kommer til avanceret datalogi, vil du kun komme så langt til at genopfinde hjulet hver gang. Lær at mestre de forskellige pakker og moduler, der tilbydes på dit valgte sprog. I hvilket omfang dette er muligt afhænger af, hvilke domænespecifikke pakker der i første omgang er tilgængelige for dig!

Generalitet

En top data videnskabsmand vil have gode all-round programmering færdigheder samt evnen til at knase numre. Meget af det daglige arbejde inden for datavidenskab drejer sig om sourcing og behandling af rådata eller 'datarensning'. Til dette vil ingen mængde smarte maskinindlæringspakker hjælpe.

Produktivitet

I den ofte hurtige verden af ​​kommerciel datavidenskab er der meget at sige for at få jobbet gjort hurtigt. Dette er dog det, der gør det muligt for teknisk gæld at krybe ind - og kun med fornuftig praksis kan dette minimeres.

Ydeevne

I nogle tilfælde er det vigtigt at optimere ydeevnen for din kode, især når du beskæftiger dig med store mængder missionskritiske data. Kompilerede sprog er typisk meget hurtigere end fortolkede sprog; ligeledes er statisk typede sprog betydeligt mere fejlsikre end dynamisk typede. Den indlysende kompromis er imod produktivitet.

Til en vis grad kan disse ses som et par akser (Generality-Specificity, Performance-Productivity). Hvert af nedenstående sprog falder et eller andet sted på disse spektre.

Med disse grundlæggende principper i tankerne, lad os tage et kig på nogle af de mere populære sprog, der anvendes i datavidenskab. Det følgende er en kombination af forskning og personlig oplevelse af mig selv, venner og kolleger - men det er på ingen måde endeligt! I en rækkefølge af popularitet går her:

R

Hvad du har brug for at vide

Udgivet i 1995 som en direkte efterkommer af det ældre S programmeringssprog, er R siden gået fra styrke til styrke. Projektet er skrevet i C, Fortran og sig selv og understøttes i øjeblikket af R Foundation for Statistical Computing.

Licens

Ledig!

Fordele

  • Fremragende udvalg af domænespecifikke og open source-pakker af høj kvalitet. R har en pakke til næsten alle tænkelige kvantitative og statistiske anvendelser. Dette inkluderer neurale netværk, ikke-lineær regression, fylogenetik, avanceret plotning og mange, mange andre.
  • Basisinstallationen leveres med meget omfattende, indbyggede statistiske funktioner og metoder. R håndterer også matrixalgebra særlig godt.
  • Datavisualisering er en nøglestyrke ved brug af biblioteker som ggplot2.

Ulemper

  • Ydeevne. Der er ingen to måder ved det, R er ikke et hurtigt sprog.
  • Domænespecificitet. R er fantastisk til statistik og datalogiske formål. Men i mindre grad til generel programmering.
  • Quirks. R har et par usædvanlige funktioner, der kan fange programmerere, der har erfaring med andre sprog. For eksempel: indeksering fra 1, ved hjælp af flere tildelingsoperatører, ukonventionelle datastrukturer.

Bedømmelse - “strålende hvad det er designet til”

R er et stærkt sprog, der udmærker sig ved et stort udvalg af statistiske applikationer og datavisualiseringsapplikationer, og det at være open source giver mulighed for et meget aktivt samfund af bidragydere. Dens nylige vækst i popularitet er et bevis på, hvor effektiv den er, hvad den gør.

Python

Hvad du har brug for at vide

Guido van Rossum introducerede Python tilbage i 1991. Det er siden blevet et ekstremt populært sprog til generel anvendelse og bruges i vid udstrækning inden for datavidenskabssamfundet. De største versioner er i øjeblikket 3.6 og 2.7.

Licens

Ledig!

Fordele

  • Python er et meget populært, almindeligt programmeringssprog til generelle formål. Det har et omfattende udvalg af specialbyggede moduler og community support. Mange onlinetjenester leverer en Python API.
  • Python er et let sprog at lære. Den lave adgangsbarriere gør det til et ideelt førstesprog for dem, der er nye inden for programmering.
  • Pakker som pandaer, scikit-learning og Tensorflow gør Python til en solid mulighed for avancerede maskinlæringsapplikationer.

Ulemper

  • Typesikkerhed: Python er et dynamisk skrevet sprog, hvilket betyder at du skal være opmærksom. Der kan forventes typefejl (som at sende en streng som et argument til en metode, der forventer et heltal) fra tid til anden.
  • Til specifikke statistiske formål og dataanalyseformål giver R's store udvalg af pakker det en lille fordel over Python. Til sprog til generelt formål er der hurtigere og sikrere alternativer til Python.

Bedømmelse - “fremragende allround”

Python er et meget godt sprogvalg til datalogi og ikke kun på entry-level. Meget af datavidenskabsprocessen drejer sig om ETL-processen (ekstraktion-transformation-loading). Dette gør Pythons generalitet ideel. Biblioteker som Googles Tensorflow gør Python til et meget spændende sprog at arbejde med til maskinindlæring.

SQL

Hvad du har brug for at vide

SQL ('Structured Query Language') definerer, administrerer og forespørger relationelle databaser. Sproget dukkede op i 1974 og har siden gennemgået mange implementeringer, men de grundlæggende principper forbliver de samme.

Licens

Varierer - nogle implementeringer er gratis, andre er proprietære

Fordele

  • Meget effektiv til forespørgsel, opdatering og manipulation af relationsdatabaser.
  • Deklarativ syntaks gør SQL til et ofte meget læsbart sprog. Der er ingen tvetydighed om, hvad SELECT name FROM users WHERE age >18 skal gøre!
  • SQL bruges meget på tværs af en række applikationer, hvilket gør det til et meget nyttigt sprog at være fortrolig med. Moduler som SQLAlchemy gør integrering af SQL med andre sprog ligetil.

Ulemper

  • SQL's analytiske kapaciteter er ret begrænsede - ud over at samle og opsummere, tælle og beregne data er dine muligheder begrænsede.
  • For programmører, der kommer fra en tvingende baggrund, kan SQL's deklarative syntaks præsentere en indlæringskurve.
  • Der er mange forskellige implementeringer af SQL, såsom PostgreSQL, SQLite, MariaDB. De er alle forskellige nok til at gøre interoperabilitet til noget af hovedpine.

Bedømmelse - “tidløs og effektiv”

SQL er mere nyttigt som et databehandlingssprog end som et avanceret analytisk værktøj. Alligevel afhænger så meget af datavidenskabsprocessen af ​​ETL, og SQL's levetid og effektivitet er bevis for, at det er et meget nyttigt sprog, som den moderne dataforsker kan kende.

Java

Hvad du har brug for at vide

Java er et ekstremt populært sprog til generelle formål, der kører på (JVM) Java Virtual Machine. Det er et abstrakt computersystem, der muliggør problemfri bærbarhed mellem platforme. I øjeblikket understøttet af Oracle Corporation.

Licens

Version 8 - Gratis! Ældre versioner, proprietære.

Fordele

  • Allestedsnærværende. Mange moderne systemer og applikationer er bygget på en Java-back-end. Evnen til at integrere datavidenskabelige metoder direkte i den eksisterende codebase er stærk at have.
  • Stærkt skrevet. Java er ikke noget vrøvl, når det kommer til at sikre typesikkerhed. For missionskritiske big data-applikationer er dette uvurderligt.
  • Java er et højtydende, samlet kompileret sprog. Dette gør det velegnet til at skrive effektiv ETL-produktionskode og beregningsintensive maskinindlæringsalgoritmer.

Ulemper

  • Til ad-hoc-analyser og mere dedikerede statistiske applikationer gør Java's detaljerethed det til et usandsynligt førstevalg. Dynamisk typede script-sprog som R og Python egner sig til meget større produktivitet.
  • Sammenlignet med domænespecifikke sprog som R er der ikke et stort antal biblioteker tilgængelige til avancerede statistiske metoder i Java.

Bedømmelse - “en seriøs konkurrent til datalogi”

Der er meget at sige for at lære Java som et første valg datalogisk sprog. Mange virksomheder vil sætte pris på muligheden for problemfrit at integrere datavidenskabsproduktionskoden direkte i deres eksisterende kodebase, og du vil finde, at Java's ydeevne og type sikkerhed er reelle fordele.

Du er dog uden række statistikspecifikke pakker, der er tilgængelige på andre sprog. Når det er sagt, bestemt en at overveje - især hvis du allerede kender en af ​​R og / eller Python.

Scala

Hvad du har brug for at vide

Scala er udviklet af Martin Odersky og udgivet i 2004 og er et sprog, der kører på JVM. Det er et multi-paradigmesprog, der muliggør både objektorienterede og funktionelle tilgange. Cluster computing framework Apache Spark er skrevet i Scala.

Licens

Ledig!

Fordele

  • Scala + Spark = High performance cluster computing. Scala er et ideelt sprogvalg for dem, der arbejder med datasæt med stort volumen.
  • Multi-paradigmatisk: Scala-programmører kan have det bedste fra begge verdener. Både objektorienterede og funktionelle programmeringsparadigmer til rådighed for dem.
  • Scala er kompileret til Java bytecode og kører på en JVM. Dette muliggør interoperabilitet med selve Java-sproget, hvilket gør Scala til et meget stærkt sprog til generelle formål, samtidig med at det er velegnet til datalogi.

Ulemper

  • Scala er ikke et ligetil sprog at komme i gang med, hvis du lige er begyndt. Din bedste chance er at downloade sbt og oprette en IDE som Eclipse eller IntelliJ med et specifikt Scala-plug-in.
  • Syntaksen og typesystemet beskrives ofte som kompleks. Dette giver en stejl indlæringskurve for dem, der kommer fra dynamiske sprog som Python.

Bedømmelse - “perfekt til passende big data”

Når det kommer til at bruge klyngecomputer til at arbejde med Big Data, så er Scala + Spark fantastiske løsninger. Hvis du har erfaring med Java og andre statisk typede sprog, vil du også sætte pris på disse funktioner i Scala.

Men hvis din applikation ikke beskæftiger sig med datamængderne, der retfærdiggør den ekstra kompleksitet af Scala, vil du sandsynligvis finde din produktivitet at være meget højere ved hjælp af andre sprog som R eller Python.

Julia

Hvad du har brug for at vide

Julia blev udgivet for lidt over 5 år siden og har gjort indtryk i numerisk databehandling. Dens profil blev hævet takket være tidlig adoption af flere store organisationer, herunder mange i finansbranchen.

Licens

Ledig!

Fordele

  • Julia er et JIT ('just-in-time') kompileret sprog, som lader det tilbyde god ydeevne. Det tilbyder også enkelhed, dynamisk typing og scripting-funktioner i et fortolket sprog som Python.
  • Julia var specialdesignet til numerisk analyse. Det er også i stand til programmering til generelle formål.
  • Læsbarhed. Mange brugere af sproget nævner dette som en vigtig fordel

Ulemper

  • Modenhed. Som et nyt sprog har nogle Julia-brugere oplevet ustabilitet, når de bruger pakker. Men selve kernesproget er angiveligt stabilt nok til produktionsbrug.
  • Begrænsede pakker er en anden konsekvens af sprogets ungdommelighed og små udviklingssamfund. I modsætning til længe etablerede R og Python har Julia ikke valg af pakker (endnu).

Bedømmelse - “en for fremtiden”

Hovedproblemet med Julia er et, der ikke kan bebrejdes. Som et nyligt udviklet sprog er det ikke så modent eller produktionsklar som dets vigtigste alternativer Python og R.

Men hvis du er villig til at være tålmodig, er der al grund til at være meget opmærksom, når sproget udvikler sig i de kommende år.

MATLAB

Hvad du har brug for at vide

MATLAB er et etableret numerisk computersprog, der bruges i hele den akademiske verden og industrien. Det er udviklet og licenseret af MathWorks, et firma, der blev grundlagt i 1984 til at kommercialisere softwaren.

Licens

Proprietær - priser varierer afhængigt af din brugssag

Fordele

  • Designet til numerisk computing. MATLAB er velegnet til kvantitative applikationer med sofistikerede matematiske krav såsom signalbehandling, Fourier-transformationer, matrixalgebra og billedbehandling.
  • Datavisualisering. MATLAB har nogle fantastiske indbyggede plotningsfunktioner.
  • MATLAB undervises ofte som en del af mange bachelor-kurser i kvantitative fag som fysik, teknik og anvendt matematik. Som en konsekvens er det meget brugt inden for disse felter.

Ulemper

  • Proprietær licens. Afhængigt af din brugssag (akademisk, personlig eller virksomhed) skal du muligvis forkaste en dyr licens. Der er gratis alternativer tilgængelige som Octave. Dette er noget, du virkelig skal overveje.
  • MATLAB er ikke et oplagt valg til generel programmering.

Bedømmelse - “bedst til matematisk intensive applikationer”

MATLABs udbredte anvendelse inden for en række kvantitative og numeriske felter i hele industrien og den akademiske verden gør det til en seriøs mulighed for datalogi.

Den klare brugssag ville være, når din applikation eller den daglige rolle kræver intensiv, avanceret matematisk funktionalitet. Faktisk blev MATLAB specielt designet til dette.

Andre sprog

Der er andre almindelige sprog, der måske eller måske ikke er af interesse for dataforskere. Dette afsnit giver et hurtigt overblik ... selvfølgelig med masser af plads til debat!

C ++

C ++ er ikke et almindeligt valg for datavidenskab, selvom det har lynhurtig ydeevne og udbredt mainstream-popularitet. Den enkle årsag kan være et spørgsmål om produktivitet versus ydeevne.

Som en Quora-bruger udtrykker det:

“Hvis du skriver kode for at lave ad-hoc-analyse, der sandsynligvis kun køres én gang, vil du hellere bruge 30 minutter på at skrive et program, der kører på 10 sekunder, eller 10 minutter på at skrive et program, der kører på 1 minut?"

Fyren har et punkt. Men for seriøs ydeevne på produktionsniveau ville C ++ være et fremragende valg til implementering af maskinlæringsalgoritmer optimeret på et lavt niveau.

Bedømmelse - “ikke til det daglige arbejde, men hvis ydeevnen er kritisk ...”

JavaScript

Med stigningen i Node.js i de senere år er JavaScript blevet mere og mere et seriøst serversidesprog. Imidlertid har dets anvendelse inden for datavidenskab og maskinlæringsdomæner været begrænset til dato (skønt checkout brain.js og synaptic.js!). Det lider af følgende ulemper:

  • Sent til spillet (Node.js er kun 8 år gammel!), Hvilket betyder ...
  • Få relevante datalogiske biblioteker og moduler er tilgængelige. Dette betyder ingen reel mainstream interesse eller momentum
  • Præstationsmæssigt er Node.js hurtig. Men JavaScript som sprog er ikke uden kritikere.

Nodens styrker er i asynkron I / O, dens udbredte anvendelse og eksistensen af ​​sprog, der kompileres til JavaScript. Så det kan tænkes, at en nyttig ramme for datavidenskab og realtids ETL-behandling kan komme sammen.

Det centrale spørgsmål er, om dette vil tilbyde noget andet end det, der allerede eksisterer.

Bedømmelse - “der er meget at gøre, før JavaScript kan tages som et seriøst datalogisk sprog”

Perl

Perl er kendt som en 'schweizisk hærkniv af programmeringssprog' på grund af sin alsidighed som et generelt script-sprog. Det deler meget til fælles med Python, da det er et dynamisk skrevet script-sprog. Men det har ikke set noget lignende den popularitet, Python har inden for datavidenskab.

Dette er lidt overraskende i betragtning af dets anvendelse inden for kvantitative områder som bioinformatik. Perl har flere vigtige ulemper, når det kommer til datavidenskab. Det skiller sig ikke hurtigt ud, og syntaksen er berømt uvenlig. Der har ikke været den samme drivkraft mod udvikling af datavidenskabsspecifikke biblioteker. Og på ethvert felt er momentum nøglen.

Bedømmelse - “et nyttigt script til generel brug, men alligevel giver det ingen reelle fordele for dit datavidenskabelige CV”

Rubin

Rubin er et andet generelt formål, dynamisk skrevet fortolket sprog. Alligevel har den heller ikke set den samme vedtagelse for datalogi som Python.

Dette kan virke overraskende, men er sandsynligvis et resultat af Pythons dominans i den akademiske verden og en positiv feedbackeffekt. Jo flere mennesker bruger Python, jo flere moduler og rammer udvikles, og jo flere mennesker henvender sig til Python.

SciRuby-projektet eksisterer for at bringe videnskabelig computerfunktionalitet, såsom matrixalgebra, til Ruby. Men for tiden fører Python stadig vejen.

Bedømmelse - “endnu ikke et oplagt valg for datalogi, men vil ikke skade CV'et”

Konklusion

Nå, der har du det - en quickfire-guide til hvilke sprog du skal overveje for datalogi. Nøglen her er at forstå dine brugskrav med hensyn til generalitet versus specificitet såvel som din personlige foretrukne udviklingsstil for ydeevne versus produktivitet.

Jeg bruger R, Python og SQL regelmæssigt, da min nuværende rolle i vid udstrækning fokuserer på at udvikle eksisterende datapipeline og ETL-processer. Disse sprog giver den rette balance mellem generalitet og produktivitet til at udføre jobbet med mulighed for at bruge Rs mere avancerede statistikpakker, når det er nødvendigt.

Dog - du har muligvis allerede noget erfaring med Java. Eller du vil måske bruge Scala til store data. Eller måske er du ivrig efter at blive involveret i Julia-projektet.

Måske lærte du MATLAB på universitetet, eller vil du give SciRuby en chance? Måske har du et helt andet forslag. I så fald bedes du give et svar nedenfor - jeg ser frem til at høre fra dig!

Tak for læsningen!