понедељак, 09. новембар 2015.

Uvod u C# programski jezik


Programski jezik C# ( C - Sharp ) je najbolji programski jezik, potpuno baziran na principima OOP – Object Oriented Programming – objektno orjentisanog programiranja i familijaran je sa C i C++ programskim jezicima. Nastao je zahvaljujući Anders Hejlsberg-u, Scott Wiltamuth-u i Peter Golde-u u julu 2000 godine kao deo .NET projekta, ali je prvi put predstavljen javnosti 2002 godine od strane korporacije Microsoft. Najbolji je pre svega zbog svoje jednostavnosti, čitljivosti, lakoći učenja i neverovatnim mogućnostima šta sve možete da isprogramirate sa ovim programskim jezikom. O samom jeziku C# kad naučite neke osnove, pogledajte i međunarodni ISO standard ISO/IEC 23270:2006(E) iz 2006 godine, ali obratite pažnju i na najnovije promene koje donosi verzija C# 6.0.


( C# programski jezik )


Microsoft je od 2014 godine menjajući kompajler u C# programski jezik; znači danas C# programski jezik kompajlira kompajler za C# programski jezik; omogućio programerima da kompajler kodnog imena „Roslyn“ kao kompajler nije više zatvorena crna kutija, već je open-source kod. Ali je isto tako time omogućio da se prave još bolje promene na samom programskom jeziku, pa tako danas imate male promene u kodu koje prave velike promene i umanjuju pisanje koda ali će ih biti sve više. Već sad možete izguglati neke promene koje Microsoft već najavljuje pored mnogobrojnih promena koje su ove godine uvedene.

Ono bitno što želim da napomenem, C# programski jezik je takođe moja lična preporuka svakom programeru i onom ko želi da uči programiranje, čak vam želim da vam C# programski jezik bude glavni jezik za programiranje, učenje i profesiju jer će te sami sebi na taj način mnogostruko olakšati posao i biti mnogo produktivniji nego u bilo kom drugom programskom jeziku. Naravno učite i druge programske jezike jer ne možete sebe zvati profesionalnim programerom ako znate samo jedan programski jezik; ali C# programski jezik treba da vam bude prioritet kako ne bi ste zaostajali sa svim novim stvarima koje konstantno dolaze.C# je prošao dug put, više od decenije i zajedno sa .Net Framework-om promenio je nekadašnje pisanje i procese programiranja. C# programski jezik nije poput C++ programskog jezika. On je mnogo jednostavniji i lakši za programiranje ali je rezultat toga da je C# jedno sa .NET okruženjem i bez tog okruženja, nebi ni postojao.

Kakav je C# programski jezik u poređenju sa drugim programskim jezicima?

Za razliku od C# programskog jezika, C++ programski jezik se smatra nešto bržim što danas i nije toliko relevantno s obzirom da su kompjuteri danas mnogo brži, osim možda u nekim segmentima kad su u pitanju programiranje igrica, ali ništa toliko zastrašujuće što se ne može nadomestiti. Sa C++ programskim jezikom možete da programirate i na Linux operativnom sistemu i na OS X platformi jer C++ programski jezik komunicira direktno sa operativnim sistemom i kompajlira odmah mašinski kod, dok je C# zavisan od Microsoft .Net Framework-a koji je posrednik između vaše aplikacije i operativnog sistema. Međutim vi u C++ ne možete da programirate na primer WPF – Windows Presentation Foundation aplikacije dok je danas programirati Windows Forms zastarela tehnologija i pored toga što se mora znati radi starijih projekata. Sa C# programskim jezikom možete definitivno da uradite više i da kodirate mnogo jednostavnije i lakše nego sa C++ programskim jezikom i to uvek imajte na umu.

  
( Približno tržište tehnologija u svetu )

Za razliku od Visual Basic programskog jezika i pored toga što se Visual Basic smatra ravnopravnim sa C# programskim jezikom, postoje neke razlike i Visual Basic definitivno nije mnogo zastupljen u poslovnom svetu kao C# programski jezik. On uvek kasni sa implementacijom nečega što već postoji u C# programskom jeziku. Tačno je da je Swift programski jezik, koji se može učiti jedino na OS X operativnom sistemu; najavljivan kao revolucija u programiranju, ali se definitivno ne može porediti sa C#. Tačnije Swift je preuzeo mnogo stvari od C# programskog jezika. Java i PHP su vam programski jezici ukoliko želite praviti isključivo aplikacije za Internet, sa Java-om se takođe najbolje prave aplikacije za Android operativni sistem i ovi programski jezici su na tržištu rada često traženiji. Uvesti Microsoft tehnologiju u poslovanje kompanije i pored raznih mogućnosti licenci nije ni približno jeftino, i to je najčešći razlog što C# programski jezik nećete videti prvog na top listama programski jezika iako on to zaista jeste. Za učenje C# programskog jezika, Microsoft Visual Community Studio 2015 i Microsoft SQL Express Edition 2014 vam je besplatan i neophodno je da imate ove stvari isprogramirane na vašem računaru.

Šta je .NET Framework?

Ako bi ste operativni sistem Windows zamislili kao biblioteku, tj. skup svih funkcijskih poziva u interfejsu Windows API-ja koje koristite u svojim programima, poput prikazivanja okvira za dijalog, prozora za interfejse višestrukih ili pojedinačnih dokumenata, bezbednosni funkcija, funkcija za pristup bazama podataka ili servisa; Onda uloga .NET Framework-a je da vam pruži svoje .NET runtime okruženje, upravlja nitima, obezbeđuje različite pozadinske usluge i jednostavno vam pruža izvestan nivo samostalnosti od operativnog sistema iako .NET Framework nije operativni sistem. On je jedan sloj između Windows-a i vaše aplikacije. Takođe uloga .NET Framework-a vam je da vam obezbedi savremeno, objektno orjentrisano jednostavno okruženje za sve jednostavnije programiranje i izvršavanje programa. Danas je .NET Framework toliko napredovao da on pruža i okruženja koja vam omogućavaju emulatore za programiranje mobilnih aplikacija.


( .NET Framework 4.5 )


Kad vi napravite program, on koristi određenu verziju .NET Framework-a; trenutna najnovija verzija .NET Framework-a je .NET Framework 4.6 i da bi vaš program radio na nekom drugom računaru, taj drugi računar mora da ima takođe istu verziju instaliranu kako bi vaša aplikacija radila. Glavna osobina .NET Framework-a je zapravo njegova međujezičnost jer sadrži više programski jezika. Vama ne treba poseban ..NET Framework za svaki programski jezik, čak je svejedno u kom programskom jeziku ste napravili *.dll datoteku; nju mogu da koriste svi jezici u svojim projektima, ali postoji razlika između 32 i 64 bit-nog .NET Framework-a i bolje će te proći ako imate 64-bit-ni operativni sistem.

Za razliku na primer od C++ programskog jezika, vaš kod se ne prevodi odmah u mašinski kod već CLR - Common Language Runtime vaš program prevodi u CIL - Common Intermediate Language  koga formalno zovemo MSIL - Microsoft Intermediate Language kako se često naziva samo IL - Intermediate Language. To je zapravo Microsoft-ov posrednički jezik niskog nivoa. Zato svi .NET  izvršni programi i sve *.dll datoteke mogu da rade zajedno, štedeći vas starih komplikacija koje smo zvali *.dll hell. JIT - Just-in-time compilation zatim prevodi  IL - Intermediate Language u prirodni binarni kod.


Kako je napredovao razvoj C# programskog jezika?


Samom pojavom .NET tehnologije 2002 godine, C# je sa sobom doneo revoluciju u programiranju. Do tada je recimo postojao Visual Basic 6.0 koje je postao Visual Basic .Net  i doneo je sa sobom čak 90% promena. Da nebi bilo zabune, danas se Visual Basic .Net opet zove Visual Basic jer Visual Basic 6.0 je odavno otišao sa scene. C# programski jezik je jednostavno se pojavio kao sasvim novi programski jezik familijaran sa C i C++ programskim jezicima.

Od 2002 godine i svoje prve verzije C# 1.0 je pružio punu podršku za klase i OOP – Object Oriented Programming – objektno orjentisanog programiranja , nasleđivanje i od interfejsa i od drugih klasa, virtualne funkcije i preopterećenje operatora; dosledan i dobro definisan skup osnovnih tipova. Zatim došao je sa ugrađenom podrškom za automatsko generisanje XML - Extensible Markup Language dokumentacije, automatsko čišćenje dinamičke dodeljene memorije, mogućnost markiranja klasa atributima koje je odredio korisnik, pun pristup biblioteci baznih klasa ali i jednostavan pristup interfejsu Windows API-ja; ukoliko je nekom baš trebao pa sve do mogućnosti pisanja ASP .net dinamičkih aplikacija. U to vreme to jest bila programerska revolucija i skoro sve se u programiranju promenilo što ste do tada znali.

Posle su dolazile manje promene ali izuzetno značajne. Na primer, 2003 godine su se prvi put pojavili auto propertiji. Već od 2005 godine, C# programski jezik je postao bogatiji za iteratore, generički koncept i anonimne metode. U 2008 godini je više dat akcenat na radu sa bazama podataka i onda su se prvi put pojavili lambda izrazi, ekstezione metode ali i celi LINQ – Language Integrated Query jezik, tačnije upite sa integrisanim jezikom. Od 2012 godine C# programski jezik ima podršku za imenovane i opcione argumente, pojavio se tip dynamic, kasno povezivanje za neki objekat. TPL – Task Parallel Library omogućava da potpuno iskoristite prednost procesora sa više jezgara. Posebno je stavljen akcenat na modifikatore metoda async i operatora await.


Danas u 2015 godini vi možete da koristite operator await u try catch exception i finally sklopu. Try catch exception sad ima čak i filter izraze. Pojavili su se i auto propertiji samo za get iskaz i to nije sve. Vi sad možete inicijalizovati vaše propertije direktno u jednoj liniji koda. Tu je i novi ?. – Elvis operator koji će vas poštediti mnoštva Null i drugih sklopova uslova. String interpolacija; u prevodu umetanje string-a je olakšano sa iskazom karakterom za dolar, $ . Sad se na primer JObject inicijalizira u samo jednom izrazu. Ne morate više da navodite nameof operator, on se podrazumeva ili telo metode možete sada da prosledite lambda izrazom = > i mnoštvom drugih novih stvari uključujući i nova poboljšanja na kojima se trenutno u Microsoft-u radi.

Da, da… vi danas možete izguglati i videti na kojim promenama u C# programskom jeziku Microsoft upravo sad radi i unapred videti šta će tek biti u C# programskom jeziku pored svega novog.


Ja razumem ukoliko ste početnik ili nemate iskustva sa C# programskim jezikom da vam sve ovo što sam naveo zvuči nerazumljivo ali vremenom će te razumeti. C# programski jezik i svaki drugi programski jezik se najbolje uči kodiranjem, pa tek onda teorijom. Jer sve što sam naveo, primeniti u kodu je to mnogo jednostavnije.


Kako da napišem svoj prvi program u C# programskom jeziku?


Da bi ste počeli sa pisanjem C# programskog jezika, neophodno je da imate instaliranu neku od verzija Microsoft Visual Studio-a. Ja vam preporučujem da instalirate Microsoft Visual Studio Community 2015 verziju koja je besplatna. Kod koji ću ja pisati je  C# 6.0, kako bi ste od starta učili najnovije karakteristike C# programskog jezika. Pokrenite Microsoft Visual Studio; kliknite na New; zatim Project… ; Visual C#; Win32 i izaberite Console Application šablon. Unesite naziv programa i podesite direktorijum u kom želite da snimite vaš program. Program nazovite „HelloWorld“ zatim pritisnite „OK“. Zatim unesite tri linije koda da vaš kod izgleda identično dole navedenom.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World");
            Console.WriteLine("This is my first C# 6.0 Console application.");
            Console.ReadLine();

        }
    }
}

Pokrenite program, pritisnite dugme “Start” i pokrenuće se Commmand Prompt ukoliko niste napravili ni jednu grešku tokom kucanja. Vaš program će se kompajlirati; izvršiti i dobiće te ovakav rezultat.

Hello World
This is my first C# 6.0 Console application


Pritisnite bilo koju tipku na tastaturi i vaš program će se zatvoriti. Čestitam, napravili ste vaš prvi program u C# 6.0 jeziku. Kao što možete videti celi vaš mali programčić se sastoji od nekoliko uključeni imenskih referenci i 3 bloka koda koji su ograđeni vitičastim zagradama { }. Prvi blok predstavlja samo imenski prostor čiji se naziv može menjati. Drugi blog predstavlja klasu, znači vaš program je u suštini klasa i u njoj se nalazi funkcija. Funkcije u C# programskom jeziku uvek zovemo metoda. Naziv metode Main() ne možemo menjati, ali njene atribute u ovom programu možemo totalno i izbrisati jer za izvršenje ovakvog prostog koda vam ne trebaju nikakvi ulazni argumenti. Kad smo kod mogućnosti, ispis prethodnog koda možete napisati na više načina. Ukoliko pogledate u editor koda u Visual Studio-u 2015, primetiće te da su neki imenski prostori zatamljene boje, što znači da aplikacija ne koristi iste. Takođe prva stvar o C# programskom jeziku koju trebate znati da je C# case sensitive programski jezik; npr. ne možete napisati main(). To nije isto kao Main(). Pogledajte i uporedite šta sam ja sve izbrisao i promenio od ovog malog programa, ali on opet radi i daje isti rezultat kao i što ste vi kodirali.

using System;
namespace Manuel.CSharp.HelloWorld
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Hello World\nThis is my first C# 6.0 Console application");
            Console.ReadLine();

        }
    }
}

Naravno, vi ovo nemojte da radite, nemate potrebe jer Microsoft Visual Studio će i onako kompajlirati samo ono što je potrebno da bi vam se program izvršio.

Kako se ovaj mali program kodira možete pogledati i na video-u:




( C# 6.0 Tutorial - Fundamentals - 1. HelloWorld )