10 godina pisanja bloga


10-years-blog-aniversarryPrije deset godina objavio sam prvi blog post. Napisao sam nekoliko rečenica o sebi, i skromno najavio šta bi potencijalni posjetioci trebali naći i pročitati zanimljivo na blogu. Prvi blog postovi predstavljali su tekstove koje sam nešto ranije pripremio, a predstavljali su nastavak mojih aktivnosti pisanja članaka sa http://codeproject.com  stranice, na kojoj sam počeo pisati još daleke 2002 godine. Naime, moj prvi članak koji sam napisao za codeproject bio je, u stvari, jedan mali projekat iz 2001 godine, a kojeg sam trebao uraditi za aplikaciju za posao za jednu kompaniju koja se bavila razvojem game engina. Tada ni slutio nisam da bi se ova aktivnost mogla produžiti deset i više godina. U stvari, ovo je jedna od najdužih aktivnosti koje konstantno radim iz godinu u godinu, iz mjeseca u mjesec i još se nisam umorio niti mi je dosadilo. Kasnije zbog šire ciljane grupe članke sam počeo pisati na engleskom jeziku. Danas članke pišem na engleskom jeziku, dok u slučaju lokalnih tema članke pišem na bosanskom.

Pisanjem članaka na blogu pokušavam podijeliti znanje koje sam stekao, a samim tim i umnožiti znanje koje posjedujem. Jer po onoj staroj poslovici samo dijeljenjem znanja umnožavamo svoje sopstveno.

Svi blog postovi napisani u zadnjih deset godina, mogu se podijeliti na:

  • postove vezane za C++ i MFC projekte koje sam radio do 2007 godine,
  • postove vezane za .NET, C# projekte koje radim
  • razne postove vezane za projekte na kojima radim odnosno na kojim sam radio
    • GPdotNET – Artifical intelligence tool
    • Projekcti vezane za ostale numeričke metode
    • Project Euler portal
  • Postovi vezani za moje aktivnosti u Microsoft Community demo primjeri i prezentacijske datoteke
  • Članci vezani za teme iz matematike, numeričke metode i matematičko modeliranje.

Iz ove stranice nalazi se stotine napisanih članaka, stotine demo primjera, raznih rješenja, koje su koristili ljudi iz cijelog svijeta, na što sam posebno ponosan. Statistika bloga je takošer interesantna jer gotovo da ne postoji država na svijeti iz koje neko nije posjetio ovu web stranicu.

10-years-blog-aniversarry-stat

Kako se može vidjeti sa slike, u 2016. godini samo sa Grenlanda, nekoliko afričkih zemalja i otoka oko Indonezije nije bilo na ovoj stranici.

Jako puno je komentara koje su ljudi ostavljali na stranici, pitanja, kritka a najviše zahvala. Pored direktni mailova koje sam dobijao gdje su se ljudi zahvaljivali na pomoći, te komentara koje su ostavljaju najupečatljiviji blog post kojeg sam napisao, a koji je pomogao stotinama ljudi je jedna greška u MS Wordu pri kojoj se dokument ne može otvoriti te postaje beskorisan. Greška se pojavljuje kod dokumenata sa jako puno formula i slika, odnosno često u slučaju pisanja naučnih radova, magistarski i doktorskih radova. U narednim slikama prikazani su samo neki komentari koje se mogu pročitati na ovom linku.

aniver-comments

Nadam se da će i narednih 10 godina proći u istom ritmu te da će biti još mnogo korisnih članaka od koji će imati koristi šira društvena zajednica.

Vidimo se za narednu dvadesetogodišnjicu :).

 

Objektno Orjentisano Programiranje- treći dio


Polimorfizam (en. Polymorfism)

Polimorfizam predstavlja najsofisticiraniju osobinu OOP pri kojoj jedan objekat može ispoljavati različite osobine. Naime, pored standarnih funkcja koje se mogu definisati u klasi, OOP koncept dozvoljava da se definišu virtuelne metode. Virtuelne metode se implementiraju na potpuno isti način kao i regularne samo što u svojoj deklaraciji imaju prefiks virtual. Kada se metoda deklariše kao virtualna, polimorfizam dolazi do izražaja samo u slučaju kada se definišu klase koje su izvedene iz bazne klase.
U izvedenim klasama virtuelne metode se mogu “preklopiti” (en. override) tako da imaju potpuno drugačiju implementaciju od one koja se nalazi i baznoj klasi. Na taj način jedan objekat tipa bazne klase može imati dvije različite osobine pri pozivu jedne te iste metode u zavisnosti od toga na koji način je objekat instanciran. Polimorfizam predstavlja jedan od najvažnijih i najznačajnijih fenomena OOP i treba ga koristiti kad god za to postoji potreba.
Virtualne metode se u izvedenim klasama mogu ali i ne moraju deklarisati sa ključnom riječju virtual. Međutim, kod nekih programskih jezika poput C# potrebno je dodati ključnu riječ overide. Virtuelne metode osim u ključnoj riječi za programera nemaju posebnih implementacijskih zahtjeva. Osim što u slučaju kada programiramo sa C++, moramo voditi računa da polimorfizam radi samo u slučaju pointera na objekte. Dakle u koliko instanciramo objekat na stack memoriji ne pokreće se virtuelni mehanizam i nemamo polimorfizam. Razlog zašto polimorfizam radi samo ako su u pitanju pointeri i heap memorija je jednostavan u koliko se poznaje priroda nastanka C++ jezika. Kako je C++ jezik izrastao iz C jezika, koji ima statičnu veličinu za svaki formirani objekat na staku, otud dolazi razlog da se virtualne metode nemogu mijenjati na tako statički definisanom objektu. Međutim u koliko se objekat klase instancira na heap dinamičkoj memoriji, tabela sa virtuelnim metodama se povezuje se i vrši prepoznavanje metoda poziva u vrijeme izvršavanja.
Kako rade virtualne metode može se objasniti na slijedeći način: Prilikom kompajliranja formira se tabela u koju se smještaju virtulne metode iz bazne i svih izvedenih klasa. Prilikom poziva interpreter pretražuje virtualnu tabelu sa listom virtuelnih metoda te poziva onu virtuelnu metodu iz one klase iz koje je objekat instanciran.
Kada govorimo o instanciranju objekata u slučaju bazne i izvedene klase možemo imati sljedeće slučajeve:
1. Objekat tipa bazne klase instanciran sa baznom klasom.
2. Objekat tipa bazne klase instanciran da izvedenom klasom.
3. Objekat tipa izvedene klase instanciran sa izvedenom klasom.
Kada objekat pozove virtuelnu metodu možemo dobiti slijedeće slučajeve shodno gore instanciranim varijantama objekta:
1. Izvršava svirtualna metoda iz bazne klase.
2. Izvršava se metoda iz izvedene klase.
3. Izvrsava se metoda iz izvedene klase.
U drugom slučaju imamo pojavu polimorfizma, dok se u prvom i trećem slučaju radi o standardnom pozivu metode. Sljedeći listing prikazuje naš primjer poziva metode Status iz bazne klase Osoba i izvedene klase Student.

//glavna ulazna funkcija
int main()
{  

	Osoba* os1 = new Osoba();
	Osoba* os2 = new Student();
	Student* os4 = new Student();  

	cout << "Osoba.Status(Osoba) vraća: " << os1->Status().c_str() << endl;
	cout << "Osoba.Status(Student) vraća: " << os2->Status().c_str() << endl;
	cout << "Student.Status(Student) vraća: " << os4->Status().c_str() << endl;  

	system("Pause");
	return 0;
}

Vidimo da u drugom slučaju kada imamo bazni tip Osoba koja je instancirana preko izvedenog tipa Student, pojavu polimorfizma. Istu situaciju bi imali u koliko bi pokrenuli C# verziju napisanog programa. Izlaz ovog programa dat je na narednoj slici:

Osoba.Status(Osoba) vraća: Osoba
 Osoba.Status(Student) vraća: Student
 Osoba.Status(Student) vraća: Student
 -------------------------------------------
 Press any key to continue...

Uvod u R jezik i mašinsko učenje- youtube lekcije


Do sada urađeno 7 kratkih lekcija u kojima sam pokusao objasniti osnove programskog jezika R i kako koristiti funkcije za statističku i analitičku obradu podataka. Kratkih uradaka biće još, ovo je samo početak. U narednom tekstu možete vidjeti sve do sada objavljene lekcije.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Visual Studio vNext – The New Installer


Download Visual Studio 15 Preview 3

The new version of Visual Studio will come with dramatically new installer, which will allow that you install only stuff you need, without gigabytes of unnecessary never used components. Current version of Visual Studio which is Visual Studio 2015 Update 3 is coming with nearly 8GB installation file. This is to much for the installer, you need special condition when you want to download the installation file. I am doing it by night, when I am sleeping. In some condition the installation process takes an hour to install everything you have specified.

In the next version the installation process will be changed and if you want to see and feel how the future visual studio installer  will look like you can download the preview of the Visual Studio vnext code name  “Visual Studio 15” at this link.

If you try to install Visual Studio 15 preview 3, it will take less than 5 minutes, with very simple installer. In the next five pictures whole installation process is completed.

After you download the installer, run it and the following pictures will appear:

  1. First picture is asking to confirm the installation process:

vs15_sl01

2. The next picture shows the progress of loading installer

vs15_sl02

3. The next picture is the main picture which you can select what to install. The whole Visual Studio installer is devided in to the development groups:

  1. Core Stuff of the Visual Studio- this component is required for all developer group
  2. There are for now 4 installer groups: .NET, C++, Python, Game dev.
  3. The more will come later.
    vs15_sl03

4. After you select right developer group/groups installation process starts by pressing Install button.

vs15_sl04

5. After the installation process is completed, the following picture appear, which you only need to close by pressing the Close button at the right top edge of the window.

vs15_sl05

As we can see the next version of the Visual Studio will dramatically changed the installation process, offering new simple and effective installer.

Follow

Get every new post delivered to your Inbox.

Join 732 other followers