Blog (3)
Komentarze (5)
Recenzje (0)

W czym programować? Czyli mnogość technologii...

@DropcioW czym programować? Czyli mnogość technologii...24.07.2012 01:52

Wpis ten można potraktować jako rozwinięcie jednego z punktów w moim poprzednim artykyle

  • Jaki język programowania wybrać?

Skąd pomysł na ten wpis?

Na forach dyskusyjnych dotyczących programowania można znaleźć całe megabajty tematów typu 'Java vs C#' albo 'C vs C++' a czasem nawet 'Java vs C++'. Cóż, nie dziwię się że ludzie zadają takie pytania. Dziwię się tylko, że sami czasem nie szukają korzystając z wyszukiwarek forumowych. Ale nie ważne. Postaram się tutaj najlepiej jak potrafię przedstawić kolejno kilka języków programowania oraz opisać ich zastosowanie i aspekty, które odróżniają ich od krewniaków.

Zestawienie i krótki opis wybranych języków programowania

Zacznijmy od...

C i Windows API

Dawno temu tworzenie aplikacji dla systemu Windows wymagało używania języka C w połączeniu z bardzo nielubianym dzisiaj przez niektórych Windows API zwanym powszechnie WinAPI. Pomimo, że prawdą jest iż ten owiany przeszłością sposób pozwolił na stworzenie naprawdę dużych i wydajnych aplikacji, to mało kto chyba zaprzeczy, że pisanie programów w surowym API to czynność...złożona. Problem polega na tym, że C to język czasem nieco irytujący. Programiści często muszą zmagać się z ręcznym zarządzaniem pamięcią, nieprzyjemną arytmetyką wskaźników i częstymi brzydkimi konstrukcjami samego języka. Poza tym język C jest językiem strukturalnym tak więc brak mu zalet obiektowości i wszystkich związanych z tym faktem przyjemności. No i powiedzmy sobie szczerze - nie jest on już tak popularny przy przy tworzeniu aplikacji pulpitowych w dobie dzisiejszych wysoko poziomowych języków jak C# czy Java. Nie ukrywajmy jednak...wiele aplikacji użytkowych (z wieloma błędami :P) nadal działa pod kontrolą tego języka. Zresztą całe jądro Linuksa na tym stoi więc nie można nazwać go umarłym.

C++ i Microsoft Foundation Classes (MFC)

Pod wieloma względami zdecydowanie dużym krokiem naprzód jest język C++. Jeszcze dobre kilka lat temu można go było nazwać "obiektową warstwą pokrywającą język C". Dzisiaj już jednak jest on samodzielnym językiem a jego obecny standard do C++11. Pomimo faktu, że programiści tego języka mogą korzystać z magii programowania obiektowego (jak enkapsulacja, polimorfizm czy dziedziczenie) to są dalej zdani na brzydką arytmetykę znaną z klasycznego C jak i czasem dziwne konstrukcje języka. Dzisiaj istnieje już wiele frameworków ułatwiających pracę w tym języku, np. wspomniany już przeze mnie Microsoft Foundation Classes. Podstawową rolą owego frameworka jest opakowanie rozsądnego podzbioru używanego WinAPI w wiele klas, magicznych makro i wielu narzędzi ułatwiających generowanie kodu zwanych kreatorami. Pomimo tych ułatwień ze względu na korzenie w C++ programować nie jest łatwo i przez naszą nieuwagę programy mogą stać się bardzo łatwo podatne na przeróżne błędy.

Visual Basic

Kiedy programiści zakosztowali przyjemnego życia jakim jest prostsze programowanie, wielu programistów odeszło od frameworków C/C++ do mniej niewdzięcznych, lżejszych jezyków takich jak Visual Basic. Ów język zyskał popularność przez stosunkowo łatwe tworzenie złożonych interfejsów użytkownika, bibliotek kodu oraz logiki dostępu do baz danych. Visual Basic dzięki wielu wbudowanym kreatorom kodu, wbudowanych typów danych, klas oraz specyficznych funkcji, o wiele lepiej niż MFC ukrywał złożoności WinAPI. Głowna wada tego języka polega na tym, że nie jest on w pełni obiektowy. Można powiedzieć, że on raczej pracuje na obiektach czyli nie ma możliwości ustalić relacji typu jest np.: obj is car. Co więcej Visual Basic nie pozwala tworzyć aplikacji wielowątkowych... no chyba, że ktoś ma ochotę bawić się niskopoziomowymi wywołaniami API co w najlepszym przypadku jest skomplikowane a w najgorszym niebezpieczne.

Uwaga:

Omawiany przeze mnie Visual Basic ma bardzo nie wiele wspólnego z Visual Basicem dostępnym na platformie .NET (VB.NET)!!

Java

W końcu pojawiła się (tak bardzo przeze mnie nie lubiana) Java - w pełni obiektowy język programowania, którego składnia bezczelnie wyrosła z ukochanego przeze mnie C++. Jak zapewne Wam wiadomo zalety (hehe) Javy nie kończą się na niezależności od systemu operacyjnego (i pisaniu bardzo wydajnych i niesamowicie szybkich gier jak Minecraft). Sama Java została uwolniona od niestrawnych w C++ dziwnych aspektów składniowych, a jako platforma zapewnia programistom bardzo wiele predefiniowanych pakietów, zawierających definicję różnych typów. Przy pomocy Javy programiści mogą tworzyć aplikacje składające się w pełni z Javy, a wyposażone w łączność z bazami danych, obsługę komunikatów, nakładki z obsługą sieci oraz atrakcyjne interfejsy użytkownika (nie licząc innych niezwykle ciekawych i naprawdę wkurzających mnie usług). Teraz wady (nareszcie..) - Mimo, że Java to bardzo elegancki język to pisanie w nim oznacza zwykle konieczność używania go przez cały czas cyklu rozwojowego aplikacji. W efekcie daje niewielkie nadzieje na integrację z innymi językami, ponieważ jest to sprzeczne z jej podstawowymi założeniami ]:-> - jeden język programowania do absolutnie wszystkiego (w tym gier :P). No niestety w rzeczywistości są na świecie miliony linii kody, które bardzo by chciałby połączyć się z kodem napisanym w Javie ale ona takiej możliwości nie udostępnia.

Microsoftowe rozwiązanie - .NET Framework

Kończąc już ten nudny wykład z historii sztuki programistów można powiedzieć, że programiści Windows nie mieli łatwego życia. Na scenie pojawił się .NET Framework ale z faktu, że temat ten jest troszkę rozległy postanowiłem poświęcić mu osobny wpis, który pojawi się pod koniec tego tygodnia.

Podsumowanie

Tak więc zakończyliśmy te długą podróż po historii ewolucji języków programowania. Jednak dalej nie odpowiedziałem na podstawowe w tym wpisie pytanie: "Jaki język wybrać?". Niestety tutaj odpowiedź nie jest jednoznaczna. To zależy od tego co chcesz robić. Jeżeli chcesz uczestniczyć w developerowaniu takich systemów operacyjnych jak Linuks lub chcesz stworzyć swój własny - wybierz C. Jeżeli chcesz tworzyć wydajne, wieloplatformowe gry - wybierz C++. W połączeniu z .NET Frameworkiem (C++/CLI) daje on niesamowite możliwości (jednak ogranicza się tylko do Windowsa, ja osobiście nie bardzo uznaję Mono za dobrą platformę - póki co). Poza tym do C++ jest mnóstwo frameworków ułatwiających tworzenie międzyplatformowego GUI jak np. obiektowy Qt framework. Korzystając z niego możemy również z powodzeniem tworzyć aplikacje biznesowe.

Do "szybkiego" programowania i tworzenie aplikacji biznesowych służą takie języki jak właśnie Java i C#. Wybór należy do Ciebie. Jednak na twoim miejscu skosztowałbym każdego po trochu i sam stwierdził, który Ci najbardziej odpowiada. Nie zapomnij też, że istnieje wiele innych języków, których tutaj nie omówiłem. Takim jest np. Python. Ale tym językom z innej rodziny będę kiedyś poświęcał osobne wpisy.

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.