Zrobiłbym to:
Ścieżka A: Metoda półtypowa
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.
Zdobądź książkę o strukturach danych w tym języku.
Zdobądź książkę na temat algorytmów w tym języku.
Uzyskaj kompletny i skuteczny kod Java / C # / Czymkolwiek jest wersja Pythona.
Ścieżka B: Ścieżka oświecenia Joela Spolsky'ego (lub Śmierć, wybierz)
Zdobądź książkę „Kod”
Uzyskaj „Język programowania C” K&R
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.