Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Java - Jak podnosić poziom?

7hebill 19 Dec 2016 01:11 684 2
  • #1
    7hebill
    Level 11  
    Witam,
    generalnie moja przygoda z programowaniem jest dość skomplikowana. W skrócie zacząłem od HTML po czym odkryłem PHP > SQL > CSS. W szkole uczono mnie C++ ale wtedy jakoś byłem zbyt tępy albo mój nauczyciel nie przemawiał do mnie zrozumiale. Minęło trochę czasu i zainteresowałem się JAVĄ i Androidem. Z Androidem zapoznałem się bardziej wizualnie, nie zagłębiałem się w niego, gdyż większość radziła nauczyć się wpierw JAVY.
    No i uczę się JAVY, a że wcześniej programowałem co nie co w innych językach więc pojęcia takie jak zmienna nie były dla mnie nowością. Jestem powiedzmy na etapie Obiektów, przeszedłem wiele działów część tylko powierzchownie. Dziedziczenie, Rekurencja bla bla bla. Uczyłem się z różnych źródeł równocześnie bo czasami w innych źródłach inne tłumaczenie bardziej do mnie przemawiało. Może nie jestem jakimś mistrzem i nie znam wszystkich klas i 100% umiejętności rozumienia tematu programowania.



    Problem polega na tym, że nie wiem jak sprawdzać swój poziom, jak podnosić poprzeczkę, jak praktycznie wykorzystywać zdobywaną wiedzę (nie mowie tu o programikach do każdego wątku). Generalnie nie wiem dokładnie jak opisać mój problem ale co zacznę wyszukiwać kursów do Javy to wszędzie są tak jakby podstawy. Brakuje mi takiego jak by drugiego tomu, trzeciego tomu.
    Powiedzmy że potrafię posługiwać się obiektami, i stworzyć aplikacje prostą za pomocą klas JFrame i pochodnych od niej. Chciałbym coś więcej, iść dalej i odnaleźć się w tej wielkiej przestrzeni.

    Mam jeszcze jeden problem, czy generalnie istnieje jakiś prosty sposób czytania dokumentacji klas etc. Np sposób na szybkie zapoznanie się z klasą String jej wszystkimi metodami etc. Te dokumentacje są moim zdaniem strasznie napchane wszystkimi informacjami, przesilone. Może ktoś umie programować w Javie i mogłby poświęcić troszeczkę wolnej chwili na mentoring ;)

    Dodam, że uczę się głownie za pomocą ksiązki Java Podstawy Wydanie X Cay S. Horstmann
  • #2
    Kojot89
    Level 9  
    Ja ze swojej strony mogę polecić Effective Java:
    https://www.amazon.com/Effective-Java-2nd-Joshua-Bloch/dp/0321356683

    Nic nie zastąpi również praktyki. Są trzy opcje:
    1. Projekty komercyjne
    2. Rozwój projektów open-source, ja osobiście rozwijałem niektóre moduły springa: https://github.com/spring-projects/spring-framework.
    Najlepiej znajdź jakiś otwarty problem zgłoszony do projektu, postaraj się go rozwiązać, a następnie stwórz Pull Request. Taka forma praktyki ma tę zaletę że podczas oceny Twojego pull request'a inni programiści ocenią Twój kod i coś podpowiedzą.
    3. Praktyka w oparciu o gry programistyczne, np. https://booking.riddles.io/competitions/hack-man/rules
  • #3
    JacekCz
    Level 39  
    Ten J.Bloch jest wydany po polsku (w Helionie), revelacyjna książka, ale z grupy "druga książka|". Do dziś nie wiem, co polecać jako "pierwsza książka"
    Bruce Eckel thinking in Java (jest po polsku starsze wydanie, zapewniam że nie jest "szkodliwe")

    Najcenniejsze w kontakcie z Javą jest pewien gen programowania obiektowego, przy czym chcę podkreślić: wiele ujęć OOP "pierwszej fali" z Jabłkiem które dziedziczy z Owoc nie jest rozwijające, daje pewne wyobrażenia, które potem blokują. Charakterystyczne bo mówiły o obiekcie "rzecz" a o metodzie "czynność". Tymczasem w nowoczesnym OOP obiekt to m.in. "funkcjonalność", liczne wzorce projektowe traktują cały obiekt/klasę czynnościowo (a już całkiem fatalne mówienie o obiekcie z C/C++ "obszar pamięci")
    Np stare ujęcie zupełnie nie umiało przedstawić po co interfejs, i co to programowanie wg interfejsu. Poznasz to sam, stare kursy wyżej poziomu Owoców i jabłek nie wyskakują
    Z kolei książki dla zawodowych programistów nie cofają się do elementarza.
    Jeśli Blocha, Eckela, Horstmana w ogóle przeczytasz, (tzn czy nie będzie za trudne z braku czegoś "pierwszego") to przeczytasz na pewno z korzyścią. Nie ma żadnego problemu, że po polsku jest np stare wydanie np opierające się na Javie 7. Nie ma z tym żadnego problemu, tyle doczytasz po angielsku z netu.


    Świat Javy, wspólnota, ekosystem może dać bardzo fajny rozwój programisty, niekoniecznie na zawsze musi zostać do emerytury programistą javowskim.
    Np mimo że język C# jest bardzo podobny, ja oceniam że realnie mniej przekazuje programiście prawidłowych wzorców (bardziej czyni go konsumentem gotowców)

    PS dyskutowałbym o Springu. Ma wiele krytycznych opinii, jak overdesign, zastępowania standardów (rywalizowanie z nimi) i ogólny tłuszczyk. Ktos kto chciał jakiś drobiazg ze Springa, budzi się za pół roku z 50MB JAR-ów. Z niego nie da się wydobyć nic małego, be zależności, aby dydaktycznie się z zapoznać. Przyznam się, udupiłem na jakiś czas swój projekt w Springa (ale z tego zejdę), bo taki pożyteczny drobiazg: nazwane a nie pozycyjne parametry JDBC. Dla jednej funkcjonalności jest dependencies na 20MB. Biblioteka miała swoją młodość jak standardy javy kulały i zastępowała swoimi, myślę że już nie jest jej czas, angażowanie Springa w nowe projekty tzreba dobrze przemyśleć.


    Mam swoje perełki dobrze zaprojektowanych obiektowo bibliotek, ale to zależy co kogo interesuje.

    Bo jest wiele kodu niby pisanego w klasach/obiektach, ale tak naprawdę nie obiektowego. (Większość www spod sztandarów request+session+JSP). Tego się nie powinno pokazywać młodym programistom, bo zrobi im krzywdę.