Microsoft bemutatása
A Microsoftot Albuquerque-ben, Új-Mexikóban alapította 1975-ben Bill Gates és Paul Allen a Micro-soft név alatt, hogy BASIC fordítóprogramokat fejlesszenek és árusítsanak.
A "Micro-soft" (a microcomputer [mikroszámítógép] és a software [szoftver] szavak összevonása) nevet Bill Gates használta először egyik Paul Allennek címzett levelében 1976. november 29-én. A "Microsoft"1976. november 26-án vált bejegyzett védjeggyé.
Magyar vonatkozás, hogy a cég egyik fő fejlesztője már a korai időktől 2002-ig Charles Simonyi.
Az operációs rendszerek
Operációs rendszernek (rövidítése gyakran OS az operating system angol szavak alapján) nevezzük a számítástechnikában a számítógépeknek azt az alapprogramját, mely közvetlenül kezeli a hardvert, és egy egységes környezetet biztosít a számítógépen futtatandó alkalmazásoknak (például szövegszerkesztők, játékok stb.).
A kezelt hardvererőforrásoknak része többek között a memória, a processzor, a merevlemez és a perifériális eszközök használata.
Adalékként idézzük az ISO nemzetközi szabványosítási szervezet definícióját, mely szerint az operációs rendszer
"Olyan programrendszer, amely a számítógépes rendszerben a programok végrehajtását vezérli: így például ütemezi a programok végrehajtását, elosztja az erőforrásokat, biztosítja a felhasználó és a számítógépes rendszer közötti kommunikációt."
Az operációs rendszerek alapvetően három részre bonthatók: a felhasználói felület (a shell, amely lehet egy grafikus felület, vagy egy szöveges), alacsony szintű segédprogramok és a kernel (mag) amely közvetlenül a hardverrel áll kapcsolatban.
API fogalom definiálása
Az alkalmazásprogramozási felület vagy alkalmazásprogramozási interfész (angolul application programming interface, röviden API) egy program vagy rendszerprogram azon eljárásainak (szolgáltatásainak) és azok használatának dokumentációja, amelyet más programok felhasználhatnak. Egy nyilvános API segítségével lehetséges egy programrendszer szolgáltatásait használni anélkül, hogy annak belső működését ismerni kellene.
Az API általában nem kötődik programozási nyelvhez: bármilyen programnyelvből lehetséges azok meghívása, amennyiben a megfelelő paramétereket a hívás biztosítja, és képes lekezelni az esetleges eredményt.
A MS API-k fejlődési sora
Az MS-DOS-t eredetileg a Seattle Computer Products (SCP) fejlesztette ki QDOS néven. ¶A Microsoft $50.000-os áron vásárolta meg a rendszert az SCP-től röviddel a PC megjelenése előtt. Megjelenés éve:1981, az API-ja a "MS-DOS API".
A karakteres kezelőfelületű MS-DOS-t hamarosan leváltja a MS-Windows termékcsoport. Az MS-WINDOWS 1.0 verziója 1985-ben jelent meg. Ekkor még a 16 bites processzorok voltak a jellemzők, így az API-ját "Win16 API"-nak is szokták hívni.
Nagy váltás volt az MS Windows '95-os változatának megjelenése. Sok újításon ment át a kezelőfelület, de sokkal fontosabb változás a 32 bites processzorok támogatása, amely már az API szintjén is megjelent. Ezért ezt "Win32 API"-nak hívják.
A későbbi operációs rendszer verziók nyilván újabb API-kkal fognak rendelkezni, bár sok szempontból a Microsoft.NET rendszer BCL rétegét is tekinthetjük egyfajta API-nak. Mondhatjuk, hogy a .NET rendszer BCL rétege helyettesíti az operációs rendszer API-ját.
A MS.NET mint API
A Microsoft.NET rendszer egyik fontos része, a Base Class Library (BCL)egyetlen hatalmas API-nak is felfogható, nagyon sok funkcióval, mely megfelelő csoportosítási rendszer nélkül áttekinthetetlen és használhatatlan lenne.
Az első csoportosítási lépés az osztályok kialakítása. Az egy 'témakörbe', egy feladat elvégzésére használt függvényeket és eljárásokat ún. 'osztály'-ba (class) szervezték. Az osztálynak nevet adtak, mely név jól meghatározza a feladatkört.
Azonban osztályokból is túl sok volt, így további csoportosításra volt szükség. Az osztályokat névterekbe (namespace) helyezték el, mely kiegészítő nevet adott az osztály nevéhez. A Microsoft.NET BCL rétegének minden egyes osztálya a System névtérbe került, így lett a Math osztály teljes neve System.Math.
Természetesen nem kerülhetett minden osztály direkt módon a System névtérbe, így a System névteret tovább bontották. Az összes, rajzolással kapcsolatos osztályt pl. a System.Drawing névtérbe került.
MS.NET Assembly (DLL) jellemzői
A BCL részeit képező függvények és eljárások lefordított állapotban DLL-ekben (Dynamic Link Library) kerülnek a számítógépre. Egy-egy ilyen DLL file névterekbe elhelyezett osztályokat, és azokban definiált függvényeket és eljárásokat tartalmaz.
A Microsoft.NET rendszerben használt DLL-ek azonban önleíróak, vagyis tartalmazzák saját maguk leírását, megfelelő eszközzel egyszerűen listázható az, hogy melyik DLL-ben milyen névterek, milyen osztályok, és milyen függvények, eljárások találhatók, azoknak mi a paraméterezésük. Ezért ezeket már nem is hagyományos DLL-eknek nevezzük, hanem hivatalos nevük assembly, amelyet magyarra a "szerelvény" szóval lehetne fordítani.
Programfejlesztési és futtatási lehetőségek
A MS.NET rendszerben a felügyelt futtatás a jellemző, vagyis a C# programot nem direktbe az adott számítógép mikroprocesszorának gépi kódjára fordítják le, hanem egy amúgy nem létező 'virtuális' mikroprocesszor gépi kódú utasításaira. Ezen változatot azonban csak egy 'processzor-szimulátor' programmal lehet futtatni.
E szimulátor alatt futó program kicsit lassabban működik, de a szimulátor nem engedi, hogy olyan tevékenységet hajtson végre a program, amely tilos vagy veszélyes. A szimulátort ez esetben Microsoft.NET CLR-nek hívják ( Common Language Runtime).
A szimulátor további előnye, hogy a memóriafoglalásokat és felszabadításokat intézi, a szimulátor egyik alrendszere, a GC ( Garbage Collector, szemétgyűjtő) folyamatosan figyeli a lefoglalt memóriaterületek sorsát, és a nem használt területeket újrahasznosítja, vagy felszabadítja.
A JAVA mint alternatíva
A szimulátoros futtatási rendszer egyik legismertebb képviselője a Sun Microsystems által fejlesztett Java rendszer, amelyhez tartozik maga a Java programozási nyelv, a Java fordító, valamint a Java Virtual Machine nevű szimulátoros futtató rendszer a maga szintén hatalmas méretű, szintén névterekbe és osztályokba szervezett API-jával.