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

Windiows programmeer code

teacher
10 antwoorden
  • Beetje gekke vraag maar weet iemand in welke compiler Windows is geprogrammeerd?? Volgens mij is het c++ of C, maar in welke compiler??
  • De basis van Windows, de kernel, is voor bijna de helft in assembly (machinetaal) geschreven, en de andere helft in C. De applicaties, shell en zo meer volledig in C of C++. Het is gecompileerd met de Visual C++ compiler, en voor de assembly delen met de Microsoft Assembler.
  • Nee, tegenwoordig is ook een groot deel van de kernel geschreven in C++. Net als bij Linux, overigens. Bij Windows 95/98/ME is overigens wel veel Assembler gebruikt maar voor Windows NT/2000/XP/2003 is vrijwel alleen C++ gebruikt, gecombineerd met een speciale C++ compiler die MS intern gebruikt.
    Overigens kan het best zijn dat 3rd-parties nog steeds gebruik maken van assembler voor het aanleveren van drivers voor Windows.
  • Is het niet veel te inefficient om met C++ te werken ipv assembler?
  • Andersom juist, programmeren in C++ is een factor 10 sneller ongveer ;)
  • [quote:0d8584a29a="webspider"]Andersom juist, programmeren in C++ is een factor 10 sneller ongveer ;)[/quote:0d8584a29a]

    En hoe komt het straks dan, als .NET wordt ingevoerd ?
    Ik heb begrepen dat dit een taal op basis van een virualmachine is (zoals java).
    Als dat zo is, dan maken we straks een grote stap terug qua snelheid ?
  • weet ik veel, dan compile je het lokaal, is het ook snel.

    en ik had het om het programmeren, niet het uitvoeren 8)
  • .NET is inderdaad een virtuele omgeving. Maar wat er in .NET gebeurt is simpel. de Virtuele machine die kijkt gewoon wat er uitgevoerd dient te worden en compileert deze pseudocode naar machine-afhankelijke machinecode. Deze machinecode wordt daarbij gewoon gebufferd zodat deze niet steeds opnieuw gecompileert hoeft te worden. Dus je start een .NET applicatie op en het besturings-systeem begint gewoon het geheel te compileren op de achtergrond terwijl je zelf al meteen aan de slag kunt. Dit gaat daarbij zo snel dat je er tegenwoordig vrijwel niets meer van merkt.

    Java werkt op een vergelijkbare manier alleen is in .NET de Just-In-Time compiler iets sneller.

    Gedurende meerdere decennia is het altijd al een strijd geweest over wat nu beter is. Gewoon scripting-taaljes zoals JavaScript en VBScript, compilers die pseudocode genereren die dus machineonahankelijk zijn zoals Java en .NET of compilers die machine-specifieke code genereren zoals Delphi, VB, C++, enz.
    Deze strijd is nog steeds onbeslist, vooral omdat dit ook sterk afhangt van de omgeving waarin je wilt programmeren en hetgeen je wilt maken. En hoewel snelheid erg belangrijk is, hoeft lang niet alles echt op maximum snelheid te draaien. Zeker naarmate de hardware steeds sneller wordt blijkt gewoon dat PC's gewoon veel tijd bezig zijn om te wachten op de gebruiker of op aangesloten hardware die gewoon traag reageert. Zo heb ik ooit een programma geschreven dat dagelijks honderdduizenden regels uit een tekstbestand moest lezen, omzetten naar records, controleren en vervolgens naar een database moest sturen op een andere PC. En het lukte mij om inderdaad iets te schrijven dat enkele honderden megabytes aan data kon inlezen en verwerken en dat binnen 1 of 2 minuten. Maar op het moment dat dit naar de database moest worden geschreven kon ik de verwerkings-snelheid gaan meten in uren…
    Want wat bleek? Mijn programma was snel maar de verbinding met de database was dat niet. En binnen de database was een stored procedure ook bezig om nog extra controles uit te voeren. Het resultaat was dus dat we hier dus ook de nodige aanpassingen aan moesten brengen en dat alle moeite die ik had gedaan om mijn programma zo snel mogelijk te maken eigenlijk weinig effect had. Tijdens het importeren was het systeem even druk bezig om alles te controleren en te verwerken en daarna werd het redelijk rustig omdat de database zo traag reageert.

    Kortom, soms is het nutteloos om iets te ontwikkelen dat razendsnel is omdat er andere factoren kunnen zijn die het geheel weer vertragen. Je zou bijvoorbeeld een notepad-achtig programma kunnen schrijven en de code daarvan optimaliseren voor snelheid. Maar als iemand met zijn twee-vinger systeem en 30 aanslagen per minuut wat tekst gaat typen is die snelheid ook niet erg nuttig…

    Overigens, het is erg efficient om in C++ een besturings-systeem te ontwikkelen. Mede ook omdat een enkele instructie in C++ gelijk kan staan met enkele tientallen instructies in Assembler. Vooral als je een goede en ietwat slimme compiler gebruikt dan is C++ ideaal voor dit soort werk. Enkel in bepaalde uitzonderingen is het gebruik van Assembler handiger. Maar dit worden steeds minder uitzonderingen.
  • ey.. Wil je soms Windows een beetje veranderen of zelf proberen een OS te maken?
    Zo ja: SUCCES!
  • Een nieuwe OS, ja die zie ik wel zitten, lekker veel werk…
    Ik wil een stabiele ultrasnelle OS maken, zoveel mogelijk assembly, en vanaf dat ik kan een programmeertaal ontwikkelen, daarbij ook de compiler en linker…Een gek idee…maar leuk…microsoft ZAL ten onder gaan aan mij….héhé

Beantwoord deze vraag

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