Wstecz Moja „Edukacja” [zamknięta]

13

Jakiś czas temu postanowiłem rozpocząć programowanie. Naprawdę po prostu wskoczyłem na język (Perl) i stamtąd. Żałuję tylko, że właśnie wskoczyłem:

Nie nauczyłem się podstaw (jeśli nazwałbyś je podstawami).

Nie dowiedziałem się o informatyce.

Wierzę, że ta kwestia powstrzymuje mnie przed moim prawdziwym potencjałem. Gdzie powinienem „ponownie uruchomić”? Czy są jakieś książki, artykuły itp., Które powinienem przeczytać? Czy są jakieś tematy, które powinien znać doświadczony programista? Jaka jest twoja rada

Dynamiczny
źródło
Nie mam jasności co do twojego pytania. Więc kiedy zdecydowałeś się rozpocząć programowanie, czy było to znalezienie nowej pracy, czy po prostu wykonanie zadań administracyjnych w pracy, czy po prostu dla zabawy? Muszę zrozumieć, skąd pochodzisz, aby pomóc ci zrozumieć, dlaczego żałujesz, że nie zacząłeś w ten sposób i co to za problem powstrzymuje? Nie lubię zakładać.
@JamesDrinkard: To tylko ze względu na naukę! Nie robię tego na życie.
Dynamiczny
Jakie jest Twoje tło? Czy wiesz coś o nauce? Matematyka? Inżynieria? Obróbka drewna :-) Jakiego rodzaju programowaniem jesteś zainteresowany? Bez tych szczegółów trudno jest udzielić użytecznej odpowiedzi. Nie żałuj też wskakiwania - to świetnie!
Guy Sirton,
@GuySirton: Jestem uczniem gimnazjum. Naprawdę nie mam powodu do programowania, po prostu mam!
Dynamiczny

Odpowiedzi:

21

Zrobiłbym to:

Ścieżka A: Metoda półtypowa

  1. Naucz się języka o bardziej regularnej składni, takiej jak Java, C # lub Python. Perl jest niezwykle użytecznym narzędziem, ale jest również bardzo swobodny pod względem tego, jak pozwala ci robić różne rzeczy. Pozostałe języki, które wymieniłem, są znacznie mniejsze.

  2. Zdobądź książkę o strukturach danych w tym języku.

  3. Zdobądź książkę na temat algorytmów w tym języku.

  4. Uzyskaj kompletny i skuteczny kod Java / C # / Czymkolwiek jest wersja Pythona.

Ścieżka B: Ścieżka oświecenia Joela Spolsky'ego (lub Śmierć, wybierz)

  1. Zdobądź książkę „Kod”

  2. Uzyskaj „Język programowania C” K&R

  3. Uzyskaj strukturę i interpretację programowania komputerowego

Jeśli chodzi o metodę, metoda 1 nauczy Cię programowania w bardziej uporządkowany sposób. Koncepcje informatyki do pewnego stopnia (nie ma jeszcze teorii złożoności, zaufaj mi) i zapewniają Ci język, który jest lepszy do pracy przy projektach z innymi ludźmi i do tworzenia większych aplikacji.

Metoda 2 jest bardziej hardcorowa, jest to podejście bardziej podstawowe z „Kodem” wyjaśniającym podstawy, K&R wprowadza rzeczy na poziomie maszyny, a SICP wprowadza koncepcje wyższego poziomu. To dużo trudniejsza, ale bardziej skoncentrowana ścieżka.

W obu przypadkach daj sobie czas. Rzym nie został zbudowany w ciągu jednego dnia, podobnie jak umiejętności programistyczne, nawet jeśli jesteś geniuszem. Programowanie Petera Norviga za 10 lat to zwykły esej, na który zwracam uwagę.

Uzupełnienie:

Jeśli chodzi o dostępne darmowe rzeczy: wymieniony poniżej Python the Hard Way to dobry początek, od tego momentu, jak myśleć jak informatyk jest rozsądną kontynuacją.

Istnieje wiele zasobów na temat algorytmów i szczerze mówiąc, prawdopodobnie możesz bez problemu przełączać kroki 3 i 4. Pamiętaj, że w tym miejscu matematyka naprawdę zaczyna się pojawiać, więc nigdy nie bój się prosić o pomoc, gdy dojdziesz do tego etapu. To wydaje się być rozsądnym darmowym przewodnikiem .

Naprawdę nie ma spójnego darmowego odpowiednika Code Complete na powiedzmy, chociaż Code jak Pythonista wydaje się dość solidny. Najważniejszą rzeczą jest skoncentrowanie się na tym, aby Twój kod był czytelny, gdy tylko przestaniesz mieć podstawy. Nie jest to „konieczne” w ten sam sposób, w jaki poprawna jest cała składnia kodu, ale ułatwia życie, gdy wychodzisz poza małe programy lub pracujesz nad czymś przez długi czas.

Może się okazać, że skupiłem się głównie na Pythonie, ponieważ jest to najłatwiejszy z trzech, aby znaleźć dobrze napisane darmowe rzeczy. Myślę, że samouczki Javy autorstwa Oracle są w porządku, ale są trochę suche i nie są świetne dla początkujących. C # znajduje się w podobnej sytuacji, ale żadna nie cierpi na brak dokumentacji.

Także twój pierwszy żart / kalambur CS: chcesz „zreformować” swoje wykształcenie, a nie Cofanie.

Inżynier świata
źródło
Dziękuję Ci! Czy miałbyś jakieś darmowe książki do czytania? Poza tym jest to niesamowita odpowiedź!
Dynamiczny
5
+ 1 dla struktury i interpretacji programowania komputerowego (SICP) można znaleźć online tutaj: mitpress.mit.edu/sicp
NWS
Znając Perla, czy Python sprawi mi wiele kłopotów?
Dynamiczny
1
Po Perlu większość języków będzie trochę trudna. Python jest dość łatwy, ponieważ jest zasadniczo 1 sposób na wykonanie jednej rzeczy, a nie 50 sposobów na zrobienie 1 rzeczy, takiej jak w Perlu. Wielką sztuczką dla Pythona jest określenie, której wersji języka użyć: 2.7 lub 3.x. Użyłbym tego, co wybierzesz, i skorzystam z tego. Gdy już będziesz w tym lepszy, możesz dostosować się do innych w miarę pojawiania się projektów.
Inżynier światowy,
1
@kevincline: Właściwie po wykonaniu niektórych ćwiczeń w Pythonie sprawia mi to mnóstwo kłopotów. IMHO, niektóre z rzeczy, które są bardzo proste w Perlu, są trudne (er) w Pythonie.
Dynamiczny
4

Powiedziałbym, że celem jest Naucz się Pythona na własnej skórze ; to dobre podejście. Idź stamtąd; potrwa to wystarczająco długo, aby dać ci czas na znalezienie innych zasobów.

Moim zdaniem „ścieżka B” wymieniona w innej odpowiedzi nie jest na tym etapie odpowiednia.

Dave Newton
źródło
1

Cóż, zacząłem z tego samego powodu, ponieważ miałem trochę wiedzy na temat sprzętu i byłem zaintrygowany programowaniem. Lubię uczyć się nowych rzeczy.

Zacząłem od plików DOS Batch, potem QuickBasic, następnie Visual Basic, VBA, MASM, z Access do pracy z bazami danych, zanim dostałem swoją pierwszą pracę. Dla mnie była to najlepsza ścieżka, zaczynając od prostej, a następnie budując stamtąd.

Powiedziałbym, że zdecyduj, co lubisz najbardziej w programowaniu i idź tą drogą, skrypty, tworzenie stron internetowych, programowanie w systemie Windows itp. Jeśli nie wiesz, zacznij pracę z niektórymi językami, aby zobaczyć, co lubisz. Będziesz jednak potrzebował czasu. Zajmuje około 5 lat, aby naprawdę dobrze posługiwać się językiem takim jak Java, a może C ++, IMHO.

Jako język ułatwiający naukę tworzenia stron internetowych, JavaScript jest zdecydowanie popularny, PHP jest Pythonem, ale to jest IMHO. Zakłada się, że będziesz znać lub uczyć się HTML / CSS. Naprawdę nie doceniałem javascript, mimo że używam go od 2001 roku. Zrobiłem to samo z CSS i nie sądziłem, że to ważne. Zmieniłem też zdanie na ten temat.

Kiedy próbuję określić trend, wchodzę na http://www.indeed.com i klikam link trendy w lewej górnej części strony. Następnie wpisuję słowa kluczowe, takie jak PHP i Python, i sprawdzam, które pozycje są odkładane na rzeczywiste stanowiska pracy dostępne w Internecie.

Jest to jednak z perspektywy kariery zawodowej i oparte na tym, co przynosi mi największą wartość dla klientów (pracodawców). Nie tylko z perspektywy uczenia się.


źródło
Jeśli powiedziałbym, że chcę nauczyć się języka, który pomoże mi w tworzeniu stron internetowych, ale nadal jest w stanie zrobić o wiele więcej, co byś polecił?
Dynamiczny
-1

Dowiedz się o algorytmach w najbardziej podstawowej formie, zapomnij na chwilę o językach. Sortowanie wektorów, słów itp. Freepascal to fajny język na początek, uwielbiam Perla, ale mimo wszystkich skrótów i fajnych rzeczy często pomijasz nieodłączny algorytm programu.

alfa64
źródło