Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Programmeren

uitleg over computertalen gevraagd

remco p
9 antwoorden
  • Ik ben nu begonnen met C++ leren.

    Ik ben nu (ongewild) aan het filosoferen geslagen, maar kom er niet uit:

    Software (besturingssystemen enzo) vertellen de computer wat hij moet doen met de verschillende hardware-onderdelen, hoe hij verschillende vormen van inkomende data moet verwerken etc.

    Computertalen als C++ e.d. vertellen de computer wat hij moet doen. Eigenlijk zijn het dus gewoon opdrachten voor de computer en vertel jij als programmeur de computer bijvoorbeeld "als ik dat doe, doe jij dat" etc.

    Vervolgens vraag ik me nu af hoe de computer die computertalen als C++ krijgt "aangeleerd"…..?

    Ik heb ook ergens gelezen dat je met C++ feitelijk je eigen operating system/besturingssysteem kan bouwen en dus ook je eigen computertaal weer kunt beginnen/ontwikkelen/opzetten/bedenken. Hoe werkt dit dan?

    Graag uitleg dus over de herkomst, werking etc. etc. etc. van computertalen en hiermee in verband: besturingssystemen :-)
  • Je weet niet wat je vraagt, ik weet wel: hier kan ik geen concreet antwoord op geven.

    Hoe krijgt C++ de taal "aangeleerd"?
    C++ is een programmeertaal gebaseerd op C.

    In tegenstelling tot C is C++ een multi-paradigmataal, wat inhoudt dat er verschillende programmeerparadigma's gebruikt kunnen worden. De taal is ontworpen door Bjarne Stroustrup voor AT&T Labs, als verbetering van C. De naam is afkomstig van de programma-opdracht "C++", wat betekent: verhoog de waarde van de variabele C met 1.

    Haal ik rechtsreeks van wikipedia. De computertaal word dus gewoon gemaakt door mensen, wat me logisch lijkt.

    http://nl.wikipedia.org/wiki/C%2B%2B

    Denk dat je niet veel meer uitleg nodigt hebt, maar wel veeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeel ervaring ;)
  • Veel weet ik hier ook niet van, maar ik weet wel dat computer talen met niveau's werken.

    C++ (of een andere programmeer taal) is geloof ik het hoogste niveau, dit wordt steeds vertaald naar een lager niveau totdat je op het niveau van de hardware taal bent. Daar wordt de opdracht daadwerkelijk uitgevoerd.

    Correct me if I'm wrong :wink:
  • Zoals je weet is een computer een elektronisch apparaat. In tegenstelling tot mensen kan deze geen alfabetische tekens begrijpen. De computer zelf kan dus ook niets met een C++ programma. Het enige waar hij wel mee kan werken zijn nullen en enen (wel of geen stroom door een draadje). Zo’n nul of één wordt ook wel een ‘bit’ genoemd.

    Als je één bit hebt (dus één draadje) kun je daarmee één opdracht geven. Door nu een groepje van draadjes te pakken (bv. 4, 8 of 16 bits) kun je hierop allemaal patronen vaststellen, bijvoorbeeld:

    0010 = Lees een waarde uit het geheugen
    0111 = Vermenigvuldigen
    0001 = Optellen
    enz.

    Deze patronen (opdrachten) werden allemaal achter elkaar in de computer ingevoerd en zo ontstond een programma dat door de computer kon worden uitgevoerd.

    Het was voor de mens heel lastig om op deze manier een programma te maken en dus is men deze opdrachten (patronen van bits) een naam gaan geven. De taal Assembler was geboren. De opdrachten in bovenstaand voorbeeld zien er bijvoorbeeld zo uit:

    0010 = MOV (van ‘move from memory’;)
    0111 = MUL (van ‘multiply’;)
    0001 = ADD (spreekt voor zich)

    De woorden MOV, MUL en ADD kent de computer natuurlijk niet. Daarom is een programma gemaakt om deze voor mensen leesbare woorden om te zetten naar bijbehorend bitpatroon voor de computer. Dit is de compiler.

    Om het de programmeur nog makkelijker te maken, werden de afzonderlijke opdrachten ook weer gegroepeerd en hieruit zijn onder andere de talen Basic, Pascal, C, C++ enz. ontstaan. Als je in C++ bijvoorbeeld een formule ingeeft, wordt deze omgezet naar een reeks opdrachten, die op hun beurt ieder als een voor de computer uitvoerbaar bitpatroon worden opgeslagen.

    De C++ formule: ‘int c = a * b;’ wordt bijvoorbeeld:
    MOV Reg1, A (Waarde van A uit geheugen lezen)
    MOV Reg2, B (Waarde van B uit geheugen lezen)
    MUL Reg1, Reg2 (Vermenigvuldig Reg1 met Reg2 en zet uitkomst in Reg1)
    MOV C, Reg1 (Waarde van Reg1 op geheugenplaats van C plaatsen)

    Dit wordt het bitpatroon: 0010 xxxx 0010 xxxx 0111 xxxx 0010 xxxx

    Reg1 en Reg2 zijn registers (tijdelijke geheugenlocaties in de processor om mee te rekenen). De xxxx-jes zijn bits die extra informatie voor de betreffende opdracht bevatten (zoals de geheugenpositie van waaruit gelezen moet worden, welke registers moeten worden vermenigvuldigd enz.)

    Dus samengevat:
    De computer kan alleen met bitpatronen werken. Deze zijn voor de mens moeilijk te begrijpen. De mens schrijft programma’s in een voor de mens begrijpbare taal. Deze tekst wordt door een compiler omgezet naar bitpatronen die de computer kan uitvoeren.

    Wat betreft besturingssystemen:

    Vroeger werd ieder programma direct door de computer uitgevoerd. Ieder programma moest direct met de hardware communiceren. Dit heeft als probleem dat een programma alleen op één type hardware kan functioneren. Wilde je het op een andere computer gebruiken, dan moest je het programma grotendeels opnieuw schrijven omdat die hardware anders aangestuurd moest worden.

    Om deze reden is er een groot programma (een besturingssysteem) ontwikkeld die als een tussenlaag tussen het programma en de hardware functioneert. Het programma geeft een opdracht aan het besturingssysteem om bijvoorbeeld een paar bytes uit een bestand te lezen. Het besturingssysteem zorgt er dan voor dat de hardeschijf wordt benadert en de gegevens vanaf de juiste plaats worden gelezen.

    Het besturingssysteem heeft dus kennis van alle mogelijke hardware. Deze hardwarekennis kan worden uitgebreid met behulp van drivers. Het grote voordeel van deze methode is dat de programma’s alleen met het besturingssysteem communiceren en geen kennis hoeven te hebben van alle hardware.

    Een besturingssysteem is ook gewoon een programma (een voor de computer uitvoerbaar bitpatroon) en kan dus ook met behulp van een compiler in C++ worden geschreven. Alleen is hier heel veel hardwarekennis voor nodig om goed met alle hardware te kunnen communiceren.
  • Zo, dat is nog eens een informatief stukje tekst!
  • zeker een zeer informatief stukje tekst, waarvoor mijn dank.

    eigenlijk is een besturingssysteem dus een soort "tolk" die functioneert tussen programma's/de gebruiker en de diverse hardware.

    Is mij nog niet geheel duidelijk hoe alles "gelaagd" is. Er wordt hier in dit topic ook gezegd dat de verschillende talen feitelijk verschillende niveau's hebben. Concrete vraag van mij hierbij is: hoe verhouden de diverse talen zich tot elkaar, hoe zit het met de genoemde niveau's etc.?

    Daarbij ook nog, wat me nu te binnen schiet:
    Ik kan wel een programma schrijven met b.v. C++, maar daardoor krijgt een programma niet zijn lay-out neem ik aan…hoe zit dit dan?
  • Leen of koop eens een boek als "programmeren voor dummies" dat helpt vast..
    http://www.google.nl/#sclient=psy&hl=nl&q=c%2B%2B+voor+dummies&aq=f&aqi=g3g-o1&aql=&oq=&gs_rfai=&pbx=1&fp=38aeec06f3487120
  • Voor zover ik weet, zet de programmeertaal alles over in bytes, die leest de computer. Het is dus eigenlijk niets anders dan een soort vertaalmachine.

    De afbeeldingen zullen dus ook gewoon net zo als normaal in bytes gelezen worden. Elke combinatie staat dan voor een pixel, en geeft aan welke kleur die is.

    De mens heeft de computer zelf gemaakt, maar niemand weet hoe alles werkt! :?
  • Zoals lunaboy al heel goed omschreef wordt je c++ code (niveau 1) omgezet naar assembly code (niveau 2). Deze wordt vervolgens omgezet naar bit patronen (niveau 3). Daar komen de verschillende niveau's vandaan.

    De verschillende programmeertalen hebben verder weinig met elkaar te maken. Het is NIET zo dat c# wordt omgezet naar c++ en dan naar assembly etc. C# wordt namelijk ook weer omgezet in assembly en vervolgens in bit patronen*

    Wat je je dan kan afvragen: waarom zijn er dan verschillende talen? Nou elke taal heeft zijn eigen kenmerken. c++ is wat lastiger om in te programmeren dan c#. C++ is veel meer geschikt om games in te maken dan in c#. Maar met c# kan je weer simpel desktop applicaties maken.

    De layout programmeer je wel zelf. Veelal gebruik je hier frameworks voor die je het een stuk makkelijker maken, maar het kan wel. Je kan namelijk ook met je programmeertaal lijntjes tekenen. Want uiteindelijk bestaat de layout van je programma weer uit pixels, die elk een kleur hebben die weer worden gerepresenteerd door een bit patroon is. (zoals steef al aan gaf)

    @andre@home: Veelal wordt dat niet in boeken beschreven, dus ik vind het een heel goede vraag van de TS.
    @steef: Het is gewoon niet te doen inderdaad om bijvoorbeeld een Windows in bit patronen te beschrijven. Dus zijn er hulpmiddelen ontwikkelt omdat werk te vereenvoudigen. Uiteindelijk weten we met ze allen wel hoe dat ding werkt, alleen weet niemand in zijn eentje hoe het precies exact werkt, dat is immers ook niet te doen ;)

    *= Bij c# werkt het even anders, er zit nog een tussenlaag tussen, maar ik heb dit even achterwege gelaten omdat het overzichtelijker te maken.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.