Ресурсы для изучения Scala

Лет 8 назад, когда я был еще студентом, по совету одного из своих знакомых я обратил внимание на язык программирования Scala. В то время релиз Java 8 еще не состоялся, и многие ругали Oracle за стагнацию. Groovy из-за своей динамической природы и подходов нравился далеко не всем, и Scala стал некой надеждой для JVM сообщества. И, конечно же, маркетинг вокруг поддержки императивного и функционального подходов в одном языке программирования помогал эту надежду поддерживать.

Однако, как выяснилось позже, порог вхождения в Scala оказался выше, чем многие предполагали, и доступные обучающие материалы не работали должным образом, а иногда и окончательно отталкивали потенциальных пользователей, в том числе начинающих разработчиков. Насколько я помню, единственной книгой на русском языке на тот момент была “Scala для нетерпеливых” за авторством Кея Хорстманна.

Ее я и приобрел в спешном порядке… и в таком же порядке забросил после прочтения первых пары глав. Как не странно, этому поспособствовал Ruby и его мантра о счастливом разработчике. И вот после нескольких лет разработки на Ruby и других языках я снова решил вернуться к изучению Scala. Произошло это благодаря интересу к функциональному программированию (спасибо тебе Elixir), распределенным системам и Big Data.

Ресурсов для изучения в наши дни значительно больше, сообщество вокруг языка продолжает развиваться несмотря на все его проблемы и внутренние споры, и Scala 3 уже маячит на горизонте. Да и я, необходимо заметить, стал больше читать на английском.

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

Читать далее

Научитесь учиться

Многие люди, я – не исключение, просто не умеют учиться и находят кучу причин почему им не удается освоить какие-то навыки или иностранный язык. Уверен, что в вашей голове периодически возникают похожие мысли: “Да я просто не предрасположен(а) к математике. Это не мое.” или “У этой девушки с рождения талант. Я никогда не буду также хорош.” Этими мыслями мы часто успокаиваем себя и со спокойной душой прокрастинируем. Проблема заключается еще и в том, что в школах и университетах нам не объясняют как нужно учиться и, как результат, мы плохо помним изучаемые когда-то предметы, которые уже в зрелом возрасте оказываются нужны в работе, хобби или помощи ребенку с домашним заданием.

Почему я вообще решил написать этот пост? Эта заметка основана на личном ощущении, что я постоянно откладываю изучение каких-то нужных вещей, которые мне кажутся недостижимыми и сложными, в долгий ящик. Ситуацию усугубляет нехватка свободного времени – семья, ребенок, работа. Пытаясь найти ответ на вопрос эффективного самообразования, я случайно наткнулся на замечательный курс “Learning How to Learn” на Coursera1 и всячески его рекомендую абсолютно всем – школьникам, студентам, работающим людям и тем, кто еще в поисках себя. Мне он очень помог в осознании, в первую очередь, своей мотивации2 и приведении в порядок мыслей и своего режима.

Ниже mind-карта3, выступающая для меня recall-шпаргалкой после прохождения курса. Возможно она вам тоже пригодится.

Читать далее

Являются ли list comprehensions в Python идиоматическими?

Изучая Python или работая с ним определенное количество времени, неизбежно возникает вопрос “Являются ли list comprehensions (они же “списковые включения”) идиоматическими и когда стоит их использовать?”

Источником вопроса может послужить Zen of Python и его постулаты “Явное лучше, чем неявное”, “Простое лучше, чем сложное” и “Читабельность имеет значение”. Исходя из этого, списковые включения могут расцениваться как менее идиоматические, чем их более явные альтернативы типа вложенных циклов. В то же время, большое количество статей в интернете пестрит метками “плохой код” применительно к программам, написанным более многословно – без использования однострочников, лямбда-выражений, списковых включений и т.д. Все это выливается в неверный посыл, особенно для начинающих разработчиков.

Читать далее

Железо для Deep Learning

DRAFT Если вы интересуетесь искусственным интеллектом, то вам, скорее всего, известно, что глубокое обучение требует больших вычислительных ресурсов. Означает ли это, что для сборки системы для работы с deep learning вам потребуется быстрый многоядерный центральный процессор? Или же наоборот может ли оказаться его покупка пустой тратой денег? А потратить деньги на дорогое железо, которое вам не пригодится, довольно легко. Эта заметка поможет прояснить какие компоненты системы являются наиболее важными при построении относительно дешевой и высокопроизводительной сборки для глубокого обучения.

Читать далее

IBM выпустили приложение на Elm

Около месяца назад на официальном форуме языка один из инженеров IBM рассказал об опыте разработки веб-приложения на Elm. Я решил перевести пост, так как выжимка возможно поможет вам в “продаже” Elm команде и выборе технологий в будущем.

Читать далее