Dylemat z wyborem języka

0

Witam,

Od jakiegoś roku hobbystycznie uczyłem się języka C++ - poświęcałem każdą wolną chwilę, ale nie miałem niestety go sporo. C++ proceduralnie ogarniam na średnim poziomie. Doszedłem do rozdziału gdzie są używane wskaźniki z funkcjami w książce Stephena Pratha - Szkoła programowania. Jest to dla mnie trudny temat, w sumie trochę zostałem "nakręcony" przez znajomych, że sam temat wskaźników jest trudny. Odpuściłem sobie niedawno C++ i kupiłem książkę do Javy (wolę uczyć się z książek), a dokładnie "Java - Podstawy" bodjaże z O'Reily. Nie powiem, na sam początek trochę sprawa mi problem ze zrozumieniem Javy, ale czym więcej przykładów tym lepiej.

Ostatnio wpadłem na pomysł żeby jak na razie odpuścić te dwa języki i zacząć od pisania stron.

Pytanie kieruje do was - jaki kierunek nauki wybrać? Czy lepiej przemóc się i wałkować nawet miesiąc czasu temat wskaźników żeby je zrozumieć czy raczej iść w tym kierunku jakim chcę? Powiem szczerze, że bardziej ciągnie mnie do Javy z głupiego powodu - tam nie ma wskaźników.

Z góry dziękuje za wyrozumiałość.

0

i zacząć od pisania stron.

Co znaczy według ciebie pisanie stron ? ciupanie html'a i css'a czy tworzenia aplikacji webowych(ruby,java,pajton)

1

Nie wiem co trudnego jest we wskaźnikach. W zasadzie dobra, jest to trochę mylące gdy masz np. wskaźnik na wskaźnik, czy tego typu rzeczy.

Ale sama koncepcja wskaźników jest prosta jak słońce. Masz adres w pamięci, który jest liczbą np. 198, i wskaźnik się odwołuje do tej komórki pamięci, która jest pod adresem 198 (pomijając techniczne szczegóły adresacji, bo możliwe, że adres "198" by nie miał sensu akurat). Resztę obsługuje system operacyjny.

Powiem szczerze, że bardziej ciągnie mnie do Javy z głupiego powodu - tam nie ma wskaźników.

Ale są referencje. Są to rzeczy dość pokrewne i wskaźniki nie są wcale trudniejsze do zrozumienia od referencji. Więc: jeśli nie rozumiesz wskaźników, to nie zrozumiesz na czym polega referencja.

Są również klasy, obiekty, to też są bardziej złożone zagadnienia od wskaźników.

Pytanie kieruje do was - jaki kierunek nauki wybrać? Czy lepiej przemóc się i wałkować nawet miesiąc czasu temat wskaźników żeby je zrozumieć czy raczej iść w tym kierunku jakim chcę?

Lepiej iść w kierunku, jakim chcesz. Z drugiej strony, jeśli nie potrafisz czegoś zrozumieć i już chcesz zmieniać język, to gwarantuję ci, że jakikolwiek język byś wziął, zawsze będzie tam jakieś trudne zagadnienie.

0
LukeJL napisał(a):

Ale są referencje. Są to rzeczy dość pokrewne i wskaźniki nie są wcale trudniejsze do zrozumienia od referencji.

Referencja to referencja, pewna koncepcja będąca jakby przeciwnością bezpośredniej wartości. A to, że czasami implementuje się je za pomocą wskaźników, to szczegół.

Więc: jeśli nie rozumiesz wskaźników, to nie zrozumiesz na czym polega referencja.

A jeśli nie rozumiesz cyklu Carnota, nie zrozumiesz jak prowadzić samochód.

0

Ile razy można zakładać ten sam/podobny temat?

Musisz zadać sobie pytanie, co Cię tak naprawdę interesuje. Akurat języki, które podajesz są bardzo odrębne w zastosowaniu, możesz o tym poczytać w sieci. Nikt Cię nie zmusi do pisania w C++, ale jeśli go wybierzesz, będziesz musiał pojąć ideę wskaźników, wątpię, by ktoś poważał programistę C++, który nie rozumie tego zagadnienia.

Mogę Ci powiedzieć, że jeżeli wybierzesz tematykę WWW, to będziesz narażony na bardzo dynamiczne zmiany danych technologii, na pewno odbywa się to w bardziej intensywny sposób niż w C++ czy Javie.

Wszystkie języki, które wymieniłeś, są dobrym kierunkiem rozwoju, jednak to Ty musisz się zastanowić i podjąć decyzję, co Cię najbardziej pociąga.

1
  1. Referencje javowowe różnią sie od wskaźników z C++ tylko brakiem * oraz brakiem arytmetyki (tzn nie możesz do nich dodwać czy odejmować). Ale jeśli problem stanowi dla ciebie idea "poziomu pośredniości" to zmiana języka na Javę nie pomoże.
  2. W każdym języku są łatwiejsze i trudniejsze zagadnienia.
  3. Wybierz jedną rzecz i na niej sie skup. Serio. Dużo bardziej wartościowe będzie jeśli poznasz jakąś konkretną rzecz dobrze niż jak będziesz pobieżnie znał 10.
1
Fallauthy napisał(a):

Doszedłem do rozdziału gdzie są używane wskaźniki z funkcjami w książce Stephena Pratha - Szkoła programowania. Jest to dla mnie trudny temat, w sumie trochę zostałem "nakręcony" przez znajomych, że sam temat wskaźników jest trudny.

Nie wiem dlaczego studenci uważają, że wskaźniki są trudne. Wskaźniki są banalnie proste. Wyjaśnię Ci to na przykładzie wziętym z życia.
Jak wysyłasz gdzieś list, to oprócz nazwy miejscowości podajesz kod pocztowy. Kod pocztowy to jest 5 cyferek oddzielonych myślnikiem. Ten kod pocztowy to jest taki wskaźnik do miejscowości do której listonosz ma dostarczyć list. Gdybyś go nie podał, to list mógłby dotrzeć do innej miejscowości bo w Polsce jest np. 5 miejscowości o nazwie Warszawa, z czego 2 znajdują się w województwie pomorskim. Mógłbyś na adresie listu podać nazwę miejscowości, województwo, powiat i gminę, ale łatwiej jest podać kod pocztowy czyli wskaźnik do odpowiedniej miejscowości. Na poczcie mają mapę, która jest podzielona według kodów pocztowych i na tych kodach operują pracownicy poczty. Jak zobaczą odpowiedni wskaźnik czyli kod pocztowy, to wiedzą o jaką miejscowość chodzi.
Tak samo jest ze zmiennymi w pamięci. W pamięci są odpowiednie adresy czyli coś jak kody pocztowe. Wskaźnik wskazuje na odpowiednie miejsce w pamięci czyli wskazuje na odpowiedni adres. I pod tym adresem w pamięci kryje się jakaś wartość. Jest to wartość jakiejś zmiennej. Wskaźnik wskazuje na określony adres w pamięci i za pomocą wskaźnika możesz odczytać ten adres i możesz też odczytać wartość zmiennej która znajduje się pod tym adresem. To tak jak na poczcie. Listonosz odczytuje kod pocztowy. Pod tym kodem pocztowym kryje się dokładny adres czyli nazwa miejscowości, województwo, powiat i gmina. Czyli kod pocztowy jest jak wskaźnik. Wskaźnik może wskazywać na adres 0x44445555. A pod tym adresem kryje się konkretna wartość zmiennej np. 5. Po co przekazywać wskaźnik? Jeśli chcesz zmienić wartość znajdującą się pod adresem 0x44445555, to musisz przekazać wskaźnik do tego konkretnego adresu. Jeśli przekażesz tylko wartość zmiennej czyli 5, to ta wartość zostanie przypisana do nowej zmiennej, która będzie w innym miejscu w pamięci i jeśli będziesz chciał ją zmienić, to w tej nowej zmiennej zostanie zmieniona, a w starej pozostanie bez zmian. Jeśli przekazujesz przez wskaźnik, to zaznaczasz, że chcesz aby zmienna pod określonym adresem w pamięci została zmieniona.

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