zijn er 'primaire basis methods'?

Pagina: 1
Acties:

Onderwerpen

Vraag


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi, daar ben ik weer. Ik vermoed dat ik komende tijd veel vragen ga stellen hier.

Ik ben (o.a.) de Microsoft C# online training aan het volgen. En nu wordt er uitgelegd over de .Net framework classes library. Dat zijn dus voorgeprogrammeerde methodes, geordend in classes. Maar met welke methods hebben ze die dan geprogrammeerd? Zijn er ook een soort 'basis methodes' die buiten een class vallen? En kan ik de code daarvan ergens zien?

Ik weet niet of het in de praktijk erg belangrijk is, maar ik ben wel benieuwd.

Groeten,
Thomas

Alle reacties


Acties:
  • 0 Henk 'm!

  • Xudonax
  • Registratie: November 2010
  • Laatst online: 18-09 13:09
In C# zit alles in classes, maar de originele compiler en het framework zal niet in .NET geschreven zijn. Vermoedelijk is dat C, C++ of een dergelijke taal geweest.

Als je de broncode wilt inzien dan is er de site sourceof.net welke redirect naar de Reference Source bij Microsoft.

EDIT: En veel van de .NET functies die iets met bestanden doen of met het renderen van GUI's zullen nog steeds teruggrijpen op de oude Win32 bibliotheken. Dat zijn kern dingen in Windows zelf, dus de kans dat je daarvan de source kunt vinden is klein.

[ Voor 25% gewijzigd door Xudonax op 13-03-2017 14:45 ]


Acties:
  • +2 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Xudonax schreef op maandag 13 maart 2017 @ 14:44:
In C# zit alles in classes, maar de originele compiler en het framework zal niet in .NET geschreven zijn. Vermoedelijk is dat C, C++ of een dergelijke taal geweest.
Vaak is dat zo, maar in dit geval (tegenwoordig althans) is dat niet zo. De compiler is in C# geschreven.

@Verwijderd .Net code wordt gecompileerd naar CIL (voorheen MSIL) en dat kun je vergelijken met (een iets hogere vorm van) assembly. De BCL bevat veelal ook weer .Net code, maar hoe dieper je zult graven hoe meer API calls je naar de Windows API zult aantreffen.

[ Voor 20% gewijzigd door RobIII op 13-03-2017 15:00 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • AlphaRomeo
  • Registratie: Maart 2007
  • Laatst online: 21:15

AlphaRomeo

FP PowerMod
Zie https://referencesource.microsoft.com/ daar kun je de code van het 'standaard' .NET framework zien. Als je ver genoeg doorklikt zul je zien dat er uiteindelijk native methods (User32, Kernel32) methodes aangeroepen worden.

Acties:
  • 0 Henk 'm!

  • Xudonax
  • Registratie: November 2010
  • Laatst online: 18-09 13:09
RobIII schreef op maandag 13 maart 2017 @ 14:57:
[...]

Vaak is dat zo, maar in dit geval (tegenwoordig althans) is dat niet zo. De compiler is in C# geschreven.
Klopt, dat was ook waarom ik zei originele compiler en framework. Ondertussen is alles al weer eventjes in C# geschreven. Ik had het beter kunnen verwoorden waarschijnlijk.

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Zo ongeveer het eerste wat elke serieuze compiler bouwer doet is de compiler (her)bouwen in de doeltaal nadat er een simpele bootstrapper is gemaakt. ;)

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 13-09 00:05
Dat blijft inderdaad een makkelijke methode om compilers en interpreters te scheiden; ik denk niet dat iemand een PHP interpreter in PHP gaat schrijven ;)

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein


Acties:
  • +1 Henk 'm!

  • EJlol
  • Registratie: September 2012
  • Laatst online: 23:25
MSalters schreef op woensdag 15 maart 2017 @ 16:53:
Dat blijft inderdaad een makkelijke methode om compilers en interpreters te scheiden; ik denk niet dat iemand een PHP interpreter in PHP gaat schrijven ;)
Wees voorzichtig met wat je wenst :X

https://github.com/ircmaxell/PHPPHP

Acties:
  • 0 Henk 'm!

  • Korben
  • Registratie: Januari 2001
  • Laatst online: 13-07 01:53

Korben

() => {};

Er zijn ook methods die dermate performance-intensief zijn (denk aan array- en string-functies) of dermate 'magische' core-functionaliteit gebruiken (denk aan reflection) dat de functies wel gedefinieerd zijn in C# of een andere .NET-taal, maar de daadwerkelijke implementatie bevindt zich in de code van de runtime.

Ze zijn dan ook doorgaans in C++ of (misschien in een enkel geval) in ASM geschreven.

.oisyn: Échte programmeurs haten PHP met een passie. Ben jij soms geen echte programmeur?


Acties:
  • 0 Henk 'm!

  • TJHeuvel
  • Registratie: Mei 2008
  • Niet online
Verwijderd schreef op maandag 13 maart 2017 @ 14:40:
Ik ben (o.a.) de Microsoft C# online training aan het volgen. En nu wordt er uitgelegd over de .Net framework classes library. Dat zijn dus voorgeprogrammeerde methodes, geordend in classes.
Het is denk ik belangrijk te realiseren dat deze helemaal niet 'speciaal' zijn, iedereen kan een class library maken. Er zijn bijvoorbeeld ook vervangingen van het standaard .NET framework, zodat je bv op je telefoon het ook kan gebruiken.
Maar met welke methods hebben ze die dan geprogrammeerd?
De bron van .NET is te browsen, je kan dus precies zien hoe en wat ze gedaan hebben: https://referencesource.microsoft.com/
Je zal vaak zien dat ze de WinAPI gebruiken (https://en.wikipedia.org/wiki/Windows_API).
Zijn er ook een soort 'basis methodes' die buiten een class vallen? En kan ik de code daarvan ergens zien?
Je kan zelf ook in de WinAPI haken met PInvoke en DLLImport. Hier een voorbeeld hoe je een window als foreground set: http://www.pinvoke.net/de...ser32.setforegroundwindow
Ik weet niet of het in de praktijk erg belangrijk is, maar ik ben wel benieuwd.
Valt wel mee, heel veel is beschikbaar via .NET. Maar soms is het wel handig te weten!

[ Voor 4% gewijzigd door TJHeuvel op 20-03-2017 16:53 ]

Freelance Unity3D developer

Pagina: 1