Code books программа для программирования
JavaScript – один из самых популярных языков программирования в мире. Он используется для создания интерактивных веб-страниц, мобильных приложений, в серверной разработке. Изучать JS мы будем с нуля, с самых азов. Первый модуль – плацдарм для написания осмысленных программ. В нем мы разберем, как написать свой первый код на JS. Расскажем, что такое комментарии и зачем они нужны. На примере проверки ваших решений рассмотрим, что такое тестирование и как читать вывод тестов.
Арифметика
Современные программы создаются для обслуживания бизнесов, помощи в ежедневной жизни и развлечений. Но в основе их работы по-прежнему лежат вычисления. Наиболее простая и базовая тема в программировании — арифметика. В этом модуле мы переведем арифметические действия на язык программирования, поговорим о приоритете операций и операциях с дробным числами. Вспомним школьные правила из уроков математики и узнаем, что получится, если делить на ноль в JavaScript. А под конец расскажем, что такое линтер и почему он может «ругаться».
Строки
Текст в программировании называется «строками», и эта тема не так проста, как может показаться. Как вывести фразу, в которой есть и одинарные, и двойные кавычки? Как вообще быть с текстом, ведь компьютер не знает ничего о буквах! Модуль посвящен разным аспектам написания текста – от кавычек и экранирования до кодировки.
Переменные в языке JavaScript
Информацию можно помещать в специальные «хранилища» — переменные. Это позволяет переиспользовать уже существующие данные и не дублировать их в разных частях кода. В этом модуле мы разберем как изменять переменные и именовать их, чтобы чтение вашего кода было понятным для любого разработчика. Вы поймете, что придумать название переменной не так-то просто! А еще расскажем, как использовать переменные для упрощения сложных вычислений.
Типы данных JavaScript
JavaScript — язык со слабой типизацией и неизменяемыми примитивными типами данных. Что произойдет, если мы попробуем умножить число на строку? Каким образом JavaScript понимает, что за тип данных перед ним? И что делает JavaScript, когда видит несоответствие типов? Ответы на эти вопросы вы найдете в текущем модуле.
Вызов функций
Для выражения любой произвольной операции в программировании существует понятие «функция». Функции — кирпичики, из которых программисты строят системы. В этом модуле мы научимся пользоваться уже созданными функциями. Посмотрим на сигнатуру функции в документации и разберемся, как её использовать. Познакомимся со стандартными библиотеками, которые хранят тысячи функций. Все функции невозможно выучить, но каждый программист должен знать, где искать документацию по ним.
Свойства и Методы
Данные, которыми мы оперируем в своих программах, могут обладать важными свойствами. В JavaScript свойства встроены прямо в язык. Кроме свойств у данных существуют методы — функции, находящиеся внутри свойств. Свойства и методы — такие же выражения, как переменные, константы или вызовы функции, а значит, их можно всячески комбинировать. Глубже эти темы разбираются на отдельных курсах, посвященных объектно-ориентированным возможностям JavaScript. Мы же в этом модуле изучим основы.
Определение функций
Определение собственных функций значительно упрощает написание и поддержку программ. Например, умение определять функции позволяет объединять сложные (составные) операции в одну – вся сложность может быть скрыта за одной простой функцией. Научившись писать функции, вы сделаете первый шаг на пути к построению по-настоящему полезных программ. И мы вам в этом поможем. В этом модуле вы создадите свою первую функцию и научитесь давать ей (а заодно переменным и константам) понятные названия.
Логика
Условные конструкции
Задача функции-предиката — получить ответ на вопрос, но обычно этого недостаточно и нужно выполнить определенное действие в зависимости от ответа. If и Switch – конструкции JavaScript, с помощью которых программист может выбирать необходимое поведение программы в зависимости от разных условий: пропускать одни инструкции и выполнять другие. Их и разберем на практике в этом модуле.
Циклы
Любой код может повторяться десятки, тысячи, миллионы раз. В комбинации с другими известными нам инструментами — переменными и условиями — это открывает множество возможностей по построению программ и сложных систем. Приведем простой пример. Вам нужно найти конкретную фразу в учебнике из 500 страниц. Фразу вы помните, а вот номер страницы нет. Самый простой (и долгий) способ — последовательно просматривать страницы до тех пор, пока не найдете нужную. Для выполнения таких повторяющихся действий и нужны циклы.
Это полностью бесплатная платформа для изучения основ программирования с нуля. Code Basics был создан разработчиками и сообществом Хекслет для того, чтобы любой желающий мог попробовать себя в программировании и заложить правильный фундамент для новой профессии, основанный не на запоминании специфики, а на понимании системы в целом.
Чему здесь можно научиться?
Вы можете познакомиться с основами языков JavaScript, PHP, Java, Python, Ruby, Racket, в процессе доработки – Elixir и Go. Также на Code Basics доступны курсы по HTML и CSS.
Для кого курсы?
Курсы Code Basics подходят для всех, кто начинает изучать программирование с нуля. Возраст, профессия – не имеют значения. На Code Basics занимаются взрослые и подростки, технари и чистые гуманитарии.
Как начать обучение?
Как проходит обучение?
Code Basics – полностью автоматизированная онлайн платформа. Поэтому вы можете заниматься в любое удобное время, когда захотите.
Курсы программирования состоят из тематических блоков, в каждом есть несколько уроков. Проходите уроки последовательно: сначала изучите теорию, потом выполните практическое упражнение прямо в браузере – система проверит его автоматически.
А если что-то не получается?
При выполнении практики также советуем внимательно читать вывод тестов – в нем содержится информация о том, почему решение не проходит. А еще вы можете сравнить свой результат с готовым решением. Впрочем, не советуем обращаться к нему до тех пор, пока успешно не выполните задание. Помните – вы учитесь, а не повторяете.
Какие возможности есть для практикующих разработчиков?
Code Basics – проект с открытым исходным кодом. Участвовать в его развитии может любой практикующий разработчик. Исходный код доступен на GitHub. Вы можете помочь в создании новых курсов и уроков, улучшать существующие, исправлять неточности и опечатки, переводить курсы на английский язык.
Это полностью бесплатная платформа для изучения основ программирования с нуля. Code Basics был создан разработчиками и сообществом Хекслет для того, чтобы любой желающий мог попробовать себя в программировании и заложить правильный фундамент для новой профессии, основанный не на запоминании специфики, а на понимании системы в целом.
Чему здесь можно научиться?
Вы можете познакомиться с основами языков JavaScript, PHP, Java, Python, Ruby, Racket, в процессе доработки – Elixir и Go. Также на Code Basics доступны курсы по HTML и CSS.
Для кого курсы?
Курсы Code Basics подходят для всех, кто начинает изучать программирование с нуля. Возраст, профессия – не имеют значения. На Code Basics занимаются взрослые и подростки, технари и чистые гуманитарии.
Как начать обучение?
Как проходит обучение?
Code Basics – полностью автоматизированная онлайн платформа. Поэтому вы можете заниматься в любое удобное время, когда захотите.
Курсы программирования состоят из тематических блоков, в каждом есть несколько уроков. Проходите уроки последовательно: сначала изучите теорию, потом выполните практическое упражнение прямо в браузере – система проверит его автоматически.
А если что-то не получается?
При выполнении практики также советуем внимательно читать вывод тестов – в нем содержится информация о том, почему решение не проходит. А еще вы можете сравнить свой результат с готовым решением. Впрочем, не советуем обращаться к нему до тех пор, пока успешно не выполните задание. Помните – вы учитесь, а не повторяете.
Какие возможности есть для практикующих разработчиков?
Code Basics – проект с открытым исходным кодом. Участвовать в его развитии может любой практикующий разработчик. Исходный код доступен на GitHub. Вы можете помочь в создании новых курсов и уроков, улучшать существующие, исправлять неточности и опечатки, переводить курсы на английский язык.
Сейчас доступен полный курс по PHP и первый модуль по JavaScript. На подходе Racket и Python. Весь исходный код платформы и самих уроков — в open source.
Сегодня хочу рассказать немного о сути Code Basics, его внутренностях и технологическом стеке.
Зачем это вообще
Главный вопрос: «а зачем вообще очередные базовые курсы, их же миллион?». К сожалению, большинство доступных материалов больше похоже на справочники или очередные туториалы в стиле «сделайте так, посмотрите сюда, работает, круто, да?».
В процессе работы над основными программами обучения на Хекслете мы столкнулись с проблемой: если человек начинает совсем-совсем с нуля, не зная что такое переменные и функции, то типичный базовый курс или туториал может не только не помочь ему, но даже навредить. Новичок легко привыкнет к «магии», к не лучшим стандартам кодирования, к подходу запоминания специфики вместо понимания систем.
На первый взгляд проект может напомнить Codecademy, но есть три важных отличия:
1. Уроки на русском. Мы начали с PHP в том числе по этой причине — на русском языке качественных, интерактивных и бесплатных уроков не нашлось, а язык остаётся популярным и важным в индустрии.
2. Мы не учим поверхностно. Это вечная дилемма — с одной стороны нужно покрыть много всего и заинтересовать широтой (и «популярными словами»), с другой — мы в Хекслете продолжаем следовать своим принципам важности фундамента и понимания систем, а не особенностей. Легче понять на примерах:
а) Рассматриваем побочные эффекты и изменяемость — это невероятно важно, но почти никто не затрагивает эти темы в базовым курсах.
б) Как дело касается строк, важно рассказать о самом понятии кодировки. Чтобы работа с символами не превратилась в «магию и волшебные слова».
в) Когда становится понятно, что язык позволяет делать странные штуки вроде 1 + ‘7’ , важно познакомить ученика с типизацией и в частности со слабой типизацией.
г) Когда база пройдена и на одной строчке кода начинают появляться несколько разных штук одновременно, очень важно чтобы человек сразу понимал что такое выражение и чем оно отличается от инструкции. И как выражения могут содержаться в определениях.
д) Когда начинается работа с функциями, полезно продолжить рассматривать выражения, но уже в контексте вызовов, возвратов и аргументов.
Думаю, вы поняли суть. Мы, программисты, не задумываемся особо о таких штуках, как foo(a+b) или return foo(x) , но для новичков очень часто подобные конструкции оказываются на порядок сложнее «стандартных» foo(a) или return x . И здесь можно долго рассматривать все отдельные случаи, но лучше объяснить суть, саму систему базовых правил языков программирования.
Контент гранулирован и подаётся последовательно, плавно повышая глубину. Например, те же функции и выражения разбиты на несколько уроков, где мы рассматриваем различные аспекты, постепенно соединяя их в общую картину.
3. Бесплатно и интерактивно. Мы сделали Code-Basics в том числе потому, что некуда было посылать новичков, готовящихся к нашей основной программе «Профессия PHP-разработчик». Просто нет бесплатного интерактивного курса! Точнее, теперь есть :)
Другие важные особенности:
- Учим правильно именовать функции и следовать стандартам кодирования.
- Делимся своим опытом и лучшими практиками.
- В каждом упражнении есть решение учителя, которое доступно после самостоятельного решения или через полчаса попыток :) При этом свое решение можно сравнить с решением учителя на одной странице.
- Каждый урок можно обсудить с другими учениками. Мы стараемся чистить обсуждения от «спойлеров»
- Задания построены вокруг Игры Престолов :) (см. скрин выше, например)
Авторизация, позволяющая получить доступ к упражнениям и сохранять прогресс уроков, пока только через Github. Пользуясь случаем провоцируем новичков как можно скорее создать аккаунт на Гитхабе :)
Под капотом
Хекслет написан на Рельсах. Мы писали о внутренностях Хекслета три года назад (омг, три года!) в статье «Под капотом образовательного проекта Хекслет», и с тех пор многое изменилось, но фундаментально все так же: Rails, PostgreSQL, все крутится на AWS и частично на Azure, активно используется Докер, деплой и оркестрация через Ansible. Под каждое упражнение каждого юзера поднимается контейнер, что позволяет делать упражнения практически любой сложности: с фреймворками, серверами и веб-доступом.
В Code-Basics изначально решили попробовать что-то новое и более легковесное, чем Rails. Например, nodejs + typescript + какой-нибудь микрофреймворк. Но, желательно, не менее экспрессивное, чем Rails. Учитывая нашу любовь к Эрлангу, выбор естественным образом пал на Phoenix, тем более руки давно чесались попробовать Elixir.
Фреймворк неожиданно удивил. Несмотря на значительно меньшее количество фич, он сделан очень добротно. Интеграция с JavaScript, развитая тестовая инфраструктура, отличная ORM (но необычная, нужно привыкать), много рельсовых аналогов (например поддержка slim или gon).
Была даже одна вещь, которая сделана значительно лучше чем в других фреймворках: создание набора мидлвар под конкретные маршруты или группу маршрутов. Даже если вы не будете использовать phoenix, рекомендуем познакомиться с пайплайном.
А учитывая наличие акторов (и готовых каналов в Phoenix), можем однозначно сказать, что Elixir выигрывает у Node JS почти во всех ситуациях. И при прочих равных мы будем выбирать для разработки Феникс.
По фронту — используем React + Redux. Вёрстка построена на Bootstrap 4, как и все наши сайты (hexlet.io, guides.hexlet.io). В качестве редактора для интерактивных упражнений используется Monaco, лежащий в основе VS Code. Мы также перешли на Монако в самом Хекслете.
Инфраструктура и деплой — это Terraform, Ansible и кучка мейкфайлов с шорткатами для самых популярных команд. Исходники Code Basics доступны на Гитхабе, и мы принимаем пулл-реквесты.
Сами уроки и практические упражнения — тоже. В том числе принимаем пулл-реквесты для перевода уроков на английский. Пока ограниченное количество уроков на английском доступно тут.
Кому подойдет Code Basics
- Новичкам с нулевым опытом.
- Начинающим программистам, которые немного «плавают» в базовых темах и не до конца понимают как работают штуки, выходящие за пределы простых примеров из учебников.
- Учителям, работающим с новичками.
Планы
Следующие курсы на Code-Basics — это JavaScript, Racket и Python. Сейчас по PHP есть 63 урока и скоро выйдет несколько дополнительных: по библиотечным функциям, работе с датой и временем и unicode. По JavaScript есть первый модуль, и контент по большей части будет аналогичен PHP: все от арифметики до функций.
Далее в планах перевод на английский. Вы можете в этом помочь :) Все эти курсы на Code Basics также будут полностью бесплатными.
Для написания оптимизированного и безошибочного кода программисту необходимо выбрать подходящий для себя инструмент. Хороший текстовый редактор повышает эффективность работы, а также помогает избежать некоторых наиболее распространенных ошибок в программировании.
Только разработчик знает, каково это, когда упускаешь точку с запятой в коде из тысячи строк и это приводит к ошибке в запуске программы. Эффективные текстовые редакторы способны уведомить программиста о подобных ошибках в синтаксисе непосредственно при написании кода.
Мы уже публиковали на нашем сайте статью о лучших редакторах кода для Linux и получили много отзывов читателей. Поэтому было решено продолжить тему текстовых редакторов для программистов, на этот раз для ОС Windows и MacOS.
Итак, представляем первые семь лучших редакторов кода для Windows и Mac. (продолжение читайте здесь).
Visual Studio Code
Visual Studio Code это платформа для разработчиков от Microsoft. Этот инструмент, тем не менее, имеет открытый исходный код и может использоваться на разных платформах (Windows, Mac OS X и Linux). Главная особенность этого редактора кода в том, что он обеспечивает обогащенный опыт программирования для разработчиков без необходимости скачивания массивного файла Visual Studio editions (весом примерно в 3GB). Это сохраняет как время, так и пропускную способность. Таким образом, приложение является очень легковесным, не потребляет много оперативной памяти и способствует быстрому доступу и реализации.
Достоинства:
- Программа очень быстро устанавливается в силу своего компактного размера.
- Есть портативная версия для скачивания на поддерживаемые устройства.
- Позволяет контроль GitHub и предлагает функции отладки.
Недостатки:
- Обновление программы на Linux занимает очень много времени.
- Требует немедленного улучшения в поддержке расширений.
Цена: программа распространяется бесплатно.
Notepad++
Это усовершенствованный и обогащенный функционалом брат текстового редактора Notepad, который можно найти в Windows OS. Между ними есть существенная разница в интерфейсе, которую вы заметите сразу после начала работы с Notepad++.
Это приложение поддерживает различные языки программирования, но в основном известно как лучший HTML-редактор. Программа позволяет выбирать цвета для подсветки синтаксиса и подсвечивает ошибки в коде по мере его ввода.
Достоинства:
- Хотя программа создана для Windows, ее можно запускать на Linux, Unix, Mac OS X (для последнего – с помощью Wine).
- Приложение легковесное и быстро запускается.
- Поддерживает внешние плагины, включая макросы.
- Интерфейс поддерживает редактирование в разных вкладках.
- Добавление закладок.
- Опция перетаскивания для новичков.
- Опция поиска и замены текста.
- Полноэкранный режим.
- Сворачивание в трей.
- Продуманная подсветка синтаксиса.
- Автоматические отступы и автодополнение.
- Фолдинг кода и текста.
- Интеграция компилятора.
- Поддержка FTP.
- Проверка правописания со сравнением файла.
Недостатки:
Цена: программа бесплатная.
Итог: Это один из лучших текстовых редакторов для написания кода (HTML, CSS, JavaScript и PHP). Многие современные редакторы кода не предоставляют возможность подсветки кода в случае какой-либо ошибки, а Notepad ++ поддерживает эту функцию и помогает писать безошибочный код.
jEdit
А это редактор для опытных программистов. Jedit это платформа с открытым исходным кодом, разработанная с использованием языка Java. Этот язык относится к самым защищенным. Функционал байткода в Java усложняет его расшифровку и декодирование. Приложение поддерживает сотни плагинов и макросов.
Достоинства:
- Автоматические отступы.
- Фолдинг кода и текста.
- Это самый мощный движок для выполнения регулярных выражений.
- Проверка правописания, поддержка FTP, возможность интеграции компилятора с использованием стороннего плагина.
- Возможность запускать несколько экземпляров программы одновременно.
- Интегрированный FTP-браузер.
Недостатки:
- Будучи написанным на Java, приложение является тяжеловесным и потому его загрузка требует времени.
- Нет совместного редактирования.
- На Mac возможны баги.
- Нет поддержки крупных файлов.
- Нет поддержки SSH для редактирования удаленных файлов.
Цена: бесплатная программа.
Итог: если вам нужна хорошо отлаженная и безопасная платформа, jEdit – правильный выбор для вас. Этот основанный на java редактор кода иногда требует времени для загрузки, но его свойства и функции вас не разочаруют. Наслаждайтесь этим бесплатным текстовым редактором для чистого, безопасного и оптимизированного сеанса программирования.
Araneae
Araneae это текстовый редактор, который обогатит ваш опыт написания кода и программирования на компьютерах с ОС Windows. Хотя большая часть программ, доступных для Windows, работает также на платформах Mac и Linux, Araneae принадлежит к немногим исключениям, запускаемым только на Windows. Этот инструмент включает многочисленные расширения и локализации, что обеспечивает поддержку множества языков (HTML, CSS, XHTML, PHP и Rails) без загрузки сторонних расширений.
Достоинства:
- Подсветка синтаксиса.
- Опция перетаскивания для более быстрой разработки.
- Поиск и замена для множественных правок.
- Поддержка запуска нескольких экземпляров, как в jEdit.
Недостатки:
Цена: бесплатная программа.
Итог: Araneae, работая только в Windows, предлагает более быстрые обновления и исправления багов. Может с успехом использоваться как PHP-редактор.
Coda – текстовый редактор, поддерживаемый Mac. Предназначен для блестящих программистов, которым нравится сочетание скорости и оптимизации в одном редакторе. Coda поддерживает OS X 10.7.5 и более поздние версии Mac. Это один из очень немногих текстовых редакторов, созданных исключительно для систем Mac.
Эта программа значительно изменилась с момента первоначального выпуска в 2007 году, превратившись из простого текстового редактора в приложение для предварительного просмотра. Coda имеет все необходимые функции, которые могут вам понадобиться для написания кода, включая синтаксис, просмотр и загрузку ваших веб-страниц. Transmit Turbo Engine поддерживает быструю загрузку из удаленных локаций.
Достоинства:
- Компактно интегрированные основные функции.
- Leopard GUI
- Автодополнение кода.
- Редактирование блоков и расцветка синтаксиса.
- Опция перетаскивания.
- Поддержка окна терминала для MySQL-запросов.
Недостатки:
- Лучше всего подходит для написания кода в HTML и CSS.
- Поддерживается только для систем, основанных на Mac.
- Поддержка сетевых дисков часто приводит к сбоям.
- Дороговизна в сравнении с другими редакторами кода.
Цена: 7-дневный пробный период/$99 за полную версию.
Итог: Coda — лучшая альтернатива дорогим программам для веб-дизайна. Объединяет все инструменты, необходимые для разработки веб-сайта с нуля. Coda – лучший текстовый редактор для Mac в плане соотношения цены и возможностей. Приложение также поддерживает уведомления об обновлениях.
TextMate
TextMate еще один текстовый редактор для Mac. По большей части этот редактор предпочтителен для программирования на Ruby и Ruby on Rails. Это также хорошо зарекомендовавший себя редактор для разработчиков, программирующих на системе Mac. Приложение прекрасно подходит для разработки на современных языках программирования.
Достоинства:
- Поиск и замена.
- Автоматические отступы.
- История буфера обмена.
- Выделение колонок и набор текста в колонках.
- Автодополнение.
- Поддержка сворачивания блоков кода.
- Поддержка Perforce, Darcs, SVK и Subversion.
- Поддержка более 50 языков программирования.
- Подсветка синтаксиса и расцвечивание.
- Поддержка Xcode.
- Поддержка FTP.
Недостатки:
- Устаревший UI – самый большой недостаток этого высокооптимизированного текстового редактора для Mac.
- Нет полноэкранного режима.
- Доступен только для Mac OSX.
Цена: Бесплатная программа.
Итог: Без сомнений, если вы ищете бесплатный текстовый редактор для Mac, то TextMate будет лучшим выбором. Для Windows бесплатных текстовых редакторов достаточно много, но для Mac – очень мало, а TextMate – один из них.
Text Wrangler
Еще одна программа на основе iOS – Text Wrangler. Это одна из небольшого числа программных платформ, которая поддерживает только один язык, например, английский. Но это не означает, что TextWrangler просто еще одно стандартное приложение. Этот редактор простой, но достаточно мощный. Это один из лучших инструментов для Unix и администрирования серверов.
Достоинства:
- Поддерживает 44 языка, включая HTML, JavaScript, Perl, Python, VBScript и SQL.
- Очень малое количество редакторов кода поддерживают работу с крупными файлами, и TextWrangler – один из них.
- Поддержка плагинов и макросов.
- Безопасный FTP для облегчения передачи данных.
- Поддержка SSH для удаленного редактирования файлов.
- Одновременное сравнение двух документов.
- Подсветка синтаксиса.
- Фолдинг текста и кода.
- Автодополнение.
- Проверка правописания.
Недостатки:
Цена: бесплатное программное обеспечение.
Итог: приложение распространяется свободно, однако вы можете обновиться до более усовершенствованной версии этого приложения, например, BBEdit, за $49. Это великолепный HTML-редактор для Mac с большим количеством полезного функционала.
Читайте также: