Zephyrnet-logo

Data Science en de Go-programmeertaal – KDnuggets

Datum:

Gesponsorde content

Commentaar door Tom Miller, faculteitsdirecteur van de Northwestern University MSDS programma.

Jaren geleden leerde ik als student toegepaste statistiek aan de Universiteit van Minnesota een les over programmeren in de academische wereld. Aan het begin van de cursus zei de professor:

“Het maakt mij niet uit welke taal je gebruikt bij opdrachten, als je maar je eigen werk doet.”

Ik had ervaring met Fortran, maar leerde mezelf Pascal aan, in een poging een gestructureerde programmeerstijl aan te nemen.

Ik geloofde de professor op zijn woord en programmeerde de eerste opdracht in Pascal, terwijl mijn klasgenoten Fortran gebruikten. De eerste opdracht komt eraan. Ik loop met mijn werkstuk (een programmaoverzicht) naar de voorkant van de kamer en overhandig het aan de professor. Hij kijkt er vragend naar en vraagt: “Wat is dit?”

Ik leg uit: 'Het is Pascal. Je vertelde ons dat we in elke gewenste taal konden programmeren, zolang we maar ons eigen werk deden.”

Waarop de professor zegt: ‘Pascal. Ik lees Pascal niet. Ik lees alleen Fortran.”

Geleerde les: academici staan ​​niet bijzonder open voor nieuwe programmeertalen.

FORTRAN

Fortran is ontwikkeld door John Backus bij IBM en geïntroduceerd in 1957. Als je de naam hoort, denk dan aan ‘formulevertaling’. Fortran is zeer geschikt voor numerieke berekeningen, zoals nodig voor wetenschappelijke en technische toepassingen. Fortran heeft onlangs een heropleving gekend, misschien als gevolg van de rekenvereisten van grote datasets en supercomputing.

PASCAL

Ontworpen door Nicholas Wirth, een Zwitserse computerwetenschapper, en geïntroduceerd in 1970, is Pascal een afgeleide van ALGOL. Pascal sloot zich in de jaren zeventig en tachtig aan bij een beweging in de richting van gestructureerd programmeren op veel universiteiten. Variaties op Pascal zijn gebruikt voor systeemprogrammering bij Apple en Microsoft.

 
Datawetenschapsstudenten aan de meeste universiteiten van vandaag zouden een soortgelijke ervaring hebben als ze opdrachten zouden inleveren in Go, Rust of een andere hedendaagse taal in plaats van Python of R.

Met machine learning-toepassingen en AI regeert Python de dag. Datawetenschappers voelen zich misschien tevreden als ze meevaren in een Python-boot met reddingsboeien zoals numpy, Pandas, Scikit leren en TensorFlow aan hun zijden.

Maar pas op. De huidige data-oceanen zijn schokkerig. Haaien naderen.

Denk aan de woorden van Chief Brody tegen Quint in de film Bek: “Je hebt een grotere boot nodig.” Ik zou willen voorstellen dat er met Go een grotere, snellere boot wordt gebouwd.

GA (GOLANG)

Go is ontwikkeld door drie Google-computerwetenschappers: Robert Griesemer, Rob Pike en Ken Thompson. Het behoudt de prestatievoordelen van C, terwijl het eenvoudiger en veiliger is om mee te werken dan C. Go werd in 2009 geïntroduceerd en is de belangrijkste programmeertaal voor systemen bij Google. Voor bedrijfskritische systemen in veel organisaties vervangt Go C/C++, C#, Java en Python. Go wordt soms “Golang” genoemd om het te onderscheiden van het Go-bordspel en om een ​​betrouwbaardere term te bieden in zoekmachines.

Data Science-carrières: het waarom van Go

In een presentatie getiteld “Het waarom van Go”, traceerde Carmen Andoh de ontwikkeling van computertalen van 1980 tot en met 2017. Ze kwam met een overtuigend argument voor het gebruik van Go in grote programmeerprojecten. Haar argument klopt vandaag.

  • Go is machine-efficiënt. Het verslaat zowel talen die worden geïnterpreteerd als talen die afhankelijk zijn van virtuele machines.
  • Python betrad ruim dertig jaar geleden de computerscene, vóór de opkomst van multi-coreprocessors. Python is een geïnterpreteerde taal met één thread, slecht geschikt voor systemen die gelijktijdige verwerking vereisen.
  • Datawetenschappers schrijven misschien in Python, maar voor rekenintensieve taken is het C of C++ dat het werk doet. Python is slechts de ‘lijm’ die de onderdelen van de machine learning-boot bij elkaar houdt.
  • Het duurt niet lang voordat we voorbeelden vinden van benchmarks die de voordelen van Go ten opzichte van Python en R, de toonaangevende talen in de datawetenschap, aantonen.

Go wordt soms omschreven als ‘C voor de 21e eeuw’ en is een sterk getypeerde taal die rechtstreeks naar machinecode compileert. Het compileert veel sneller dan C en wordt bijna net zo snel uitgevoerd als C.

C, C++ EN C#

C is ontwikkeld door Dennis Ritchie van Bell Labs en geïntroduceerd in 1972. Omdat het toegang op laag niveau tot geheugen biedt en gemakkelijk aan machine-instructies kan worden gekoppeld, is C al jaren een populaire programmeertaal voor systemen. C heeft prestatievoordelen ten opzichte van de meeste andere programmeertalen. C++ en C# bieden objectgeoriënteerde uitbreidingen op C, terwijl de structuur- en prestatievoordelen van C behouden blijven.

Gelijktijdige verwerking (nooit een gemakkelijke taak) is een intrinsiek kenmerk van Go

Go biedt een uitgebreide reeks hulpmiddelen waarmee u optimaal kunt profiteren van de huidige multicore digitale computers. Datawetenschap heeft talen en systemen nodig die aan de eisen van de huidige datagestuurde, data-intensieve wereld kunnen voldoen. Datawetenschap heeft Go nodig.

Go is een efficiënte programmeur. Python wordt vaak aangeprezen als gemakkelijk te leren. Maar ik zou zeggen dat Go gemakkelijker te leren is dan Python. Go is eenvoud door ontwerp, een taal met slechts vijfentwintig trefwoorden. Go is gemakkelijk te lezen, gemakkelijk te gebruiken en in de loop van de tijd gemakkelijk te onderhouden.

Laten we blij zijn dat de leiders van de Go-gemeenschap terughoudend zijn met het toevoegen van nieuwe functies. donald knuth had het juiste idee. Toen hij bij versie 3.14 van TeX, verklaarde hij dat er geen nieuwe versies van de taal zouden zijn, geen nieuwe functies, alleen bugfixes. En bij elke bugfix leende hij een ander cijfer van π (pi).

Een mantra van Go-programmeurs: “Houd het simpel. Laat het draaien.”

Go heeft een goed gedefinieerde structuur met opmaakhulpmiddelen om te zorgen voor een gemeenschappelijke stijl onder programmeurs, een stijl die soms ‘idiomatische Go’ wordt genoemd. Go heeft geautomatiseerd geheugenbeheer (garbage collection) en beschermt programmeurs tegen geheugenlekken en fouten. Go is veiliger dan C en C++.

Go-kernontwikkelaars streven naar achterwaartse compatibiliteit, en het modulesysteem van Go bevordert de veiligheid en zorgt ervoor dat de juiste pakketten tijdens het compileren in elke build worden opgenomen. Go houdt softwareversies bij naarmate de softwarestack groeit.

Beschouw softwareontwikkeling als een Jenga-spel. We willen toegang krijgen tot de blokken onderaan de stapel, en er tegelijkertijd voor zorgen dat de hele stapel niet instort. Go, laat ons dit doen.

Go vereenvoudigt de softwarestack. Hoe zit het met de softwarestack, de infrastructuur?

Wanneer Python (zelfs ondersteund door C of C++) niet aan de taak voldoet, wenden datawetenschappers zich tot andere talen en systemen. Hier is een zogenaamde oplossing voor de prestatieproblemen van Python:

 
Data Science en de Go-programmeertaal

Data Science en de Go-programmeertaal
 

Om hoogwaardige oplossingen te implementeren, wenden datawetenschappers zich tot Spark, dat is gebouwd op Scala, dat afhankelijk is van de Java Virtual Machine. En om gemakkelijke toegang te bieden, voegen deze goedbedoelende datawetenschappers PySpark aan de mix toe. Is dit de beste manier om de prestatieproblemen van Python aan te pakken? Nee.

Overweeg een eenvoudiger softwarestack. Het is Go, gewoon Go:

 
Data Science en de Go-programmeertaal

Data Science en de Go-programmeertaal
 

Met codevoorbeelden van GopherCon-conferenties in 2021 en 2023laat Daniel Whitenack zien hoe u oplossingen voor machinaal leren en kunstmatige intelligentie kunt implementeren in Go. We kunnen Go gebruiken om geïntegreerde, intelligente webapplicaties te bouwen, inclusief applicaties die een beroep doen op generatieve AI en grote taalmodellen.

Go vertegenwoordigt de typische systeemprogrammeertaal voor de huidige multicore, digitale computers. Go is de taal van de cloud. Go is de taal van gedistribueerd computergebruik. Datawetenschappers die Python vroeger als de ‘lijmtaal’ van het verleden beschouwden, kunnen Go nu als de ‘superlijm’ beschouwen.

Go wordt veel gebruikt in de industrie. Bedrijven waarderen de veiligheid, eenvoud en prestaties van Go. Ze erkennen ook de sterke punten van Go als programmeeromgeving voor back-endsystemen. Go is zeer geschikt voor het ontwikkelen van web- en databaseservers, applicatieprogrammeringsinterfaces en microservices. Go is zeer geschikt voor het implementeren van schaalbare, krachtige systemen.

Te beginnen met Google, de geboorteplaats van Go, vertrouwen veel bedrijven op Go voor grote, bedrijfskritische systemen. Als Go goed genoeg is voor Kopen Google Reviews, Netflix, Uber, dropbox, PayPal, American Express, Capital One, Salesforce, Zillow, en vele anderen, dan is Go goed genoeg voor de rest van ons.

If Go kan een effectief platform bieden om te bouwen havenarbeider, Kubernetes, Prometheus, grafana, dikhuid, Terraform, CrowdStrike, enz, Kakkerlak DB, Weviaten, milvus, Aerospike, en een divers scala aan gedistribueerde systemen en cloud-native microservices, dan kan Go een effectief platform zijn voor het bouwen van data science-applicaties.

Docenten op het gebied van computerwetenschappen en datawetenschappen moeten leren van de industrie. Ze zouden Go aan hun cursussen moeten toevoegen. Dit is wat we doen bij Northwestern.

Drie talen voor datawetenschap bij Northwestern

Het gebruik van Go voor data science betekent niet dat we de goede dingen die R en Python bieden, moeten opgeven. Wij kunnen meertalig zijn.

Het is niet moeilijk om projecten voor te stellen waarvoor een datawetenschapper gegevens zou kunnen onderzoeken met R, modellen zou kunnen ontwikkelen met Python en systemen zou kunnen implementeren in Go. Van de drie talen voor datawetenschap is Go de nieuwste. Go vertoont een stijgende trend en biedt aanzienlijke werkgelegenheidskansen.

Het datawetenschapsprogramma van Northwestern waardeert de sterke punten van de drie talen voor data science in alle specialisaties van het programma.

  • R, met talrijke pakketten voor analyse en modellering, staat hoog aangeschreven bij toegepaste statistici. Het is een uitstekende keuze voor wetenschappelijke programmering en toegepast onderzoek. R is vooral goed voor het verkennen en visualiseren van gegevens. R is de primaire taal in de meeste cursussen in de specialisatie Analytics en Modeling van Northwestern.
  • Python is momenteel de populairste computertaal in de datawetenschap. Het is vooral sterk in de verwerking van natuurlijke taal en dient als de primaire klant voor deep learning-platforms. Python biedt een veelzijdige omgeving voor het ontwikkelen van modellen, en Python is de primaire taal in de meeste cursussen in de specialisatie Kunstmatige Intelligentie van Northwestern.
  • Go is een systeemprogrammeertaal die is ontworpen voor de hedendaagse computers met meerdere processors. Het is zeer geschikt voor het implementeren van schaalbare, krachtige systemen voor datawetenschap, inclusief webapplicaties en databaseservers. Go is de primaire taal in de specialisatie Data Engineering van Northwestern, zoals weergegeven in de Leren Ga voor Data Science website.

Studenten in Online MS in Data Science van Northwestern University programma bouwt de essentiële analyse- en leiderschapsvaardigheden op die nodig zijn om gegevens te analyseren en interpreteren om weloverwogen, impactvolle beslissingen te nemen op een breed scala van gebieden. De lessen worden geleid door een ervaren faculteit van experts uit de industrie. Studenten ontwikkelen expertise op hun interessegebied door een algemene data science-track of een van de vijf specialisaties te selecteren: Analytics and Modeling, Analytics Management, Artificial Intelligence, Data Engineering en Technology Entrepreneurship. Studenten leren parttime, in hun eigen tempo, volledig online. Aanvragen worden elk kwartaal geaccepteerd.

 
Data Science en de Go-programmeertaal

Data Science en de Go-programmeertaal
 
 

spot_img

Laatste intelligentie

spot_img