Może to być subiektywne i prawdopodobnie zostanie zamknięte, ale nadal chciałem wiedzieć, czy naprawdę pomaga odczytać strukturę i interpretację programów komputerowych.
Struktura i interpretacja programów komputerowych
Książka nie korzysta z Java. Nie żebym chciał nauczyć się Javy. Jestem ciekawy, czy przydałaby się lektura, aby być lepszym programistą i jakie są rzeczy, które mogę zyskać dzięki książce, czy też są inne alternatywy dla tej książki bardziej odpowiednie dla programistów Java?
Odpowiedzi:
Cóż, nie wiem, czy ta książka ci pomoże, ale kiedy przepracowałem ją około 20 lat temu, zdecydowanie poprawiła moje umiejętności programowania (niezależnie od jakiegokolwiek języka programowania). Wydaje mi się, że szczególnie programista Java uzyska nowe informacje, których nie uzyska, pozostając tylko w Javie.
Joel Spolsky 2005 napisał fajny artykuł o Javie i SICP, który może Cię zainteresować:
http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
źródło
Myślę, że struktura i interpretacja programów komputerowych to świetna książka do czytania. Jest jednak kilka problemów.
Największym problemem z mojego doświadczenia jest to, że chociaż książka nie wymaga absolutnie żadnej wiedzy programistycznej i jest nastawiona na kompletnych początkujących, jest przeznaczona dla kompletnych początkujących, 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 .
Więksi ludzie niż ja wyjaśnili to znacznie lepiej w sprytnie zatytułowanym artykule Struktura i interpretacja programu nauczania informatyki . Na szczęście nie są to tylko marudzenie, zamiast tego napisali własną książkę: Jak projektować programy . Jeśli myślisz o czytaniu SICP, możesz najpierw przeczytać HtDP: obejmuje on prawie ten sam grunt co SICP, ale zakłada jedynie wiedzę w zakresie średniej domeny średniej. (W rzeczywistości jest napisany, aby go uczyć dzieci w szkole średniej).
Po zakończeniu HtDP nadal możesz wrócić i przeczytać SICP, ponieważ teraz trochę brakującej wiedzy o domenie nie będzie już tak szkodliwy, ponieważ wcześniej widziałeś tę koncepcję.
Uwaga: istnieje wersja robocza drugiej edycji HtDP , którą możesz przeczytać zamiast pierwszej. Materiał dotyczący programowania imperatywnego został usunięty i zostanie omówiony w niepisanym jeszcze drugim tomie How to Design Components , ale możesz wziąć je albo z pierwszego wydania, albo z SICP, albo z obu.
źródło
Z mojego zrozumienia SICP jest bardziej skoncentrowany na obszarach programowania funkcjonalnego, w tym programowaniu rekurencyjnym i mocnym wprowadzeniu do CS - co jest nieco trudne do zrozumienia dla nowych programistów. Kolejna kwestia: jest ona przygotowana i poinstruowana dla MIT, a także kilka dobrych podstaw inżynierii, matematyki i fizyki, aby ta książka była przydatna.
Poradziłbym dobry zestaw książek, w których każda koncentruje się na różnych aspektach inżynierii oprogramowania:
Bardziej szczegółowy opis wspomnianych książek powyżej i innych można znaleźć w następujących źródłach:
Nie krępuj się, dodając do listy, bo nie jest idealna :)
Edycja: Przy wyborze wyżej wymienionych książek i określaniu priorytetu sposobu ich czytania, tak naprawdę sprowadza się to do tego, na czym przede wszystkim próbujesz się zajmować .
źródło
Wychodzę na kończynę i mówię - prawdopodobnie nie jest to dobra lektura dla większości ludzi - w jakimkolwiek języku.
Podobnie jak Knuth to dobra książka do przeczytania. Jednak nawet zakładając, że jesteś gorącym ugradem MIT, nadal zajmie to najlepszą część roku, aby poprawnie czytać, i to z pomocą wykładowców i asystentów technicznych.
Czy są jeszcze inne książki o inżynierii oprogramowania, które można by przeczytać w tym czasie, które byłyby bardziej wartościowe? Czy są jeszcze inne języki, których możesz się uczyć w tym czasie?
edytuj Po prostu rozwinąć:
inżynieria oprogramowania to inżynieria, to wszystko dotyczy optymalizacji. Twoim zadaniem jest zmaksymalizowanie wiedzy w określonym czasie + budżet.
SICP to wprowadzenie do programowania na wysokim poziomie za pomocą funkcjonalnego języka. Używa języka funkcjonalnego, ponieważ łatwiej jest opisać wiele matematycznych pojęć programowania w językach funkcjonalnych niż w proceduralnych i jest dużo łatwiejszy do odczytania niż logika formalna.
Istnieje również pewna ilość postawy, tj. „Tak naprawdę nie jesteś programistą, chyba że czytasz SICP” lub Knuth, lub nie możesz programować w asemblerze Lisp, C lub x86. Zwykle łatwo to obalić; to znaczy. nie możesz być prawdziwym programistą, jeśli nie znasz pracy Cantora nad teorią mnożenia i równań Maxwella i nie znasz się na ruchliwości dziur w półprzewodnikach.
źródło
Czy zamierzasz być „programistą JAVA” do końca życia? Są prawdopodobnie lepsze książki do przeczytania. Jeśli chcesz być ogólnie dobrym programistą, to jest to doskonała lektura. Oto dlaczego. Istnieją pewne narzędzia, których każdy dobry programista potrzebuje w swoim zestawie narzędzi. Jednym z nich jest dogłębna znajomość struktur danych i algorytmów (jeśli mi nie wierzysz, przejdź do wywiadu w Microsoft, Google, Amazon itp.), Algorytmami towarzyszącymi jest analiza złożoności, rekurencja i dobre zrozumienie wskaźników nie ból. Jeśli chodzi o analizę algorytmów, procesy rekurencyjne i ogólnie paradygmat funkcjonalny, nie mogę wymyślić lepszej lub bardziej wymagającej książki niż SICP.
źródło