Задать вопрос
s3lfstyle
@s3lfstyle
Вбрасываю вбросы на всех СНГ порталах

Изучение программирования путем Скалы?

В программировании я практически 0. Знаю может синтаксис пхп чуть-чуть, да чуть-чуть синтаксис си. Хочу начать правильно вникать в программирование путем скалы (понравился его язык и ниша в которой он). С чего собственно начать? С изучения самого языка? С алгоритмов (по Вирту)?
  • Вопрос задан
  • 2739 просмотров
Подписаться 6 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
uvelichitel
@uvelichitel
habrahabr.ru/users/uvelichitel
По моему Scala совсем не подходит для первого языка. Scala сложный, перегруженный, мультипарадигменный язык с замысловатым синтаксисом(причем на мой взгляд парадигмы сотканы не ортогонально). Scala требует изучения как язык сам по себе после того как полистали Вирта и прилично кодите. Иначе вы просто запутаетесь и утоните в концепциях языка вместо того чтобы учиться программировать. Что бы использовать возможности scala нужно уже знать для чего они нужны.
Ответ написан
@a1go1ov
Scala fan, Java developer
Если в программировании вы 0 и хотите начать правильно вникать в программирование, то начните с классики - Structure and Interpretation of Computer Programs (SICP), эта книга закладывает хорошие основы, а так же познакомит вас с функциональным программированием:
книга:
web.mit.edu/alexmv/6.037/sicp.pdf
вспомогательный сайт для самостоятельного изучения книги:
https://mitpress.mit.edu/sicp
sicp.sergeykhenkin.com/sicp-exercise-solutions
перевод книги (не в курсе на счет качества)
newstar.rinet.ru/~goga/sicp/sicp.pdf
видео лекций по книге:
ocw.mit.edu/courses/electrical-engineering-and-com...

Конкретно по Scala:

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

Интерактивные курсы

cousera.org:
Специализация по Scala - один из фундаментальных источников знаний о программировании на Scala. В составе - видео лекции, доп. материалы, вопросы на закрепление, задания на программирование, форум для вопросов и обсуждения (все опционально). В принципе можно вместо SICP сразу начинать со специализации на coursera.org, в частности первый курс в специализации как раз таки проектировался Мартином в стиле SICP (по крайней мере до создания специализации программа курса и задания были в духе SICP).

https://www.coursera.org/specializations/scala

Ссылки на курсы из специализации по отдельности (для бесплатной регистрации):
1. Functional Programming in Scala
2. Functional Program Design in Scala
3. Parallel programming
4. Big Data Analysis with Scala and Spark

Курс стоящий немного в стороне, о reactive programming на scala:
Принципы реактивного программирования

---
Интерактивные упажнения по Scala от 47 Degrees (на данный момент 6 курсов std lib, cats, shapeless, doobie, scalacheck, FP in Scala)
https://www.scala-exercises.org

www.scalakoans.org - небольшие уроки для изучения
---
Big data university (с уклоном в Data Science и Big Data):

Introduction to Scala
Scala for Data Science
Spark Overview for Scala Analytics
------------------------------------------

Если вас больше интересует не интерактивный стиль обучения, а вдумчивое чтение, то можно посоветовать следующие книги:

Книги:

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

также в 2016 вышла обновленная версия книги от Martin Odersky, Lex Spoon и Bill Venners, которая покрывает все вопросы связанные со Scala (859 стр), в том числе все нововведения на текущий момент (вплоть до Scala 2.12). Эту книгу можно также читать если вы новичок в программировании. Это наверно самый фундаментальный источник для изучения Scala:
Programming in Scala, Third Edition

После ознакомления с основами Scala для углубления именно функциональных аспектов программирования на Scala можно прочитать замечательную книгу от Paul Chiusano и Rúnar Bjarnason:
Functional Programming in Scala

Для изучения практических основ проектирования современных приложений с использованием возможностей Scala и ее экосистемы, с применением функциональной парадигмы, рекомендую отличную книгу от Debasish Ghosh
Functional and Reactive Domain Modeling

Вообще по Scala и различным инструментам из экосистемы Scala сейчас много разных книг, так что при желании можно найти подходящую по уровню и интересам, стоит также обратить внимание на подборку книг на сайте lightbend (бывшая TypeSafe)

Также можно почитать перевод уроков Scala от Twitter:
Scala Школа!
------------------------------------------

Алгоритмы
На счет алгоритмов, про которые вы упоминали, можете посмотреть прекрасный набор классических алгоритомов и структур данных, реализованных на Scala в чисто функциональном стиле:
scalacaster от @vkostyukov(Twitter, Finagle)
или
scalgos от @pathikrit
------------------------------------------

Остальное
Ninety-Nine Scala Problems - набор небольших упражнений (с ответами) для изучения Scala

Hands-on Scala.js - туториал по Scala.js от @lihaoyi

Type-Level Programming in Scala - серия постов из десяти частей на тему продвинутого использования возможностей системы типов Scala от Rúnar Bjarnason (соавтор Functional Programming in Scala) и Mark Harrah (разработчик sbt)

Scala Best Practices - колеекция хорощих практик программирования на Scala от Alexandru Nedelcu

P.S. Также если хочется держать руку на пульсе о том, что происходит в экосистеме и community Scala, то можно посмотреть эту подборку блогов и новостных и видео ресурсов о Scala
Ответ написан
Комментировать
easimonenko
@easimonenko
Любитель
Присоединяюсь к двум предыдущим ответившим:

1) https://www.coursera.org/course/progfun
2) К. Хорстманн. Scala для нетерпеливых

После действуйте по обстоятельствам и интересам.
Ответ написан
К. Хорстманн. Scala для нетерпеливых.
Ответ написан
Комментировать
@khud
Scala при некоторых обстоятельствах может быть и первым языком за счет того, что у него очень большое комьюнити и хорошие средства разработки. Однако такой путь по настоящему тяжелый. К сожалению нет литературы, которая позволяла бы это делать эффективно. Одерски адаптировал курс "структура и интерпретация компьютерных программ" для Scala (его легко найти в гугле и корсере), однако на мой взгляд не вполне удачно. Но с этого можно начинать. В целом разделяю мнение большинства - трудно слишком для начала. Python куда более лучший вариант для начала.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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