Nauka javy przez programiste

0

Witam. Studiuję informatykę i jestem po kilku pierwszych zajęciach z javy, stąd nasunęło mi się kilka pytań.

  1. Jestem na zaawansowanym poziomie C++ i sądze, że ten język niewiele może mnie już zaskoczyć. Czy komuś, kto zna więcej niż jeden języków programowania zdarzają się sytuacje, w których owe języki mu się mylą? Jednocześnie - znam tylko C/C++.
  2. java wydaje się językiem bardzo wysokopoziomowym w porównaniu do C. Czasem mam wrażenie, że język ten traktuje programiste jako częsciowego idiote. Czy w związku z tym funkcjonalność javy jest bardzo obcięta? Czy bywają sytuacje w których myślicie "musze zrobić to w javie, właściwie nie wiem czy sie da, ale w C++ na pewno by się dało"? I nie mówię tutaj o kompletności Turinga, bo brainfuck też takową ceche posiada...
  3. Jak już wspominałem - jestem zaawansowanym użytkownikiem C++. Czy dla kogoś takiego istnieją przyjemne książki do javy? Wiem, że na tym forum na pewno gdzieś jest o tym temat, ale boje się, że otworze pierwsze strony i znajdę wyjaśnienie różnicy między do..while a while, a na kolejnych stronach będe czytał dlaczego porównanie to == i dlaczego nie może być jednego znaku równości.
0

"jestem po kilku pierwszych zajęciach z javy, stąd nasunęło mi się kilka pytań.", "Jestem na zaawansowanym poziomie C++ i sądze, że ten język niewiele może mnie już zaskoczyć."

Uprzedzaj przed takimi tekstami, prawie z krzesła spadłem ;)

"Jak już wspominałem - jestem zaawansowanym użytkownikiem C++.", "Jednocześnie - znam tylko C/C++"

Proszę Cię!

10
  1. Nie.
  2. Nie, wręcz przeciwnie. W javie myślę sobie "na pewno jest do tego biblioteka", po 5 sekundach z google ją znajduje, po kolejnych 5 dodaje linijkę xmla w konfiguracji mavena i voila, mam już działającą bibliotekę. W C najpewniej bym jej nie znalazł, a jeśli juz to 3 dni zajęłoby mi skompilowanie i dołączenie do projektu a i tak byłaby na przykład "tylko dla 17-bitowych linuxów, działających na procesorach risc, tylko jeśli podłączony jest monochromatyczny monitor 13" o bursztynowej barwie" ;)
  3. A po co ci książka? Tutoriale Oracle powinny ci starczyć.
0

Nie rozumiem Twojego postu. Czy niemożliwa jest znajomość tylko jednego języka programowania? Czy żeby znać dobrze C++ trzeba równocześnie znać jave?

5

autorze watku

nie jestes zaawansowany w c++. Gwarantuje Ci to. Skad to wiem? Bo gdybys byl, potrafilbys korzystac z googla. Jakbys potrafil korzystac z googla to nie byloby tego tematu na samym poczatku (bo bys pierwsze co zrobil to sprawdzil w dokumentacji...)

Przeczytales pewnie grebosza/prate i myslisz ze juz znasz wszystko z c++.
Nie, nie znasz. Te ksiazki to sa podstawy

W programowaniu jest normalne znac kilka jezykow programowania. Czy sie myla?
Znasz angielski i polski, czy Ci sie myla?

I pamietaj. NIE potrafisz c++ w zaawansowanym stopniu. Jestes na etapie w ktorym myslisz ze wszystko wiesz, teraz przyjdzie okres czasu ze bedzie Ci sie wydawac ze coraz mniej i mniej wiesz ;)
Wiem bo tam bylem... kazdy z nas byl ;)

Zobacz sobie tutorial z oracle
http://docs.oracle.com/javase/tutorial/

0

W porównaniu do C++, Java jest językiem dziecinie prostym, dlatego książki są zbędne. Tak jak zasugerował @Shalom tutorial na stronie oracla w zupełności starczy.

W skrajnych przypadkach możesz się w Javie posiłkować kodem natywnym, więc w zasadzie nie ma rzeczy których nie zrobisz w niej a w C++ już tak.

I na koniec o bibliotekach. Java jest prostsza, więc trzeba reprezentować dużo niższy poziom umiejętności do napisania dobrej biblioteki niż do C++. Dodatkowo raz napisana biblioteka może być użyta w wielu systemach bez zmian, tak jak to jest dla języków kompilowanych do kodu natywnego. A to oznacza że w sieci jest tego masa i jeżeli masz jakiś pomysł lub potrzebę to prawie na pewno już to ktoś zrobił.

0
nieznajomy112 napisał(a):

Witam. Studiuję informatykę i jestem po kilku pierwszych zajęciach z javy, stąd nasunęło mi się kilka pytań.

  1. Jestem na zaawansowanym poziomie C++ i sądze, że ten język niewiele może mnie już zaskoczyć. Czy komuś, kto zna więcej niż jeden języków programowania zdarzają się sytuacje, w których owe języki mu się mylą? Jednocześnie - znam tylko C/C++.

Oczywiście. Znam dla przykładu C++, C#, JAVA ale również PASCAL. Czasami jak coś pisałem, zdarzało mi się mylić operatory przypisania (= zamiast :=) , porównania w if jak coś pisałem w pascalu a wcześniej dużo w C#. Ale te pomyłki wynikały jak mi się wydaje z jakiegoś przyzwyczajenia czy nie wiem jak to określić. To się może zdarzyć jak znasz kilka języków o różnych składniach a do jednego się że tak powiem bardziej przyzwyczaisz i więcej piszesz.

  1. java wydaje się językiem bardzo wysokopoziomowym w porównaniu do C. Czasem mam wrażenie, że język ten traktuje programiste jako częsciowego idiote. Czy w związku z tym funkcjonalność javy jest bardzo obcięta? Czy bywają sytuacje w których myślicie "musze zrobić to w javie, właściwie nie wiem czy sie da, ale w C++ na pewno by się dało"? I nie mówię tutaj o kompletności Turinga, bo brainfuck też takową ceche posiada...

To tylko dowodzi że nie masz rozeznania. Główne założenie JAVA: ma się uruchamiać wszędzie niezależnie od platformy. Na Windows, Linux bez rekompilacji. Zaś w C++ kompilujesz aplikację np. pod Windows i na Linux (no chyba że ma emu) już nie odpalisz i vice versa. Poza tym JAVA ma jako język programowania wiele ułatwień, np. GC, gdzie nie musisz już martwić się o zwalnianie obiektów jak w C++, z tego co mi wiadomo, to właśnie w JAVA jest tak zaprojektowana żeby uniknąć wiele błędów z C++.

Ogólnie to w C++ się pisze np. aplikacje desktopowe, gry albo jakieś biblioteki, w JAVA też takie możesz pisać a to wcale nie jest tak banalne jakbyś chciał wiedzieć i nie chodzi tu tylko o składnię czy dostępne biblioteki.

5
krzysiek050 napisał(a):

W porównaniu do C++, Java jest językiem dziecinie prostym, dlatego książki są zbędne.

A nie wpadłeś na to że jest .... po prostu normalna ? za to c++ jest jakimś wypłoszem, kierował bym się w te rejony a nie w dywagacje na temat tego, dlaczego durne korporacje piszę w dziecinnej javie a nie hiroł c++ (w którym koszty wzrosły by im tylko 10krotnie).

1
niezdecydowany napisał(a):
krzysiek050 napisał(a):

W porównaniu do C++, Java jest językiem dziecinie prostym, dlatego książki są zbędne.

A nie wpadłeś na to że jest .... po prostu normalna ? za to c++ jest jakimś wypłoszem, kierował bym się w te rejony a nie w dywagacje na temat tego, dlaczego durne korporacje piszę w dziecinnej javie a nie hiroł c++ (w którym koszty wzrosły by im tylko 10krotnie).

Java też nie jest do końca "normalna". Ma trochę pozostałości z C (a trochę "a zróbmy na odwrót"):

  • brak unsigned: w założeniu miało być bezpieczniej, w efekcie niektóre algorytmy trzeba robić na okrętkę
  • "autoboxing" i co gorsze - kontenery nie dla prymitywów (naprawiane bibliotekami zewnętrznymi - np. Guava)
  • "==" i Yoda conditions
  • niby nie ma wskaźników, ale porównanie stringów nie działa. OK, ale dlaczego StringUtils.Equals nie jest w standardzie?

A co do oryginalnego pytania, to od siebie polecę (w trakcie pisania):
http://www.foundbit.com/en/resources/languages/java/articles/learning-steps-java.html

Wersja po polsku w przygotowaniu...

Kursy video po polsku:
Język:
Spring:

0
Shalom napisał(a):
  1. A po co ci książka? Tutoriale Oracle powinny ci starczyć.
    No i po przeczytaniu poniższego on będzie twierdził, że jest zaawansowanym użytkownikiem generics.
    http://docs.oracle.com/javase/tutorial/extra/generics/index.html

A można też przeczytać to
http://shop.oreilly.com/product/9780596527754.do
i wiedzieć co to jest 'get and put principle' i np. kiedy zdarza się generic array creation warning (nie error).

0

W 2006 nie napisali, a tym bardziej w 2004, z kiedy pochodzi rozdział Java tutoriala o generics. Oto on w nieco innej formie:
http://www.oracle.com/technetwork/java/javase/generics-tutorial-159168.pdf
A czytając stare książki, można się dowiedzieć, nie tylko jak coś zrobiono, ale i dlaczego. ;-)

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