wszechstronny przewodnik Jak zostać samoukiem

Część II: myśl, Planuj i wykonuj jak programista

teraz, gdy wiesz, jak rozwiązywać problemy, rozumować o rozwiązaniu i płynnie komunikować swoje pomysły, nadszedł czas, aby wykorzystać te umiejętności w praktyce, tak jak programista.

jeden z największych informatyków w tej dziedzinie.

w tej części są trzy rzeczy, których musisz się nauczyć. Po pierwsze, nauczysz się C++ jako drugiego języka, który jest bliższy opisom na poziomie maszynowym w porównaniu z Pythonem. Python jest bliżej spektrum zwykłego angielskiego, podczas gdy C++ jest bliżej końca spektrum 0s i 1s. nauka C++ pozwoli Ci zaznajomić się z więcej konstrukcji programistycznych, takich jak wskaźniki. Po drugie, poprawisz szybkość kodowania poprzez intensywne ćwiczenia, czytanie dokumentacji i dalsze doskonalenie umiejętności debugowania. Na koniec nauczysz się rekurencji, która jest magicznym narzędziem wykorzystywanym przez programistów i informatyków do wykorzystania mocy obliczeniowej.

Naucz się C++ i zacznij pisać proste programy

nauczyłeś się już Pythona w poprzedniej części. Python jest językiem przyjaznym dla programistów, ponieważ ukrywa wiele niskopoziomowych szczegółów przed programistą dla łatwości użycia. Jeśli jednak chcesz rozwijać się, koniecznie musisz nauczyć się podstaw programowania w C++.

na czym się skupić: Pisanie kodu w C++ sprawi, że poczujesz się bardziej jak programista, ponieważ idziesz bardziej w kierunku opisów na poziomie maszynowym. Poznaj różnicę między składnią a semantyką. Poświęć czas na naukę pisania statycznego i dynamicznego, zarządzania pamięcią i wskaźników. Naucz się implementować warunki, pętle, funkcje, typy danych i rzeczy, których nauczyłeś się w Pythonie od nowa w C++. Jeśli to wszystko wydaje się być greką i łaciną, nie martw się. Sekcja zasoby wyjaśni Ci wszystko.

Obsługa błędów: za każdym razem, gdy pojawi się błąd, nie zniechęcaj się. Nawet najbardziej doświadczeni programiści mają błędy i błędy w swoich programach. Wszystko, co musisz zrobić, to przeczytać błąd, wykonać szybkie wyszukiwanie w Google i rozwiązać problem w kodzie. Kiedy to robisz, zrozum, gdzie popełniłeś błąd, popraw swoje zrozumienie i kontynuuj. Czasami musisz przeczytać trochę dokumentacji. Sprawdź następną sekcję.

czytanie dokumentacji powinno być dla Ciebie drugą naturą

podobnie jak w wyszukiwarce Google, o umiejętnościach programisty decyduje umiejętność zrozumienia dokumentacji i pisania przydatnych programów. Gdy nauczysz się czytać dokumentację, nauczysz się również komentować swój kod, pisać czytelny kod i pisać dokumentację dla kodu, który piszesz.

Dlaczego warto się tego nauczyć? Wiele osób zmaga się z nauką nowych technologii i poszukuje gotowych kursów, z których można się uczyć. Chociaż jest to w porządku na początkowych etapach, ponieważ twoja wiedza się pogłębia, nie znajdziesz gotowych samouczków, którymi możesz się karmić łyżką. Będziesz musiał przeczytać dokumentację i odebrać to, czego potrzebujesz. Ponownie, naucz się odfiltrować informacje i wziąć dokładnie to, czego potrzebujesz, aby wykonać zadanie.

Powtarzam. Ćwicz.

teraz musisz tylko ćwiczyć. Udaj się do Hackerrank i rozwiąż wszystkie proste problemy w sekcji rozgrzewka i implementacja. Jeśli jest problem, którego nie możesz rozwiązać, przeczytaj dyskusje, przeczytaj redakcję i zobacz, jak możesz rozwiązać go samodzielnie. Jeśli jest coś, czego nie rozumiesz, użyj Google.

jeśli wykonałeś odczyty w poprzedniej części, nie powinieneś mieć tutaj problemu. Jeśli masz problemy, sugeruję wrócić do tych sekcji. Musisz stać się dobry w pisaniu kodu, więc nie pomijaj tej części. Chodzi o to, aby być biegłym w wyrażaniu swoich prostych rozwiązań w języku angielskim do ich odpowiedników programistycznych. Gdy nie ugrzęźniesz w specyfice języka, możesz kontynuować. Weź wszystkie programy napisane w Pythonie i koduj je w C++.

możesz natknąć się na hype wokół konkurencyjnego programowania, polecam trzymać się od tego z daleka na tym etapie, ponieważ zrobi więcej szkody niż pożytku. Po zakończeniu części III, można eksperymentować z nim i, jeśli zrobić dobrze, może zwiększyć swoje umiejętności rozwiązywania problemów ogromnie.

dobrze zrozumieć rekurencję

to pomoże Ci lepiej zrozumieć rekurencję. Haha.

serce Informatyka leży w umiejętności rozumienia rekurencji. Rekurencja oznacza wyrażenie czegoś w kategoriach samego siebie. Wszystko, co można zrobić za pomocą pętli, można zrobić rekurencyjnie i w bardzo elegancki sposób. Spróbuj zrozumieć to intuicyjnie i obejrzyj filmy, które podałem w zasobach. Jeśli jesteś programistą, który nie rozumie wystarczająco dobrze rekurencji, polecam zrobić to od razu.

podsumowanie

do tej pory znasz język niskiego i wysokiego poziomu i potrafisz wystarczająco docenić różnice w „kontroli”, jaką masz nad swoimi programami. Do tej pory powinieneś być w stanie pisać proste programy używając Pythona i C++ i doceniać różnicę między obydwoma językami.

stąd Wiele osób popada w rutynę uczenia się więcej języków, co samo w sobie jest bezużytecznym ćwiczeniem. Jednym z najczęstszych pytań, które zadają mi początkujący, jest „ile znasz języków?”, co sprawia, że zdaję sobie sprawę, jak błędni są początkujący, ponieważ odnoszą się do umiejętności programowania do znajomości większej liczby języków. Programowanie nie polega na znajomości wielu języków. Język, którego używasz, jest tylko sposobem na skuteczne wyrażenie i rozwiązanie problemu. Na tym etapie jesteś „programistą”, ale to nie wystarczy. Teraz musisz nauczyć się informatyki, aby przenieść swoje umiejętności na wyższy poziom.

Część III: Twoja schadzka z informatyką

solidne zrozumienie zasobów na tym etapie sprawi, że będziesz lepszy niż większość programistów w Twojej grupie rówieśniczej. Możesz nawet stać się lepszy niż większość studentów drugiego/trzeciego roku inżynierii w Indiach. Twoje postępy stąd zależy od pragnienia materiału w tej sekcji. Skup się.

aby dodać trochę mojego filozoficznego dotyku, zagłębiając się w komputer nauka jest jak otwieranie puszki Pandory.

większość tematów w tej sekcji jest poruszana na drugim roku studiów inżynierskich na kierunku Informatyka. Podszedłem do nich nieco inaczej, aby jak najlepiej dopasować się do celów tego przewodnika.

czym to się różni od zwykłego programu studiów licencjackich? Regularne studia licencjackie są mocno obciążone teorią. Kursy, które zaproponowałem w sekcji Zasoby, mają dobrą mieszankę teorii i praktyki. Chociaż może to być dobra rzecz dla początkujących inżynierów, dla laika, nie jest to zbyt przydatne. Tracisz świadomość, gdzie kończy się teoria, a zaczyna praktyka. Wskażę dokładnie, czego potrzebujesz, aby nauczyć się teorii, abyś mógł iść prosto i ćwiczyć. Teoria jest tylko narzędziem, które pomoże Ci napisać lepszy kod na tym etapie, więc nie ugrzęźnij przez nią zbyt mocno.

ciekawostka: w moim drugim semestrze inżynierii mieliśmy przedmiot o nazwie DBMS (Systemy zarządzania bazami danych). Byłem zaskoczony, gdy znalazłem ludzi, którzy rysowali najlepsze diagramy ER do swoich projektów baz danych, ale kiedy przyszło do projektowania bazy danych do praktycznych zastosowań, zawiedli marnie. Byli tak skupieni na poprawieniu szczegółów diagramu, że zapomnieli powodu, dla którego to robili. Nie winię ich, ponieważ nigdy nie uczono ich, że diagram jest po to, aby budować lepsze bazy danych, a nie doskonalić swoje umiejętności szkicowania.

Matematyka dyskretna

używasz już matematyki dyskretnej nieświadomie. Matematyka dyskretna to połączenie dziedzin matematyki stosowanej, które były wielokrotnie wykorzystywane w informatyce. Eksperci w tej dziedzinie postanowili połączyć to wszystko razem i nadać mu nazwę-którą teraz nazywamy matematyką dyskretną.

Don ’ t worry girls, napisała pierwszy program

ucząc się matematyki dyskretnej, postępuj zgodnie z tą samą zasadą, którą opisałem w części I. myśl w kategoriach struktur matematycznych i procedur stosowanych do ich manipulowania. Matematyka dyskretna po prostu zwiększa liczbę dostępnych narzędzi do rozwiązywania problemów. Jeśli pokonałeś swój strach przed matematyką, będziesz dokładnie cieszyć się kursem, który połączyłem w sekcji Zasoby.

struktury danych i algorytmy

to podstawa całej Twojej podróży. W rzeczywistości, używałeś już struktur danych i algorytmów przez cały ten czas-znowu nieświadomie. Teraz sformalizujemy to i przyjrzymy się temu bardziej szczegółowo.

Linus Torvalds zbudował jądro Linuksa — coś, bez czego Android nie byłby tym, czym jest dzisiaj

jako doświadczony programista będziesz wszędzie używał struktur danych i algorytmów. Zrozumienie go wystarczająco dobrze rozszerzy twoje umiejętności matematyczne i narzędzia do budowania skutecznych struktur obliczeniowych do rozwiązywania typowych problemów. Poznasz również różne techniki projektowania algorytmów, które są jak plany rozwiązywania niektórych tematów w informatyce.

wiele samouczków powie Ci, aby zacząć uczyć się algorytmów i struktur danych od razu. Powodem, dla którego tego nie zrobiłem, było to, że dostaliście się do Einstellunga, który ma ustaloną mentalność i podejście do problemów. Uwierz mi, to sparaliżuje twoje myślenie, bo nie myślisz nieszablonowo. Pod koniec tego będziesz świetnym rozwiązywaniem problemów i koderem.

najlepsze praktyki

pisanie oprogramowania nie polega tylko na przypadkowym składaniu kodu w celu zrobienia rzeczy. W większości profesjonalnych środowisk nie będziesz jedynym programistą pracującym na podstawie kodu. Ważne jest, aby przestrzegać pewnych wytycznych i konwencji, aby programowanie podstawy kodu było łatwiejsze dla wszystkich w zespole. Ułatwia to zrozumienie kodu napisanego przez kogoś innego, a następnie ułatwia innym zrozumienie twojego kodu. Jeśli jesteś młodszym programistą, skup się na tej sekcji.

Co można zrobić? Poświęć czas na zrozumienie i zastosowanie zasady suchej (nie powtarzaj się) w praktyce. Nie pisz powtarzalnego kodu, ponieważ spowalnia cię to i sprawia, że jesteś bardziej podatny na błędy. Pisz przydatne komentarze i dokumentację, gdzie tylko możesz. Kiedy zaczynałem, myślałem, że to głupie, aż pewnego dnia otworzyłem stary projekt i zdałem sobie sprawę, że cały mój kod jest niezrozumiały. Jako programista nie musisz wiele zapamiętywać. Zapamiętywasz to, co ważne i sprawdzasz, co jest potrzebne.

Kontrola wersji (Git)

To jest coś, co zacząłem robić wcześnie i bardzo pomaga w utrzymaniu porządku w kodzie. Śledzisz zmiany i dokładnie wiesz, jakie zmiany są potrzebne do wdrożenia niektórych funkcji. Dowiesz się również, jak szybko zapobiegać i naprawiać błędy. Widzę wielu młodych inżynierów, którzy nawet nie wiedzą, czym jest Git, a to bardzo smutne. Przez całą swoją karierę będą korzystać z kontroli wersji-jeśli jesteś jednym z nich, przejdź do poniższych zasobów.

Programowanie obiektowe

wprowadzenie do zupełnie nowego sposobu programowania. Do tej pory zajmowaliśmy się programowaniem proceduralnym. Teraz przechodzimy do programowania obiektowego, który jest zupełnie nowym paradygmatem. Wprowadzenie do hermetyzacji i abstrakcji danych pomoże Ci docenić sposób, w jaki ten przewodnik został zaprojektowany. W OOP wszystko jest obiektem, a ideą jest wyraźne oddzielenie interfejsu od implementacji. Nauczysz się też klas i dziedziczenia. W końcu zaczniesz projektować rozwiązania zorientowane obiektowo i nauczysz się budować sprytne czarne skrzynki, aby rozwiązać problemy. Nauka języka Java to dobry sposób na rozpoczęcie pracy z tym nowym paradygmatem programowania. Python obsługuje również OOP, więc spróbuj to zbadać!

Ćwicz ciężko

Ćwicz każdą umiejętność/koncepcję/algorytm w tej sekcji, pisząc fragmenty kodu. Przepisz stary kod z nową wiedzą, którą zdobyłeś. Pisz małe programy i na każdym etapie ucz się czegoś nowego.

R. I.P legend

Ucz się w miarę postępów. Zbudowałem kalkulatory, systemy zarządzania bibliotekami, Skrypty obliczeń numerycznych na wiele różnych sposobów i za każdym razem nauczyłem się czegoś innego. W końcu zdasz sobie sprawę, że nie ma złotej kuli, która by wszystko naprawiła. Życie jest pełne kompromisów. To jest piękno niedoskonałości.

podsumowanie

wiesz więcej niż wystarczająco, aby zbudować oprogramowanie zmieniające grę. Musisz wszystko zinternalizować aż tutaj, aby przejść do następnego kroku. Stąd więcej teorii nic Ci nie da. Powinieneś inwestować czas wyłącznie w praktykowanie i budowanie użytecznych projektów. Programowanie jest nauką stosowaną-postępuj zgodnie z zasadą 80/20, co oznacza spędzanie 80% czasu na ćwiczeniu i 20% na czytaniu teorii.

Część IV: nadszedł czas, aby zbudować kilka fajnych rzeczy

jeśli podążasz za przewodnikiem aż do T, jesteś dobrze wyposażony, aby iść do przodu i budować wspaniałe projekty, które można umieścić w swoim CV, pochwalić się znajomym, a nawet generować dochody z pracy. Na tym etapie chcę was nauczyć, jak uczyć się rzeczy po drodze. Każdy nowy projekt, który podejmujesz lub do którego jesteś przypisany, będzie wymagał nauki czegoś nowego. Ważne jest, abyś podszedł do tego z właściwą postawą.

zawsze mam został zainspirowany przez Marka Zuckerberga za jego nieśmiertelną postawę wobec niwelującej porażki

istnieją pewne wytyczne, których możesz przestrzegać, gdy podejmujesz się dowolnego projektu. Opracowałem tę rubrykę dla siebie i zdałem sobie sprawę, że będzie to przydatne dla Was, ludzi podejmujących nowe projekty.

  1. Zidentyfikuj problem, nad którym pracujesz i bądź bardzo dokładny w szczegółach. Jasno określ swoje cele i cele.
  2. wyszukaj istniejące lub podobne projekty i określ, gdzie wyróżniają się, a gdzie ich brakuje. Zobacz, gdzie pasuje twój pomysł, jak projekt pasuje do celów i celów, które masz na myśli i zanotuj wszystko.
  3. Zrób listę wszystkich umiejętności, których potrzebujesz, aby nauczyć się robić projekt i zakres, w jakim musisz rozwinąć umiejętności, aby wykonać projekt. Poznaj swoje mocne i słabe strony.
  4. stwórz plan nauki niezbędnych umiejętności. Określ odpowiednie osoby, które pomogą ci i niezbędne samouczki, aby zacząć. Skoncentruj się wyłącznie na rozwijaniu umiejętności, aby wykonać swój projekt. Łatwo dać się ponieść głębokiemu podejściu. Pamiętaj, że uczysz się umiejętności, aby ukończyć projekt, a nie pisać na jego temat pracę doktorską. Chyba, że to twój cel.
  5. rozpocznij pracę nad projektem, zaktualizuj swoje cele i zadania oraz jasno określ swoje mocne i słabe strony. Rozbić projekt na wykonalne podzadania i przypisać metrykę obiektywizmu dla każdego. Oznacza to, że musisz wiedzieć, kiedy przestać gonić za doskonałością i skupić się na szerszym obrazie.
  6. wykonaj niecierpliwie. Powtarzaj, aż wszystkie cele zostaną spełnione.

przeczytaj to, aby uzyskać porady i wskazówki, jak stać się lepszym uczniem.

biorąc pod uwagę istniejącą wiedzę, możesz nauczyć się budować strony internetowe, aplikacje mobilne, gry, Małe skrypty, wtyczki Chrome, aplikacje komputerowe i oprogramowanie do analizy danych. Więcej informacji na ten temat podam w następnym poście. Gdy masz kilka ukończonych projektów za pasem, będziesz wystarczająco dobrym programistą, aby freelance i zarabiać pieniądze na boku, co jest doskonałym źródłem dochodu, jeśli jesteś studentem. Jeśli jesteś z innej dziedziny, daje to wystarczająco solidną podstawę, aby móc rozszerzyć swoją obecną pracę z technologią. To, co możesz z obecnym zestawem umiejętności, jest nieskończone, nawet cały blog nie może tego zrobić.



Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.