C++ vs Java

0

Hej ;)
Liznąłem już Javę oraz trochę wiecej c++.
Aplikacje, które chciałbym w przyszłości pisać to aplikacje desktopowe lub ew. sieciowe + największa ewentualność to silniki do gier.
Jestem już na tym poziomie, że muszę wybrać.
Java czy C++?

Co się bardziej nadaje (już nie pytam co bardziej przyszłościowe) do:
-Pisania aplikacji pulpitowych, które korzystają z informacji, ze stron www np. forum internetowego (czy da się i w tym i w tym?),

  • Do czego jest więcej przydatnych klas i bibliotek,
  • Co jest tak naprawdę w pracy bardziej wymagające,

Ogólnie to mam czasem taki problem...że szukam trudnego rozwiązania a ono jest niezwykle proste. Nie potrafię czasami dostrzec w jakimś zagadnieniu rzeczy oczywistych. Jest to normalne? Czy w takim przypadku muszę sobie programowanie odpuścić?

Proszę o zwięzłe wypowiedzi.

Serdecznie pozdrawiam,
Darek.

0

Oprócz silników do gier, które raczej piszę się w C++, lepszym wyborem jest Java do tego co chcesz robić. W ogóle wydaje mi się, że najwięcej ofert pracy jest własnie dla programistów Javy. A co do pisania silników, cóż,, ciężkie zajęcie..

0

W C++ zwykle pisze się gierki typu FPS lub inne trójwymiarowe o szybkiej akcji. Gierki typu Angry Birds można spokojnie zaklepać w Javie (a nawet jest Javowy Minecraft). Sprecyzuj więc o jakie gry ci chodzi. Dodam tylko, że silniki do gier FPS, np Unreal Engine 3, są dzisiaj cholernie skomplikowane i szanse na to, że będziesz pisał coś tej miary są znikome. Prawdopodobnie brałbyś udział w modyfikowaniu kupionego/ istniejącego silnika, a jeśli pisałbyś nowy to chyba tylko przy budżetach niepozwalających na kupno porządnego silnika.

0

Ok;)
Ale np. Gadu-Gadu jest w C++/QT.
Chciałbym robić aplikacje właśnie tego typu...użytkowe. Uważacie, że do tego się bardziej Java nadaje?

0

Jeżeli decydującym czynnikiem jest wydajność, to GG jest przykładem, że w C++ nie nadaje się do pisania aplikacji użytkowych, a Minecraft jest przykładem, że Java nie nadaje się do pisania gier (chyba, że na telefon).

0

Kadu i AQQ to też C++. Mnie poza tym interesuja systemy operacyjne...np grzebanie w jadrze linuxa a to juz C/C++... ;) chce dalej isc w kierunku programowania ale mam tak czasem, ze nie dostrzegam rzeczy prostych...jest to na poczatku normalne?

0

Nie przejmuj się też tak mam dopiero się uczę. I o co jak i kiedy wykorzystać dowiaduje się metodą prób i błędów.

W javie/c# też można napisać takie aqq czy kadu ;d

0

W przypadku GG nie chodzi jednak o język, po prostu programiści się nie popisali. GG10 po kilku godzinach używania potrafi zajmować ponad 600MB czyli więcej niż Windows. Prawda jest taka, że większość programów użytkowych zarówno pod Windows jak i Linux zostało napisanych w C++.

Java i C# mają inne przeznaczenie. Zamiast do pisania aplikacji użytkowych, lepiej nadają się do pisania aplikacji webowych (ASP.NET MVC 3 rządzi) i biznesowych. Jeżeli nawet Microsoft nie używa C# do tworzenia IE, Office-a czy windowsowego notatnika to dlaczego ktokolwiek inny miałby to robić?!

Z tego też powodu jeżeli rzeczywiście chciałbyś pisać aplikacje użytkowe lub gry to skup się na C++. Z kolei jeżeli nie masz nic przeciwko aplikacjom biznesowym i webowym to ucz się Javy lub C#.

0

Visual Studio 2010 ma shella napisanego w WPF, NetBeans i Eclipse sa napisane w Javie. Imho C#, Java sa lepszymi jezykami do pisania aplikacji uzytkowych. IE jest specyficznym przykładem, na rynku przegladarek jest tyle dobrego softu, ze kazdy zysk wydajnosci sie liczy, plus do tego dochodza smieszne testy np. ile taka przegladarka zezre RAMu, co od razu stawia na przegranej pozycji jezyki z GC.

0

Jeżeli nawet Microsoft nie używa C# do tworzenia IE, Office-a czy windowsowego notatnika to dlaczego ktokolwiek inny miałby to robić?!
A dlaczego mielibyśmy robić wszystko jak Microsoft?

Prawda jest taka, że C++ był, jest i będzie, a C# to twór przy życiu utrzymywany w zasadzie tylko przez działania marketingowe Microsoftu. Jakież to było nowoczesne, w przyszłości wszystkie aplikacje będą „managed” i takie tam hasła, a C++ uważano za „legacy code”. A teraz co M$ głosi? „going native”, „C++ renaissance”. Całe to nowe WinRT opierać się będzie na C++ i interfejsach COM (kiedyś przy okazji VB.Net traktowanych jako przestarzałe).

Oni kreują modę. Napiszą jakąś bibliotekę (którą można było napisać w każdym języku) a potem wmawiają nam że do tego dany język jest najlepszy. Za parę lat „linia partii” znowu ulegnie zmianie.

Microsoftowi nie zależy na stworzeniu i rozwijaniu produktu. A przynajmniej nie to jest ich celem. Celem jest sukces handlowy.
Widać to nawet na przykładzie ich kompilatora C++. Powstał kiedyś dialekt C++/CLI — widocznie widzieli na to zapotrzebowanie. Później im się odwidziało, poszedł w zapomnienie, jest fajny ale od paru lat praktycznie nierozwijany. Teraz zamiast zaimplementować rozszerzenia C++11 stworzyli kolejny dialekt C++/CX, o podobnej składni, w ramach tego ich „going native”. A niektóre nawet trywialne elementy C++11 (nie mówiąc już o C99) czekają w nieskończoność. I cały czas się tłumaczą „brakiem zasobów”. No pewnie — standard nie jest w ich interesie, w ich interesie są kolejne własnościowe rozszerzenia i oparcie nowego API całkowicie na nich.

0
Azarien napisał(a)

Jeżeli nawet Microsoft nie używa C# do tworzenia IE, Office-a czy windowsowego notatnika to dlaczego ktokolwiek inny miałby to robić?!
A dlaczego mielibyśmy robić wszystko jak Microsoft?

Może dlatego, że Microsoft to twórca C#?! Microsoft najwyraźniej ma jakiś powód rozwijając swoje produkty w C++, a nie w C#.

0

jest przyszłością tak mówili
Dlatego nie należy ulegać modzie że coś „jest przyszłością”. Skupmy się na tym co jest teraz.

Microsoft najwyraźniej ma jakiś powód rozwijając swoje produkty w C++, a nie w C#.
Może (niedopowiedziany) przejściowy charakter C# i .Net? Może w dalekiej perspektywie chcą zaprzestać rozwoju? A może po prostu, mając już całego Windowsa w C++, chcą zachować w miarę jednolitość kodu?

0

Microsoft najwyraźniej ma jakiś powód rozwijając swoje produkty w C++, a nie w C#.

Dla mnie powód jest dosyć oczywisty - biznesowo nie jest opłacalne przepisywać miliony linii kodu na C#. To jest też powód, dla którego stare silniki baz danych (relacyjne) są nadal rozwijane w C. Natomiast nowe nierelacyjne to już głównie domena Javy - bo zaczęły powstawać znacznie później.

0

To dlaczego innym go zaleca skoro sam nic w nim nie robi? A ja słyszałem, że Office jest w C#...

0

A ja słyszałem że magicy króliki w kapeluszach hodują... Prawda jest taka że ten temat nadaje się już na flame, bo jak widzę więcej rzucania tu przykładów z każdej strony i w każdą strone można coś rzucić.

A odnośnie pracy: kto mnie zna, wie że nie lubię Javy a mimo wszystko wczoraj przyszło mi w niej napisać kawałek kodu - powód: albo w javie 5 linijek i viola, albo w perlu 50, albo w c++ 150, albo w php ~300 do rozwiązania jednego problemu w pracy. Wybór oczywisty na jave. Ale moja praca jest specyficzna, 70% php, 25% c++, a reszta byle co byle gotowe było szybko.

szczerze uważam że wszystko można napisać we wszystkim, kwestia jak bardzo jest to opłacalne z różnych perspektyw

0

Visual 2010 w jakimś tam stopniu jest w C# albo C++/CLI — bo korzysta z WPF jako GUI — ale to raczej w ramach wycofywania MFC niż chęci przepisywania na .NET-a. Ale już pluginy dla VS pisze się w C++.

0

No dobra to załóżmy, że już ogarniam te C++ na jakimś dobrym poziomie.
No i tutaj jest problem...bo co mam robić dalej? Ciągle pisać jakieś konsolowe kalkulatorki? Jak się mam potem wziąć za jakiś większy projekt? Od czego trzeba zacząć?
Może ktoś to jakoś łopatologiczne wyjaśnić?

0

Naucz się pisać aplikacje wielowątkowe, sieciowe. Zapoznaj się z systemem Linux i programowaniem na tą platformę.

0

Dużo kodować. Starać się rozwiązywać realne problemy. Starać się robić różne rzeczy. Wziąć się za coś większego, ambitniejszego. Uczyć się nowych języków (znając nawet dobrze tylko C++ poznasz bardzo niewielki podzbiór dobrych technik programistycznych). Dołączyć do jakiegoś projektu open source.Wbrew pozorom, jak kumasz trochę programowania, wcale nie jest trudno się wkręcić do takiego projektu. Czytać dużo o programowaniu, czerpać wzorce z dobrych programistów. W pewnym momencie, jeśli będziesz dobry, ludzie sami się będą do Ciebie zgłaszać, że chcą Cię do firmy / projektu.

Z ambitnych rzeczy na Linuksa: naprawić wreszcie obsługę ACPI (tylko 700 stron dokumentacji, standard otwarty). Od kilku lat nie mogą tego porządnie i w 100% zaimplementować.

0

A z jakich materiałów mam przy tym korzystać? Mam ciągle kupować nowe książki?

0

Jeśli już chodzi o flame pomiędzy native, a managed to ja twierdzę, że managed to przyszłość. Wystarczy popatrzeć na daty powstania najczęściej obecnie używanych języków. Tak gdzieś mnie więcej w 1990 zakończyła się era tworzenia nowych języków natywnych, a zaczęła się era tworzenia nowych języków zarządzanych. Według mnie w dziedzinie języków zarządzanych jest jeszcze dużo do zrobienia, m. in:

  • przechowywanie danych z profilowania oraz skompilowanych kawałków kodu pomiędzy wywołaniami maszyn wirtualnych,
  • stworzenie języka hybrydowego tzn na normalnych prawach byłby 100 % zarządzany, a kod ze specjalnymi uprawnieniami mógłby stosować np wskaźniki (w sumie unsafe w C# to coś w ten deseń, choć raczej nie do końca, chyba w C# nie da się napisać np systemowego alokatora pamięci) czy komunikować się bezpośrednio ze sprzętem,
  • stworzenie systemu operacyjnego napisanego w całości w owym hybrydowym języku zarządzanym, także sama maszyna wirtualna powinna być napisana w języku, który wykonuje i mieć możliwość sama siebie skompilować (mówi się na to: self-hosting),
    Na pewno spełnienie wszystkich powyższych wymagań jednocześnie jest cholernie trudnym zadaniem, ale jak już się to zrobi, to będzie z górki.

Jeśli chodzi o naukę języków to C/ C++ na początek może być. Zaznaczam, że uczenie się jednocześnie C++, Javy, C#, PHP, Delphi, etc jest bez sensu bo wszystkie te języki prezentują praktycznie te same paradygmaty. Polecam różnorodność paradygmatów, pobawienie się np: Asemblerem (od niego zaczynałem :P ), Haskellem, Scalą, Prologiem, J/ K/ APL, Smalltalkiem, etc

A z czego się uczyć? Google twym przyjacielem jest. Najważniejsze, żeby się nie spinać o to czy uczy się z czegoś wspaniałego. Każdy kurs/ książka/ etc ma wady, niektóre mają dużo więcej wad niż zalet, wraz ze wzrostem doświadczenia sam będziesz w stanie stwierdzić co jest OK, a co jest "be". Na pewno nie podchodź do żadnego kursu/ książki/ etc bezkrytycznie. Stawiam skrzynkę piwa, że nawet taki Bruce Eckel ma wypaczone poglądy na pewne sprawy.

No i na koniec taka sprawa, żeby nie bać się matmy i algorytmów. Nieznajomość ich może spowodować pomysły typu "kompresja" danych za pomocą haszowania do MD5, idiotyczne sposoby szyfrowania danych, używanie zupełnie nienadających się struktur danych czy algorytmów o kosmicznej złożoności albo np wielkie trudności w opanowaniu sztuki tworzenia silników gier trójwymiarowych.

0

Nie no, jasne, nie ma produktów Microsoftu tworzonych w C#. Taki Sharepoint czy Dynamics to w ogóle jakieś nieistniejące byty. A te wszystkie blogi pracowników M$, w których udzielają porad i opisują swoje boje z kodem C#, który piszą w pracy, to czarny PR sponsorowany przez mleczarnię w Słupsku.
Stowarzyszenie programistów z desktopowymi klapkami na oczach. ;]

0

Co niektórym malkontentom przypominam co napisałem o używaniu C# przez Microsoft.

Java i C# mają inne przeznaczenie. Zamiast do pisania aplikacji użytkowych, lepiej nadają się do pisania aplikacji webowych (ASP.NET MVC 3 rządzi) i biznesowych. Jeżeli nawet Microsoft nie używa C# do tworzenia IE, Office-a czy windowsowego notatnika to dlaczego ktokolwiek inny miałby to robić?!

0

Tak z innej beczki. A czy JVM nie jest napisane w C++ (JVM dla Windows jest napisane w MS Visual C++) ?

0

HotSpot jest napisany w C++. Zamiast pytać można pobrać jego źródła i sobie poczytać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1