nauka javy

0

chyba dobry dzial wybralem
mam pytanie odnosnie nauki programowania
pewnie napiszecie ze java na poczatek to jak z motyka na slonce
musze/chce jednak od razu nauczyc sie javy
co polecacie?? ksiazki?
powaznie zastanawiam sie nad video kursem, wszystko elegancko pokazane i wytlumaczone
co o tym sadzicie?? jakies inne sugestie?

0

Java do nauki na początek jest średnia, ale dzięki temu, że ma kilka myków nie musisz od razu pamiętać o wszystkim. Na początek poczytaj na Podstawy Javy później czytaj tutoriale w sieci i jak znajdziesz to HeadFirst Java. Książka jest dziwna, ale HF dość dobrze wtłaczają wiedzę do głowy.

0
lonerpl napisał(a)

pewnie napiszecie ze java na poczatek to jak z motyka na slonce

cooo ? serio jest gdzieś takie przekonanie ? przecież to jest język jeszcze wyższego rzędu niż język wysokiego rzędu zwykł być :P czyli innymi słowy programowanie proste jak kij od miotły
zresztą kto w ogóle powiedział że się zaczyna od prostych języków :| powinno się zacząć i skończyć na języku w którym naprawdę potrzebujemy programować chociaż sam znam 5 języków i właśnie poznaję kolejny ale ja nie mam dziewczyny !

0

dobra juz sie zaparlem na ta java:P
tylko zastanawiam sie czy video kursy sa warte zalatwiania
i tez nie mam dziewczyny [browar]

0

chcesz je kupować ? youtube to nie tylko głupie / śmieszne filmiki ale też ogromny zbiór profesjonalnych tutoriali na dosłownie każdy temat - samemu się przekonaj czy warto
moim zdaniem - nie wiem :P możesz spróbować, na pewno nauka będzie ciekawsza niż przy lekturze takiego zwykłego kursu

0
lonerpl napisał(a)

tylko zastanawiam sie czy video kursy sa warte zalatwiania

Nie polecałbym videotutoriali - dla mnie to zupełnie bez sensu, szkoda czasu. Do tego jeszcze płacić? Phi.

Jeśli nie potrafisz zrozumieć co ktoś napisał, to może warto się zastanowić, czy programowanie jest dla Ciebie ;)

0

wiesz jest czasem coś takiego że autor nie potrafi czegoś wytłumaczyć
często spotykam się z czymś co zrozumieć da się tylko jeśli to już umiemy
z drugiej strony też nie raz autor samemu czegoś pewnie długo sam nie mógł zrozumieć i poświęca w swojej książce / kursie kilka rozdziałów jednej prostej rzeczy, jak np się natrafiłem na kurs w którym wszystko było wytłumaczone w góra 5 zdaniach, poza wskaźnikami które autor wałkował przez 10 stron dając 1000 różnych przykładów chociaż każdy normalny człowiek zakapował o co chodzi po drugim :o
albo czytałem opis mikroprocesora gdzie autor przez 30 stron jak debilom procesor przyrównywał do urzędnika i w ogóle stosował jakieś kosmiczne przeniesienia przez co moim zdaniem tylko wszystko zagmatwał zamiast uprościć :|

0

ok, ale chyba zgodzisz się, że videotutorial na podstawy programowania mija się raczej z celem?

wiesz jest czasem coś takiego że autor nie potrafi czegoś wytłumaczyć

  1. można wziąć więc inny tekst (tutorial, kurs, książkę, cokolwiek; nieważne)
  2. a videotutorial też niekoniecznie musi łapatologicznie wytłumaczyć
0

ciesze sie przynajmniej ze mnie nikt nie wysmial ze sie rzucam na jave od razu(no moze troche phpa znam)

0

@lonerpl: php akurat jest badrdzo złym wstępem do programowania ;)

jeżeli chodzi o jave, to sam dopiero zaczynam, ale już mi się podoba właśnie przez jej niesamowitą prostotę. Niestety z tego, co widzę, to ma masakrycznie zaimplementowany polimorfizm... No i nie zgadzam się ze stwierdzeniem, że java jest tak wysokopoziomowa, że bardziej się nie da - mamy choćby Haskella lub Prolog

0

@tomkiewicz:
i z czego sie uczysz? ksiazki?
musze dokladnie przejzec tematy o literaturze nt javy

0

ja akurat mam kurs na uczelni, ale równie dobrze mógłby to być jakiś kurs z internetu, byle dobrze zorientowany obiektowo. Ważne, żeby nauczyć się wykorzystywać jak najciekawsze konstrukcje (interfejsy, paczki itp. zamiast prostego klepania "żeby działało"). Chociaż z drugiej strony jeżeli się ma wymagającego ćwiczeniowca, to dużo szybciej się poznaje ogół języka

0

Czesc. Ja polecam ksiazki Core Java, aktualnie przegladam wydanie 8. i jest niezla. Head First tez dobra opcja, nieco dziwna, ale ma w sobie cos ze nauka idzie jak po masle.
@tomkiewicz: co znaczy okreslenie "masakrycznie zaimplementowany polimorfizm"?
Co do wysokopoziomowosci, mamy Jythona czyli interpreter pythona w javie ;-)

0

z tego, co już się dowiedziałem, polimorfizm w javie jest oszukany, brzydko i na szybko zaimplementowany i ogólnie fe. Prawdziwy polimorfizm masz w haskellu.

a jpythonem mnie jakoś nie do końca przekonujesz ;)

0

Ja bym tam nie porównywał polimorfizmu w językach imperatywnych a w językach funkcyjnych. To są 2 rózne światy a polimorfizm w Javie raczej nie wiele się różni od tego z cpp.

0

co to to na pewno nie - w Javie (z tego co wiem, poprawcie jeżeli się mylę) polimorfizm jest "załatwiony" przez rzutowanie na klasę Object. W cpp masz to trochę ładniej zrobione przez szablony, co tak na serio polimorfizmem nie jest, tylko eleganckim i automatycznym kopiuj-wklej.

Argument, że funkcyjne a imperatywne to dwa różne światy imho chybiony - to, że imperatywne są pod tym względem lekko przestarzałe, nie znaczy, że się nie da.

0

@tomkiewicz, W Javie masz dziedziczenie ze wspólnego punktu czyli właśnie klasy Object. Dodatkowo dziedziczyć można tylko z jednego rodzica a nie tak jak w cpp z wielu lub żadnego. Mała różnica w podejściu do tematu.

0

co to to na pewno nie - w Javie (z tego co wiem, poprawcie jeżeli się mylę) polimorfizm jest "załatwiony" przez rzutowanie na klasę Object. W cpp masz to trochę ładniej zrobione przez szablony, co tak na serio polimorfizmem nie jest, tylko eleganckim i automatycznym kopiuj-wklej.

To o czym mówisz to polimorfizm statyczny. W C++ też możesz sobie zrobić obiekt, po którym będą dziedziczyły wszystkie klasy. W Javie taki obiekt po prostu domyślne istnieje.

Argument, że funkcyjne a imperatywne to dwa różne światy imho chybiony - to, że imperatywne są pod tym względem lekko przestarzałe, nie znaczy, że się nie da.

Może i się da tylko czy to dalej będzie podejście imperatywne ?

0

ok, w cpp można zrobić jeden obiekt, po którym się dziedziczy, ale podstawowe pytanie - czy tak się robi? Mamy przecież (troszkę) lepsze szablony. Jak mamy w ten (javowy) sposób zrobiony polimorfizm, tracimy kontrolę nad typami - już lepiej skorzystać z tych nieszczęsnych szablonów (ale w javie nie jest to możliwe z powodu struktury skompilowanych programów)...

co do implementacji polimorfizmu w językach imperatywnych, to nie bardzo widzę istotę problemu - przecież nawet w Haskellu można pisać imperatywnie (chociaż imho monady to cheatowanie, ale legalne, bo poparte teorią)

0

ok, w cpp można zrobić jeden obiekt, po którym się dziedziczy, ale podstawowe pytanie - czy tak się robi? Mamy przecież (troszkę) lepsze szablony. Jak mamy w ten (javowy) sposób zrobiony polimorfizm, tracimy kontrolę nad typami - już lepiej skorzystać z tych nieszczęsnych szablonów (ale w javie nie jest to możliwe z powodu struktury skompilowanych programów)...

Owszem tak się robi. A szablony do polimorfizmu nie są bynajmniej lepsze. Statyczny polimorfizm stosuje się tylko wtedy gdy jest potrzebna wydajność lub gdy nie ma innego wyjścia (np. polimorfizm przy klasach biblioteki standardowej). Polimorfizm na szablonach jest o tyle upierdliwy, że Klasa<typ1> to już nie ten sam typ co Klasa<typ2>.

co do implementacji polimorfizmu w językach imperatywnych, to nie bardzo widzę istotę problemu - przecież nawet w Haskellu można pisać imperatywnie (chociaż imho monady to cheatowanie, ale legalne, bo poparte teorią)

W przeciwną stronę też można - chociażby klasy anonimowe javy zamiast funkcji lambda.
Tu raczej chodzi o proporcje.

0

no i zgrabnie ominąłeś sedno mojej uwagi :> Niby-polimorfizm javowy polega na rzutowaniu "cholera-wie-czego" na "cokolwiek" i na odwrót. To ma być lepsze?

jasne, że można w języku imperatywnym zaimplementować funkcyjny - ghci z powietrza się nie wziął. Nie widzę jednak ścisłego związku polimorfizmu z projektowaniem funkcyjnym/imperatywnym. Tak samo jak nie widzę związku między xhtml a layoutach opartych o divki - jedne częściej występują w drugich niż w trzecich, nic więcej.

0

no i zgrabnie ominąłeś sedno mojej uwagi Niby-polimorfizm javowy polega na rzutowaniu "cholera-wie-czego" na "cokolwiek" i na odwrót. To ma być lepsze?

Sorry ale widać, że ani w Cpp ani w Javie nie programowałeś niczego poważniejszego. A dopiero w praktyce wychodzi, że polimorfizm dynamiczny jest wygodniejszy od statycznego. Poza tym wydaj się, że nie za bardzo kumasz o co chodzi w polimorfizmie jako takim. To, że nie musisz wiedzieć z jakim naprawde typem masz do czynienia byle by spełniał odpowiednie wymagania jest właśnie sednem polimorfizmu.
Poza tym gdzie w Javie musisz rzutować używając polimorfizmu ? Jak masz hierarchię klas, to trzeba rzutować w dół ale wtedy świadomie rezygnujesz z polimorfizmu.

0

Zainteresowaliscie mnie. W stwierdzeniu "zaimplementowanie polimorfizmu" nie sadzilem ze chodzi o jakies szablony, "rzutowanie czegostam na costam". Spodziewalem sie jakiegos bardziej technicznego opisu.
W C++ polimorfizm zaimplementowany jest mniej wiecej tak, ze tworzona jest tablica funkcji klas w danej hierarchii, i znajduja sie w niej definicje / jakies wskazniki na virtualne funkcje. Obiekty w takiej hoerarchii maja jakis wskaznik do tej tablicy. W runtimie, gdy wywolywana jest metoda oznaczona na obiekcie przypisanym do jakiejs referencji, ktora jest virtual, to nie wykonywane jest statyczne wiazanie podczas kompilacji, a sprawdzana jest wlasciwa definicja metody w tablicy, i wywolywana. Jest tam pewien narzut czasowy, dlatego domyslnie w c++ metody nie sa wirtualne.
Nie wiem co maja szablony w c++ do polimorfizmu, to jest przeciez mechanizm ktory w pozwala pisac generyczny kod, przy czym jesli ten sam szablon jest wykorzystany z dwoma roznymi zestawami parametrow typowych, tworzone sa zupelnie oddzielne definicje klas, nie bedace w zaden sposob ze soba powiazane (poza tym ze ten sam szablon zostal wykorzystany). Stad okreslenie "template code bloat". W Javie generiki polegaja na czyms zupelnie innym, tam sa relacje typu klasa - nadklasa (np List<T> jest nadklasa ArrayList<T>, przy czym musza zostac rowniez spelnione specjalne zaleznosci miedzy parametrami typowymi aby mozna bylo wykonac przypisania itp - bleh), ale nie o to chodzi.
Co implementacji polimorfizmu w Javie to nie wiem jak jest, nie wiem czy jest masakryczny czy tez nie, dlatego tez zadalem pytanie tomkiewiczowi.
Pozdrawiam.

0

Ok, poszukalem poczytalem i dowiedzialem sie o polimorfizmie statycznym i szablonach, moj blad powyzej, przepraszam.
Co nie zmienia faktu, ze nie rozumiem swtierdzenia "polimorfizm w javie jest masakrycznie zaimplementowany", a pozniej tlumaczenia ze jest "ogolnie fe".

0

Chodzi o to, że polimorfizm dynamiczny można zaumulować szablonami. To jest właśnie polimorfizm statyczny. Przykład:
class Bazowa {
virtual void metoda() { ... }
};

class Pochodna : public Bazowa {
void metod() { ... }
};

class Klasa {
private:
Bazowa* m_bazowa;
public:
Klasa(Bazowa bazowa) : m_bazowa(bazowa) {
m_bazowa->metoda();
}
}

Klasę Klasa można zaemulować szablonem:
template<typename T> class Klasa2 {
private:
T* m_bazowa;
Klasa2(){
m_bazowa = new T();
m_bazowa->metoda();
}
}

Klasa k (new Pochodna());
Klasa2<Pochodna> k2;

W obu przypadkach zostanie wywołana metoda klasy pochodnej. Klasa2 będzie działać szybciej bo nie trzeba decydować w runtime czy wywolac funkcje klasy pochodnej czy bazowej. Za to wersja klasy z polimorfizmem dynamicznym jest wygodniejsza bo każda instancja tej klasy należy do tego samego typu, pomimo tego, że być może zostały przekazane do kontruktora obiekty różnych typów.

//Byleś szybszy ;) ale już nie będe kasował postu.

0
rnd napisał(a)

Sorry ale widać, że ani w Cpp ani w Javie nie programowałeś niczego poważniejszego

a nieee, bo ty nie umiesz... i nigdy nie programowałeś niczego poważnego w haskellu. A poiza tym idę się poskarżyć mamie! Będziemy się tak licytować? Zabawne są takie spostrzeżenia, "nigdy nic nie napisałeś poważnego" :D

Nie wiem, czy zauważyłeś, wspomniałem o tym, że javy dopiero się uczę. Wystarczy mi tego jednak na tyle, że widzę, że polimorfizm z javy nie dorasta do pięt temu z haskella i jakbyś rzeczywiście cokolwiek w nim napisał, wiedziałbyś co to jest prawdziwy polimorfizm...

0
tomkiewicz napisał(a)

no i zgrabnie ominąłeś sedno mojej uwagi :> Niby-polimorfizm javowy polega na rzutowaniu "cholera-wie-czego" na "cokolwiek" i na odwrót. To ma być lepsze?

Takiej głupoty w życiu nie słyszałem. W Javie bardzo dokładnie wiadomo co masz i na co rzutujesz ponieważ możesz dziedziczyć tylko z jednej klasy lub domyślnie z klasy Object. Oznacza to, że masz bardzo ścisłą strukturę klas i nie ma gdzie uciec na bok.

0

Wystarczy mi tego jednak na tyle, że widzę, że polimorfizm z javy nie dorasta do pięt temu z haskella i jakbyś rzeczywiście cokolwiek w nim napisał, wiedziałbyś co to jest prawdziwy polimorfizm...

Doucz się człowieku, potem dopiero można prowadzić dyskusje na poziomie. Tyle wyniosłeś ze swojego wykładu, że nawet nie jaka jest idea polimorifzmu.

0

A co to "prawdziwy polimorfizm"? To pojecie (polimorfizm) ma swoja definicje, i tyle. Java ma prawdziwy, cpp tez, moze i heskell, nie wiem, nie wiem o tym nic ponad to co przeczytalem w tym poscie.

Poza tym, troche watek sie wykoleil :-)

0

widze ze sie fajnie bawicie ;-P
czy ktokolwiek uczyl sie jakiesgos jezyka z video kursow? jak wrazenia??

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