Это может быть субъективно и, вероятно, будет закрыто, но я все еще хотел знать, действительно ли полезно читать «Структура и интерпретация компьютерных программ».
Структура и интерпретация компьютерных программ
Книга не использует Java. Не то чтобы я хотел изучать Java. Мне просто любопытно узнать, будет ли полезно читать, чтобы стать лучшим программистом, и что я могу извлечь из этой книги или какие другие альтернативы этой книге больше подходят для программистов на Java?
Ответы:
Ну, я не знаю, поможет ли эта книга вам, но когда я проработал эту книгу около 20 лет назад, это определенно улучшило мои навыки программирования (независимо от любого языка программирования). И я предполагаю, что особенно программист на Java получит некоторые новые идеи, которых он / она не получит, придерживаясь только Java.
Джоэл Спольски 2005 написал хорошую статью о Java и SICP, которая может вас заинтересовать:
http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
источник
Я думаю, что « Структура и интерпретация компьютерных программ» - отличная книга для чтения. Тем не менее, есть несколько проблем с этим.
Самая большая проблема в моем опыте в том , что, в то время как книга не требует абсолютно никаких знаний в области программирования, и направлена на полные новичок, она будет направлена на полные новичок , которые учатся в MIT . И так, в то время как она не предполагает каких - либо знаний в области программирования, он делает предположить , совсем немного области знаний, например , в области электротехники, физики и математики. Примечание: они не имеют никакого отношения к изучаемым концепциям , они просто необходимы для понимания упражнений и примеров .
Более великие люди, чем я, объяснили это намного лучше в умно озаглавленной статье «Структура и интерпретация учебного плана по информатике» . К счастью, они не просто нытики, они вместо этого написали свою собственную книгу: Как разрабатывать программы . Если вы думаете о чтении SICP, вы можете сначала прочитать HtDP: он охватывает практически то же основание, что и SICP, но предполагает только знание предметной области среднего школьного уровня. (На самом деле, это написано, чтобы учить детей средней школы.)
После того, как вы закончили HtDP, вы все еще можете вернуться и прочитать SICP, поскольку теперь некоторые недостающие знания предметной области больше не будут столь вредными, потому что вы уже видели эту концепцию раньше.
Примечание: есть черновик для второго издания HtDP , который вы можете прочитать вместо первого издания. Материал об императивном программировании был удален и будет описан во еще не написанном втором томе « Как проектировать компоненты» , но вы можете взять их либо из первого издания, либо из SICP, либо из обоих.
источник
Исходя из моего понимания SICP , он более сфокусирован на областях функционального программирования, включая рекурсивное программирование и сильное введение в CS - что довольно трудно понять новым программистам. Другой момент, он подготовлен и проинструктирован для Массачусетского технологического института, и некоторые хорошие основы в области инженерии, математики, физики также необходимы, чтобы найти эту книгу полезной.
Я бы посоветовал хороший набор книг, каждый из которых посвящен различным аспектам разработки программного обеспечения:
Более подробное описание упомянутых книг выше и других раз можно найти по следующим ссылкам:
Пожалуйста, не стесняйтесь добавлять в список, так как он не идеален :)
Редактировать: при выборе вышеупомянутых книг и определении приоритета того, как их читать, это действительно сводится к цели того, что вы изначально пытаетесь делать или изучать.
источник
Я собираюсь выйти на конечности здесь и сказать - вероятно, не очень хорошее чтение для большинства людей - на любом языке.
Как Кнут, это хорошая книга для чтения. Однако даже если предположить, что вы горячо работаете в MIT ugrad, правильное чтение все равно займет лучшую часть года, и это поможет лекторам и ТП.
Есть ли другие книги по программной инженерии, которые вы могли бы прочитать за это время, которые были бы более ценными? Есть ли другие языки, которые вы могли бы изучить за это время?
Просто для того, чтобы немного расширить:
разработка программного обеспечения - это разработка, все дело в оптимизации. Ваша задача - максимизировать свои знания в течение определенного времени и затрат.
SICP - это введение в программирование высокого уровня через функциональный язык. Причина, по которой он использует функциональный язык, заключается в том, что на математических языках проще описать множество математических концепций программирования, чем на процедурных, и его гораздо легче читать, чем формальную логику.
Существует также определенное количество позы, т.е. «Вы на самом деле не программист, если вы не читаете SICP», или Кнут, или можете программировать на Лиспе, C или ассемблере x86. Это обычно легко опровергнуть; то есть. Вы не можете быть настоящим программистом, если не знаете работы Кантора по теории множеств и уравнениям Максвелла и не знакомы с подвижностью дырок в полупроводниках.
источник
Вы планируете стать «программистом JAVA» на всю оставшуюся жизнь? Тогда, вероятно, есть лучшие книги для чтения. Если вы хотите быть хорошим программистом в целом, тогда это отличное чтение. Вот почему. В наборе инструментов есть определенные инструменты, которые нужны каждому хорошему программисту. Одним из них является глубокое знание структур данных и алгоритмов (если вы мне не верите, сходите на собеседование в Microsoft, Google, Amazon и т. Д.), Сопутствующие алгоритмы - это анализ сложности, рекурсия, а хорошее понимание указателей - нет. причинить боль. Когда речь заходит об анализе алгоритмов, рекурсивных процессах и функциональной парадигме в целом, я не могу придумать лучшую или более сложную книгу, чем SICP.
источник