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

Изучение Haskell с целью обучения Scala

Я прочитал несколько вопросов, таких как Scala vs Haskell, обсуждая достоинства обоих языков или узнавать, но я уже знаю, что я хотел бы изучить Scala. Я был программистом Java в uni и теперь в основном использую PHP.

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

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

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

4b9b3361

Ответ 1

Говоря как кто-то, кто пришел с Java, и для кого Scala был шлюзовым препаратом для Haskell, мне кажется, что это отличная идея (сначала узнайте Haskell)!

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

Но это не ты! Вы действительно заинтересованы в изучении чего-то нового... так почему бы не разойтись? Изучение функционального программирования в чистой обстановке без беспорядка и соблазн вернуться к старым привычкам будет кристаллизовывать концепции в вашем мозгу.

Тогда, во что бы то ни стало, вернитесь к Scala и узнайте, как он отличается от Haskell; он слабее в некоторых отношениях и сильнее в других, но тогда вы окажетесь гораздо лучше, чтобы оценить эти различия.

Ответ 2

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

Даже если вы зайдете в Haskell, ваши первые программы будут менее функциональными, чем более поздние, поскольку только практика улучшает это. Начиная с Scala ваши первые программы будут "менее качественными", поскольку ваши первые программы на Java или PHP были, но с практикой вы улучшаетесь. Проводя время в несвязанных задачах, надеясь, что они МОГУТ помочь, это может привести к тому, что вы тратите время.

Сосредоточьтесь на своей цели. Если этот Scala, пойдите для него.

ОБНОВЛЕНИЕ: Я полагаю, что этот может иметь отношение к вопросу. Это повышает производительность (доставлять программное обеспечение) против поиска "чистого знания".

Ответ 3

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

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

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

Ответ 4

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

Я бы не попробовал Haskell как введение в функциональное программирование: не то, что это особенно сложно - его синтаксис удивительно краткий - но он определенно очень странный (даже в своеобразном мире функционального программирования), и я думаю, что вы должны попробуйте с языком, который вы можете легко переносить на Scala, например, на Racket или plain Scheme.

Чтобы лучше понять, что я имею в виду, посмотрите на списки в Haskell, Scala и Scheme.

Ответ 5

Я сначала узнал Haskell, а затем Scala и никогда не сожалел. Вы получите гораздо более глубокое понимание FP, если сначала научитесь Haskell. Ваше понимание концепций, лежащих в основе FP и почему они важны, будет устранено. Большая часть Scala взята из Haskell (IMHO). Это будет иметь больше смысла, если у вас есть фон Haskell. Не уклоняйся! Ваши усилия будут вознаграждены.

Ответ 6

Для меня я хочу изучить Scala и функциональное программирование; и, таким образом, просто, я изучаю Scala. Мой учебный материал Программирование Scala. После того, как я прочитал раннюю главу о синтаксисе и т.д., Я пропустил главу, описывающую материал OO, и перешел в главу 8, которая охватывает материал функционального программирования. Там я позволил себе бороться с FP.

Я прочитал этот Scala код, который написан на FP и анализирует он. Вы хотите узнать Scala за "... улучшение Java для личных проектов". и Haskell для вступления в FP. Таким образом, кажется, что прежде всего вы хотите быть продуктивным с вашим проектом Java, а затем схватить FP как побочный эффект. Чтобы быть продуктивным, вы должны овладеть языком. Есть много возможностей изучить и освоить язык, и единственный способ освоить язык - это то, что вам нужно написать код на этом языке. Когда вы изучаете/используете Scala, вы не можете избежать FP, даже если хотите. Я читал блоги Scala (книга тоже), и авторы всегда стараются объяснять, когда дело доходит до концепции FP. Вам не нужно беспокоиться о том, чтобы не хватать FP, перейдя по маршруту Scala. Да, вы можете черпать вдохновение из Haskell, например this, когда вы изучаете Scala. Или как Крис Тернер выше, вы можете вникать в большее количество FP, когда вы уже продуктивны с помощью Scala.

Вы хотите перейти к пункту A, почему бы не перейти к точке A напрямую? Если вы пройдете маршрут по точке B (Haskell), вам придется отложить свою производительность в качестве Pere Villega.