«Используйте правильный инструмент для работы» Вышеупомянутое утверждение является общепринятым мнением, с которым, я уверен, большинство из нас, программистов, в целом согласятся, но позвольте мне спросить вас, считаете ли вы, что каждый из 20 самых популярных языков программирования - это разные инструменты, предназначенные для разных задач?
Например, рассмотрим следующие пять языков программирования: Java, Python, Ruby, JavaScript и C #.
Являются ли эти пять языков настолько уникальными, что вы бы назвали их разными инструментами, предназначенными для разных задач, или они кажутся более похожими, чем разными?
Было время, когда можно было сказать «JavaScript - это язык, который работает в браузере», однако это утверждение больше не работает ... Сегодня JavaScript - это язык, который вы можете использовать практически везде: браузеры, серверы, встроенные устройства, Базы данных ... Так является ли JavaScript подходящим инструментом для любой работы? Нет, конечно нет! но люди продолжают пытаться
Я думаю, что если вы прищурите свои глаза, то подавляющее большинство популярных языков программирования выглядят больше похожими, чем разными. Конечно, все они имеют разные стили и идиомы, которые могут или не могут резонировать с вами, но я все еще думаю, что большинство популярных языков, по сути, не так уж и отличаются.
Почему я так думаю?
Потому что большинство популярных языков были разработаны для последовательных языков общего назначения, которые могут решать всевозможные проблемы. Я имею в виду, если вы думаете об этом, языки становятся популярными только тогда, когда они имеют широкую привлекательность, и могут использоваться для решения многих различных проблем ... верно?
Но вот в чем дело: вы не можете написать язык программирования, который отлично справится с решением всех возможных проблем, точно так же, как вы никогда не сможете приготовить еду, которая нравится всем.
Хорошо, так к чему я клоню?
Этот курс учит вас языку программирования Elixir, который вы должны знать, он не похож на другие популярные языки.
Elixir - это современный параллельный функциональный язык программирования, который решает определенные типы проблем уникальным, новым и очень эффективным способом ... Другими словами, Elixir - это явно другой инструмент, предназначенный для определенных видов работ.
Я собираюсь объяснить, в чем на самом деле хорош Эликсир, но прежде чем сделать это, обдумайте следующее утверждение:
Elixir - это язык, который позволяет писать программы, которые могут эффективно «работать вечно» ...
Хорошо, прежде чем вы отправите мне неприятное электронное письмо, ничто не работает вечно ... Я знаю это, но программы, написанные на Elixir, могут иметь смехотворное время простоя, гораздо дольше, чем любые другие языки, кроме Erlang, но я расскажу больше об Erlang через минуту ,
Итак, как же программы Elixir могут эффективно «работать вечно»?
Ну, это не случайно ... это возможно в Эликсире, потому что отчасти это то, для чего он предназначен.
Так когда бы вы использовали эликсир? Другими словами, какие «проблемы» хорошо решать?
Ну, Elixir отлично подходит для создания веб-приложений и API, которые бывают быстрыми, массово параллельными, отказоустойчивыми и распределенными.
Elixir также действительно хорош в создании встроенного программного обеспечения, но в этом курсе мы сосредоточимся на Elixir в контексте веб-разработки.
Хорошо, вы можете подумать: «Я могу создавать веб-приложения и API на многих языках, так чем же отличается Elixir?»
Если бы мне пришлось дать только один ответ на этот вопрос, мой ответ был бы: «Эликсир обрабатывает параллелизм намного лучше, чем любой другой популярный язык!»
Я приведу несколько примеров:
Несколько лет назад B / R (Bleacher Report), сайт спортивных новостей, переживал значительный рост (миллиарды просмотров страниц в месяц) и сталкивался с проблемами масштабирования. Первоначально B / R был создан с ROR (Ruby on Rails), который предлагает отличный опыт и производительность для разработчиков, но он отчасти отвратителен при масштабировании и параллелизме.
Некоторые компании смогли масштабировать ROR путем эффективного использования кэширования, но B / R не может использовать кэширование, потому что у каждого пользователя B / R есть персонализированная лента новостей, которая не подходит для кэширования.
Первоначально B / R справлялся с проблемами роста, добавляя все больше и больше серверов, но в итоге они решили поискать альтернативы ROR, которые могли бы помочь им справиться с проблемами масштабирования, поэтому они рассмотрели несколько различных языков, таких как JavaScript / Node.js и Golang, но в конечном итоге они выбрали Elixir, и они начали мигрировать из ROR в Elixir и Phoenix.
После переноса ресурсоемких сервисов с ROR на Elixir, B / R смог перейти с 150 серверов ROR, всего на 5 серверов Elixir, и они почувствовали, что могли бы перейти только на 2 сервера Elixir.
Переход от 150 до 5 серверов довольно впечатляет, но в Elixir есть нечто большее, чем просто масштабирование, но я вернусь к этому чуть позже.
Давайте посмотрим на другую историю успеха Elixir в Discord, которая является стартапом, предоставляющим текстовый чат и голосовой сервис для геймеров.
Discord с самого начала знала, что им нужно будет создать систему с высокой степенью параллелизма, и они смело выбрали Elixir с самого начала ... Я говорю смело, потому что они взяли на себя обязательство Elixir очень рано, задолго до того, как это была проверенная технология.
Спустя примерно 2 года работы Discord обслуживал 5 миллионов одновременно работающих пользователей, а через пару лет они обслуживали 11 миллионов одновременно работающих пользователей.
Теперь Discord находится в масштабе, с которым большинству из нас никогда не придется иметь дело, и поэтому они нашли в своем коде несколько горячих точек, которые требовали творческих решений, но они смогли заставить его работать достаточно хорошо, и вот к чему, когда у них было 5 миллионов одновременно работающих пользователей, у них было только 4 инженера по инфраструктуре.
Хорошо, вы могли бы сказать себе: «У меня нет таких проблем масштабирования, как B / R и Discord, так зачем мне использовать Elixir»?
Что ж, даже если у вас нет проблем с масштабированием сегодня, приятно знать, что вы создаете программное обеспечение, которое может масштабироваться при необходимости, но даже если вам никогда не нужен огромный параллелизм, который предлагает Elixir, вы все равно должны рассмотреть Elixir для множества другие причины. Я опишу несколько крупных:
- Параллелизм: из-за того, как параллелизм обрабатывается с помощью Elixir, в Elixir есть функции, которые другие языки не могут предложить. Например, реализация функций реального времени в Elixir и Phoenix тривиальна, особенно по сравнению с другими популярными языками.
- Отзывчивость: Elixir работает очень быстро и предлагает согласованные ответы с малой задержкой благодаря таким функциям, как упреждающее планирование и способ сбора мусора ... другими словами, с помощью Elixir вы сможете предлагать более согласованные, стабильные и надежные услуги.
- Доступность: с помощью Elixir относительно легко создавать сервисы высокой доступности, поскольку распределенные вычисления / кластеризация являются встроенной функцией.
- Отказоустойчивость: из-за того, как отказоустойчивость работает в Elixir, ошибки изолированы и, как правило, не влияют на другие части системы. Другими словами, практически невозможно иметь ошибки, которые уничтожают весь ваш сервер, и с Elixir вы не перезапустите серверы, чтобы восстановиться после ошибок.
Кстати, если вы хотите написать программное обеспечение, которое может «работать вечно», вам понадобятся все функции, которые я только что описал, верно?
Elixir - это очень способный язык, который предлагает множество уникальных и интересных функций, но он также предлагает отличные возможности для разработчиков, аналогичные тем, которые предлагает Ruby on Rails ... По сути, с помощью Elixir вы можете создавать превосходные системы с уникальными функциями, которые хорошо масштабируются. и ремонтопригодны, и вы найдете себя очень продуктивным, и вам, вероятно, действительно понравится его использовать.
«Хорошо, но Эликсир молод, так что я уверен, что тебе понадобится много болей в росте, верно?»
Ну нет, не совсем, позвольте мне объяснить.
Программы, которые вы пишете в Elixir, скомпилированы в байт-код, который запускается на виртуальной машине. Виртуальная машина, которую использует Elixir, не была создана для Elixir, она была создана более 3 десятилетий назад для языка под названием Erlang.
Правда в том, что Elixir - ничто без виртуальной машины Erlang, фактически Elixir даже не существовал бы без Erlang.
Теперь Erlang обладает большинством тех же функций, что и Elixir, что может удивить вас, почему бы просто не использовать Erlang?
Ну, если вы посмотрите на Erlang, это не самый хороший язык для чтения и использования ... Справедливости ради, большинство языков, которые были созданы более 3 десятилетий назад, не могут реально конкурировать эстетически с современными языками. Сейчас некоторым людям действительно нравится Erlang, но я подозреваю, что большинство людей, которые бегло смотрят на Erlang, быстро отключаются из-за его синтаксиса.
Причина, по которой я рассказываю об Erlang, заключается в том, что его виртуальная машина (которую использует Elixir) является зрелой, проверенной в бою и надежной, поэтому, хотя Elixir является относительно новым языком, его среда выполнения более зрелая и проверенная, чем в значительной степени любое другое время выполнения.
«Хорошо, а как насчет изменений в языке и API? Они стабильны?»
Недавно Хосе Валиму, создателю Elixir, был задан вопрос:
"Эликсир готов?"
Ответ Хосе был фактически Да ... ну, он не сказал да, он предпочел назвать это стабильным ... В принципе, в дорожной карте нет больших функций или серьезных изменений, и нет никаких твердых планов относительно версии 2.0. ... хорошо, держу пари, что в какой-то момент будет версия 2.0, но, надеюсь, вы получите мнение о зрелости языка.
Я почти уверен, что мы преодолели большинство проблем роста с Elixir, и это прекрасное время, чтобы изучить и начать использовать Elixir, но не верьте моим словам, посмотрите на то, что говорят другие, такие как InfoQ и Gartner Исследователи, которые говорят, что он готов к работе в прайм-тайм, предлагают организациям рассмотреть возможность использования Elixir, поскольку он может обеспечить конкурентное преимущество.
«Много ли компаний используют Elixir? То есть, есть много рабочих мест Elixir?»
Да, вы можете найти сотни компаний, которые используют Elixir, в этом списке, но я подозреваю, что на самом деле тысячи компаний используют Elixir, и все больше и больше принимают его каждый день ... Вы, вероятно, знакомы с некоторыми из компаний, которые используют Elixir такие как Pinterest, Moz, Slack, Pepsi, PagerDuty, AdRoll, Bleacher Report и Discord.
«Что я буду изучать в этом курсе?»
Мы начнем с основ и проработаем основные функции Elixir, а затем начнем изучать веб-инфраструктуру Phoenix.
Существует более 150 видеороликов, общим объемом ~ 17,5 часов видеоконтента на следующие темы и многое другое:
- Типы данных
- Pattern matching
- Управление потоком
- функции
- Анонимные и Именованные
- Функции высшего порядка
- Pattern matching & Guards
- Pure vs Impure
- Pipe Operator
- Рекурсия
- Оптимизация вызовов
- Обработка коллекций
- Map, Filter, Reduce
- Composition с pipe operator
- Streams
- Comprehensions
- протоколы
- макрос
- Инструменты сборки
- тестирование
- Концепции функционального программирования
- Процессы
- Долгоживущий и недолговечный
- Отправка и получение сообщений
- Обработка ошибок
- Контролеры
- OTP
- GenServers
- Supervisors
- Приложения
- Агенты и задачи
- Phoenix Web Framework
После того, как вы изучите основы, вы сможете применить полученные знания на практике, создав интересный финальный проект.
"Какой финальный проект?"
Представьте, что вы и я в команде, которая только что заключила большой контракт на создание приложения для опросов на выходе.
"Что такое выходной опрос?"
Ну, это способ оценки того, как люди голосуют в день выборов, и оценки определяются путем опроса избирателей, за которых они проголосовали, сразу после того, как они покинули кабину для голосования.
Этот проект немного пугающий, потому что до дня выборов наше приложение почти никто не будет использовать, однако в день выборов наше приложение будет испытывать огромный всплеск использования ... где-то между 10 000 и 100 000 одновременно работающих пользователей.
Позвольте мне объяснить ожидаемую схему использования более подробно.
В преддверии дня выборов будет всего несколько пользователей, которые будут устанавливать основные данные ... Другими словами, добавляя избирательные округа, вопросы, которые следует задавать избирателям, и действительные варианты выбора для каждого вопроса.
В день выборов будет огромный всплеск использования. Небольшая часть всплеска использования будет от людей, проводящих опросы на выходе, на своих мобильных телефонах.
Тем не менее, подавляющее большинство одновременных пользователей будут составлять организации опросов, политические кампании и новостные организации, которые будут следить за результатами опросов в течение всего дня.
В общем, в нашем финальном проекте будет 3 части:
- Область администратора для добавления и ведения основных данных.
- Секция опроса, которая будет использоваться для проведения выездных опросов.
- И, наконец, будет раздел отчетности, который отображает результаты опроса при выходе и обновляет их в режиме реального времени по мере проведения новых опросов.
Административная часть приложения будет состоять из нескольких серверных страниц.
Части приложения Polling и Reporting будут представлять собой одностраничное приложение, написанное на React.js. Мы не будем создавать приложение React в этом курсе, так как оно выходит за рамки этого курса, но мы создадим несколько конечных точек REST и канал Phoenix, которые будут использоваться в приложении React.js, затем мы интегрируем React приложение с Фениксом.
«Как вы решаете этот тип задачи параллелизма / масштабирования?»
Что ж, вам нужно будет пройти курс, чтобы узнать, но просто вы знаете, что решение, которое мы создадим, сильно отличается от того, что вы делали бы на других популярных языках.
"Этот курс подходит для меня?"
Этот курс предназначен для студентов, которые уже знакомы с HTML, CSS и HTTP.
В идеале у вас должен быть некоторый опыт работы с другим языком программирования ... Другими словами, я предполагаю, что у вас есть хотя бы небольшое количество общих знаний по программированию. Нельзя сказать, что полный новичок не может преуспеть в этом курсе, но я думаю, что это будет довольно сложно.
"Что входит в этот курс?"
Этот курс содержит более 150 видео, общей продолжительностью ~ 17,5 часов, с тщательно продуманным контентом, охватывающим Elixir версии 1.9 и Phoenix версии 1.4. Вы также будете иметь много упражнений и задач на протяжении всего курса, чтобы дать вам некоторую практику и держать вас в курсе.
Please upload this course https://grox.io/language/liveview/course
Thank you in advance.
Can you please add them.
Could you upload this course please.
https://grox.io/language/liveview/course