H3 Flashcards
Computer Languages
talen waarmee de user kan communiceren met de computer door het schrijven van computer instructies
Computer Languages Classification
- low level: alleen 0 en 1
- mid level: mnemonics (assembly)
- high level: vergelijkbaar met mensen taal (c, python)
Low-Level Language
- = machine taal
- 1st gen language
- bevat alleen 0 en 1 -> direct begrijpbaar door processor
+ computer begrijpt het makkelijk
+ geen vertaling nodig
+ snel
– onmogelijk te schrijven
– hangt af van machine tot machine
– meer kans op errors
Mid Level language
- mix tussen low en high level
- Second Gen Language
Assembly
leesbare versie van Machine Language waarbij mnemics (= symbolische namen als vervanging van machine instructies) worden gebruikt ipv binaire reeksen.
-> mnemics worden via assembler vertaald naar machine taal
assembly -> assembler -> machine language
Voordelen/nadelen assembler
+ directe communicatie met hardware
+ geen compiler (wel assembler)
+ snel
– moeilijk te schrijven, lezen, verbeteren
– machine afhankelijk
High Level Language
- 3rd gen language
- gelijkaardig aan mensen taal
- instructies zijn code/scripts
+ makkelijk schrijven
+ leesbaar
+ niet machine afhankelijk
– moet vertaald worden naar low level
– traag
– meer geheugen
Third-Generation Language
- procedural language / 3GL
+ engels-achtige woorden
+ minder lijnen code dan 1st en 2nd gen
+ niet machine afhankelijk
– compiler nodig - non-procedural / 4GL
-> geeft toegang tot database
+ makkelijk
– veel memory - 5GL
-> AI
+ machine kan beslissingen nemen
+ makkelijker dan 3GL en 4GL
– complex
Compiling
source code wordt vertaald naar objectcode die de machine begrijpt maar die nog niet uitgevoerd kunnen worden zonder eerst te linken
Linking
creëren van 1 uitvoerbaar bestand uit meerdere objectbestanden
Build
proces van compiling en linking
Static VS Dynamic linking
static:
programma bevat elke library die nodig is om te runnen -> meer geheugen nodig
dynamic:
programma wordt gelinkt aan libc.so -> minder geheugen nodig maar libc.so moet bestaan op de machina waarop je het programma wilt runnen
-> DLL hell: Verschillende programma’s vereisen verschillende versies van dezelfde bibliotheek dus dit kan conflicten geven.
Cross Compiler
compiler dat een excecutable code maakt voor een platform dat verschilt van zijn eigen platform
Bv: compiler op PC genereert code voor Android
-> handig om code te compilen voor meerdere platforms vanaf 1 host