Я слышу о C, C ++, Java каждый день, когда люди начинают говорить о информатике, но на моем первом уроке информатики нас попросили написать на Scheme (DrRacket).
Почему это?
Как это повлияет на мое будущее понимание программирования?
ОБНОВЛЕНИЕ: я закончил свой первый семестр, но не полностью закончил со Схемой. Во время моего второго семестра (который сейчас) мы начали программировать на Си. Сначала было плохо учить указатели, но теперь я чувствую себя намного лучше.
Больше сказать нечего. Я пытаюсь научить себя Java (или C ++?) Для части ООП, которую мне не хватает. Пока что мне все еще нравится функциональное программирование. Лямбда просто очаровательна. :)
Ответы:
Похоже, отличная школа! Лиспские диалекты намного ближе следуют математической парадигме алгоритмов. Они заставляют программистов учиться рекурсии и функциональному стилю. Это отличный опыт. Ваша школа находится в строю с MIT, который все еще использует Абельсона и Суссмана для требуемого CS 6.001.
Вы можете найти эту статью обнадеживающим и полезным в понимании проблемы.
источник
Никто не ожидает, что в качестве новичка вы будете достаточно опытны в любом языке, чтобы получить настоящую работу, так почему бы не начать с того, который легко выучить? Ожидать, что новички будут изучать программирование с использованием профессионального языка в профессиональной IDE, все равно что давать скальпель первокурснику и заставлять его работать на живых телах.
Не беспокойся; вы в конечном итоге выучите Java / C / C ++, вероятно, начиная со второго курса. Если вы начали изучать Java 6 сейчас, к тому времени, как вы закончите, Java 8 выйдет. Или это будет заменено Python. Или какой-то другой язык, который еще не был изобретен, но покорил индустрию. Лучше отложить изучение «популярных» вещей как можно дольше, чтобы они не устарели, когда вы выходите на работу.
Схема / Ракетка поможет вам сосредоточиться на важных понятиях: проект алгоритма, структуры данных и манипулирование информацией. Вы знаете, материал, который является общим для всех языков.
источник
Поздравляю, теперь вы стали эквивалентом вегана в компьютерном мире, и через два года вы не сможете закончить любую дискуссию, не проинформировав людей о более высоких моральных принципах, на которых вы стоите. ;)
В любом случае, вы получили очень хорошую школу. Школы, которые не бьют по отрасли , хороши.
Как кто-то еще сказал, они учат вас науке, из которой вы извлекаете ремесло .
Многие плохие фермы-обезьяны учат вас ремеслу, и тогда вы можете извлечь из этого науку, но это не гарантировано. (и вы можете закончить с довольно странными заблуждениями об этом)
В любом случае, как почетный член функциональной толпы, когда вы выходите оттуда, вы всегда будете чувствовать себя неправильно понятыми и недооцененными .
Что, допустим, для среднего компьютерного мастера ничего нового.
Вы находитесь в настоящее время для высокого риска:
Вам также, вероятно, понравится открытый исходный код, но вы никогда не найдете достаточно соавторов для ваших функциональных проектов.
источник
Это все равно, что спросить, как чтение Шекспира поможет вам написать курсовые работы. Программирование (на любом языке) - это просто средство для выражения ваших идей в исполняемой форме. Информатика предоставляет концептуальные строительные блоки, которые могут дать вам что-то интересное. Синтаксис схемы относительно прост, поэтому вы можете быстро найти интересные идеи, не сталкиваясь с множеством ошибок компилятора, стандартных библиотек и т. Д.
Обратите особое внимание в классе - в этом семестре вы узнаете много интересного.
источник
Кажется, что вы очень плохо знакомы с программированием, не имея никакого опыта в этом. Итак, вот некоторые разъяснения:
Почему Scheme, а не C / C ++ / Java ...?
При изучении языка программирования (можно провести аналогию с английским языком), вы изучаете синтаксис, которому необходимо следовать, чтобы ваш код был грамматически правильным. Однако язык не научит вас логике решения проблем. Чтобы изучить эту логику, вы изучаете различные парадигмы программирования .
Каждый язык может реализовывать (более или менее точно) одну или несколько парадигм. Парадигма - это способ структурировать вашу логику, и парадигма, реализованная в Scheme, называется функциональным программированием (FP).
Итак, реальный вопрос, который вы задаете: почему FP?
Как вы упомянули, C, C ++ и Java (которые не реализуют FP) гораздо более популярны. Фактически, (и по разным причинам, у каждого есть свое мнение) FP не очень популярен в отрасли.
С другой стороны, FP очень высоко ценится в академических кругах. Он ближе к общему математическому подходу, больше фокусируется на доказуемости и оптимизации алгоритмов, и большинство людей согласятся, что это сделает вас лучшим программистом в целом.
Это похоже на школы, которые преподают латынь для изучения английской литературы.
источник
Вы должны узнать, как осуществляется программирование и каковы основные концепции. Языки повседневного использования, используемые в большинстве компаний, могут хорошо подходить для производства программного обеспечения, необходимого сегодня, но не обязательно лучше всего подходят для обучения основам программирования.
Когда вы поняли концепции, их легко применить к другим языкам.
источник
Если вы учитесь с DrRacket, держу пари, что вы также используете учебный план «Как разрабатывать программы».
Вот что один из (предположительно предвзятых) авторов HtDP говорит о том, как Схема обучения подготовила магистрантов в Северо-Восточном университете к программе совместного обучения («кооператив»): студенты чередуют семестры академического обучения с семестрами полного дня трудоустройство).
Изменить: для тех, кто очень заинтересован в рациональном, стоящем за учебной программой, вот основное объяснение архитектора - http://www.youtube.com/watch?v=m3be1PHW5X0
источник
Моя школа началась и со Схемы. Одна причина, которая была упомянута, состояла в том, что это помогло выровнять игровое поле Большинство Compi Sci первого года могут иметь некоторую или большую подверженность распространенным языкам. Менее вероятно, что кто-либо из людей имел много знаний о Схеме.
источник
На самом деле, поскольку Lisp («Схема диалекта») является «Великой Дамой» функциональных языков (подумайте о F #, Groovy, Clojure, Haskell и т. Д.), То этот тренинг также не оставляет вам никаких коммерческих недостатков, так как это самый горячий тема на блоке разработки прямо сейчас.
источник
Схема поможет вам освоиться и правильно подумать об использовании функциональных языков программирования. Например, Scala является гибридом Functional / OO, который довольно блестящий, хотя и немного плотный. Такие языки, хотя и отмечают будущее - надеюсь.
Языки, похожие на Лисп, имеют чистоту и простоту в дизайне, что делает их немного легче в преподавании. Хорошая выгода в том, что вам будет намного легче учиться чему-то вроде Scala.
источник
Мы завершили Схему в первой и первой половине второго семестра. Только когда мы фактически приступили к работе с C, я начал осознавать всю мощь Схемы.
Что касается вашего вопроса, почему выбрана Схема: ответ в том, что это один из самых простых языков, и он позволяет вам делать много (особенно когда мы позже начнем играть с ленивыми списками). Кроме того :
источник