Наша статья публикуется сегодня не случайно. 13 сентября 2018 года — это 256-й день года, День программиста, официально утвержденный в России указом президента. А потому для начала мы поздравляем всех программистов с профессиональным праздником и желаем им чистого кода и достойных проектов!
Почему именно 256-й? 256 — это максимальное количество значений, которое можно выразить с помощью восьмиразрядного байта. Кроме того, это максимальная целая степень числа 2, которая не превышает количество дней в году.
Сегодня, как следует из названия, мы бы хотели затронуть такую сферу программирования, как веб, и рассмотреть 5 вопросов:
- Для чего вообще заниматься веб-программированием?
- На каком языке программировать?
- Где программировать?
- Чем пользоваться для облегчения процесса?
- Где запускать в продакшн?
Для чего нужно веб-программирование?
Веб-программирование объединяет в себе широкий спектр задач — от создания простых или динамических веб-страниц до сложных интернет-приложений и веб-сервисов.
Из наиболее частых и востребованных рынком продуктов веб-программирования можно перечислить следующие:
Динамические веб-сайты — по сути представляют собой комплекс скриптов, использующих базу данных и шаблоны.
Основным преимуществом такого типа сайтов над статическими является разделение дизайна (шаблона), контента и непосредственно системы обработки информации. Другими словами — человек, который хорошо разбирается в предмете и тематике самого сайта, но не знакомый с веб-разработкой, при таком подходе может всецело участвовать в наполнении и поддержке сайта через понятные ему инструменты и не бояться что-либо сломать в коде или дизайне, доступа до которых у него банально нет.
И для программиста/верстальщика динамический сайт удобен тем, что можно вносить изменения на всем сайте, внося правку всего в одном месте, а не перелопачивать весь контент, за счет того, что дизайн страниц генерируется из шаблонов.
Веб-приложения — клиент-серверные программы, в которых клиентом выступает веб-браузер, а сервером — веб-сервер. По сути является частным случаем динамического веб-сайта, в котором присутствует интерактивность, а не только динамическая подгрузка информации из разных источников.
Примерами веб-приложений могут служить: браузерные игры, веб-интерфейсы электронной почты, интернет-магазины, вики-движок и т.п.
Веб-сервисы — под ними обычно понимают услуги, оказываемые с помощью Интернета и разворачиваемые на серверах приложений.
Примерами веб-сервисов могут быть: поисковые машины, сервисы хранения файлов и документов, почтовые сервисы, агрегаторы товаров и услуг и др.
Мобильные приложения — программное обеспечение, предназначенное для работы на смартфонах, планшетах и других мобильных устройствах.
Почему мы упоминаем мобильные приложения в разрезе веб-программирования и отдельно от веб-приложений? Ответ прост — у сайта есть три пути взаимодействия с пользователем мобильного устройства: через веб-браузер, через нативное мобильное приложение, либо через мобильное приложение, включающее в себя компонент браузера.
Хорошему веб-программисту желательно знать обо всех трех путях, так как приложение пока что имеет ряд преимуществ: оно быстрее, чем сайт, открываемый через веб-браузер, даже если сайт адаптирован под мобильные устройства; у приложения привычные пользователю устройства интерфейс; и самое главное — приложение может предлагать пользователю контент даже при отсутствии непосредственного подключения к сети Интернет, выполняя кеширование и обновление по мере появления доступа.
На каком языке программировать?
Пожалуй, один из самых сложных вопросов. Обилие платформ, апологетов разных подходов и архитектур порождает множество противоречивых фактов, однако мы постарались собрать выжимку из основных возможных и востребованных вариантов.
Но прежде стоит остановиться на двух языках, не являющихся языками программирования в традиционном смысле, без которых, однако, дальнейшее погружение в веб-программирование рискует обернуться пустой тратой времени. Речь идет о CSS и HTML.
HTML — язык гипертекстовой разметки документа. Скелет, который задает очередность расположения элементов и объясняет их для веб-браузера.
CSS — формальный язык описания внешнего вида документа, написанного с использованием языка разметки. Если коротко, то это те правила, которые объясняют веб-браузеру — как именно должны выглядеть отображаемых им элементы со всеми необходимыми дизайнерскими уточнениями по размерам, цветам и другим параметрам.
После освоения вышеперечисленных языков можно приступать и к языкам программирования.
JavaScript — мультипарадигменный язык программирования. Поддерживает функциональный, объектно-ориентированный и императивный стили.
JavaScript является одним из основных языков, применяемых в разработке интерактивных пользовательских интерфейсов.
SQL — декларативный язык программирования, применяемый для работы с реляционными базами данных. Если вы предполагаете работать с базами данных на регулярной основе — это тот язык, изучением которого стоит озаботиться.
Java — сильно типизированный объектно-ориентированный язык программирования. Приложения Java обычно могут работать на любой платформе с помощью виртуальной Java-машины, что делает этот язык чрезвычайно универсальным в применении. Java используется такими проектами, как: Amazon, eBay, LinkedIn и другими.
Python — высокоуровневый язык программирования общего назначения с минималистичным синтаксисом. В частности используется для создания масштабируемых многопользовательских веб-приложений. Используется в таких сервисах, как: Dropbox, YouTube, Instagram и других.
C# — объектно-ориентированный язык программирования, активно продвигаемый Microsoft и позволяющий создавать сайты на платформе .NET Framework.
PHP — высокоуровневый скриптовый язык для создания динамических веб-сайтов. Имеет довольно простой синтаксис, поэтому начать программировать на этом языке довольно просто даже новичкам, не обладающим представлениями о принципах разработки кода.
За это (и многое другое) PHP подвергается критике профессионального сообщества программистов, что, однако, не мешает ему занимать одно из лидирующих мест среди языков, используемых для создания динамических веб-сайтов.
C++ — компилируемый, статически типизированный язык программирования общего назначения. Мощный, с обширными библиотеками. Особенно полезен для высокопроизводительных приложений.
C — классика, компилируемый, статически типизированный язык программирования общего назначения. Для веб-программиста скорее будет полезен с точки зрения более глубокого понимания процессов, нежели иметь прикладное значение.
TypeScript — язык программирования, позиционируемый как расширяющий возможности JavaScript. По сути является надстройкой над JavaScript и обратно совместим с ним.
Ruby — динамический, рефлективный, интерпретируемый высокоуровневый язык программирования. У Ruby лаконичный и простой синтаксис и, кроме того, все в нем является объектами, например число «1» — это экземпляр класса Integer. Примерами использования могут служить: GitHub, Basecamp, Shopify и другие.
Swift — открытый мультипарадигмальный компилируемый язык программирования общего назначения. Создан компанией Apple целенаправленно для разработки iOS и OS X приложений.
Где программировать?
Если такая возможность есть, то разработку следует вести в той же среде, где предполагается разместить и конечную версию продукта.
Однако для веб-разработки существуют наборы программ, содержащие все необходимые компоненты для установки и запуска веб-сервера прямо у вас на компьютере без необходимости реального его приобретения на период разработки.
Примеры таких пакетов:
Open Server — портативная серверная платформа и программная среда под Windows. В состав программного комплекса входят:Apache, Nginx, MySQL, MariaDB, MongoDB, PostgreSQL, PHP, PHPMyAdmin и многое другое.
XAMPP — кроссплатформенная (Windows, Linux, OS X) сборка веб-сервера Apache, содержащая MariaDB, интерпретатор скриптов PHP, язык программирования Perl.
С помощью чего программировать?
Для написания кода в помощь веб-программисту создано множество инструментов. Конечно, можно использовать и обычные текстовые редакторы (например, Notepad++), но в целях максимальной производительности профессионалы предпочитают работать в той или иной интегрированной среде разработки (IDE — integrated development environment), которая включает в себя помимо текстового редактора еще и компилятор, интерпретатор, а также отладчик и средства автоматизации сборки.
Примеры популярных IDE:
Eclipse — платформа для создания модульных кроссплатформенных приложений. Для этой ИСР характерно наличие множества расширений, например для работы с базами данных, серверами приложений и т.д. Поддерживает большое количество языков программирования, в том числе PHP, Perl, Python.
Komodo IDE — кроссплатформенная коммерческая среда разработки ПО, содержащая отладчик и проверку синтаксиса для Perl, Python, PHP и других языков.
PhpStorm — интегрированная среда разработки на PHP. Поддерживаются передовые технологии веб-разработки, включая HTML5, CSS, Sass, SCSS, Less, Stylus, Compass, CoffeeScript, TypeScript, ECMAScript Harmony, шаблоны Jade, Zen Coding, Emmet, и, конечно же, JavaScript.
CodeLobster — условно-бесплатная интегрированная среда разработки приложений для создания веб-приложений на языке PHP, также поддерживаются: JavaScript, HTML, XML и CSS.
Функции IDE, хотя и не в полном объеме, могут выполнять и редакторы, чье преимущество выражается в легковесности и отсутствии избыточного функционала.
Примерами таких редакторов могут являться:
SublimeText 3 — кроссплатформенный проприетарный текстовый редактор. поддерживает и имеет возможность подсветки синтаксиса для множества языков программирования.
Brackets — кроссплатформенный свободный текстовый редактор. Brackets ориентирован на работу с HTML, CSS и JavaScript.
Atom — продукт от команды GitHub, бесплатный, кроссплатформенный, с открытым исходным кодом.
Coda — легковесный редактор для OS X и iOS со всеми нужными функциями.
Для тех, кто хотел бы облегчить себе рутинную работу, добиться определенной простоты сопровождаемости проекта и повысить надежность используемых решений, существуют фреймворки — программные платформы, позволяющие на лету создавать каркас будущего проекта.
Примеры фреймворков:
Yii2 (акроним от «Yes It Is!», произносится как «Yee» или [ji:], на русском «йии») — объектно-ориентированный компонентный фреймворк, написанный на PHP и реализующий парадигму MVC (Model-View-Controller).
Laravel — бесплатный веб-фреймворк с открытым кодом, предназначенный для разработки с использованием архитектурной модели MVC.
Symfony — свободный фреймворк, написанный на PHP, который использует паттерн Model-View-Controller. Symfony предлагает быструю разработку и управление веб-приложениями, позволяет легко решать рутинные задачи веб-программиста. Работает только с PHP 5 и выше.
CodeIgniter — популярный MVC фреймворк с открытым исходным кодом, написанный на языке программирования PHP, для разработки полноценных веб-систем и приложений.
Ruby on Rails — явный лидер фреймворков для Ruby. Является открытым программным обеспечением.
Django — фреймворк для веб-приложений на языке Python. Используется на таких сайтах как Instagram, Disqus, Mozilla и других.
Где запускать в продакшн?
Виртуальный хостинг — экономичный вид хостинга: множество веб-сайтов размещено на одном сервере и его ресурсы используются ими параллельно и высоконагруженные проекты могут затормаживать остальных соседей. Если реализуемый вами проект на данном этапе не предполагает размещения больших объемов информации и большой нагрузки, это отличный выбор по соотношению цена-качество.
Виртуальный сервер (VDS/VPS) — эмуляция работы физического сервера, при этом отсутствуют конкуренты на ресурсы. Вы получаете отдельную операционную систему, память, процессорное время и т.д. Это существенно повышает стабильность работы, но обходится несколько дороже и подходит для случаев нагруженных крупных проектов.
Выделенный сервер — отдельный физический сервер, предоставляемый клиенту в полное единоличное пользование. Этот вариант подойдет для очень крупных проектов, либо для тех, кому важен полный контроль за собственной инфраструктурой.
Colocation — по сути тот же выделенный сервер, который, однако, предоставляется не провайдером, а вами. Провайдер в данном случае предоставляет профессионально оборудованное место для размещения, хороший интернет-канал и другие, опциональные, услуги.
Облачная инфраструктура — более гибкая и отказоустойчивая вариация виртуального сервера в плане выделяемых ресурсов и операционных систем. Оплата в таком варианте осуществляется не по фиксированным тарифам, а за реально запрошенные и потребляемые ресурсы.
Итоги
Тема программирования довольно обширна и говорить о всех ее аспектах можно бесконечно. Лучшее, что можно сделать, если вас интересует это направление деятельности — перейти к практике и начать реализовывать свои идеи и проекты, причем прямо сейчас!
Только не забывайте знаменитое напутствие Джона Вудса и “пишите код так, как если бы человек, который в дальнейшем будет работать с этим кодом, был бы психопатом, склонным к насилию, и знал бы, где вы живете”. Уважайте код и вас будут уважать за работу с ним.
А какие технологии и инструменты предпочитаете в веб-программировании вы?
Комментарии