Nauka programowania-problemy z oswojeniem tematu

0

Witam
Jestem w technikum klasy programistycznej i mam pytania co do nauki programowania np. Php(aktualnie to bierzemy). Jak mogę nauczyć się programowania, robienia zadań? Wiem że pytanie jest oklepane, lecz jednak obecnie znajduje się trochę pod ścianą i chciałbym się z kimś tym podzielić, tym bardziej, że chciałbym usłyszeć co na ten temat sądzą osoby związane z programowaniem. Czy polecacie jakiejś książki/poradniki/kursy/strony ? Jak mam do zrobienia zadanie, nawet dość łatwe to nie potrafię zrozumieć jak zacząć, łączyć informacje więc szukam gotowców w internecie z myślą że znajdę odpowiedź co jest głupie. Siedzę godzinami żeby szukać ale i tak tego nie znajduje. Nauczyciel na lekcjach pokazuje i omawia funkcje, data i czas itd ale w zadaniach które zadaje są nie potrzebne, omawiany temat różni się od tematu zadania. Wiem że powinien siedzieć i robić zadania na stronach żeby pogłębiać wiedzę ale w moim przypadku wracam ze szkoły w późnych godzinach i odrabiam na kolejny dzień lekcje a co za tym idzie że nagle jest piątek a zadanie muszę oddać do niedzieli i się stresuje ze nie zrobię.

3
  1. Ścieżka programowania to szukanie i grzebanie własnoręcznie. A już w warunkach (jakby) studiów, we mnie jest zgoda, że zadanie nie pokrywa sie 100% z ostatnio podawanymi grupami funkcji *)
  2. Pewnie znalezienie sobie tematu ciekawego, wg włąsnym inspiracji. Nie porywania sie z motyką na słońce, ale jednak podnoszącego ciśnienie ?

*) nauczycielem infy nie byłem, nie jestem i pewnie nie będę, zamknęli by mnie za morderstwo (@_13th_Dragon świadkiem), ale u mnie też byś dostał rozbieżne zadanie w stosunku do ostatniej lekcji
.

5

Nie szukaj rozwiązań konkretnych zadań tylko próbuj coś samemu zrobić, przeglądaj dostępne funkcje (jak się kiedyś uczyłem php to sobie tak po prostu przeglądałem dokumentację w wolnych chwilach czy dokumentację sąsiednich alfabetycznie funkcji do tej której szukałem).
W google raczej szukaj rozwiązań na proste problemy na najniższym poziomie a nie jak napisać cały program, bo inaczej nauczysz się tylko rozwiązania konkretnego problemu i tak jak piszesz - nie poradzisz sobie z innymi bo nigdy nie wyuczysz się myślenia nad dojściem samemu do rozwiązania problemu. Jak chcesz się naprawdę czegoś nauczyć to musisz trochę wychodzić poza program. Jak już będziesz znał podstawy to możliwe rozwiązania same nasuną się do głowy - być może nie będą to na początku optymalne rozwiązania ale zawsze własne. Im więcej poznasz rozwiązań tym więcej analogicznych problemów będziesz umiał rozwiązać. Warunkiem jest że będziesz te rozwiązania rozumiał a nie tylko pamiętał.
Pytanie z innej beczki - jak dobrze władałbyś językiem, czy to angielskim czy nawet polskim gdybyś używał tylko słów poznanych w szkole?

1

Zarejestruj się na SPOJ i zacznij od zadań łatwych.
np zadanie NWD:

<?php
	$fw=fopen('php://stdout','w');
	$fh=fopen('php://stdin','r');
	list($test)=fscanf($fh,"%d");
	while($test--)
	{
	    list($a,$b)=fscanf($fh,"%d%d");
	    while($b) list($a,$b)=[$b,$a%$b];
	    fprintf($fw,"%d\n",$a);
	}
	fclose($fh);
	fclose($fw);
?>

Masz tu wszystko co potrzebujesz na start.
Masz automatycznego sędziego który stwierdza czy wykonano poprawnie czy też nie.
Masz porównanie z innymi szybkości wykonania.
Czego jeszcze chcieć?

1

No oczywiście, że nauczyciel nie zada ci tego samego zadania, które pokazywał na lekcji. To by nie miało sensu, bo chodzi o to, żeby myśleć samodzielnie. Być może powinieneś zastanowić się jaka jest część wspólna tych zadań? Prawdopodobnie jest całkiem spora. Prawdopodobnie większość składników potrzebnych do rozwiązania problemu masz.
Z mojego doświadczenia, nie wiem czy istnieje inny sposób niż kopiowanie podobnych rozwiązań (np. ze stack overflow, choć w czasach gdy ja się uczyłem, nie było tak łatwo) i próba zmieniania ich tak, żeby zadziałało; a następnie próba zrozumienia co się podziało. :D

1
elwis napisał(a):

Z mojego doświadczenia, nie wiem czy istnieje inny sposób niż kopiowanie podobnych rozwiązań (np. ze stack overflow, choć w czasach gdy ja się uczyłem, nie było tak łatwo) i próba zmieniania ich tak, żeby zadziałało; a następnie próba zrozumienia co się podziało. :D

Do kopiowania z netu trzeba wiecej umieć, niż do pisania własnoręcznie.

Popieram myśl szukania punktowych wskazówek (i czytania ich ktytycznie. Dlaczego kod się pojaiwa na SO? Dlatego że jest z nim jakis problem, różnej narury, od kodowania, po postawienie założeń zawierajych XY problem i otwierających z biodra niewłaściwe drzwi) - ale nie gotowców

0

To samo zauważyłem u mnie w szkole 20 lat temu na matematyce. Obecnie zaczynam prace na intensywnym programem nauczania programowania gdzie materiał będzie coraz bardziej rozbudowywany nieustannie wdrażając kolejne ćwiczenia praktyczne. Jak się ogarnie całość i jak to jest połączone i jasno widzi do czego są potrzebne poszczególne części składowe to myślę że super fajnie to można zaprojektować. Temat rzeka.

2

@infinityhost:

Obawiam się, a nawet jestem pewien, że nauczanie z twoich rąk tak się bedzie miało do szkoły, jak "szkoła wyznaniowa" do "szkoły"

(przeróbka starego o demokracji i demokracji socjalistycznej, coś tam o krześle było)

4
  1. Jak masz problemy z zrozumieniem, proponuje abyś dał znać nauczycielowi niech powtórzy czy coś.
  2. Spytaj się nauczyciela jakie dodatkowe materiały CI poleci? (może ma coś gotowego co przerabiacie)
  3. Ja jestem starej daty lubię książki, to też pierwszą rzeczą jaką robie to kupuje książkę/ebook do np: danego języka PHP i czytam. We wszystkich książkach dla początkujących jest od podstaw pokazane co musisz zrobić żeby uruchomić program etc. Jak na dłoni.

Z drugiej strony zastanawia mnie po co ten kierunek? Ja jak szedłem na studia sam uczyłem się o wiele wcześniej w domu (wiedziałem co mnie kręci i się dobrze w tym czuje) A poszedłeś do technikum z kierunkiem programowanie bo ?

0
ZrobieDobrze napisał(a):

Popieram myśl szukania punktowych wskazówek (i czytania ich ktytycznie. Dlaczego kod się pojaiwa na SO? Dlatego że jest z nim jakis problem, różnej narury, od kodowania, po postawienie założeń zawierajych XY problem i otwierających z biodra niewłaściwe drzwi) - ale nie gotowców

Cóż, generalnie podpisałbym się pod tym co piszesz. To brzmi logicznie. Tylko, że nie takie jest moje doświadczenie. Pod koniec lat 90ch, kiedy zaczynałem, nie mogłem sobie pozwolić na taki luksus, bo wszystko co miałem to jakieś kawałki kodu z czasopisma. Żadnej teorii, niczego. Teraz (prawie 20 lat później), w pracy jestem załamany, bo koledzy w pracy są zafiksowani na jakichś rozważaniach teoretycznych, nie mają pojęcia do czego zmierzają, a ja myślę głównie o rozwiązywaniu problemów.
Oczywiście to może być kwestia temperamentu, sposobu myślenia, itd. Raczej nie lat spędzonych w zawodzie. Natomiast może mieć to wiele wspólnego z tym, że kiedy zaczynałem, robiłem to z czystej ciekawości, nie miałem z tyłu głowy przekonania, że będę robił to zawodowo.Trzeba by zapytać bardziej doświadczonych forumowiczów.
W sumie, @Koks Koks , jaki masz zmysł dominujący (wzrokowiec, słuchowiec, kinestetyk)?. Myślę, że to może być bardzo istotne. Ja jestem kinestetykiem i to barzo mi utrudniało uczenie się w szkole.

1
elwis napisał(a):
ZrobieDobrze napisał(a):

Popieram myśl szukania punktowych wskazówek (i czytania ich ktytycznie. Dlaczego kod się pojaiwa na SO? Dlatego że jest z nim jakis problem, różnej narury, od kodowania, po postawienie założeń zawierajych XY problem i otwierających z biodra niewłaściwe drzwi) - ale nie gotowców

Cóż, generalnie podpisałbym się pod tym co piszesz. To brzmi logicznie. Tylko, że nie takie jest moje doświadczenie. Pod koniec lat 90ch, kiedy zaczynałem, nie mogłem sobie pozwolić na taki luksus, bo wszystko co miałem to jakieś kawałki kodu z czasopisma. Żadnej teorii, niczego. Teraz (prawie 20 lat później), w pracy jestem załamany, bo koledzy w pracy są zafiksowani na jakichś rozważaniach teoretycznych, nie mają pojęcia do czego zmierzają, a ja myślę głównie o rozwiązywaniu problemów.

Skaczemy po zagadnieniach

Zupełnie inna jest jakość kodu świadomie przygotowanego pod dydaktykę (dawne czasopisma czy na dziś np baeldung), a czym innym jest kod przed chwilą wyciągnięty z gówna i jeszcze kapiący na StackOverflow *)
ten pierwszy jest pomyslany aby był kompletny (choć moga byś skróty, np wyciete importy javowskie) , jest wizja autorska CO MA pokazać, przejrzany aby nie zawierał błędów itd... ten drugi wręcz przeciwnie

Oprócz jakości kodowania, to samo na poziomie projektowania założeń do kodu

*) owszem, ktoś świadomy dostrzeże rdzeń pomysłu, tego co leczy dokładnie jego problem, bez kopiowania pozostałości. Początkujący nie.

1
Koks Koks napisał(a):

Jak mam do zrobienia zadanie, nawet dość łatwe to nie potrafię zrozumieć jak zacząć, łączyć informacje

  1. Możesz sobie rozrysować na kartce poszczególne elementy programu (np. klasy, funkcje), połączyć strzałkami. Napisać pseudokod i uruchomić w myślach albo za pomocą długopisu itp. Wtedy łatwiej coś skonceptualizować.
  2. Żeby coś zaprogramować, potrzebujesz wiedzieć, jak działa programowanie (tj. nie rozwiążesz zadania z programowania, jeśli nie umiesz w ogóle programować). Tutaj najlepszą drogą jest po prostu zabawa bez większego celu, pisanie jakichś programów typu HelloWorld i rozbudowywanie ich, albo nawet przekopiowanie istniejących przykładów i modyfikacja itp. Bo żeby rozwiązać faktyczne zadanie, to już potrzebujesz mieć jakiś poziom w samym programowaniu. A jeśli nie masz tego poziomu, to nie potrafię zrozumieć jak zacząć, łączyć informacje. Czyli błędne koło się robi.

Czyli odnośnie 2. warto ćwiczyć umiejętności techniczne pisząc coś bez większego celu i eksplorując na zasadzie "ciekawe jak działa ta funkcja, pobawię się nią"

1
Koks Koks napisał(a):

Witam
Jestem w technikum klasy programistycznej i mam pytania co do nauki programowania np. Php(aktualnie to bierzemy). Jak mogę nauczyć się programowania, robienia zadań?

Pisz samemu aplikacje w domu, w krótkim czasie się tego nauczysz i robienie zadań będzie banalne.

Czy polecacie jakiejś książki/poradniki/kursy/strony?

Książek żadnych dobrych nie ma. Jedyna jaką mogę polecić to "Clean Code", ale ona nie jest o samym programowani.

Jak mam do zrobienia zadanie, nawet dość łatwe to nie potrafię zrozumieć jak zacząć, łączyć informacje więc szukam gotowców w internecie z myślą że znajdę odpowiedź co jest głupie.

Sposób dobry jak każdy inny.

Siedzę godzinami żeby szukać ale i tak tego nie znajduje.

Poproś kogoś ogarniętego o pomoc, ale nie nauczyciela, tylko kogoś ogarniętego. Więc jak szukasz pytań o sesje, to nie pytaj "Jak zrobić sesję", tylko zadaj pytanie na 4programmers. "Uczę się, i chciałbym sam znaleźć informację. Czy ktoś może mi powiedzieć: Jak szukać informacji? Nie chcę gotowca, tylko wskazówkę gdzie coś znaleźć". Dostaniesz odpowiedź i zacznij stamtąd.

Nauczyciel na lekcjach pokazuje i omawia funkcje, data i czas itd ale w zadaniach które zadaje są nie potrzebne, omawiany temat różni się od tematu zadania. Wiem że powinien siedzieć i robić zadania na stronach żeby pogłębiać wiedzę ale w moim przypadku wracam ze szkoły w późnych godzinach i odrabiam na kolejny dzień lekcje a co za tym idzie że nagle jest piątek a zadanie muszę oddać do niedzieli i się stresuje ze nie zrobię.

No to albo samemu programować w domu albo poprosić kogoś ogarniętego o pomoc w konkretnym zadaniu.

2
Riddle napisał(a):

Książek żadnych dobrych nie ma. Jedyna jaką mogę polecić to "Clean Code", ale ona nie jest o samym programowani.

Moja standardowa odpowiedź dla studenta stwierdzającego że on nie rozumie niczego i woli nauczyć się sam i chce abym polecił jakąś książkę:

  • Jeżeli książka jest cienka to nie ma sensu jej czytać bo nie ma w niej wszystkiego co potrzeba do zaliczenia kursu, jeżeli zaś jest gruba to nie ma Pan/Pani tyle czasu aby całą przeczytać ze zrozumieniem. Wersje o pośredniej grubości mają obie dwie wady. W związku z powyższym zalecam zadawać pytania jak coś jest niejasne. Po zaliczeniu tego semestru przyjdzie pora na grubsze książki, o ile wciąż będzie na to zapał.

Zgadnijcie jaki procent tych co zadali to pytanie zastosowują się do zalecenia?

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