CodeGym /Java Blog /Willekeurig /Een programmeertaal kiezen
John Squirrels
Niveau 41
San Francisco

Een programmeertaal kiezen

Gepubliceerd in de groep Willekeurig
Ik kwam voor het eerst in aanraking met programmeren op school, in lessen over informatica. Deze bestonden uit een aantal vervelende uitleg van hoe n-ary nummerstelsels werken. En natuurlijk was er een test waarbij je je eigen website moest schrijven. Destijds leek het me dat er geen saaier beroep kon zijn. Wat had ik het mis! Helaas geeft een informaticaprogramma op een middelbare school geen volledig beeld van IT-werk en wordt er niet uitgelegd hoe je een programmeertaal kiest. Alvorens te vragen "Welke programmeertaal moet ik leren?", moet een beginner zich vertrouwd maken met welke talen er zijn en hoe ze van elkaar verschillen. Een programmeertaal kiezen - 1

Instapdrempel: Hoog, laag, gemiddeld

Programmeurs hebben het vaak over de "instapdrempel" - een concept dat de hoeveelheid inspanning weergeeft die een bepaalde "junior developer" nodig heeft om een ​​programmeertaal voldoende onder de knie te krijgen om zijn of haar eerste serieuze programma te schrijven en een baan te vinden. De "instapdrempel" bestaat uit kennis van:
  • syntax eigenaardigheden en nuances van de taal
  • bibliotheken
  • algoritmen en datastructuren.
Werken in Excel zou zelfs een soort programmeren kunnen worden genoemd. Overigens is dit vertrouwde kantoorprogramma niet zo eenvoudig als het lijkt. Voor één gebruiker kan de invoerdrempel de mogelijkheid zijn om een ​​tabel te maken. Voor een ander kan het kennis van complexe formules en macro's zijn. In beide gevallen is deze drempel klein. Vervolgens komen quasi-talen, zoals 1C -programmering. Dan zijn er de eenvoudigste talen om te leren, bijvoorbeeld PHP . Verder hebben we talen met native syntaxis (meestal afgeleid van het Engels) waarvoor u geen geheugenbeheer hoeft te doen, bijvoorbeeld Java en JS . Dan zijn er talen die een uiterst zorgvuldige omgang met geheugen, datastructuren en algoritmen vereisen, bijvoorbeeld C enC++ . Jonge talen met meerdere paradigma's, bijvoorbeeld Scala , hebben misschien wel de hoogste instapdrempel, omdat het beheersen ervan vereist dat je diep in zoveel programmeerparadigma's duikt. Maar voordat u een taal kiest, moet u beslissen wat u vervolgens wilt doen: ontwikkelen voor het web, onderneming, desktop of mobiele apparaten.

Web of geen web?

Web

Webprogrammeurs zijn onder te verdelen in Frontend- en Backend- ontwikkelaars. U moet begrijpen wat deze termen betekenen. Frontend-ontwikkelaars zijn betrokken bij de client-kant, dat wil zeggen wat de gebruiker ziet. De "backend" gaat over het manipuleren en opslaan van gegevens - het deel van een service dat op een server draait. Voor een frontend- ontwikkelaar die beslist welke programmeertaal hij wil leren, zijn JavaScript en JavaScript-frameworks (Angular JS, React en andere) essentieel. JS-dialecten, zoals CoffeeScript en TypeScript, zijn niet zo populair als hun moedertaal, maar ze kunnen ook nuttig zijn. Er is ook een Flash AS, en vroeger waren er JScript en VBScript, maar alleen dinosaurussen onthouden dit =) Daarnaast moet je HTML begrijpenen CSS . Een programmeertaal kiezen - 2Veel beginners denken dat JavaScript en Java bijna hetzelfde zijn. Verwar deze talen niet. JS heette voorheen "LiveScript" en kreeg zijn huidige naam alleen vanwege de populariteit van het woord "Java". Voor een web-backend- ontwikkelaar zijn PHP, Python, Ruby, Perl en Java geschikt. Hier wil ik me concentreren op PHP (we zullen het later over de andere talen hebben). PHP is een van de gemakkelijkste talen om te leren, met een lage instapdrempel. Volgens een onderzoek onder bekende webontwikkelaars wint Ruby langzaam maar zeker aan populariteit - het is geliefd om zijn beknoptheid en schoonheid.

Niet web (zakelijk, desktop, mobiel)

Ik heb met opzet de volgende programmeertalen gecombineerd in deze categorie met een vreemde naam. U kunt de meeste gebruiken om bedrijfs-, desktop- en zelfs mobiele applicaties te schrijven. Python is een gemakkelijk te begrijpen objectgeoriënteerde programmeertaal en is de laatste tijd enorm populair geworden door de groei van machine learning (ML): ML-ontwikkelaars maken veel gebruik van Python. MLis een vrij nieuw gebied in de IT, en hoewel we al hebben gezien dat het zijn vruchten afwerpt, zou ik deze branche niet meteen betreden bij het kiezen van een programmeertaal. Ten eerste heb je een UITSTEKEND begrip van wiskunde nodig. Ten tweede kan de golf van populariteit op dezelfde manier passeren als voor "blockchain" of "nanotechnologie". Dat gezegd hebbende, herinnert u zich misschien dat Python wordt gebruikt bij webontwikkeling. C++: een klassieke taal waarin alles is gebaseerd op de "plus-plus"-operator. Deze taal is de voorloper van alle populaire objectgeoriënteerde programmeertalen en een beginner moet er zeker op letten. Er zijn veel populaire applicaties mee geschreven. Maar de uitstekende kans om "jezelf in de voet te schieten" en de moeilijk te begrijpen syntaxis maken de kans nihil dat een beginner deze mastodont van programmeren onder de knie zal krijgen. Kotlin, dat is als Java voor hipsters, is een gekke mix van OOP en functioneel programmeren. Het is de laatste tijd populair vanwege het feit dat een ervaren ontwikkelaar die overstapt van Java naar Kotlin zijn of haar productiviteit aanzienlijk kan verbeteren. Een ervaren ontwikkelaar zal snel vertrouwd raken met deze programmeertaal. Hetzelfde geldt trouwens voor Scala, maar Kotlin is populair in de Android-wereld. Java is voor beginners gemakkelijk te leren. Vooral met de hulp van CodeGym =) Java-syntaxis is begrijpelijk en hoewel er een risico bestaat dat u uzelf in de voet schiet, is het niet kritiek.

OOP of POP?

De procedurele aanpak

De proceduregerichte benadering omvat het schrijven van een programma dat bestaat uit opeenvolgende verklaringen die kunnen worden samengevoegd tot een verenigd geheel om een ​​specifieke reeks problemen effectief op te lossen. Zulke talen zijn C , PureBasic en Pascal . Met andere woorden, de talen die middelbare scholieren en studenten tot wanhoop brengen. Daarnaast is er nog de relatief jonge GOtaal. Dat gezegd hebbende, is het erg handig voor een potentiële ontwikkelaar om bekend te zijn met proceduretalen. Mijn onderdompeling in proceduretalen kwam met het Wolfram Mathematica-systeem en universitair onderzoek. Met de juiste algoritmen en eenvoudige procedures, lineair van het begin van het programma tot het einde, kon ik waarden berekenen die relevant zijn voor de moderne theoretische natuurkunde. Deze "sequentiële" programmeertaal is precies wat je nodig hebt om te begrijpen dat het soms gemakkelijker is om code te schrijven die berekeningen handmatig uitvoert. Leerprocedure-georiënteerd programmeren (POP) zorgt voor een goede algoritmische training, die een werkgever bijna altijd wil zien in een sollicitant. Absoluut alles in IT is gebouwd op het fundament van proceduretalen, dus onderschat ze niet. Trouwens, beginners die beslissen welke programmeertaal ze willen leren, denken vaak dat alleen OOP-talen multithreading ondersteunen. Dit is niet waar. Procedurele programmeertalen maken ook parallelle berekeningen mogelijk. Een programmeertaal kiezen - 3

De objectgeoriënteerde benadering

Degenen die met proceduretalen zijn begonnen, zijn meestal goed thuis in wiskunde, algoritmen en datastructuren (vanwege de nadruk die technische universiteiten op deze gebieden leggen). Toch is de realiteit van vandaag dat succesvolle programmeurs meestal degenen zijn die een andere benadering van programmeren onder de knie hebben: het objectgeoriënteerde paradigma. Met de OOP-ideologie kun je echt wereldwijde systemen bouwen. Een kenmerk van deze aanpak is de gelijkenis met de echte wereld:
  • Verschillende objecten interageren met elkaar en bestaan ​​onafhankelijk van elkaar.
  • Objecten hebben een hiërarchie en kunnen het gedrag van hun voorouders overnemen of veranderen.
  • U kunt abstracte concepten gebruiken, maar alleen objecten die echt bestaan, kunnen op elkaar inwerken.

Voorbeeld

Proceduregerichte talen zijn hulpmiddelen om specifieke problemen op te lossen. Als uw taak verandert, ook al is het maar een klein beetje, zult u waarschijnlijk tijd en moeite moeten besteden aan het herschrijven van alle algoritmen.

Stel je een programma voor dat een autodealer beschrijft die auto's en vrachtwagens verkoopt, zowel nieuw als gebruikt. In een procedurele taal moet u functies definiëren die de invoer of uitvoer van gegevens voor elke entiteit verwerken: een nieuwe auto, een nieuwe vrachtwagen, een gebruikte auto en een gebruikte vrachtwagen. Wat biedt OOP? Met een objectgeoriënteerde benadering hoeven we alleen maar een voertuigbasisklasse te definiëren die de kenmerken opslaat die door alle voertuigtypen worden gedeeld:

  • Maken
  • Motor verplaatsing
  • PK
  • Jaar
  • Nieuw of gebruikt
  • Prijs

En methoden om informatie op te nemen en uit te zenden. Vervolgens maken we objecten die de kenmerken van de voertuigklasse erven: auto en vrachtwagen. Ze bevatten informatie die specifiek betrekking heeft op dit soort voertuigen, evenals invoer-/uitvoermethoden.

Plots besluit het management van de dealer het assortiment uit te breiden door ook motorfietsen aan te bieden. Volgens de procedurele benadering zouden we alle logica voor nieuwe en gebruikte motorfietsen opnieuw moeten creëren, terwijl we met een OOP-taal eenvoudig een nieuwe motorfietsklasse kunnen creëren die alle kenmerken van de voertuigsuperklasse overerft en motorspecifieke verfijningen bevat.

En wat zou er gebeuren als we verschillende voertuigen toevoegen? Een procedurele implementatie zou meer werk vergen dan OOP. Bovendien, hoe groter de line-up, hoe minder operaties met objecten nodig zijn.

OOP is dus een programmeerstijl waarmee u gegevens en methoden kunt combineren tot een enkele entiteit en ermee kunt werken als een verenigd object. Entiteiten kunnen in een hiërarchie worden gerangschikt en met elkaar communiceren zonder zich te verdiepen in elkaars interne implementatiedetails. Ik zal drie redenen noemen waarom OOP voor mij de meer progressieve benadering is:
  1. OOP omvat de onafhankelijke ontwikkeling van individuele modules, waardoor een programmeur of team de methode en grenzen van contact en informatie-uitwisseling kan kiezen.
  2. Code opgedeeld in kleine modules is veel gemakkelijker te lezen dan monolithische procedures. Hierdoor kan een buitenstaander uw code snel begrijpen en kunt u zich indien nodig ook aansluiten bij een nieuw project.
  3. De ene klasse kan worden gewijzigd zonder de interactie van een andere te beïnvloeden, maar een dergelijke wijziging kan de hiërarchie van onderliggende objecten beïnvloeden. Als je deze aanpak eenmaal onder de knie hebt, wordt het uitbreiden en wijzigen van een programma triviaal.
Onthoud dat de ene benadering niet in strijd is met de andere, maar OOP staat nog steeds hoger in de hiërarchie. Dus waarom raad ik Java aan? Ik noem de volgende redenen:
  1. Cross-platform.

    Java werkt overal dankzij de Java virtual machine (JVM). Een van de belangrijkste voordelen van deze taal is het platformonafhankelijke karakter: u hoeft niet na te denken over welke bibliotheek u moet toevoegen of over de architectuur van een bepaalde processor. "Een keer schrijven, overal naartoe rennen."

  2. Documentatie.

    Er is een enorme documentatiebasis: officiële Oracle-documentatie, trainingsportals en een voortdurend evoluerende community. Antwoorden op de meeste vragen die tijdens de ontwikkeling opkomen, zijn binnen enkele minuten te vinden. Het belangrijkste is om te begrijpen wat u in de zoekmachine moet invoeren =)

  3. Populariteit.

    Java is de meest populaire programmeertaal ter wereld: naast de eerder genoemde Android- en webontwikkelaars schrijft bijna elke enterprise-ontwikkelaar in Java. Enterprise verwijst naar de interne bedrijfsontwikkeling die nodig is voor de behoeften van grote bedrijven.

    Elk jaar voorspellen haters "de dood van Java". Ze zeggen: " Oracle stopt ermee. Je verspilt je tijd helemaal. " Dit is niet waar! Ze beloven elke zes maanden nieuwe versies van Java uit te brengen.

    Voor mij waren de lambda-expressies in Java 8 revolutionair en een openbaring, om nog maar te zwijgen van de nieuwe versies! Ik werk momenteel aan een "legacy"-project, dus ik verdiep me niet in de nieuwste innovaties, maar het is een feit dat Java leeft.

    Een programmeertaal kiezen - 4
  4. Android.

    De afgelopen 4 jaar heeft Android constant meer dan 80% van de markt voor mobiele telefoons in handen . Tv's, mediaspelers en zelfs auto-infotainmentsystemen draaien op dit besturingssysteem. En app-ontwikkeling voor dit besturingssysteem gebeurt voornamelijk in Java. Stelt u zich eens de vooruitzichten voor die zich openen. Toen ik een baan kreeg als Android-ontwikkelaar, vroeg ik me af hoeveel het product dat ik aan het ontwikkelen was waard was? Het bleek dat de prijs ongeveer $ 5 per jaar was. Dat roept de vraag op: "waar komt dan het geld vandaan voor dit kantoor, de salarissen, de snackbar, de pingpongtafel, de robots en andere voordelen? Het antwoord ligt in het volume: onze app heeft 20 miljoen gebruikers.

  5. Salarissen.

    En nu de kers op de taart: het salaris van een Java-ontwikkelaar behoort tot de hoogste in de branche. Je gaat tenslotte programmeren studeren met een bepaald doel: een goede baan krijgen.

De populariteit van de programmeertaal

Er zijn officiële informatiebronnen, dus laten we die raadplegen. Volgens TIOBE staat Java vanaf oktober 2019 op de eerste plaats. In de PYPL- ranglijst staat Java op de tweede plaats, ver voor JS en wedijvert met de trendy Python.

Conclusie

Als een beginner overweegt een programmeertaal te kiezen, is dit waar hij of zij op moet letten:
  • Populariteit (Java neemt consequent een leidende positie in)
  • Instapdrempel (voor Java is het gemiddeld: werkgevers hebben een vrij breed scala aan vaardigheden nodig)
  • Beschikbare materialen (welkom bij CodeGym =))
  • Toepassingsgebieden: hoe meer vakgebieden een programmeertaal gebruikt, hoe meer specialisten er in de markt nodig zijn. Ik heb al genoemd hoe Java platformonafhankelijke ontwikkeling ondersteunt, maar ik blijf het herhalen.
Natuurlijk zijn er overal valkuilen, maar wie een stap zet, komt vooruit: alleen jij kunt beslissen welke programmeertaal je kiest. Veel succes met leren!
Opmerkingen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION