czwartek, 31 stycznia 2013

Czemu C#?

Joł, nazywam się... a nie to nie ten blog, bez zbędnego owijania ile mam lat czy czym się zajmuję (oh wait, czy to blog o programowaniu?).

Blog powstał z błachych powodów - nudzi mi się, a do sesji nie chce się uczyć, więc oprócz czystego programowania nie ma chyba nic lepszego niż wylać na blogu jak bardzo chujo... zajebisty dzień miałem.

No cóż, na początku zacząłem naukę programowania obiektowego z Javą, ale nigdy nie potrafiłem być wierny językom interpretowanym, to nieco rasizm, ale...
Wszystko ma swoje plusy i minusy:

Plusy języków kompilowanych:
  • Język kompilowany jest szybszy - bezpośrednia zamiana na kod maszynowy.
  • Optymizacja kodu - programista może czynić cuda za pomocą kompilatora
  • Największe możliwości - im bardziej przytulimy procesor, tym więcej się o nim dowiemy
  • Zaraz po ASM, są one korzeniem programowania - wirtualne maszyny są pisane właśnie w językach kompilowanych. Nie ma języków kompilowanych = nie ma JS, PHP, Javy, czyli właściwie tego co nazywamy internetem, tak - Twoje wypchane internetem życie  jak i fakt, że czytasz tego leniwego bloga to wina programistów, idź na piwo :)
Minusy języków kompilowanych
  •  Zwykle języki niskopoziomowe, trudne w "kodzeniu" - to w zasadzie jest plus / minus, Ja nie lubię wysokopoziomowych języków, korzystam z niektórych, gdy czas nagli i muszę unikać bugów zrobionych pod presją
  • Problem przenoszenia na inne platformy - wymaga to znajomości programisty w obsłudze kompilera, oraz pisania kodu (np obsługi dyrektyw).
Plusy języków interpretowanych:
  • Łatwa implementacja kodu - samo jego pisanie jest dużo łatwiejsze
  • Nie wymaga uruchamiania kompilatora - przemyśl plusy j. kompilowanych
  • Mogą być przenoszone pomiędzy platformami - kwestia wirtualnej maszyny, która zainstalowana pod specyficznym systemem zamienia kod programu na kod maszynowy, przykłady wirt. maszyn: (JVM, Tamarin, DOSBox hehe)
Minusy języków interpretowanych:
  •  Kod wykonuje się linia po lini - interpretując sie na bieżąco, to jest wolne!!! Co prawda umożliwia bardziej elastyczną modyfikacje i poprawki w kodzie, ale to jest (moim zdaniem) mało użyteczne. Wolny kod nie dorówna szybkiemu, a ilość błędów jest kwestią programisty
  • Oczywiście musimy mieć zainstalowaną maszyne wirtualną - nie dziw się, że masz na swoim komputerze JVM (w statystykach około 5,5 miliarda urządzeń ma to zainstalowane, a obsługiwane jest ~~ 60 języków interpretowanych), lecz, gdy spotkasz moment, gdy strona wymaga skorzystania z Microsoft Silverlight (odpowiednik Flashplayera), musisz pobrać plugin działący właśnie jak mini interpreter. Konflikt interesów

Oczywiście nie należy porównywać języków kompilowanych do asemblera, asm jest językiem programowania niskiego poziomu (najbliższego składnią do rozkazów procesora / dostępu do pamięci), i mimo, że C/C++ równierz zaliczają się do niskopoziomowych, to różnica w pisaniu kodu jest po prostu jak między maluchem a porshe ;)


Tak więc skoro już namieszaliśmy trochę w głowie z językiem kompilowanym, oraz interpretowanym, wypadało by zadać pytanie odnośnie pisania stron www:

Czy każdy język do tworzenia stron www musi być interpretowany?
Na szczęście nie, owszem, języki kompilowane nie są święte, tak jak już mówiłem - język kompilowany jest dość zależny od platformy w którą celuje ostatnia kompilacja, tak samo stawiając stronę z ASP.NET potrzebujemy do jej hostingu serwera opartego na systemie Windows Server, z postawionym IIS

Do pisania programów warto używać:
- Visual Studio 2012 Professional 1900zł
- Visual Studio 2012 Express - Freeware
- Mono - Open Source

Tu koniecznie trzeba powiedzieć, że Mono jest projektem sponsorowanym przez Xamarin, Mono umożliwia programowanie w C# jak i ASP.NET cross-platformowym!!!
Mono is a software platform designed to allow developers to easily create cross platform applications. Sponsored by Xamarin, Mono is an open source implementation of Microsoft's .NET Framework based on the ECMA standards for C# and the Common Language Runtime. A growing family of solutions and an active and enthusiastic contributing community is helping position Mono to become the leading choice for development of Linux applications.

Reasumując opis działania języków interpretowanych, i kompilowanych - wybieram kompilowane, i zarazem C#, oraz chętnie postukam kod w ASP.NET (ale to kiedyś tam, dobre programowanie stron w ASP.NET wymaga przygotowania, m. innymi: Html, CSS, JS, PHP, Ajax, SQL, Linq, Silverlight etc.)

To by było na tyle, w kolejnym monologu napisze o ASP.NET vs PHP, czyli starciu odwiecznych rywali bla bla bla