INTRODUCTIE
Programmeren
- Definitie van een algoritme:
= a process or set of rules to be followed in calculations or other problem-
solving operations, especially by a computer
- Definities van een computerprogramma:
= a set of instructions that makes a computer do a particular thing
= a detailed plan or procedure for solving a problem with a computer, more
specifically an unambiguous, ordered sequence of computational instructions
necesarry to achieve a solution
Voorbeelden:
Een algoritme, bvb. Kortste pad berekening, pagerank algoritme, sudoku
oplossingstactiek
Een programma, bvb. Python, R script
Een computerprogramma, bvb. Word, Java
Programmeerparadigma’s
- Imperatief/procedureel programmeren
o De uitvoeringsvolgorde vormt het verloop van het programma
o Hoe iets moet berekend worden, stap voor stap
o Meestal ook object gericht
o Bvb. Java, Python expliciete uitleg hoe je een element uit een lijst moet
vinden
- Declaratief programmeren
o De berekeningen vormen het verloop van het programma
o Wat er berekend moet worden, niet hoe
o Bvb. SQL, Javascript, lineair programmeerprobleem selecteer alle
waarden voor x = 2 (kies zelf hoe)
Python
- Uitgevonden door Guide van Rossum
- Focus op verstaanbaarheid en overzichtelijkheid
- Voordelen:
o Makkelijk te begrijpen
o Veel dingen kunnen kort geschreven worden
- Nadelen:
o Is dynamisch getypeerd
o Soms moeilijk te volgen voor niet-gevorderde programmeurs
o Heel foutengevoelig (bvb. hoofdlettergevoelig!)
- Richtlijnen gebundeld in PEPs (Python Enhancement Proposals)
Eigenschappen:
Is imperatief/procedureel met object-oriëntatie, maar heeft elementen van
declaratief/functioneel programmeren
Dynamisch getypeerd: variabelen moeten niet gedeclareerd worden en hebben
geen vast type
Wordt tijdens de executie geïnterpreteerd
wordt niet gecompileerd naar machinetaal (zoals Java), maar virtuele
machinetaal
, + je kan de code blijven veranderen tijdens uitvoering
- werkt beduidend trager
Python vs Java
- Python is beduidend korter
o Geen pakketten nodig, geen main() nodig, we leven van boven naar onder
o Printen kan met 1 simpele functie
o Geen ; nodig
- Java is duidelijker
o We weten meteen alles over de variabelen en de types van de waarden
o We weten ook waar het programma begint
o Het is makkelijker te debuggen/ minder foutengevoelig
Hoe gebruik ik GenAI om te programmeren?
- Alle LLM’s zijn gebaseerd op neurale netwerken:
o Weerspiegelen de werking van ons brein
o Netwerk van neuronen die inputs doorlinken naar output met wiskunde
formule
- Meeste gebaseerd op het Transformer model
o Paper meer geciteerd dan alle werken van Einstein samen
- Leert de meest waarschijnlijke volgende woorden
Decoder:
- Doel = tekst genereren
- Neemt een sequentie van (ge-encodeerde) embeddings als input
- Maakt een sequentie van woorden op een generatieve manier
- Goed voor:
o Chatbots
o Vertalingen
o Samenvattingen
Retrieval-augmented generation (RAG)
- ChatGPT googelt dingen die het niet weet:
o Entiteiten (bv. KULeuven)
o Specifieke termen
o Specifieke huidige gebeurtenissen (bv. wat er is morgen te doen in
Leuven?)
- Voordelen:
o Recente informatie wordt gebruikt
o Gebaseerd op feiten
- Vectors worden geconstrueerd van data die terloops verzameld wordt:
o LLM creëert een query embedding
o Die embeddingsvector wordt gematcht met de meest gelijkaardige vector
uit een vector database
, DEEL 1: BASISSYNTAX
1. Basis data types
Integers
- Gehele getallen
- Worden automatisch herkend door Python
- In Python: van de klasse/het type int
Floating-point nummers (floats)
- Kommagetallen
- Kunnen in wetenschappelijke notatie gebruikt worden
- In Python: van het type float
Handige functies voor cijfers
Booleans
- Waar/vals waarden (True/False zijn de gereserveerde keywords)
- In Python: van het type bool
Strings
- Sequentie van tekens/karakters
- Sterke overeenkomsten met lijsten (zie later) – beiden zijn itereerbare types
o Makkelijk vanwege het gebruik van indices
- Kunnen aangemaakt worden met zowel enkele als dubbele aanhalingstekens
(maar niet door elkaar)
o Escape karakters zoals \ nodig om haakjes binnen een aanhalingsteken te
gebruiken
- Er bestaan verschillende operatoren in Python om bewerkingen uit te voeren,
zoals +,/,-,*,**
- Weet nu: strings kunnen aan elkaar geplakt (geconcateneerd) worden met +
NUTTIGE TEKENS
\n zorgt voor een nieuwe lijn
\t voegt een tab in
Conversies tussen types
Ingebouwde functies (eigenlijk constructors) die het toelaten om types om te zetten