Programozzunk C#-ban – 1. rész

A Mikrovezérlős rendszerfejlesztés és programozható elektronikák könyv a beágyazott eszközök programozását véleményem szerint igencsak jól lefedi. Azonban igazán látványos alkotásokhoz nem árt, ha az ember ismer egy komolyabb programozási nyelvet, amely segítségével kiegészítő alkalmazásokat tud készíteni a mikrovezérlős projektekhez. Ezen sorozat a C# nyelv rejtelmeivel fog foglalkozni.

Bevezetés

A sorozat változó időközönként lesz frissítve, előbb-utóbb ebből is lesz majd egy külön könyv. Azért nem külön könyv írásba kezdek ismét, mert még a Programozható Elektronikák sincs teljesen kész, valamint egy könyv megírása nem rövid folyamat. Éppen ezért egyfajta kísérletként publikálom cikkek sorozataként a leírásokat, amikből egyszer majd szerkesztek egy könyvet. De ez még nagyon a jövő zenéje.

A választás a C# nyelvre azért esett, mert a korábbi könyvekben a C és C++ nyelv volt tárgyalva, így a C# kézenfekvő választás, valamint idén 6. éve foglalkozom C# programozással, így talán ebben a nyelvben van a legnagyobb tapasztalatom.

Mivel lusta vagyok és már korábban írtam a C és C++ nyelvekről külön a könyveimben, ezért olyan alap dolgokról nem lesz szó, mint az objektum orientáltság alapelvei, csak C# specifikus dolgokról lesz szó. Ez lehet nem a legjobb megközelítés ezért gondoltam arra, hogy a C/C++ programozásról szóló részeket majd ingyenesen elérhetővé teszem, feltéve ha egyáltalán sikeres lesz a sorozat.

Mi is a C#?

A C# (C Sharp) egy programozási nyelv, amit  a Microsoft fejlesztett ki, még a 2000-es évek elején. A fejlesztéskor a cél az volt, hogy egy rugalmas és hatékony programozási nyelvet hozzanak létre, amely segítségével könnyen lehet alkalmazásokat fejleszteni. A nyelv a C++ nyelv továbbfejlesztése. A fejlesztés során a Java nyelv és platform erős hatást gyakorolt a fejlesztőkre. A C# nem csak Windows-on használható a közhiedelemmel ellentétben, nyílt forráskódú és szabványosított. Open Source körökben nem igen szeretik, mert a Microsoft-nak köze van hozzá.

A C# programok futtatásához szükség lesz a .NET keretrendszer valamelyik változatára. A .NET keretrendszer egy szoftverfejlesztési –  és futtató környezet. Ebben rengeteg komponens van megvalósítva a programozóknak készen, így az elkészült alkalmazások igen kisméretűek tudnak lenni, valamint mivel sok minden gyárilag adott, a fejlesztés igen gyors tud lenni. A keretrendszerben annyi komponens van, hogy nincs a világon olyan élő ember, aki mindegyikről tudná, hogy mire jó, mire használható.

A .NET keretrendszer hasonlít a Java keretrendszerhez, vagyis a .NET alkalmazások is egy virtuális processzor számára vannak lefordítva, amiből a program indításának pillanatában fordít a keretrendszer egy olyan programot, amit a futtató gép ténylegesen értelmezni tud. Ennek több előnye és hátránya is van.

Nyilvánvaló hátrány Java-ból kiindulva, hogy ha az alkalmazás mérete nagy, akkor lassan fog indulni és sok memóriát fog megenni, valamit nem fog hatékonyan futni. Elég, ha csak a Minecraft-ra gondolunk, amit Java-ban írtak.

A .NET keretrendszert azonban jóval a Java megjelenése után tervezték, ezért a virtuális gépben kiküszöbölték azokat a hibákat, amelyeket a Java esetén még nem ismertek. Az indítási idők úgy vannak minimalizálva, hogy a gyakran használt .NET komponenseket a keretrendszer eleve lefordítja olyan programokká, amit a futtató gép értelmezni tud, így csökkentve az indítási időt. A keretrendszer 4.5-ös verziója óta pedig minél többet használunk egy .NET alkalmazást, annál jobban fogja optimalizálni a keretrendszer a programot. Persze sosem lesz annyira jó, mint ha C vagy Assembly nyelven írtuk volna a programot, de valamit valamiért.

Előny az, hogy a kész programunk platformfüggetlen. A kész program futtatható 64 bites és 32 bites Windows rendszeren is. Ha 1-2 szabályt betartunk, akkor a program 64 bites rendszereken natív 64 bites programként fog futni, 32 bites rendszereken pedig 32 bites alkalmazásként, plusz fejlesztői munka nélkül. De pár szabály figyelembe vételével ugyan az a program futtatható lesz OS-X vagy Linux rendszereken is.

A .NET keretrendszer csak Windows-ra érhető el, azonban a Mono Framwork OS-X és Linux rendszerekre is elérhető. Ez a .NET keretrendszer újra implementációja GPL forráskód alatt kifejezetten olyan platformok számára, amit a Microsoft-féle .NET nem támogat. Teljes mértékben követi a szabványt és minden fontos dolog megtalálható benne, kivéve olyan dolgokat, amelyek csak Windows specifikusak. A Mono akár a RaspberryPi-re is telepíthető, sőt elég jó sebességgel képes C# alkalmazások futtatására.

A C# teljes mértékben objektum orientált. Ez azt jelenti, hogy nem írhatunk benne nem objektum orientált programokat, mint C++ esetén. Ez elsőre komoly megkötésnek tűnhet, azonban nagyobb programok fejlesztésénél kifejezetten hasznos, hogy rákényszeríti az emberre az objektum orientáltságot.

A .NET nagy előnye, hogy a .NET számára bármilyen nyelven fejleszthetünk. Rengeteg támogatott nyelv létezik a keretrendszerre, bár ezek közül csak párat támogat a Microsoft. Az elkészült, .NET keretrendszerre fordított komponensek bármelyik másik .NET-es programból felhasználhatóak később, így igen nagy szabadsága van a programozóknak.

Fejlesztéshez szükséges eszközök

A fejlesztéshez szükségünk lesz egy C# fordítóra és egy szerkesztő programra. Számos szerkesztő program létezik. A sorozat írása közben én a Visual Studio-t fogom használni. Ez a Microsoft hivatalos fejlesztőeszköze. Ez nem egy ingyenes program, de az Express változata, némi limitációval ingyenesen használható. A limitáltságot kezdő fejlesztőként nem fogjuk érezni, mivel én sem érzem 6 év fejlesztés után. Persze vannak a fizetős változatnak jó képességei, de hobbi fejlesztéseink során nem lesz rájuk szükségünk.

Az Express változatok a microsoft.com/express címről szerezhetőek be. Jelenleg a legfrissebb a 2013-as változat. Ebből létezik kifejezetten Windows 8 alkalmazások gyártására szánt változat és asztali alkalmazások gyártására szánt verzió. A Windows 8-as változathoz értelemszerűen Windows 8 kell és csak csempés alkalmazások fejleszthetőek vele. Ezért kezdésképpen én az asztali verziót ajánlom.

Az asztali verzió fut Windows 7 rendszeren is, XP-n értelemszerűen nem, mivel ez a platform már nem támogatott. Ez azonban nem jelenti azt, hogy a kész programjaink nem lesznek XP kompatibilisek. Ha mindenképpen XP kompatibilisek akarunk maradni, akkor a projektben be kell állítani, hogy .NET 4.0-át használjon, így XP-n is futtatható. Cserébe viszont nem tudjuk majd használni a .NET 4.5 újdonságait. A sorozat a 4.5-ös keretrendszerre fog fókuszálni elsősorban.

Linux és OS-X rendszereken a MonoDevelop program használatát ajánlom, ez hasonlít a Visual Studio-hoz és a Mono ajánlott fejlesztő eszköze. Disztribúciótól függően azonban nem biztos, hogy a legfrissebb elérhető verziót lehet megtalálni a csomagkezelőben, ezért előfordulhat, hogy manuálisan kell telepíteni azt.

A Visual Studio Express használatához szükség lesz úgy 5-6GB szabad helyre a rendszer meghajtón, valamint nem árt, ha a gépben van legalább 2GB RAM és legalább 2 mag, illetve az sem árt, ha a monitor felbontás közelít a Full HD felé. A “brutális” gépigény oka az, hogy a Visual Studio-t profi felhasználásra fejlesztik és az Express változat úgymond a “butított” verzió, ami a teljes verzión alapul.

Ha komolyan gondoljuk a C# fejlesztést, akkor érdemes elgondolkodni legalább egy két monitoros, négy magos és legalább 6GB RAM-ot tartalmazó konfiguráció összeállításán.

A Visual Studio telepítésével nem csak C# fordítót kapunk, hanem C++ és Visual Basic fejlesztő eszközöket is. A C++ fordító képes natív C++ programokat fordítani, de írhatunk C++ nyelven .NET keretrendszer komponenseket használó programot is. A Visual Basic a Basic nyelv .NET keretrendszerre adaptált verziója a Basic programozási nyelvnek, a 2. legnépszerűbb nyelv a C# mellett, ha .NET fejlesztésről beszélünk.

Következő alkalommal

A sorozat következő részében megismerkedünk a verziókezeléssel, valamint elkészítjük életünk első C# alkalmazását és megismerkedünk a Visual Studio felülettel.