Рубрики
Без рубрики

Я начал изучать Scala как программиста Python. Вот почему.

Мотивация для изучения Scala Одна из моих технических целей в 2021 году – выучить Scala. Мой ключ … с меткой Python, Scala, DataNingering.

Обучение Scala как программиста Python (серия 3 частей)

Мотивы для обучения Scala

Одна из моих технических целей в 2021 году – выучить Scala. Моя ключевая причина обучения Scala – изучить функциональное программирование для разработки данных.

Вопрос в том, зачем проходить проблему изучения Scala, если функциональное программирование поддерживается на Python?

Как я изучаю разные парадигмы программирования

Как языковой пурист, который верит в использование инструментов для своих предполагаемых целей, я считаю, что лучший способ изучить новую парадигму программирования (будь то объектно-ориентированное программирование или функциональное программирование)-это глубина изучения подходящего языка программирования: то есть: есть: есть: это: это: это: это: это: это: это: это

  1. Разработано в первую очередь для парадигмы целевого программирования (не как запоздалая мысль)
  2. Похоже на синтаксис и паттерны кода с языком программирования, с которым вы уже знакомы

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

Например, я изучал объектно-ориентированное программирование путем повторного введения с C и постепенно переходя на C ++ с помощью объектно-ориентированных концепций, таких как классы, наследование и полиморфизм. Этот языковой переход помог ускорить процесс обучения Python, который предназначен для того, чтобы быть в первую очередь объектно-ориентированным языком программирования, хотя язык поддерживает множественные парадигмы программирования.

Почему Python не идеален для обучения функциональной разработке данных

Изучая параллельное программирование в Python для науки о данных (и я настоятельно рекомендую вам посмотреть My Pydata Global 2020 Talk Для яркого объяснения параллелизма) я узнал о функциональном программировании в Python через карта и итул . Меня удивило, насколько интуитивно я могу связывать функциональное программирование с математическими функциями, которые имеют смысл, и как я уже подсознательно использую некоторые функциональные концепции программирования при визуализации моих потоков данных.

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

1. Python-это в первую очередь объектно-ориентированный язык программирования

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

2. Параллельное программирование не совсем одновременно в Python из -за дизайна Python Internals

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

Как специалист по данным, который имеет дело с объемами данных, которые, по крайней мере, требуют некоторого уровня параллелизма, необходимость тратить драгоценные часы разработчика, выясняя, какие части последовательной программы могут быть отражены на параллелизм и последовательность, является основным источником разочарования и страха. Наличие интуиции, чтобы разбить программы на более мелкие независимые функции (ввод и не I/O), не облегчают процесс рефакторирования для оптимального параллелизма.

Я все еще люблю Python за его всеобъемлющую экосистему данных и друзей, которых я приобрел из сообщества, и я все еще активно использую Python в своих личных и рабочих проектах.

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

Зачем изучать Scala для разработки данных

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

Вот мои причины для обучения Scala для разработки данных:

1. Scala в основном предназначена для функционального программирования и объектно-ориентированного программирования

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

2. Синтаксис для Scala разделяет сходства с C/C ++ и Python

Scala использует синтаксис Curly-Brace, аналогичный C/C ++, а также поощряет отступление для вложенных логических блоков (например, функции в классе). Небольшая разница состоит в том, что Scala использует 2 пространства вместо 4 пространств или вкладок (что является для Python).

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

Статическое типирование позволяет легче поймать ошибок в процессе разработки, следовательно, избегая ошибок в сложных приложениях. Как сильный статический язык, код, записанный в Scala, проверяется на безопасность типа во время компиляции, а не во время выполнения. Подобно Python, Scala также поддерживает вывод типа – означает, что компилятор Scala часто может выводить типы, основанные на различных элементах исходного кода.

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

Что дальше: мой прогресс в изучении Scala как программиста Python

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

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

Становляется очень заманчиво отступить на удобные паттерны кода, когда обучение становится жестким, особенно на многопарадигме языке программирования, таком как Python. Следовательно, я иногда чувствую себя ужасно непродуктивным, когда привыкаю (и «направляется к») писать код в функциональной парадигме. Я люблю использовать типовые аннотации в Scala, хотя они значительно облегчают отладку в процессе разработки!

В своем предстоящем посте я представлю основные принципы функционального программирования и связываю эти принципы с воспроизводимыми конструкциями конвейера данных.

Хотите больше закулисных статей о моем учебном путешествии в качестве специалиста по данным? Проверьте мой сайт на https://ongchinhwee.me !

Обучение Scala как программиста Python (серия 3 частей)

Оригинал: “https://dev.to/hweecat/learning-scala-as-a-python-programmer-motivations-4hg4”