Programujeme v jazyku C# - Diel 1

Michal Čižmár  /  17. 11. 2004, 00:00

Vítam Vás pri novej sérii článkov o programovacích jazykoch. Mojim hlavným cieľom bude, aby články boli kvalitné a s maximálnym možným prínosom pre všetkých , čo ich budú čítať. Ďalej, ako je už mojim zvykom, bude tu hlavne veľa príkladov, ktoré si budete môcť hneď odskúšať. V tomto diely sa pokúsim vysvetliť základ prostredia .Net a urobím porovnanie C++ vs. C# (tie koľajničky za písmenom C sa píšu sharp a celkovo sa to číta cé šarp).

Pozn.: Budeme sa zaoberať jazykom C# podľa poslednej špecifikácie zo dňa  2.7.2004, ktorý v sebe zahŕňa .net Framework 2b. Oproti verzii 1.1 boli pridané rôzne maličkosti ( ktoré hlavne doteraz chýbali programátorom prechádzajúcim z C++).

Takže, čo potrebuje vedieť aby ste porozumeli týmto článkom:
- 1. nič o C alebo C++  (Musím sa priznať, že trošku viem programovať aj v C++ a všade kde to bude možné, upozorním na nástrahy pri prechode z C++ na C# )  
- 2.  nič  o programovaní. No naozaj :-) ...  ak sa vám niektoré časti budú zdať až príliš jednoduché, tak ich jednoducho preskočte. Ak niečomu nepochopíte, jednoducho napíšte do diskusie alebo ak budete mať nejaký zložitejší problém tak napíšte e-mail micitn@orangemail.sk (odpoveď ale nečakajte do 1 minúty :-) )
- 3. A dokonca aj nič o objektovom programovaní. V prvých dieloch si dám poriadne záležať, aby ste pochopili čo je to objektová abstrakcia, dedičnosť a podobne. Zo skúsenosti viem, že aj keď by ste ovládali syntax určitého objektovo orientovaného jazyka na 100 percent, neumožní Vám to využiť jeho potenciál ani na 10 percent ak dobre nepochopíte objektovej filozofii.

>> Hmm, čo je to vlastne .Net?  (čítaj dot net )

Je to súbor služieb ktoré poskytuje operačný systém ( Windows , dúfajme že už aj Linux a iné)  programom a teda aj programátorom. Ide o prideľovanie pamäti , prístupu k periférnym zariadeniam, prístup k Internetu atď. Kedysi sa programy písali len pre konkrétny procesor, potom pre konkrétny operačný systém. Vďaka .NET sa nemusíte starať o tieto veci ale dokonca ani o to, či bude Váš program  bežať na PC alebo v mobile. Má to svoje klady aj zápory. Ide hlave o rýchlosť programu.

Príklad:
Spravíme program pre Windows a 32bitový procesor (štandardne i386 či i586) v jazyku C++. Ale čo keď si človek kúpi v budúcnosti nový počítač a má tam 64-bitový procesor. Keďže mu to aj viac utiahne tak si to kúpi aj s najnovším operačným systémom, napr. Longhorn (alebo ako sa to nakoniec bude volať).   Pri jednoduchých programoch ešte nemáme problém. Ale čo keď program  spracováva súbory, obsluhuje nejaké periférne zariadenie a výsledky posiela cez Internet? Po prvé by ste museli program tak či tak prekompilovať pre 64-bitový procesor. Po druhé, by ste si museli pozrieť ako pracuje daný OS (operačný systém) so sieťami, perifériami  a tak ďalej. Ak ide naozaj o veľký program (nemyslím tým vedecko-výskumný software, vysvetlím neskôr), znamená to nový vklad investícii do programu bez pridania funkcií. Za to Vás asi veľmi nepochvália, hlavne keď existuje technológia .NET.

Ten istý program spravíme v niektorom z jazykov podporovaných platformou .Net . (teda napríklad C#) . A sme bez problémov. Keď program spustíme na 32bitovom procesore, program využije všetky možnosti ( reda výkon) , ktoré poskytuje jeho architektúra. To  isté sa stane  aj na 64bitovom procesore.  

Zhrnutie:
Prostredie .NET si môžete predstaviť aj ako jeden virtuálny počítač s ideálnou architektúrou na ktorom beží len jeden operačný systém ( aj so svojimi službami) . Vy napíšte program len pre tento „počítač“ a o nič viac sa nestaráte. Prostredie .NET sa potom už v skutočnosti postará o uspôsobenie programu pre konkrétny reálny PC, t.j. program nakoniec využije teda. možnosti aj toho 64bitového procesora.

Zatiaľ si zožeňte:

Vývojové prostredie C SharpCreator:
http://www.sharpdevelop.net/OpenSource/SD/Download/

Kompilátor:
Dopíšem až v diskusii, aby ste mali čo najčerstvejší link.   

Na tento článok nadväzuje článok Porovnanie C# vs. C++ .


Vaše otázky píšte na e-mail: micitn@orangemail.sk

Neprehliadnite: