Nauka javy przez programiste

Odpowiedz Nowy wątek
2015-02-24 13:33
nieznajomy112
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.

Pozostało 580 znaków

2015-02-24 13:39
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ę!

Pozostało 580 znaków

2015-02-24 13:40
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ć.

Masz problem? Pisz na forum, nie do mnie. Nie masz problemów? Kup komputer...
edytowany 1x, ostatnio: Shalom, 2015-02-24 13:40
Pokaż pozostałe 6 komentarzy
@spartanPAGE: pisałeś coś cross-platformowego? Używałeś CI? Integrowałeś projekty korzystające z tych samych bibliotek ale w różnych wersjach + te projekty nie miały wspólnego systemu budowania (np. via cmake)? - satirev 2015-02-24 19:53
Ugh, mówię to powierzchownie, gdy nie używamy żadnego z wymienionych wyżej przeze mnie narzędzi. Bez takiego mavena też raczej byłby z tym problem :P - spartanPAGE 2015-02-24 19:55
@spartanPAGE tylko że maven jest ;) tak samo jak ivy czy gradle, żeby wymienic tylko te najpopularniejsze :) - Shalom 2015-02-24 20:10
:- DDDDD (Biblioteka C) - Endrju 2015-02-24 20:14
A 4p bash cały czas nie działa i taka perełka zniknie w czeluściach :( - Shalom 2015-02-24 20:45

Pozostało 580 znaków

2015-02-24 13:40
nieznajomy112
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?

Jestem więcej niż na 100% pewny, że tylko uważasz się za znawcę. Inna osoba nie zadawałaby takich pytań; Poza tym bez innych języków ciężko o inne rozwiązania, a to przekłada się na bardziej nazistowski i g*wniany kod. - spartanPAGE 2015-02-24 13:44
"Jestem na zaawansowanym poziomie C++ i sądze, że ten język niewiele może mnie już zaskoczyć" - nawet nie wiesz jak bardzo się mylisz ;) - msm 2015-02-24 13:45

Pozostało 580 znaków

2015-02-24 13:45
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/

edytowany 1x, ostatnio: fasadin, 2015-02-24 13:46
mi się czasem mylą, ale częściej zapominam słów/zwrotów w polskim i muszę przeplatać :P - caer 2015-02-24 16:42

Pozostało 580 znaków

2015-02-24 13:49
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ł.

Pokaż pozostałe 5 komentarzy
Ok, no niech będzie że sztuką dla sztuki się w C da a w Javie nie. Ale bardziej chodziło mi o praktyczny sens :). - krzysiek050 2015-02-24 14:05
Ergo: chcesz się bawić - pisz w C++, chcesz programować - pisz w Javie. - somekind 2015-02-24 15:19
Przecież helloworld w Javie nie wymaga ani jednego importu. - caer 2015-02-24 16:44
chodzilo ze nie mozna uzywac biblotek. Skoro masz System to znaczy ze masz bibloteke ;) - fasadin 2015-02-24 16:46
@fasadin, nic nie musisz w Javie importować by napisać helloworld. - bogdans 2015-02-24 18:05

Pozostało 580 znaków

2015-02-24 17:49
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.

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...

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.

move semantic, smart pointers tiaa martwienie się o zwalnianie obiektów... - spartanPAGE 2015-02-24 17:54
Zaraz się okaże, że w C++ jest refleksja, generyki, możliwość generowania kodu w locie, a nawet typy dynamiczne... - somekind 2015-02-24 18:43
@somekind Jak najbardziej. Ale później dostajesz kubeł zimnej wody, słyszysz "noszenie wszędzie naokoło kompilatora jest bez sensu!", a później siadasz i skupiasz się na tym, by architektura skupiała się na zapewnianiu i obliczaniu wszystkiego w czasie kompilacji. Ot, co język to obyczaj - spartanPAGE 2015-02-24 18:52
@spartanPAGE a no coś jest też nawet i pod DELPHI: http://www.swissdelphicenter.ch/torry/showcode.php?id=2192 Zobaczę jak to będzie wyglądało w Lazarusie bo co do C++ to nie mam akurat IDE. - drorat1 2015-02-25 15:48

Pozostało 580 znaków

2015-02-24 18:51
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).


"Perhaps surprisingly, concurrent programming isn’t so much about threads or
locks, any more than civil engineering is about rivets and I-beams."
Ale jakie to ma znaczenie? Ja stwierdziłem że programista który zna dobrze C++ pochłonie javę na śniadanie na samym tutorialu i obejdzie się bez kupowania książek. - krzysiek050 2015-02-25 15:55
no ok, więc następnym razem jak pijesz duże ilości alkoholu po prostu nie pisz na forum, bo robisz z siebie [tutaj w miarę wulgarne słowo], pisząc takie bzdury. - niezdecydowany 2015-02-25 18:42
Nie wiem do czego pijesz, ale post pisałem na trzeźwo i nie uważam że jest bzdurny. Poczytaj ze zrozumieniem - krzysiek050 2015-02-25 19:05
nie przeczytam bo nie lubię bajek - niezdecydowany 2015-02-25 19:12
Może zacznij własnie od nich. Są najłatwiejsze :). - krzysiek050 2015-02-25 19:23

Pozostało 580 znaków

2015-02-25 19:58
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/re[...]cles/learning-steps-java.html

Wersja po polsku w przygotowaniu...

Kursy video po polsku:
Język: https://www.youtube.com/user/[...]w=0&flow=grid&sort=da
Spring: https://www.youtube.com/playl[...]l_1LV_SQXD1_HHpKb-KRd4w1r6yzk


Szacuje się, że w Polsce brakuje 50 tys. programistów
edytowany 1x, ostatnio: vpiotr, 2015-02-25 20:10

Pozostało 580 znaków

2015-02-25 20:30
ajp
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[...]ial/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).

"generic array creation warning" a napisali tam w 2006 że w jave 7 to naprawili ? - niezdecydowany 2015-02-25 20:41

Pozostało 580 znaków

2015-02-25 21:28
ajp
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/technet[...]/generics-tutorial-159168.pdf
A czytając stare książki, można się dowiedzieć, nie tylko jak coś zrobiono, ale i dlaczego. ;-)

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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