Vandaag gaan we in op functioneel programmeren. Meer specifiek zullen we kijken naar het verschil tussen declaratieve en imperatieve programmering.

Laten we eerst snel de voorwaarden doornemen. Vervolgens vergelijken we deze programmeerstijlen en kijken we hoe ze verschijnen in Java en of de taal hun gelukkige coëxistentie ondersteunt.

Functioneel programmeren is een paradigma waarbij functies worden opgevat als wiskundige functies, niet als subroutines, zoals bij procedureel programmeren . Dat wil zeggen, in deze twee paradigma's wordt het woord "functie" anders geïnterpreteerd. Onthoud dit en verwar ze niet. Java laat je niet in de war raken, aangezien subprogramma's "methoden" worden genoemd, terwijl functies verwijzen naar wiskundige functies (ook: lambda-functies of methodereferentie).

In de praktijk zijn functies bij procedureel programmeren niet alleen afhankelijk van invoervariabelen, maar ook van externe factoren (zoals andere variabelen buiten de functie of de status van het systeem). Dat betekent dat het aanroepen van dezelfde functie met dezelfde argumenten maar in een andere context verschillende resultaten kan opleveren. Wanneer bij functioneel programmeren een functie wordt aangeroepen met dezelfde argumenten, levert dit altijd hetzelfde resultaat op, omdat functies alleen afhankelijk zijn van invoergegevens.

Voordelen van functioneel programmeren

  • Verbeterde codebetrouwbaarheid
  • Handig testen van eenheden
  • Mogelijkheden voor code-optimalisatie tijdens compilatie
  • Mogelijkheden voor gelijktijdigheid

Nadelen van functioneel programmeren

De nadelen van functioneel programmeren komen voort uit al deze kenmerken:

  • Er zijn geen opdrachtverklaringen. In plaats daarvan worden nieuwe waarden opgeslagen in nieuwe variabelen, wat leidt tot de noodzaak om voortdurend geheugen toe te wijzen en automatisch vrij te geven. Als gevolg hiervan is zeer efficiënte afvalinzameling een essentieel onderdeel van elk systeem dat functionele programma's uitvoert.

  • Niet-strikte evaluatie betekent dat de volgorde van functieaanroepen onvoorspelbaar is, wat I/O-problemen veroorzaakt wanneer de volgorde van bewerkingen belangrijk is.

Dat concludeert onze snelle beoordeling van functionele programmering. Laten we nu verder gaan met programmeerstijlen.

Dwingend programmeren is een programmeerparadigma dat wordt gekenmerkt door de volgende kenmerken:

  • De broncode van het programma bestaat uit instructies (statements).

  • De instructies moeten opeenvolgend worden gevolgd.

  • Gegevens die zijn gegenereerd door het uitvoeren van eerdere instructies, kunnen door volgende instructies uit het geheugen worden gelezen.

  • De gegevens die worden verkregen door het uitvoeren van een instructie kunnen naar het geheugen worden geschreven.

Dit zijn de belangrijkste kenmerken van gebiedende talen:

  • Gebruik van booleaanse variabelen.
  • Gebruik van de toewijzingsoperator.
  • Gebruik van samengestelde uitdrukkingen.
  • Gebruik van subroutines.

Een imperatief programma is als bevelen uitgedrukt in de gebiedende wijs in natuurlijke talen. Met andere woorden, een imperatief programma is een reeks opdrachten.

Dwingende programmeertalen zijn C en C++.

Declaratieve programmering is een programmeerparadigma waarin de oplossing voor een probleem wordt gespecificeerd. Dat wil zeggen, het eindresultaat wordt beschreven, niet de manier om het te bereiken. HTML is een voorbeeld van een declaratieve taal. Bij het schrijven van tags in deze taal denken we niet na over hoe de elementen op de pagina worden getekend. We beschrijven alleen hoe de pagina eruit moet zien.

Een andere declaratieve programmeertaal is SQL.

Laten we de twee programmeerstijlen vergelijken door een voorbeeld uit de praktijk te bekijken: hoe leggen we iemand uit hoe hij op een bepaalde plaats komt?

Stel je deze situatie eens voor: een man komt naar ons toe op straat en vraagt: "Hoe kom ik bij het museum?"

Met een imperatieve benadering zouden we hem het algoritme geven om er te voet te komen:

  • keer hier om
  • loop 2 blokken in een rechte lijn
  • rechts af slaan

Met een declaratieve benadering zouden we gewoon het adres geven, en dan zou de persoon zelf op de juiste plaats komen.

Java is momenteel een programmeertaal met meerdere paradigma's . Multi-paradigma betekent dat de taal meerdere paradigma's ondersteunt.

Tijdens zijn lange evolutie heeft de taal zijn objectgeoriënteerde model uitgebreid, zodat de gebruikers over verschillende tools beschikken en de beste kunnen kiezen voor hun specifieke taak.

Als gevolg hiervan ondersteunt Java momenteel zowel de imperatieve benadering (zoals het schrijven van code voor methodeaanroepen) als de declaratieve benadering (zoals de annotaties die tijdens runtime beschikbaar zijn).

Laten we samenvatten:

  • Er zijn verschillende programmeerparadigma's.

  • Er zijn declaratieve en imperatieve benaderingen.

  • U moet degene kiezen die het meest geschikt is voor de taak die voorhanden is.

  • Java is een taal met meerdere paradigma's die beide benaderingen ondersteunt.