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

Сколько времени вы инвестировали, чтобы хорошо понять Хаскелл?

Я знаю, что этот вопрос может показаться глупым, но я изучаю (по крайней мере, пытаюсь) Хаскелл около 4 дней. Я уже закончил читать http://learnyouahaskell.com/, и теперь я инвестирую время в: Дорога Haskell к логике, математике и программированию, и все стало для меня очень сложным. У меня нет опыта в функциональном программировании, просто некоторые базовые знания в Lisp.

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

Через 4 дня python я мог написать сложные скрипты (не "pythonic", но они действительно работали). Через 4 дня в haskell я... почти пустой.

Любые предложения по улучшению моих функциональных навыков? Сколько времени вам потребовалось, чтобы полностью понять Haskell?

4b9b3361

Ответ 1

Примерно через 2 года есть некоторые части Haskell, которые я знаю очень хорошо (материалы Ptr, векторные библиотеки), некоторые области, которые я знаю достаточно, чтобы быть опасными (шаблон haskell), и другие, которых я не коснулся (веб-фреймворки, дженерики). В целом, однако, я думаю, что я хорошо понимаю язык.

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

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

Ответ 2

Хорошо, через 2 года я все еще не полностью понимаю все о Haskell. Я могу написать "продвинутые" программы (через 2-3 месяца после начала изучения Haskell), но люди продолжают придумывать новые вещи, чтобы узнать, что является частью удовольствия от Haskell:)

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

Ответ 3

После 150-часового курса функционального программирования в университете мы сделали

  • Функции сортировки
  • Создание двоичного дерева
  • Использование/запись функций, таких как map, filter, zip
  • .. возможно, что-то забыли.

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

Ответ 4

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

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

Как сумасшедший может кто-то развить что-то вроде монадов???

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

Кстати, мне потребовалось 2 месяца, чтобы понять основы, я начал февраль 2010 года. Но мне потребовалось еще 4 месяца, чтобы понять, что еще более трудный мыслит как функциональные параметры и результирующие эффекты (особенно монада State была чудом до Я нашел хорошее описание на SO, как IO работает - точно так же;), но я вижу совершенно новое мнение во всем мире.

Ответ 5

Я учился в университете Haskell-heavy (Utrecht), и мне очень понравился Haskell, поэтому я взял следующие курсы, которые использовали Haskell:

  • Вводный FP (семестр)
  • Грамматики и анализ с помощью Haskell (семестр)
  • Реализация языков программирования (семестр)
  • Общее программирование (семестр)
  • Разработка программного обеспечения (2 месяца)
  • Расширенное функциональное программирование (2 месяца)

Я также был ассистентом (помощником учителя), который помогал практическим занятиям в области внедрения и внедрения. И я написал свой M.Sc. on (Общий) Haskell.

Так что это кажется ужасным, но я "получил" FP где-то наполовину во вводном курсе. Наличие сильного математического фона помогло мне в этом случае, поэтому я уже привык к разложению проблем на простые функции. Что касается написания реальных программ, написание программы Go в Haskell было забавным упражнением, чтобы научиться работать с монадами (GUI был в TclHaskell, ugh!)

Ответ 6

Я ни в коем случае не специалист Haskell, но у меня есть два предложения:

  • Потратьте время, чтобы поиграть с чистым лямбда-исчислением (или даже SKI, если вы храбры). В принципе, Haskell позволяет вам делать одни и те же вещи немного удобнее и безопаснее.
  • Попробуйте решить общие проблемы, например. от Project Euler. Но не останавливайтесь на достигнутом, попробуйте сравнить свой код с другими людьми.

Данные оценки 1 ~ 3 месяцев, чтобы понять основы, кажутся мне реалистичными.

Ответ 7

Пройдет некоторое время, прежде чем Haskell начнет понимать. Я нахожусь на своем втором месяце обучения Haskell, и это моя вторая попытка за последние два года. На этот раз я начал с The Little Schemer. Затем я посмотрел видео Giesel. Чтение RWH в первый раз было катастрофой, но теперь это имеет некоторый смысл, поэтому, надеюсь, еще через 6 месяцев это будет яснее. Код, который я могу написать в Haskell, намного более краткий.

Внизу держится, это займет время, но это того стоит. BTW, IRС#haskell - отличный ресурс, который поможет вам ускориться.

Мой совет, найти небольшой проект программирования и грызть его в Haskell. Не беспокойтесь слишком много о том, чтобы написать это путь Хаскелли. Просто начните делать это Haskell..