Самые популярные направления в программировании: обзор
Содержание:
- Шаг четвертый. Первый код
- Программирование ближе к математике или к иностранному языку
- Список языков программирования
- Шаг 4. Выбор инструментов
- Строки
- С чего начать?
- Как мы воспринимаем компьютерную информацию
- Про языки программирования и их элементы
- Синтаксис Python — залог вашего успеха
- Ссылки
- Шаг восьмой. Найдите учителя
- Шаг 8. Онлайн-курсы
Шаг четвертый. Первый код
Для первого кода мы будем использовать первый язык и первый компилятор, который мы советовали выбирать выше. Это Паскаль и Free Pascal.
Одна из самых простых программ пишется следующим образом:
2Введите следующее: «program ;». То есть если вы хотите, чтобы программа называлась «hello», необходимо ввести «program hello;».
3Введите инструкцию «begin». Это означает, что код, который в дальнейшем нужно будет выполнить, начался.
4Используем одну из самых распространенных в Паскале конструкций «writeln(‘’);». Она просто выводит на экран текст. Который содержится в скобках и кавычках. Мы введем сочетание «Hello, world!». Обычно свой путь в большой мир разработок ПО начинают именно с этого. Таким образом, следующая строчка будет выглядеть как «writeln(‘Hello, world!’);».
5Чтобы закончить исполняемый шифр, введите «end.» (обязательно с точкой в конце).
6Теперь нажмите кнопку «F9», чтобы запустить то, что написали. Вы увидите, как на экране появились слова «Hello, world!». Это и требовалось!
Рис. 8. Самый простой код на языке Паскаль
Чтобы начать свое знакомство с другими языками, в книгах обычно также приводятся инструкции по написанию «Hello, world!», то есть инструкции, которая просто выводит такой простой текст на экран.
Дальше уже идет что-то более сложное.
Итак, вы осилили свой первый шифр! Начало положено. Теперь переходите к интенсивному обучению.
Программирование ближе к математике или к иностранному языку
С одной стороны, программирование у многих людей ассоциируется с математикой. Считается, что айтишник хорош в точных науках. С другой, мы же говорим язык программирования», а не система программирования», например. Значит это что-то похожее на изучение английского. Какой из двух тезисов ближе к правде?
Скорее второй, чем первый. У компьютерных языков тоже есть своя лексика и грамматика. Они более точные и логичные, чем любой человеческий язык. По сути мы можем сравнить изучение языка программирования с изучением английского, и это не будет прям грубым сравнением. Нужно выучить слова (функции), грамматику (логику и правила написания кода), устойчивые фразы (часто используемые фрагменты кода). Можно даже сказать, что русскоговорящему выучить Python или JavaScript, к примеру, проще, чем арабский или корейский язык. А может даже проще, чем любимый нами английский.
А что с математикой? Она тоже нужна. Условный математический склад ума значительно упростит вам работу с кодом. Умение мыслить категориями из технических наук пригодится не столько в изучении языка, сколько в его применении. Вам будет проще представить в голове, как реализовать задуманное.
Если речь идет о базах данных, блокчейне, искусственном интеллекте или других сложных штуках, то тут уже без математики совсем никак. Причем речь идет не о школьном курсе, а о самой настоящей высшей математике. Для рядовых же задач достаточно базовых знаний.
А вот что касается английского, то он пригодится в любом случае. Код пишется на английском, комментарии к нему и техническое задание зачастую тоже. Без английского в IT вам будет намного сложнее, но об этом позже.
Можно ли стать айтишником с нуля
Конечно можно, ведь все когда-то начинали с нуля. Запаситесь терпением и мотивацией и начните осваивать новую профессию. Ваша предыдущая специальность и образование большой роли не играют. Программистом с нуля может стать как инженер, так и учитель младших классов. Препятствием может стать разве что возраст. Найти первую работу в IT после 23-25 будет сложнее, чем более молодом возрасте.
Список языков программирования
Есть тысячи языков программирования. Мы выделили те, что наиболее популярны и чаще используются в современном мире.
Basic
Basic или Бейсик называют группу языков программирования высокого уровня. Его создали профессора колледжа Дартмут в 1964 году с целью помощи студентам в создании собственных компьютерных программ. Сейчас детище Томаса Курца и Джона Кемени стало основным языком, на котором пишутся программы для ОС Windows.
C
В далеком 1972 году Дэннис Ритчи придумал язык, который остается популярен и сейчас. Программисты любят его за успешное сочетание в нем элементов как высокого, так и низкого уровней программирования. Кстати, для тех языков программирования, которые используются для написания сайтов, основой является как раз язык Си.
С++
Этот язык произошел от Си, но он больше уделяет внимание обобщенному программированию. Сейчас он является одним из самых популярных языков, ведь на нем пишут огромное количество программ
Он подходит для создания ОС, драйверов, серверов, игр, прикладных программ и много другого. Си ++ является универсальным языком, который эффективен, многофункционален и доступен большинству программистов.
Python
Разработка этого языка началась в 1980-х годах голландцем Гвидо ван Россумом, но его первая версия была выпущена только в 2008 году. Он отличается постоянным усовершенствованием и активным сообществом пользователей. Python является высокоуровневым языком с большим объемом различных функций. Особенно хорошо он справляется с веб-разработкой, анализом данных и автоматизацией процессов.
PHP
Этот язык лидирует среди тех, что применяются в разработке веб-сайтов и поддерживается практически всеми хостинг-провайдерами. Он применяется, в основном, для разработки веб-сайтов и веб-приложений. Впервые PHP был представлен публике в 1995 году датским программистом Расмусом Лердорфом.
Java
Язык программирования Java работает с веб-приложениями, которые транслируются в байт-код. Он может работать на любой компьютерной архитектуре, так как код преобразуется с помощью Java-машины. Он появился в 1996 году и последние годы он стал самым популярным языком программирования. Однако многие недовольны из-за того, что он работает медленнее, чем его конкуренты.
JavaScript
Хотя JavaScript похож на Java, но все же является отдельным языком. Чаще всего используется в качестве встраиваемого языка: приложения получают доступ к веб-страницам с его помощью. Он более легок в применении и дается даже тем, кто мало знаком с программированием. Доля его использования ежегодно растет.
Go (Golang)
В 2007 году компания Google занялась разработкой собственного языка программирования, с помощью которого бы можно было решать реальные проблемы. Созданием языка занимались Роб Пайк и Кен Томпсон, которые уже в 2009 году представили Go. Для компании Google он является заменой популярных языков Си и Си ++. Он не стал прорывом, но зато используется для создания серьезных проектов.
SQL
Этот язык программирования является системой, с помощью которой можно удобно управлять базами данных. Первые разработки были начаты еще в 1970-х годов, но первый вариант SQL был представлен в 1986 году. В современном мире SQL довольно популярен в качестве удобного языка для улучшения, управления и создания баз данных.
Swift
Компания Apple тоже придумала собственный язык программирования, чтобы создавать на нем приложения для всех родственных гаджетов. Apple представила свой язык в 2014 году как удобный, надежный, свободный и доступный любому программисту. Он был создан персонально для продуктов Apple.
Pascal
Никлаус Вирт создал этот язык в 1969 году, а назвали язык в честь математика Блеза Паскаля. Он является популярным языком программирования и в наши дни. Именно на нем обучают студентов на первом курсе университета и в старшей школе. На его основе построено множество других языков.
В современном мире без языков программирования невозможно обойтись. Все больше и больше людей самостоятельно выбирают профессию программиста, хоть она и сложна на первый взгляд, но быстро развивается и становится популярной с каждым годом. А языки программирования — сложный, но интересный процесс создания компьютерного мира!
ТЕГИ история
программирование
языковые заметки
Шаг 4. Выбор инструментов
Как правило, в книгах указан перечень инструментов со ссылками на их загрузку.
Обычно это IDE – оболочка – среда разработчика, включающая в состав:
- редактор кода – продвинутый текстовый редактор;
- отладчик – позволяет искать и исправлять ошибки;
- интерпретатор – выполняет код в реальном времени после вызова соответствующей команды;
- компилятор – инструмент, который соберёт программу в исполняемый файл для выполнения без дополнительных средств.
В состав IDE могут входить не все перечисленные модули или добавляться иные, например, графические элементы для оформления окон будущего приложения.
В Python, например, программный код исполняется интерпретатором прямо в консоли, куда вводится. Компилятор для запуска приложения не требуется, но конечный пользователь должен запустить соответствующею среду. https://www.python.org/downloads/
Для написания кода подойдёт любой текстовый редактор. Многие из продвинутых инструментов поддерживают синтаксис языков программирования и упрощают кодинг.
Готовое тело программы через буфер обмена или путём открытия текстового файла передается в IDE для дальнейшей отладки, выполнения и компиляции.
Рис. 7 – IDE редактор
При работе с небольшими проектами есть смысл прибегнуть к помощи онлайн-редакторов кода, которые также поддерживают подсветку синтаксиса, автоматический (интеллектуальный) ввод и даже выполнение кода.
Строки
Строки в Python обособляются кавычками двойными «»» или одинарными «’». Внутри двойных ковычек могут присутствовать одинарные или наоборот. К примеру строка «Он сказал ‘привет’!» будет выведена на экран как «Он сказал ‘привет’!». Если нужно использовать строку из несколько строчек, то эту строку надо начинать и заканчивать тремя двойными кавычками «»»»». Вы можете подставить в шаблон строки элементы из кортежа или словаря. Знак процента «%» между строкой и кортежем, заменяет в строке символы «%s» на элемент кортежа. Словари позволяют вставлять в строку элемент под заданным индексом. Для этого надо использовать в строке конструкцию «%(индекс)s». В этом случае вместо «%(индекс)s» будет подставлено значение словаря под заданным индексом.
С чего начать?
Программирование это и есть описание алгоритма программным языком, то есть перевод последовательности действий на язык, который понятен компьютеру. Программа – это уже готовый к выполнению и законченный алгоритм действий.
Какой язык программирования выбрать для изначального изучения?
- Java, Swift, C/C++ — именно с этих языков лучше начинать свое знакомство с программированием. Они довольно похожи, поэтому, если освоите один из них на хорошем уровне, с остальными разберетесь еще быстрее.
- Swift стоит выбирать, если вы ориентируетесь на разработку мобильных приложений под разные операционные системы.
- Java – это более универсальное решение, он используется для разработки сайтов, серверных приложений и приложений для компьютеров и мобильных приложений.
- С/С++ необходимо для создания высоко нагруженных приложений, он используется для оптимизации и работы с памятью.
- HTML – один из первых языков освоения, если планируете заниматься разработкой сайтов, именно он задает гипертекстовую разметку на странице.
- JavaScript – добавляет в страницы сайта интерактивность.
- Python – один из самых популярных и универсальных языков программирования, отличается более простыми правилами оформления кода, чем в других языках.
Начать обучение можно с самого простого языка программирования — Microsoft Small Basic. Его сможет освоить любой новичок. А затем уже выбирайте более сложный язык программирования, который хотели бы использоваться в работе в зависимости от ваших целей и предпочтений.
В обучении и работе могут пригодиться площадки, где можно задать свои вопросы и посмотреть примеры кода – Reddit, Stack Overflow, GitHub.
Главное в обучении как можно раньше начать писать код
…, разбирать чужие решения, что-то менять в них и снова пробовать. Если столкнетесь с ошибкой, то площадки для поиска ответов и советов перечислены выше.
В общем виде алгоритм изучения программирования может выглядеть следующим образом:
- Выбор первого языка программирования для освоения. Про языки программирования было написано выше. Стоит отметить, что обучение на курсах строиться следующим образом : Pascal , C++, PHP, а затем все языки, которые связаны с веб-программированием. Выбирать язык программирования необходимо, исходя из ваших профессиональных интересов, при этом первый язык не должен быть очень сложным, чтобы не убить эти самые интересы на корню.
- Изучение компиляторов. Компилятор – это техническое решение, назначение которого в переводе команды, введенной пользователем, в машинные инструкции понятные компьютеру. Все программы в последствии вы будете писать в компиляторах. Выбор компилятора определяется тем, какой язык для изучения вы ранее выбрали: для паскаля компилятор Free Pascal, TMT Pascal, Virtual Pascal, для C++ — Turbo C++ , Visual C++, Dev C++, для Java – Javac, GNU Compiler for Java, После освоения основ языка программирования можно будет переходить на более сложные компиляторы.
- Создание первого кода. Сделать первый код можно по видео-урокам, книгами или в процессе обучения на курсе. После того, как вы своими руками создали программный алгоритм и поняли, что вам интересно развиваться в этой сфере, то стоит переходить к следующему шагу.
- Выбор курсов или тренинга для более глубокого обучения. Вот список курсов, которые подойдут для погружения в программирование на первом этапе:
- CS 50 от MIT – практически легендарный курс программирования,
- Курс от Яндекса на Stepik org,
- Курсы на Coursera org,
- Основы HTML и CSS от «Нетологии»,
- Курсы от HTMLAcademy,
- Школа GeekBrains от Майл.ру
Как мы воспринимаем компьютерную информацию
Догадливый читатель, разумеется, предположит, что из мнемокода, из условного английского языка в нашем игровом примере, можно сделать перевод на русский, понятный нам язык. По идее, это может выглядеть так:
Слезай=UP, С(о)=FROM, ELEPHANT=Слона.
Получается следующее:
UP FROM ELEPHANT = Слезай Со Слона
Вот мы, кажется, добрались до понятного нам языка. Но всё не совсем так. Дело в том, если мы посмотрим на современные компьютерные и смартфоновские приложения, там мало русских или английских слов, меню и прочего. В них много картинок: кнопок, галочек, отметок, рисунков и прочего. Язык общения с компьютером давно стал визуальным, рисованным, если можно так выразиться.
Поэтому на последнем этапе перевода с мумбийского языка процессора компьютера на русский язык пользователя компьютера, мы должны увидеть не русские слова «слезай со слона», а некие графические образы. Скажем, будет нарисована лестница, которая сама по себе или с чьей-то помощью будет приставлена к слону. Далее возникнут некие призывные действия (скажем, музыка, звуки, указатели на экране), которые четко покажут нам: давай, по-быстрому, слезай со слона!
Получается, что самый последний переводчик с условного английского языка мнемокодов должен переводить мнемонический (буквенно-цифровой) код на язык графики, язык рисунков. Собственно говоря, так и происходит. В итоге мы видим графические образы (сопровождаемые текстами и звуками) на экранах наших устройств.
Переводим команды процессора в визуальные образы и обратно
Допустим, мы слезли со слона, как призывает нас последний переводчик с условного английского на графический язык. Но потом по условию задачи нам надо обратно залезть, типа, «поехали дальше».
Значит, мы мышкой или тапом пальцем покажем, что собираемся залезть обратно. А откуда вдруг возьмется (из ниоткуда) лестница? Нужно, получается, перевести процессору:
- с графического тапа (клика) по спине слона, означающего «поехали дальше», на язык мнемокода,
- затем из мнемокода нужно сделать шестнадцатеричный код,
- наконец, понадобится получить двоичный код из шестнадцатеричного.
И только тогда процессор сделает некие действия, чтобы в ответ наш экранный персонаж взгромоздился на высокую спину могучего животного (на картинке, разумеется).
Получается, что перевод происходит как вперед (с двоичного кода на язык визуализации), так и назад (с языка визуализации на двоичный код). Собственно говоря, в начале статьи об этом так и было сказано на примере «катания на слонах».
Нам говорят некий текст на языке племени Мумба-Юмба, переводчики последовательно переводят этот текст. Мы задаем встречный вопрос. Навстречу происходит обратный последовательный перевод.
Про языки программирования и их элементы
Программисты НЕ спускаются на самый нижний, примитивный уровень двоичного кода. За них это сделали ранее другие программисты. Те, прежние ранние программисты сначала создали для современных программистов так называемые трансляторы языков программирования. Современные программисты пишут программы на языках программирования с помощью созданных трансляторов.
Что такое языки программирования? Программы пишут в виде мнемокодов, примерно как показано в наших простых примерах. Мнемокоды пишут с помощью разных символов, букв, цифр, знаков препинания, значков, рисунков и прочих базовых элементов языка программирования. Всё вместе – это алфавит языка программирования.
В русском языке тоже есть алфавит. Только мы под алфавитом понимаем строгую последовательность букв. А вот, например, в китайском языке алфавита нет в таком понимании, нет строгой последовательности иероглифов. Но с математической, с программистской точки зрения, в китайском языке алфавит есть – это полный набор всех иероглифов языка, независимо от порядка их расположения.
В языках программирования алфавит – это полный набор ВСЕХ допустимых символов языка программирования, включая тексты, графику и прочее.
Помимо алфавита в языках программирования есть полный перечень ВСЕХ возможных слов, которые можно употреблять в программах. Набор слов и правила их написания – вместе это своего рода синтаксис языка, его правописание.
В дополнение к синтаксису добавим правила формулирования фраз на языке программирования – это уже семантика. Синтаксис вместе с семантикой составляют вместе так называемую грамматику языка программирования.
В наших естественных языках (в русском языке, например) тоже есть грамматика. Только она значительно более сложная. Ибо наша грамматика – это контекстно свободная грамматика. Мы можем говорить и писать одно, а подразумевать совершенно другое. Потому среди людей встречаются поэты и писатели, художники и музыканты. Они, вроде бы пользуются теми же словами и образами, как остальные люди, но создают шедевры!
Грамматики языков программирования и их применение
Грамматики языков программирования несколько проще по сравнению, например, с грамматикой русского языка. Они имеют ограниченные контекстные условия. Проще говоря, с помощью языков программирования нельзя писать романы, поэмы, вирши. Это точные, можно сказать, во многом строго математические языки. Но со своими грамматиками, несмотря на определенную простоту по сравнению с естественными человеческими языками (русский, английский, китайский и прочие).
Следом за грамматикой идет уже смысловая часть языка – умение его применять на практике. Говорить на языках программирования не приходится, а вот писать – сколько угодно.
Умение писать на языках программирования – это и есть смысловое выражение того, что должен делать компьютер (смартфон, планшет и прочее) в ответ на действия людей или на действия подключенной к компьютеру иной техники (принтеры, сканеры, мышки, клавиатуры и прочее).
Выходит, что программисты должны учить языки программирования почти как иностранные языки: учить алфавиты и грамматики. Следом программисты должны на практике применять языки программирования. Мало знать алфавит, синтаксис, семантику языка программирования. Нужно, самое главное, уметь писать правильно работающие безошибочные тексты программ!
Синтаксис Python — залог вашего успеха
Ну, если честно, есть много конкретных деталей, касающихся синтаксиса, которые вы должны изучить, и этой статьи недостаточно для полного выполнения этой задачи. Но я искренне постараюсь облегчить вашу боль в учебе. Вот основные понятия и ценные ресурсы / книги ниже:
- Python — это язык со строгой типизацией (язык со строгой типизацией — это язык, в котором каждый тип данных предопределен как часть языка, и все константы или переменные, определенные для данной программы, должны быть описаны одним из типов данных), но на в то же время он динамически типизирован (нет объявления переменной, только оператор присваивания).
- Python является регистрозависимым языком (var и VAR — две разные переменные) и объектно-ориентированным языком (все в Python является объектом: числа, словари, пользовательские и встроенные классы).
- В Python нет обязательных символов завершения оператора, границы блоков определяются отступами. Отступ начинает новый блок, отсутствие отступа завершает его. Выражения, ожидающие нового отступа, заканчиваются символом двоеточия (:). Однострочные комментарии начинаются с символа фунта (#); для многострочных комментариев используются строковые литералы, заключенные в тройные апострофы или тройные кавычки.
- Значения присваиваются (на самом деле, объекты, связанные с именами значений) с использованием знака равенства («=»), а равенство проверяется с помощью двух знаков равенства («==»). Вы можете увеличивать / уменьшать значения, используя операторы + = и — =, соответственно, на значение, указанное справа от оператора. Это работает для многих типов данных, в т.ч. и строки.
- ТИПЫ ДАННЫХ.В Python есть следующие структуры данных: списки, кортежи и словари. Наборы также доступны, но только в Python 2.5 и более поздних версиях. Списки похожи на одномерные массивы (но вы также можете создавать списки других списков и получать многомерный массив), словари являются ассоциативными массивами (так называемые хеш-таблицы, которые могут быть любого типа данных), а кортежи являются неизменяемыми одномерными массивы (в Python «массивы» могут быть любого типа, поэтому вы можете смешивать, например, целые числа, строки и т. д. в списках / словарях / кортежах). Индекс первого элемента в массивах всех типов равен 0, а последний элемент может быть получен по индексу -1.
- Вы можете работать только с частью элементов массива, используя двоеточие (:). В этом случае индекс перед двоеточием указывает первый элемент используемой части массива, а индекс после двоеточия указывает элемент ПОСЛЕ последнего элемента используемой части массива (он не включен в подмассив) , Если первый индекс не указан, используется первый элемент массива; если второй не указан, последний элемент будет последним элементом массива. Расчет отрицательных значений определяет положение элемента с конца.
Ссылки
Календарь лекций доступен в двух митап группах: HowProgrammingWorks (это лекции по программированию на примерах JavaScript) и NodeUA (это лекции по Node.js) и я настоятельно прошу регистрироваться всех, кто хочет посетить лекции очно. Вход свободный для всех, но организационно проще оценивать количество слушателей. За всю историю у меня были случаи и 600 человек и 2 человека, при чем явка непредсказуема.
Все записанные видео появляются в тот же день (через 10-20 минут после завершения лекции) на youtube канале.
Лекции сгруппированы в два плейлиста: по программированию и JavaScript и по Node.js.
Ссылки на лекции и материалы я размещаю в двух телеграм-каналалах: по программированию и JavaScript и по Node.js и другим более сложным темам.
Для обсуждения и вопросов есть две телеграмм-группы: по программированию и JavaScript и по Node.js.
Мой аккайнт на github, учебные репозитории в организации HowProgrammingWorks и библиотеки нашего комьюнити.
Шаг восьмой. Найдите учителя
Лучше всего найти персонального наставника, который будет подсказывать вам, что и как лучше сделать в том или ином случае.
Такой вариант имеет множество положительных сторон, главная из которых заключается в наличии персонального подхода к вам лично.
Кроме того, если будут возникать проблемы, учитель поможет вам их решить. А найти наставника можно следующими способами:
1Поступите в ВУЗ. Да, программы обучения в постсоветских странах могут быть достаточно устаревшими, но основы, тот самый принцип программирования, некую основу всего постигнуть вы точно сможете
Рис. 10. Прмиерно так выглядит обучение в ВУЗе
2Различные курсы. Существует огромное количество курсов, где люди собираются в каком-то офисе и преподаватель, точно так же как в ВУЗе, объясняет то или иное понятие. Обычно такие курсы проходят очень интенсивно, и ученики быстро осваивают нужную информацию.
3Форумы и социальные сети. Вы можете прямо разместить объявление о том, что ищете персонального преподавателя. Наверняка, кто-то найдется.
Разумеется, услуги преподавателя будут стоить денег, зато учеба будет весьма продуктивной, и вы сможете узнать много нужной информации.
Шаг 8. Онлайн-курсы
В сети полно материалов и пособий для тех, кто хочет научиться программированию с нуля. И далеко не все они платные.
Мы сделали небольшую подборку наиболее популярных и признанных интернет-сообществом ресурсов.
Увы, большинство из них на английском языке:
- The AI Games – проект, где необходимо создавать ботов, совершенствуя их ИИ с каждым уроком и соревнуясь при этом с другими начинающими разработчиками.
- Codecademy – ресурс для начинающих разработчиков, где собраны курсы по многим языкам программирования и инструментам для создания программного обеспечения. Занятия выполнены в виде задачек. Для их решения необходимо набрать код в интегрированном окне интерпретатора, а сервис проверит синтаксис и истинность результата его выполнения. В случае проблем отладчик даст рекомендации по их устранению. Есть подсказки и форум для поиска ответов.
- Codecombat– локализованный сервис, что является его преимуществом для пользователей, не знающих или плохо владеющих английским языком. Проект рассчитан на изучения языков программирования в игровой форме: для прохождения левелов нужно писать миниатюрные программы, касающиеся как однопользовательского, так и сетевого режима игры.
- Codeschool – учебный процесс основан на просмотре видеороликов и выполнения заданий, материал для которых дан в видео. Доступно более 60 курсов, относящихся не только к программированию.
- CodinGame – платформа для обучения кодингу, где выполнение кода визуализируется. Уровень сложности головоломок растёт с каждым уроком. Сервис поддерживает синтаксис 25 языков.
- Codewars – образовательная площадка для программистов, где задания выполняются в IDE.
- HTML Academy – курсы для будущих верстальщиков и веб-дизайнеров. Рассчитаны на практиков, которые не только книги читают, но и закрепляют теорию на деле. Две десятка курсов доступны всем после прохождения регистрации. Этого хватает, чтобы понять, на своём ли вы месте и подходят ли занятия.
Рис. 10 – Codecademy