Kurs C# – wstęp

Spis treści Następna strona: Co i jak?

Witam w kursie programowania mojego autorstwa. To jest nie tylko kurs języka C#, to jest kurs programowania na przykładzie języka C# (czytaj „siszarp” z angielskim r). To jest kurs bez ściemy, gdzie wszystko tłumaczone jest dogłębnie, aż do sedna sprawy, tzw. kawa na ławę. Przeznaczony jest dla wszystkich zainteresowanych programowaniem. Bez długiego wprowadzenia. Zaczynamy.

Wstęp (dla początkujących)

Jesteś tutaj, bo chcesz zostać programistą. Jeśli nie, opuść tę stronę. Mówię poważnie. Nie ma sensu zawracać sobie głowę szczegółami technicznymi. To, że komputery działają, zawdzięczamy elektronikom. To jak działają zawdzięczamy właśnie programistom. Programiści piszą programy, które mówią komputerom jak wykonywać określone zadania. Czy wykonać zadanie i jakie zadanie – o tym decydują ludzie, czyli użytkownicy programów. Czasami programy nazywa się aplikacjami. Aplikacja to program zwykle posiadający interfejs użytkownika (najczęściej graficzny). Przeczytaj wstęp dla zaawansowanych (poniżej). Nie przejmuj się, nie jest ważne jeśli od razu wszystkiego nie zrozumiesz. Jeśli na pewnym etapie jakaś terminologia nie jest Ci znana, to jest to celowe. Przyzwyczajaj się powoli do właściwej terminologii zanim ją zrozumiesz. Musisz się też przyzwyczaić, że niektóre rzeczy są po angielsku. Często w nawiasach kwadratowych [square brackets] podaję angielską nazwę danego pojęcia. Tak, uważam że jest to konieczne.

Wstęp (dla zaawansowanych)

Język C# jest głównym językiem programowania do tworzenia aplikacji dla platformy .NET i został specjalnie dla niej zaprojektowany. Jest to język obiektowy, ma więc klasy (rozbudowane typy) i ich instancje, czyli obiekty (rozbudowane zmienne). Składowymi klas są zwykle pola [fields] i metody [methods], ale w C# dochodzą do tego jeszcze (i nie tylko) właściwości [properties] i zdarzenia [events]. Składniowo C# jest podobny do wszystkich języków C-podobnych, czyli C++, Java, PHP, …

Wszystkie języki platformy .NET (a jest ich dużo) są kompilowane do tzw. kodu pośredniego (w języku CIL, dawniej MSIL), który jest następnie wykonywany i zarządzany [managed] przez maszynę wirtualną CLR [Common Language Runtime]. Jest to podobne rozwiązanie do maszyny wirtualnej języka Java (JVM [Java Virtual Machine]). Aplikacja .NET nie zna architektury fizycznej maszyny i jej procesora, ale musi polegać na modelu maszyny wirtualnej, która stanowi dodatkową warstwę abstrakcji pomiędzy sprzętem, a systemem operacyjnym i maszyną fizyczną. Wykonanie kodu pośredniego wiąże się z jego kompilacją na żądanie do natywnego kodu maszynowego przez JIT [Just-In-Time compiler]. Zarządzanie kodem dotyczy głównie kontroli typów w trakcie wykonania oraz kontroli dostępu do zasobów jak pamięć, procesor, czy sieć. Nieużywana pamięć jest na przykład automatycznie zwalniana (odśmiecanie). Programista musi tylko stworzyć obiekt, a odśmiecacz [garbage collector] sam go usunie gdy uzna, że obiekt nie będzie już potrzebny (tzn. gdy liczba referencji do niego wyniesie zero). Przypadki, w których odśmiecacz się myli są rzadkie gdy tylko piszemy kod w odpowiedni sposób i gdy poprawnie używamy słów kluczowych języka. Oto one:

abstract     add         as           base        bool
break        byte        case         catch       char
checked      class       const        continue    decimal
default      delegate    do           double      dynamic
else         enum        event        explicit    extern
false        finally     fixed        float       for
foreach      get         goto         if          implicit
in           int         interface    internal    is
lock         long        namespace    new         null
object       operator    out          override    params
private      protected   public       readonly    ref
remove       return      sbyte        sealed      set
short        sizeof      stackalloc   static      string
struct       switch      this         throw       true
try          typeof      uint         ulong       unchecked
unsafe       ushort      using        virtual     void
volatile     while

Jak widać jest ich 82 (magiczna liczba). Lista ta bynajmniej nie jest zamknięta [is by no means closed]. Wersja .NET 4.5 wprowadza nowe słowa, ale ten kurs dotyczy wersji .NET 4.0. Niektóre są słowami kluczowymi tylko w określonym kontekście, a poza nim to normalne słowa. Oczywiście wszystkie trzeba znać, ale żeby zacząć wystarczy tylko kilka. Dla porównania język C ma ich 32, a C++ 63, w tym 44 podstawowe. Można pokusić się o stwierdzenie [venture to argue], że C# jest kolejną generacją języków z rodziny C. Czy jest językiem 4GL? Na pewno LINQ jest krokiem w tym kierunku (uwaga: LINQ też ma swoje słowa kluczowe, ale jakoś nigdy się ich nie podaje w powyższym zestawieniu – szczerze mówiąc nie wiem czemu, w edytorze też są na niebiesko…). Język C# – tak jak każdy inny język platformy .NET – posiada oczywiście dostęp do obszernych bibliotek zwanych FCL [Framework Class Library]. Kolejnym skrótem, który należy we wstępie rozszyfrować jest CLI [Common Language Infrastructure]. Jest to standard tworzenia bibliotek/komponentów .NET, czyli tzw. assembly. Raczej nie należy tego tłumaczyć na polski (można gdzieniegdzie spotkać nazwę podzespół). Dla mnie assembly to po prostu assembly. Koniec i kropka. Assembly może być biblioteką DLL lub programem uruchamialnym EXE, jednak prawdziwego kodu maszynowego jest tam niewiele. Assembly tworzymy z wielu plików skompilowanego kodu zarządzanego i z metadanych. Metadane to głównie dokumentcja dostarczana razem z kodem (np.: specjalne komentarze XML-owe) przy każdej klasie czy składowej klasy. Pozwala to edytorom (np. Visual Studio) wyświetlać podpowiedzi [intellisense] podczas pisania kodu. Edytor zna także typy wszystkich obiektów i ma do nich dostęp poprzez mechanizm zwany refleksją [reflection]. Ponieważ kod .NET jest kodem zarządzanym, aby plik o rozszerzeniu nazwy exe można było normalnie uruchomić zawiera on fragment zwykłego kodu (niezarządzanego) ładujący także zwykłą bibliotekę mscoree.dll i to przy jej pomocy ładowany i uruchamiany jest kod zarządzany. Ponieważ wykonanie kodu odbywa się w środowisku maszyny wirtualnej, można – przy użyciu refleksji – dynamicznie tworzyć nowy kod podczas działania programu, a następnie go uruchamiać! Teoretycznie więc, możliwe jest w .NET programowanie najbardziej zaawansowane: tzw. metaprogramowanie, czyli w dużym uproszczeniu sytuacja kiedy raz napisany i uruchomiony program dalej pisze (ulepsza bądź zmienia) sam siebie. I to by było na tyle jeśli chodzi o wstęp.

Acha, pierwszy program, tzw. „Hello World!” w języku C# wygląda tak:

using System;

namespace HelloWorldApplication
{
    /// <summary>
    ///   This is an example class.
    /// </summary>
    class MyFirstClass
    {
        /// <summary>
        ///   This is the static method where execution starts.
        /// </summary>
        /// <param name="args">Command line arguments</param>
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

Spis treści Następna strona: Co i jak?

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *