Zrezygnowałem z programowania nieco ponad rok temu, kiedy ciągle uderzałem w tę ścianę. Powracam do tematu, ponieważ chcę stworzyć podstawową aplikację na Androida. Ale czuję, że moja ograniczona wiedza nie wystarczy.
Oto mój problem.
Przeczytałem kilka książek i obejrzałem samouczki wideo na C # / Java, poszedłem za przykładami, a potem skończyłem książkę. W końcu zawsze wydają się mnie oszołomić, co robić dalej.
Co to znaczy, że uczą cię od podstawowej aplikacji „hello world” aż do if i tablic, a potem najwyraźniej oczekują, że wiesz, jak wejść w świat kodowania i tworzyć cokolwiek.
Czy coś mi umyka? Wiem, że są to elementy składowe wszystkich programów, ale książki, które czytam, nigdy tak naprawdę nie pokazują mi, co mam dalej robić.
Myślę, że najłatwiejszą odpowiedzią byłoby „zacząć kodować”, ale gdzie? Na przykład przeczytałem „Head First Java”; do tego stopnia, że powiedzieli ci, żebyś wziął wszystko, czego się nauczyłeś, i stworzył grę wyścigową dla psów ...
„staraj się nie oszukiwać i nie sprawdzać dostarczonego kodu źródłowego, powinieneś być w stanie to zrobić do tej pory” _ to nie jest dokładny cytat, ale w zasadzie tak mi powiedziano .......
Pół godziny temu tylko wyjaśniali, jak robić tablice, a potem bez teorii mam stworzyć działającą grę?
Powód, dla którego o to pytam, to dlatego, że boję się, że to wszystko, co powinienem wiedzieć, aby przynajmniej zacząć kodować, ale wydaje mi się, że dostałem mały zestaw narzędzi i powiedziano mi, aby zbudować wieżowiec.
Dziękuję za wszelkie porady
źródło
Odpowiedzi:
Właściwie nie. Nie są. Elementami składowymi wszystkich programów są abstrakcja i ponowne użycie. Wiele języków programowania nawet nie mają tablic lub
if
S lub pętle.Istnieje kilka świetnych książek, które uczą Cię programowania, a nie tego, jak działa dany język programowania, którym wydają się być książki, które czytałeś.
Jak projektować programy aka HtDP to taka książka. To uczy, jak projektować programy. Robi to, podając przepisy do analizowania, rozwiązywania problemów, przekształcania ich w algorytmy i dalszego działania programów.
Zauważ, że „przepis” jest w zasadzie innym słowem określającym „program”, więc innymi słowy, książka uczy programów, które ludzie mogą uruchamiać w głowach, aby generować programy do wykonania przez komputery. Jakie to jest świetne? :-)
Autorzy pracują obecnie nad szkicem drugiej edycji HtDP , którą warto przeczytać zamiast pierwszej. Materiał dotyczący programowania imperatywnego został usunięty i zostanie omówiony w niepisanym jeszcze drugim tomie Jak zaprojektować komponenty , ale możesz przeczytać te brakujące rozdziały z pierwszego wydania.
Należy pamiętać, że HtDP nie zakłada wiedzy programistycznej i jest skierowany do uczniów szkół średnich. Ale niech cię to nie powstrzyma: oznacza to po prostu, że prawdopodobnie będziesz w stanie szybciej ukończyć kilka wczesnych rozdziałów, ale nie sądzę, że będziesz się nudzić.
Konkretne abstrakty to również dobra lektura wzdłuż podobnych żył. Podobnie jak HtDP, nie zakłada żadnej wiedzy programistycznej.
Inną książką, o której możesz usłyszeć, jest Struktura i interpretacja programów komputerowych, zwana także SICP. Jest to jedna z największych książek programistycznych, jakie kiedykolwiek napisano, i znów nie zakłada żadnej wiedzy programistycznej.
To jest jednak nastawiony do kompletnych nowicjuszy , którzy studiują na MIT . I tak, gdy nie ponoszą żadnej wiedzy programistycznej, to nie zakładamy sporo domeną wiedzy, na przykład w dziedzinie inżynierii elektrycznej, fizyki i matematyki. Uwaga: nie mają one nic wspólnego z nauczanymi pojęciami , są po prostu potrzebne do zrozumienia ćwiczeń i przykładów . Lepiej więc najpierw przeczytać HtDP lub konkretne abstrakty, a następnie SICP.
źródło
if
oświadczenia lub czegoś w rodzajuloop
: bez nich nie byłby on kompletny .loop
instrukcji i są one kompletne.Cóż, nie jesteś w wyjątkowej sytuacji. Większość książek dla początkujących w języku programowania zwykle koncentruje się bardziej na podstawowych elementach składowych języka i to dobrze. Jednak, jak to się stało z tobą, w końcu znajdujemy się w sytuacji, w której nauczyliśmy się każdego konstruktu, który ma do zaoferowania język, ale nie możemy tego zastosować, aby rozwiązać niektóre praktyczne problemy. Krótko mówiąc, lukę między przykładami tekstowymi a praktycznymi programami można wypełnić tylko wtedy, gdy spróbujesz grać z kodem (jak powiedział Telastyn). Oto, co ogólnie robię, ucząc się nowych rzeczy:
Na koniec chodzi o praktykę i badania, które pomogą Ci poprawić swoje umiejętności programowania i ostatecznie uczynią cię architektem wielu drapaczy chmur.
źródło
Zobacz to dla C #. Jest bardzo kompletny: http://www.programmersheaven.com/ebooks/csharp_ebook.pdf Użyłem go sam, zaledwie pół roku temu. Korzystam z kompilatora #Develop z tym przykładem. Nie mogę ci wiele pomóc w Javie, ponieważ prawie nigdy jej nie używałem.
Kiedy przychodzi czas na programowanie, wiele osób nie zdaje sobie sprawy, że zwykle używasz dodatkowego SDK lub frameworka do projektowania. Nie spodziewaj się więc natychmiastowego przejścia z Java lub C # do programowania przez telefon, ponieważ prawdopodobnie potrzebujesz dobrej struktury pośredniej, a krzywe uczenia się dla nich mogą być tak samo męczące jak krzywe uczenia się dla samych języków programowania. Chociaż samouczek w języku C #, który opublikowałem, obejmuje tylko język C #, wiele pojęć, które obejmuje, można zobaczyć w innych językach obiektowych, takich jak Java.
Edycja: Opisany scenariusz to niestety trasa, którą podąża wiele samouczków. Nie musisz postępować zgodnie z takim samouczkiem, a jeśli działa on niezgodnie z twoim sposobem uczenia się, prawdopodobnie najlepiej jest spróbować wybrać inny (nie znam żadnego, ale Google chyba). Ale dla pewności sprawdź, czy autor opisywanej książki wyjaśniał wiersz po wierszu. Nie martw się o swoją inteligencję, tylko cudowne dziecko może przejść od książki do działającej gry. Pamiętaj tylko, że samouczki nie są w żadnym razie standardowym pomiarem umiejętności, więc idź na wszystko, co uczy cię najlepiej i nie zniechęcaj się!
źródło
Tak, powinno to wystarczyć do stworzenia bardzo podstawowych programów. W tym momencie próbujesz stworzyć nieco bardziej złożony program niż to, co robiłeś w książkach. Kiedy musisz zrobić coś konkretnego i nie wiesz, jak wykonać jakąś pracę, przeszukaj Internet lub zapytaj nauczyciela / mentora. Doprowadzi to do bardziej zaawansowanych funkcji (i dość często do ślepej uliczki, ponieważ nieświadomie wybrałeś coś znacznie bardziej złożonego niż to, co możesz zrobić).
Żadna książka nie nauczy Cię, jak rozwiązywać problemy.
Żadna książka nie wyjaśni, jak projektować programy - co przychodzi z praktyką. Żadna książka nie nauczy Cię, jak wykonać nietrywialną aplikację - jest po prostu zbyt wiele niuansów; nauczyłbyś się budować tę implementację, a nie podobne rzeczy.
Najlepszym sposobem na naukę w tym momencie jest dabble. Aby bawić się kodem, aby coś stworzyć. Tak jak artyści często zaczynają od rysowania małych ciekawostek, które stają się coraz bardziej wyrafinowane i dobrze wyglądają, tak też programiści potrzebują postępów eksploracyjnych.
źródło
Naprawdę nie pamiętam, czy użyłem książki do programowania, ale wydaje mi się, że w tamtych czasach była to raczej instrukcja obsługi składni zamiast podręcznika. Nauczyło mnie, co może zrobić język programowania, ale nie jak zbudować z nim prawdziwą aplikację.
Na szczęście w książce było kilka przykładów, które wpisałem (tak, nie było wtedy przykładów kodu źródłowego do pobrania), a potem próbowałem dowiedzieć się, jak to działa. To nie jest optymalny sposób na naukę programowania, ale dla mnie to była świetna zabawa.
Zalecam, abyś wyznaczył sobie cel, taki jak „ Chcę zbudować aplikację JavaScript, która tworzy koło podskakujące ”, a następnie wykorzystać zdobytą wiedzę, aby rozpocząć i wyszukać wszystko inne w zestawach SDK / dokumentacji języka i / lub tutaj Na tak.
Właśnie takiego podejścia używam, kiedy próbuję wskoczyć na nowy język i nauczyć się pierwszych kroków. Większość książek, które czytałem w ostatnich dniach, nie byłam usatysfakcjonowana, ponieważ miałam to samo wrażenie, że brakuje czegoś ważnego . Ale na szczęście mamy teraz internety, więc niezależnie od języka, którego chcesz się uczyć, możesz znaleźć kod źródłowy w Internecie i użyć go, aby kontynuować naukę.
edytuj Oczywiście, niektóre bardziej ogólne książki uczące, jak zaprojektować aplikację lub jaki proces (SCRUM, XP, V-Modell) do naśladowania, są dobrym dodatkiem do znajomości czystego języka.
źródło
Zgadzam się z Jörgiem, że powinieneś również przeczytać kilka ogólnych książek na temat koncepcji programowania, zamiast uczyć się zbyt wielu szczegółów na temat konkretnego języka na tym etapie. Jeśli chodzi o książkę Jak projektować programy , jest ona wykorzystywana jako punkt odniesienia w tym kursie , który może Cię zainteresować.
W przeciwnym razie innym narzędziem, o którym inni nie wspominali, jest wiele rozmów z innymi programistami . Pamiętam, że dla mnie jednym z najskuteczniejszych sposobów nauki programowania było spędzanie wielu godzin na rozmowach z kolegami lub innymi programistami na temat aspektów programowania, języków programowania, technik lub konkretnych problemów, z którymi miałem do czynienia w danym momencie. Ustna transmisja wiedzy może być nadal jednym z najskuteczniejszych sposobów uczenia się nowych umiejętności.
źródło
Sugerowałbym znalezienie projektów open source i przekształcenie ich w osobiste piaskownice. Zmodyfikuj istniejące zachowania, dodaj nowe zachowania i je też usuń. Baw się, wdrażaj własne pomysły i „co jeśli spróbuję tego”.
Nie zalecam, abyś przekonał kogoś do projektu open source i uznał go za swój własny.
Mówię, spójrz na inne działające projekty jako sposób na nauczenie się, jak przejść do kolejnych kroków. Istnieje wiele witryn z kodem opensource do pobrania. Oto kilka, które przychodzą na myśl: CodePlex CodeProject
źródło
To jest życie programistów. Nie znasz technologii, ale rozwijasz „witaj świecie” i stajesz się ekspertem. W firmach (prawdziwe życie) tak to działa. Powodzenia
źródło