Подтвердить что ты не робот

Какой язык вы бы использовали для самостоятельного изучения SICP?

Я поймал ошибку, чтобы узнать функциональное программирование на самом деле. Так что мой следующий проект самообучения должен работать через Структура и Интерпретация компьютерных программ. К сожалению, я никогда узнал Lisp, так как я не был главным специалистом в колледже.

В то время как SICP не выделяет инструменты для программирования, упражнения влекут за собой выбор языка Lisp. Кажется, что некоторая реализация Scheme была бы наименее сопротивление. С другой стороны, я слышу о других, которые использовали Common Lisp и Clojure. Мне кажется, что Common Lisp или Clojure будет более вероятно, будет использоваться в производственном коде, и, следовательно, лучше для моего резюме. Кстати, я полностью согласен с тем, что язык стоит сам по себе, но изучает язык, который помогает моему резюме по-прежнему полезно. Я капиталист и академик о моем обучении.

Если вам нужно было самостоятельно изучить SICP, какой язык вы бы выбрали и почему? В идеале я хотел бы использовать язык, который может работать на JVM. Я, безусловно, могу работать с языком, на котором REPL работает с bash и emacs.

ДОПОЛНИТЕЛЬНО: кто-нибудь из вас пробовал читать SICP без использования Схемы? Если да, то каков был ваш опыт?

4b9b3361

Ответ 1

Использовать схему. Это один из самых простых и простых языков в существовании, и вы потратите очень мало времени, чтобы усвоить его, чтобы понять SICP. Как только вы поймете SICP, вы увидите, как эти понятия применяются на любом языке.

Ответ 2

Используйте DrScheme. Как говорили другие, Scheme - простой язык, и DrScheme - отличная среда для его использования, в которой есть много поддержки и документальной документации, удобной для работы.

Ответ 3

Не прямой ответ, но я надеюсь, что эта информация будет полезна для всех, кто работает через SICP. Не забудьте посмотреть видео здесь:

http://swiss.csail.mit.edu/classes/6.001/abelson-sussman-lectures/

Есть 20 эпизодов в час каждый. Они были представлены Абельсоном и Суссманом в 1986 году для сотрудников Hewlett Packard. Я положил их на свой iPod и наблюдал за ними во время поездок на работу. Захватывающий.

Кроме того, полный текст книги доступен в Интернете по адресу http://mitpress.mit.edu/sicp/

Ответ 4

Я согласен, что вы должны просто использовать Scheme. Однако, если у вас действительно есть зуд, чтобы использовать Common Lisp или Clojure, я бы выбрал последний. Схема и Clojure являются Lisp -1s, поэтому код в книге будет более конгруэнтным между этими двумя (за исключением хвостовых вызовов, но если вы поймете, как компенсировать это будет хорошо). Общий Lisp является Lisp -2 и, вероятно, будет скрывать красоту того, что SICP пытается научить вас.

Ответ 5

Как человек, который нанимает людей, я скажу вам, что иметь схему в резюме - это хорошо. Наличие схемы, SML, Ocaml или Haskell в вашем резюме предполагает, что вы очень хорошо округленный программист и довольно мыслитель.

Тем не менее, если вы пытаетесь использовать функциональное программирование, почему бы не Haskell? Схема - многопарадигма, она может быть OO, Funcitonal, Streams или что-либо еще под солнцем. Это делает его удивительным, чтобы попробовать новые стили программирования и парадигмы, но если ваша цель строго функциональна, это может быть проблемой. (Вы в конечном итоге напишите не функциональный код и не осознаете его.)

Ответ 6

Код в книге - это схема, поэтому вам все равно придется ее прочитать - вы можете написать ее. Вам может даже понравиться!

Ответ 7

Чтобы получить реальную ценность из книги, вам придется использовать Схему. Какая реализация схемы зависит от вашей текущей среды:

Windows - Dr Scheme (PLT Scheme) - http://download.plt-scheme.org/ Linux. Если это удаленная учетная запись - вы можете рассмотреть MZScheme (PLTScheme) (http://download.plt-scheme.org/), в противном случае вы захотите использовать Dr Scheme если это локальный экземпляр Linux.

Ответ 8

Я думаю, что Clojure соответствует тому, что вы хотите сделать просто отлично. Он гораздо более функциональный, чем схема, потому что структуры данных неизменяемы, и это может быть очень полезно, поскольку оно работает на JVM. Но имейте в виду, что вы все равно научитесь Scheme, чтобы понять код в книге.

Ответ 9

Я поймал ошибку, чтобы узнать функциональное программирование для реального.

Из того, что я слышал, SICP - это намного больше, чем просто функциональное программирование.

Ответ 10

Предостережение: я не читал целую книгу

Поскольку примеры основаны на замыканиях и продолжениях, вам лучше будет использовать язык с обеими этими функциями, иначе вам нужно будет реализовать их самостоятельно.

Например, запись метакрикулярного оценщика в Схеме использует тот факт, что схема обеспечивает закрытие и продолжение.

Ответ 11

Я использовал lua, когда посмотрел sicp

работает довольно хорошо

Ответ 12

Используйте ничего, кроме схемы.

При использовании чего-то еще, а затем схемы, вам будет предложено больше подумать и избежать соблазна просто повторить примеры. Это хорошо.

Конечно, он должен быть достаточно подобным, в смысле lisp -1, поэтому clojure и дуга хороши.

Ответ 13

Я использовал схему для самостоятельного изучения. Лучший способ учиться у SICP - сделать все упражнения чрезмерно.

Я использовал Gnu guile для схемы.

Ответ 14

Я слышал о других, которые использовали Common Lisp и Clojure.

Вы должны использовать любой язык, который наиболее мотивирует вас, но 99% людей, работающих через SICP, будут использовать Схему.

Ответ 15

Я работал через (большинство) из них в начале этого года и использовал Common Lisp, просто потому, что у меня не было доступных схем (не спрашивайте).

Как уже было отмечено, Scheme является языком Lisp -1, тогда как Common Lisp является Lisp -2. Есть достаточно различий между языками, чтобы означать, что вы внимательно относитесь к переводу кода в книге, поэтому он заставил меня действительно схватиться с материалом.

Ответ 16

В то время как вы могли бы использовать что-то другое, кроме Схемы, вы бы ненужно добавляли дополнительную работу и, возможно, отрезали себя от полного понимания того, о чем идет речь. SICP была вводной книгой программирования. Это шаг к более глубоким темам в информатике. Увязнуть в "переводе" с Схемы на CL или Clojure, вероятно, заслонит тонкости. Это было бы позором, потому что SICP действительно является воротами для понимания того, что такое программирование.

Схема обучения действительно прямолинейна (особенно по сравнению с CL и Clojure), и, по сути, вводный курс, а также книга предполагают, что студент уже этого не знает. CL и Clojure переносят значительный багаж относительно поставленной задачи.

Ответ 17

но изучение языка, помогающего моему резюме, по-прежнему является преимуществом.

Вам следует попробовать использовать VB6 или COBOL, тогда как там есть лот биллинга.

Ответ 18

Я думаю, что Схема была бы естественным выбором (поскольку это "родной" язык SICP)

Однако, поскольку истинное значение SICP происходит от понятий, а не от механики конкретного языка, я думаю, что это было бы ценное учебное упражнение, чтобы попытаться сделать это на любом языке Lisp. Я лично пробовал некоторые из упражнений в Clojure, и все они хорошо переводились.

Для заинтересованных сторон существует текущий проект по созданию Clojure перевода SICP.