2008-09-19 6 views
20

Я только что начал один из моих курсов, так как занятия начались только 2 недели назад, и мы изучаем Схему прямо сейчас в одном, потому что я предполагаю, что по какой-то причине позже, но так далеко от того, чему он учит, в основном, как писать в схеме. Поскольку я сижу здесь, пытаясь не бодрствовать, я просто пытаюсь понять, почему я хотел бы знать это, и почему кто-то использует его. В чем он преуспевает? На следующей неделе я планирую спросить его, зачем нам здесь учиться, кроме как писать материал по схеме.Преимущества схемы обучения?

+11

Кстати, я думаю, что это очень богато, что у вас есть имя пользователя «цыпленок» и вы спрашиваете ценность Схемы! http://www.call-with-current-continuation.org/ –

+5

Прошло почти ровно 4 года с тех пор, как вы начали изучать Схему. Мне любопытно, что вы думаете о преимуществах обучения, оглядываясь назад. –

ответ

32

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

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

I Желание моя школа заставила нас изучить функциональный язык программирования.

1

Моя проблема заключалась в том, что, изучая это, мы научились щедрым правым вместе с ним. Я не мог удержать два пролива, чтобы спасти свою жизнь.

Что я узнал от них, так это то, как лучше писать код c и java. Это просто из-за разных стилей программирования, которые я узнал. Я адаптировал больше функционального стиля к некоторым из моих программ, и это помогло мне в некоторых случаях.

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

6

Некоторые люди говорят, что самая сильная сила Схемы - это язык преподавания. Хотя очень полезно изучать функциональное программирование (это совершенно новый способ мышления), еще одно преимущество в схеме обучения заключается в том, что он также «чист». Конечно, он не может использовать тонну таких вещей, как java, но это тоже здорово, это язык, полностью составленный из круглых скобок, буквенно-цифровых символов и всего лишь нескольких других пунктуаций.

В моем вступительном курсе нас учат Java, и я вижу, что многие мои друзья борются с «public static void main», хотя это не главное в программе и как у профессионалов нет выбора, кроме как «handwave», пока они не станут более продвинутыми. Вы не видите этого в Схеме.

Если вы действительно хотите узнать, что схема может сделать в кусок пирога, который на самом деле трудно реализовать в таких языках, как Java, я предлагаю смотреть на это: http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-12.html#%_sec_1.3

Это, пожалуй, лучшая книга, написанная на схеме ,

8

Языки, подобные LISP (и очень близкая схема), предназначены для программирования того, что означает латынь на английском.

Вы никогда не сможете говорить по-латыни в своей обычной жизни после прохождения курса, но просто изучение языка, такого как латынь, улучшит вашу способность использовать английский.

То же самое верно для Схемы.

6

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

Хотя это не невероятно быстро, как скомпилированный язык, и не особенно полезно на обслуживании веб-сайтов или анализе текста, я обнаружил, что схема (и другие листки по расширению) не имеет параллели, когда дело доходит до простоты, элегантности, и мощная функциональная манипуляция сложными структурами данных. Честно говоря, я думаю на Схеме. Это язык, на котором я решаю проблемы. Не сдавайтесь или не терпите Scheme - дайте ему шанс, и это вас не разочарует.

К слову, лучшая IDE для схемы - DrScheme, и она содержит языковые расширения, чтобы делать все, что вы можете сделать на другом языке, и если вы найдете что-то, то вы не можете просто использовать C FFI и написать его сам.

3

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

+0

НАСА Любопытство! – Timeless

1

Попытайтесь не попасть в детали, как скобки, и автомобиль/cdr. Большая часть того, что вы изучаете, переводит на другие языки так или иначе. Не беспокойтесь о том, можете ли вы принять Scheme на рынок, скорее всего, вы изучите другие более продаваемые языки в других классах. То, что вы здесь изучаете, более важно.

Если вы изучаете схему, вы можете узнать все о том, как реализуются системы объектов (подсказка: объектная система не всегда относится к типу, к которому привязаны методы и переменные экземпляра). Хотя этот вид знаний не поможет в 95% вашей повседневной работы, на 5% вашей работы вы будете зависеть от этих знаний.

Кроме того, вы можете узнать о совершенно разных стилях вычислений, таких как потоки/ленивая оценка или даже логическое программирование. Вы также можете узнать больше о том, как интерпретируются компьютерные программы в целом; от основ оценки кода программы до более глубоких аспектов, таких как создание собственного интерпретатора и компилятора). Зная эту информацию, это то, что отличает хорошего программиста от великого программиста.

Схема на самом деле не функциональный язык, это скорее метод агностик, чем тот. Возможно, более важно, что Scheme - отличный язык для выбора, если вы хотите исследовать различные методы вычисления. В качестве примера был построен высокопараллельный функциональный язык «Термит» на вершине Схемы.

Одним словом, точка в схеме обучения - это то, что вы можете изучить основы программирования.

Если вам нужна помощь в программировании на схеме более приятным, не бойтесь спросить. Множество программистов зависают (например) в скобках, когда есть отличные способы работы с исходным кодом схемы, что заставляет скобки что-то лелеять, а не ненавидеть. В качестве примера, emacs с paredit-mode, какой-то режим взаимодействия схемы и режим выделения-скобки являются довольно удивительными.

6

Я предлагаю сохранить открытый ум при обучении. Большую часть времени в школе мы не полностью понимаем, что/почему мы изучаем конкретный предмет. Но, как я пережил около миллиона раз в жизни, он оказывается очень полезным, и, по крайней мере, осознание этого помогает вам. Схема, верьте или нет, сделает вас лучшим программистом.

1

Функциональные языки, такие как Scheme, отлично подходят для математики, искусственного интеллекта, лингвистики и других высоко теоретических областей информатики (машинное обучение, обработка естественного языка и т. Д.). Это связано с чистотой функциональных языков программирования, которые не имеют побочных эффектов, а также с их способностью легко перемещаться по процедурам более высокого порядка.Значительное знание языков функционального программирования имеет решающее значение для решения многих вопросов, которые выходят за пределы информатики. В качестве бонуса вы отлично справитесь с процедурами высшего порядка и рекурсией.

+0

Схема не является чистым функциональным языком. – newacct

+0

Правда, но если ваше использование схемы преимущественно нефункционально, вы не должны использовать Схему. Любой, кто учится на Схеме, не получая четкого понимания функционального программирования, не успел «выучить» схему. – Reggie