Autor Wątek: Dylemat w wyborze.  (Przeczytany 2603 razy)

Offline gregorspl

  • Użytkownik

# Maj 16, 2015, 14:17:57
Witam,
ostatnio dręczy mnie dylemat, jako że już trochę w życiu pisze, a często poprostu pokodzę w jakimś innym języku czy to C++, Java , PHP(chyba najwięcej) itp. Ale przyszedł moment w moim życiu do tego aby się określić w czym chcę kodzić na stałe by opanować ten jeden język możliwie jak tylko bym potrafił. Otóż wracając do tego dylematu, zastanawiam się nad pewnymi językami:
1. Java, plusem w nim jest na pewno Android, ale tez chciałbym coś zrobić związanego z tematyką warsztatu, a tu się najbardziej obawiam, może i nie chodzi o samą wydajność ale o to, że nie potrafię sobie jakoś wybrazić wiekszego projektu w tym języku(majnkraft do mnie nie przemawia). Kolejny plus dla niej jest dość duży rynek pracy ale do tego zaraz przejdę.
2. C# i paleta barw Microsoftu. Ostatnio dość polubiłem ta firmę, przez to jak zaczęła współpracować z nami programistami i głosem ludzi. Kolejnym powodem dylematu jest ich najnowszy system, a wraz z nim dość nowa polityka ich(aktualizacja wszystkich systemów do 10, łatwiejsze przenoszenie aplikacji na ich system itp.) i to wiąże się z myślą w mojej głowie "Czy to nie idealny czas na poznanie ich technologii i z życie się z nimi na stałe?". Za Microsoftem tez opowiada się świetne środowisko jakie stworzyli, które  z wersji na wersję staje się lepsze(od VS2005 do teraz). Z tym czuję, że właśnie przez to wszystko sytuacja rynku mobilnego może się trochę pomieszać, być może android straci trochę na rzecz właśnie WP10, stąd może rynek pracy dla androida się zmienić(obawa z wcześniejszego punktu)
3. Staruszek ale dalej daje radę. Mowa tu o C++. Szczerze mówiąc jestem tu najmniej przychylny, mimo iż znam potęgę tego języka, coś mnie od niego odrzuca. Może to rynek pracy, w którym dla tego języka trzeba być druidem lvl 90. 

Pozostają jeszcze technologie webowe, ale chciałbym tworzyć aplikacje mobilne jaki desktopowe(natywne).
Przepraszam jeżeli jest to napisane dość chaotycznie lub niezrozumiale, więc proszę Was o pomoc w rozwiązaniu tego dylematu.

*Są to moje poglądy, nie proszę o bicze za nie,a jedynie w rozwiązaniu dylematu.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

  • +1
# Maj 16, 2015, 14:45:08
Cytuj
1. Java, plusem w nim jest na pewno Android
W jaki sposób? W porównaniu z C++ to Java wydajnościowo na Androidzie mi leżała.

Cytuj
Pozostają jeszcze technologie webowe, ale chciałbym tworzyć aplikacje mobilne jaki desktopowe(natywne).
Powiem tyle, że mi we wszystkich trzech powyższych sprawdza się doskonale C++ (w przypadku web też!). Co prawda warto posilić się jakimś językiem skryptowym (ja używam Squirrela) żeby skrócić nieco czas iteracji, ale w ogólności całość daje nieźle radę. Zwłaszcza kodowanie low-level w C++ na mobilkach daje czasami naprawdę niezły boost, bo możesz na CPU niektóre rzeczy generować praktycznie w real time (lightmapy, teren, itp).

Offline gregorspl

  • Użytkownik

# Maj 16, 2015, 15:27:01
Chodziło mi o SDK dla Androida tak jaki Android Studio. Ale masz rację z C++, myślę, że muszę z nim się jednak zaprzyjaźnić na dobre, chociażby ze względu na Windows Phone.

Offline skowronkow

  • Użytkownik
    • skowronkow devsite

  • +2
# Maj 16, 2015, 17:25:54
Z c++ jest taka ciekawa rzecz, że pisanie w nim jest coraz fajniejsze. Nie zawsze trzeba być druidem lvl 90 żeby skutecznie go używać. Ja na codzień programuję głównie w c++ i javascript co może wydawać się nieco dziwnym połączeniem ale tylko z pozoru. Jeśli chodzi o mobilki to tutaj mam tylko exp z wp. MS dużo wysiłku włożył w to aby móc zgrabnie pisać komponenty w c++, które później można z powodzeniem wykorzystać w aplikacji pisanej w c#/javascript. Tak dużo go to kosztowało wysiłku, że brakło na marketing i poza konferencjami Build i paroma blogami ciężko o informacje nie będące suchą dokumentacją na ten temat.

Długo pisałem w c# i .NET i jest to fajna technologia ale dla mnie osobiscie znajomość c++ i czegoś webowego jest idealnym połączeniem.

Offline BrunonDEV

  • Użytkownik
    • Construgia -- RPG

# Maj 16, 2015, 17:31:58
Ja również na codzień piszę w C++, i przyjemnie mi się w nim pisze. Również Ci je polecam. :)

Offline Krzysiek K.

  • Redaktor
    • DevKK.net

# Maj 16, 2015, 19:05:35
Cytuj
Chodziło mi o SDK dla Androida tak jaki Android Studio.
Masz też C++owe SDK (zwane NDK) na Androida. Nie pamiętam czy jest tam jakieś IDE, bo koduję w Visual Studio, ale biorąc pod uwagę że wszystko idzie zrobić z command line, to zintegrować to można z czymkolwiek.

Offline Xion

  • Moderator
    • xion.log

  • +3
# Maj 16, 2015, 19:33:50
Muj borze! Znowu wstaję rano, i widzę pytanie od (na wpół)początkującego, do którego zdążyli się już dorwać "stali bywalcy" ze swoimi średnio adekwatnymi mądrościami i które muszę teraz częściowo prostować -_- No cóż, przejdźmy po kolei...

Cytuj
jako że już trochę w życiu pisze
Szkoda, że nie sprecyzowałeś dokładnie, jak widzisz swój poziom zaawansowania. Na szczęście z reszty postu da się co nieco wywróżyć :)

Cytuj
Ale przyszedł moment w moim życiu do tego aby się określić w czym chcę kodzić na stałe
Whoa, whoa. Czekaj. Żaden szanujący się programista nie opanowuje "jednego języka na stałe", spodziewając się, że będzie mógł w nim napisać wszystko. A już na pewno nie spodziewa się, że tego rodzaju wybór pozostanie aktualny za pół dekady.
Rozumiem oczywiście chęć poznania jakiegoś języka "możliwie [najlepiej] jak tylko byś potrafił", ale w praktyce dopiero porównywanie doświadczeń z innymi językami umożliwia osiągnięcie prawdziwej biegłości.

Cytuj
nie potrafię sobie jakoś wybrazić wiekszego projektu w tym języku
Żartowałbym, że w Javie każdy projekt jest od razu większy ;-) A bardziej na poważnie: nie widzę specjalnej różnicy między "dużym" (~dziesiątki KLOCów) projektem w Javie czy dzisiejszym C++. I generalnie to, że masz jakieś wątpliwości specyficzne dla jednego języka mówi mi, że jesteś jeszcze na takim etapie, że szumny "wybór języka" nie miałby dla ciebie specjalnego znaczenia.

Cytuj
Z tym czuję, że właśnie przez to wszystko sytuacja rynku mobilnego może się trochę pomieszać, być może android straci trochę na rzecz właśnie WP10,
Hah, uwierzę gdy zobaczę. Microsoft mniej lub bardziej pogodził się ze (względną) porażką WP, jak i zapewne ich całego dziwnego, zunifikowanego podejścia do interfejsów mobile vs. desktop. Ich ostatnia aktywność w zakresie zjednywania sobie developerów jest dyktowana głównie chęcią zagarnięcia jak największego kawałka cloudowego tortu ze swoim Azure, co ma o wiele większy sens, bo mają tutaj mniej więcej takie same szanse, jak wszyscy którzy nie są Amazonem.

Cytuj
Pozostają jeszcze technologie webowe, ale chciałbym tworzyć aplikacje mobilne jaki desktopowe(natywne).
Chwałi ci :) HTML5 na mobile to trochę jak Linux na desktopie -- zawsze jest kilka lat w przyszłości ;) Trzymałbym aczkolwiek rękę na pulsie, bo rzeczy tak czy siak idą w tym kierunku (ostatnio np. dzięki automatycznie aktualizowanemu WebView na Androidzie).

Co więc z odpowiedzią na twoje główne pytanie? Cóż, problem w tym, że nie zadałeś go zbyt precyzyjnie. Rzuciłeś trzy języki, które jakoś są ze sobą związane, i jakoś tam napomknąłeś, że może chodzi ci o aplikacje czy nawet gry mobilne. Skutek jest właśnie taki, że odpowiadający przerzucają się w argumentowaniu, jak to ich ulubiony język spośród tych trzech jest dobry właściwie do wszystkiego, bo im akurat pasuje :)

Zdefiniuj więc dokładnie "gdzie jesteś?" (jaki jest twój poziom zaawansowania? jakie masz konkretnie doświadczenie i w czym?) i "dokąd chcesz iść?" (co chcesz zrobić? najlepszy byłby tutaj jakiś konkretny projekt!), a wtedy będzie powiedzieć coś bardziej konkretnego.

Offline skowronkow

  • Użytkownik
    • skowronkow devsite

  • +1
# Maj 16, 2015, 20:29:36
Muj borze! Znowu wstaję rano, i widzę pytanie od (na wpół)początkującego, do którego zdążyli się już dorwać "stali bywalcy" ze swoimi średnio adekwatnymi mądrościami i które muszę teraz częściowo prostować -_- No cóż, przejdźmy po kolei...

Na szczęście stoisz na straży :)

Na takie pytanie odpowiedź jest jedna. Pisz w czym chcesz jak najciekawsze rzeczy i rób to często a napewno wszystkie wątpliwości odejdą. Problem w tym, że zazwyczaj początkujące osoby (ale nie tylko)  poszukują świętego grala. W tym wypadku jest to jakiś język/technologia, opanowanie której pozwoli do końca świata tworzyć coraz fajniejsze i ciekawsze rzeczy. Tak się nie da i w zasadzie po pewnym czasie ciężko powiedzieć programistą czego się jest. Chyba po prostu programistą a język to narzędzie i tak być powinno.

Jesli mialbym udzielic jakiejkolwiek rady zwiazanej z programowaniem bylaby ona taka:
Nikogo nie obchodzi w jakiej technologi/jezyku stworzyles dana rzecz. Liczy sie tylko to co udalo Ci sie stworzyc. Tego sie trzymaj a reszta to szczegol. Jak nie wiesz w czym pisac rzuc moneta. Jak zaczniesz pisac w czyms co Ci nie odpowiada to zorientujesz sie szybciej niz z jakiegokolwiek forum.
« Ostatnia zmiana: Maj 16, 2015, 20:34:44 wysłana przez skowronkow »

Offline gregorspl

  • Użytkownik

# Maj 17, 2015, 00:00:58
Dziękuje za odpowiedzi, wiem, że często pojawia się takie pytanie, ale czytając wszystkie tego typu tematy nie znalazłem odpowiedzi bo być może złe pytanie miałem w głowie. Dzieki Xionowi jakoś bardziej mi się ono sprecyzowało. Otóż u mnie wygląda sprawa tak z programowaniem tak, pierwszą technologie jaką poznałem było to delphi, coś koło 3 klasy podstawówki, nie znałem wtedy nawet zbytnio angielskiego wiec brałem kawałki kodu z przykładów i tak sklejałem swój program był to bodajże klient gg oparty na bibliotece hgg(jak mnie nazwa nie myli), poźniej pojawił się u mnie HTML i szybko do tego dołączył PHP i tak  z nimi zostałem aż do dziś 3 klasa technikum, pomiędzy teraz, a wtedy(gdy zacząłem z php i html), przetoczył się c++(w którym do dziś od czasu do czasu piszę),c#, java(jakiś mały projekt + kurs androida(chyba 30h) ze szkoły), no i oczywiście jak to ze najdłużej bawiłem się php to dołączył do tego js i mysql, nie wspominając o css(również less i sass). Ale przejdę do rzeczy, pewnie pomyślicie skoro tyle już w php siedzę czemu w nim nie zostanę i tu właśnie jest to moje pytanie (teraz sprecyzowane):
Jako, że niedługo skończę szkołę, to interesuję się rynkiem pracy w moim kierunku(technik-informatyk), dylemat pojawił się ze względu na niego, jaki z tych języków może mi ułatwić znalezienie pracy(oczywiście tez studia będę robił, żeby nie było ze bez studiów to zapomnij )? Który z nich może też świetnie nadać do moich własnych projektów: aplikacje mobilne, proste gry(w sumie dlatego tutaj to pisze) czy tez aplikacje na desktopy?

Offline Xion

  • Moderator
    • xion.log

# Maj 17, 2015, 00:54:00
Cytuj
Dziękuje za odpowiedzi, wiem, że często pojawia się takie pytanie, ale czytając wszystkie tego typu tematy nie znalazłem odpowiedzi bo być może złe pytanie miałem w głowie.
Nie dziwi mnie to. Na każde pytanie typu "I co teraz?" odpowiedź będzie zależała od pytającego, a wiadomo że każdy jest specjalnym płatkiem śniegu :)

Cytuj
Otóż u mnie wygląda sprawa tak z programowaniem tak (..) jako, że niedługo skończę szkołę, to interesuję się rynkiem pracy w moim kierunku(technik-informatyk), dylemat pojawił się ze względu na niego, jaki z tych języków może mi ułatwić znalezienie pracy(oczywiście tez studia będę robił, żeby nie było ze bez studiów to zapomnij )?
"Bez studiów to zapomnij" w naszej branży niezbyt obowiązuje. Można być świetnym programistą bez formalnej edukacji ponad szkołę średnią, jak i kiepskim po studiach (i odwrotnie, rzecz jasna -- nie ma tu reguły). W twoim przypadku studia wydają się wskazane, bo poszerzą ci horyzonty (w ramach CS/IT) i ułatwią późniejsze podjęcie decyzji, w co się "specjalizować".
Przy czym przez specjalizację nie mam absolutnie na myśli konkretnych technologii, raczej roli i dziedziny. Nie muszę zapewne wspominać, że IT to szeroka dyscyplina; nie wiem wprawdzie, gdzie sytuuje się "technik-informatyk" (co to za twór?), ale tak czy siak jest wiele możliwych ról do wyboru: programista (software developer/engineer), sysadmin, devop/SRE (site reliability engineer -- miks poprzednich dwóch), czy nawet product manager. Dziedzinami mogą być z kolei gamedev, frontend webdev, backend web-dev, mobile, etc., nie wspominając o tym że zanim skończysz studia pewnie przybędzie tu jeszcze kilka :)

Cytuj
Który z nich może też świetnie nadać do moich własnych projektów: aplikacje mobilne,
Każda platforma ma tu swoje specyficzne narzędzia, niestety, dlaczego trzeba poznać te, które są specyficzne dla konkretnego systemu. Android to Java, iOS to Objective-C, Windows Phone to C#. Są do tego małe przypisy (na iOS coraz popularniejszy robi się Swift, Android ma wynalazki typu Xtend czy Kotlin), ale na początek nie zawracałbym sobie nimi głowy.

Cytuj
proste gry(w sumie dlatego tutaj to pisze)
Gry AA/AAA, zarówno mobilne jak i PC, pisze się w jakimś dialekcie C++ z użyciem API graficznego (głównie OpenGL), zwykle poprzez jakiś silnik (engine) - czasami własny, czasami jakiś istniejący. Proste gry - w sensie stopnia skomplikowania grafiki i mechaniki, czyli np. tak zwane casuale - da się spokojnie zrobić w wymienionych wyżej i niżej językach specyficznych dla danej platformy.

Cytuj
czy tez aplikacje na desktopy?
Jeśli Windows, to C#/.NET jest chyba dzisiaj jedynym sensownym wyborem. Jeśli OSX, to Objective-C jest mniejszym lub większym przymusem. Do tego dochodzą jeszcze wieloplatformowe wynalazki typu Qt; tutaj opcji jest więcej (np. Python), ale wymagają one więcej taśmy klejącej niż jednoprzyciskowe Build & Run z Visual Studio czy XCode.

Dość osobną kategorią jest jeszcze webowy frontend (HTML+CSS/preprocesory CSS+JS/języki kompilowane do JS), który może pokryć wszystkie wymienone wyżej kategorie. Bliższe przyjrzenie się JavaScriptowi i rozlicznym (zwykle zbyt licznym) rozwiązaniom na nim zbudowanych (frameworki MVC, Canvas, automatyzacja typu Grunt/Gulp, etc.) może być w bliskiej perspektywie bardzo pożyteczne.
Tylko słówko ostrzeżenia: spodziewaj się jeszcze większych ilości taśmy klejącej i hakowania niż gdziekolwiek indziej :)

Offline gregorspl

  • Użytkownik

# Maj 17, 2015, 01:13:44
Dziękuje Tobie Xion, na taką odpowiedź właśnie czekałem. Tak analizując wszystko postawię jednak na C++, jest słusznym wyborem dla mnie,gdyż nie zatrzyma mnie w żadnym kierunku jaki wymieniłem. Temat można zamknąć.

P.S.: Co do tej taśmy klejącej w webach: świetnie ją znam, nauczyłem się ze im więcej się z nia pobawię i nią posklejam to szybciej idzie dalszy proces tworzenia np.  kompilator sass w nodejs,który kompiluje plik gdy zostanie wychwycona zmiana zawartości, niby mała rzecz ale naprawdę przyspiesza prace ;)