Который будет служить подающему надежды программисту лучше: классическая книга в схеме или современном языке как Python?

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

В настоящее время я баловался несколькими языками, большая часть моего опыта находится в Perl и Shell, и я плескался немного в Ruby.

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

Я не нахожусь действительно ни в каком огромном стремлении сразу выучить язык, который может посадить меня задание (хотя я хотел бы сделать это скоро), и я рассматриваю использование Схемы PLT (теперь названный Ракеткой) для работы через, Как Разработать Программы или Структуру и Интерпретацию Компьютерных программ, по существу, одной из классики Схемы, потому что я всегда слышал, что они учат людей, как написать высококачественный, применимый, читаемый код.

Однако даже MIT изменил свой вводный курс от использования SICP и Схемы одной в Python.

Так, я прошу мудрый совет многих опытных программистов здесь относительно следующего:

  • Действительно Замышляет (и делает те книги), действительно преподают тот, как программировать хорошо? Если так, какую из двух книг Вы рекомендуете?
  • Этот подход к изучению все еще релевантного и применимого? Я на правильном пути?
  • Действительно ли я - более обеспеченные расходы мое время, изучая более практическое/общеязыковое как Python?
  • Является схема (или шепелявость в целом) действительно языком, который каждый учит, только чтобы никогда использовать? Или те из Вас, кто знает код шепелявости в нем часто?

Спасибо, и жаль о быстром движении.

6
задан Adam Crossland 28 July 2010 в 18:07
поделиться

12 ответов

  • Действительно ли Scheme (и те книги) учит тому, как хорошо программировать? Если да, то какую из двух книг вы порекомендуете?

Наверное. Наверное, лучше, чем любая из книг по изучению X в Y Timespan.

  • Актуален и применим ли этот подход к обучению? Я на правильном пути?

Да.

  • Может мне лучше потратить свое время на изучение более практичного / распространенного языка, такого как Python?

Только если вы планируете получить на нем работу. Схема даст вам лучшую основу.

  • Действительно ли Scheme (или шепелявка) - это язык, который изучают только для того, чтобы никогда не использовать? Или те из вас, кто знает в нем шифрующий код, часто?

Я использую emacs elisp, чтобы настроить свой emacs. Я также работаю с функциональными языками на стороне, чтобы попытаться сохранить гибкость ума.

Мое личное мнение таково, что, по сути, есть два трека, которые необходимо пройти, прежде чем ученик сможет заявить, что знает что-то о программировании. Дорожка , первая - это сама машина, компьютер. Здесь вам следует начать со сборки и узнать, как работает компьютер. После некоторой работы и понимания - не экономьте - вы должны изучить C, а затем C ++; действительно получить понимание управления ресурсами и того, что происходит на самом деле. Трек , два - это языковой трек очень высокого уровня - Scheme, Prolog, Haskell, Perl, Python, C #, Java и другие, которые выполняются на виртуальной машине или интерпретаторе, находятся в этой области. Их тоже необходимо изучить, чтобы узнать, как проблемы можно абстрагировать и рассматривать по-разному, не задействуя сложные элементы реального компьютера.

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

8
ответ дан 8 December 2019 в 04:07
поделиться

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

Lisp и Scheme поддерживали, прежде, чем большинство других языков, функции, которые часто были революционными для того времени: замыкания и функции первого порядка, продолжения, гигиенические макросы и другие. В C их нет.

Но они все чаще появляются в языках программирования, которые сегодня Get Stuff Done.Почему вы можете просто объявлять функции где угодно в JavaScript? Что происходит с внешними переменными, на которые вы ссылаетесь из функции? Что это за новые «замыкания», которые PHP 5.3 только что получает ? Что такое «побочные эффекты» и почему они могут быть плохими для параллельных вычислений? Что такое «продолжения» в Ruby? Как работают функции LINQ? Что такое «лямбда» в Python? Что такого особенного в F #?

Это все вопросы, на которые изучение Scheme даст ответы, а C - нет.

5
ответ дан 8 December 2019 в 04:07
поделиться

Лучшими языками для начала, вероятно, являются:

  • язык, на котором вы хотите играть / изучать,
  • язык, на котором вы хотите работать

И, вероятно, тоже в таком порядке, если только не самая острая необходимость это кормить себя.

Вот в чем дело: научиться программировать - это много. Чтобы делать это много, вам понадобится много терпения и немалого энтузиазма. Это более важно, чем конкретный язык, который вы выбираете ... но выбор языка, на котором вам нравится работать (будь то потому, что вам нравятся функции или потому, что вы чувствуете, что он вас чему-то научит), может быть большой импульс.

Тем не менее, вот пара комментариев к схеме:

Имеет ли схема (и делает ли эти книги) действительно научить кого-то, как хорошо программировать?

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

Проблема в том, что многое из того, что я говорю, может не иметь большого значения для вас в данный момент, и это немного более сложный путь, чем переход на общий динамический язык, такой как Perl, Python или Ruby. ...или даже язык, подобный C, который близок к механике фон Неймана машины.

Это не значит, что начинать с этого - плохая идея: я участвовал в эксперименте, в ходе которого мы учили Prolog всем вещам начинающих программистов, и это сработало на удивление хорошо. Иногда ум новичка действительно помогает. :) Но Scheme как первый язык - определенно нетрадиционный путь. Я подозреваю, что Ruby или Python были бы более мягким путем.

Действительно ли Scheme (или шепелявка)? язык, который изучают, только чтобы никогда не использовать?

Это язык, на котором вас вряд ли наняли для программирования. Однако, пока вы учитесь программировать, и после того, как вы выучите и занимаетесь им в свободное время, вы Вы можете писать код на любом языке, а благодаря Интернету вы, вероятно, сможете найти людей, работающих над проектами с открытым исходным кодом на любом языке, который вам нравится. :)

1
ответ дан 8 December 2019 в 04:07
поделиться

Ненавижу говорить вам, но никто не восхищается программистами за их "хакерские приемы". Есть люди, которые делают дерьмо, а есть все остальные. Многие из первых типов - это «корпоративные дроны», которые вы, кажется, презираете.

Что касается вашего вопроса, я лично люблю Lisp (и Scheme), но если вы хотите что-то, что вы, скорее всего, будете использовать в отрасли, то «Начальный Python» может быть лучшим материалом для вас, поскольку Python чаще встречается в дикий. Или, если вам нравится Ruby, найдите хороший материал по Ruby и начните создавать рабочие решения (то же самое с Java, .Net или чем-то еще).

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

1
ответ дан 8 December 2019 в 04:07
поделиться

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

Если ваш поиск знаний больше направлен на разработку алгоритмов и науку программирования, начните с C. Если вы ищете больше практических целей, я слышал, что Ruby - хорошая отправная точка.

0
ответ дан 8 December 2019 в 04:07
поделиться

Я согласен с gruszczy. Я бы начал программировать с C.

Поначалу это может показаться немного пугающим (по крайней мере, для меня: S), но в конечном итоге вы будете ему благодарны. Я имею в виду, что люблю Python, но поскольку я сначала выучил C, кривая изучения других языков была совсем не такой уж крутой.

Начните с C и сделайте так.

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

0
ответ дан 8 December 2019 в 04:07
поделиться

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

11
ответ дан 8 December 2019 в 04:07
поделиться

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

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

0
ответ дан 8 December 2019 в 04:07
поделиться

Я бы сказал, что это зависит от того, что вы хотите сделать.

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

Если вы хотите заняться информатикой, я бы рекомендовал Scheme вместе с SICP.

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

1
ответ дан 8 December 2019 в 04:07
поделиться

Начать кодирование в C . Сначала это должно вас напугать, но это научит вас самым важным вещам, таким как указатели, повторение, управление памятью. Попробуйте прочитать классические книги о программировании, например Искусство компьютерного программирования Дональда Кнута. Освоив это, вы можете подумать об изучении объектно-ориентированного программирования или функционального программирования. Первые основы . Если вам удастся выучить их, для вас больше никогда не будет ничего трудного.

-1
ответ дан 8 December 2019 в 04:07
поделиться

Я начал программировать в очень молодом возрасте. Когда я учился в старшей школе, я думал, что я хороший программист. Именно тогда я начал изучать КАК и ПОЧЕМУ языки работают, а не только синтаксис.

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

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

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

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

0
ответ дан 8 December 2019 в 04:07
поделиться

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

Scheme, в принципе, очень маленький и лаконичный язык, почти не имеющий проблем. Это делает его превосходным для перехода к изучению структуры и интерпретации программ или их проектирования. Более традиционные "практические" языки, такие как C, C++, Python или Java, не обладают этим качеством. Они изобилуют синтаксисом. Обучение на этих языках означает, что вы должны одновременно изучать синтаксические причуды и учиться думать как программист. На мой взгляд, это неудачно. В некоторых случаях эти причуды хороши, в других - это случайность истории, но во всех случаях это прискорбно.

0
ответ дан 8 December 2019 в 04:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: