На чем пишут сайты
Перейти к содержимому

На чем пишут сайты

  • автор:

Какие языки используют при создании сайтов

Принцип создания сайтов появился в процессе разработки языка HTML, позволяющего представлять страницу в виде гипертекста, считываемого HTML или веб-браузером. На более низком уровне речь идет об установке сетевого соединения по прикладному протоколу HTTP или HTTPS. Именно эту аббревиатуру можно увидеть в качестве приставки к любому веб-адресу, имеющуюся перед доменным именем в строке браузере. Чтобы понимать, какие языки используют при создании сайтов, нужно иметь представления о способах передачи данных в Интернет и интернет-протоколах.

Прикладные протоколы, веб-браузер и гипертекст – что это такое

Прикладные API-протоколы HTTP или HTTPS являются более ранней и более поздней разработкой соответственно. Отличаются уровнем защиты соединения. HTTPS – это шифрованная версия, она позволяет снизить риски несанкционированного получения данных во время серфинга пользователя в Интернет, но полностью их не исключает.
Эти виды программных приложений представляют собой программно-организованный способ передачи данных, используя возможности стека OSI и основного и стандартизированного протокола TCP/IP. Такие программы пишутся на языке С# и Eclipse. Эклипс – это интегрированная (кроссплатформенная) среда для создания сетевых приложений, которые будут работать на всех типах платформ, например, на IBM/PC, Apple, Android и других. Для обычного пользователя написание прикладного протокола для работы сайта в сети не только не требуется, но и окажется непосильной задачей.
Пользовательский уровень задач работает уже с готовым протоколом передачи данных, который в свою очередь встроен или интегрирован в веб-браузер. Последний представляет весьма специфичное программное приложение высокого уровня.
В упрощенном понимании функции браузера состоят в том, чтобы воспроизводить на экране страницы сайтов, представленных в гипертекстовом виде, то есть в HTML. Все языки программирования, на которых пишутся сайты тем или иным образом представляют функциональные модули. Их результат работы выводится на экран пользователя в гипертекстовом виде.

HTML

Язык гипертекстовой разметки Hyper Text Markup Language является стандартом разметки текстов для их воспроизведения в браузерах, разработанных разными производителями. Страницы в основном представлены в HTML или более новой XHTML-версии. Синтаксис довольно прост, текст помещается в определенные стандартные теги, с помощью которых браузер «понимает», как выводить ему эту часть веб-страницы.
Примеры тегов:

text

– абзац текста;
text – ссылка в тексте;
text – выделить жирным;

text

– заголовок первого уровня.
Соответственно, вся гипертекстовая страница выделяется тегами . Сейчас новые, более прогрессивные сайты используют версию HTML5. Но для обычного пользователя, желающего иметь хороший функциональный веб-ресурс, это может быть избыточно.
В сети можно встретить целый ряд простых html-редакторов, в которых можно создать небольшие функциональные сайты. Это можно сделать и самостоятельно, освоив простейший синтаксис языка гипертекста.
Еще одной интересной гипертекстовой конструкцией являются каскадные стили CSS. Они задаются в html-тегах и отвечают за форматирование текста, то есть задают его размеры, расположение, шрифт и другие параметры. Описывая в подключенном CSS-файле один стиль, его можно применить по отношению к любым текстовым вставкам документа.

PHP – самый распространенный в мире язык программирования сайтов

Сайты пишутся в готовых интегрированных средах, которые используют для создания пользовательских шаблонов язык PHP. Это довольно простая и самая распространенная среда для создания веб-приложений различной функциональности. Для обычного пользователя не имеет смысла писать интегрированную среду «с нуля», а стоит воспользоваться готовой cms-системой (системой управления сайтами), позволяющей написать собственную адаптацию сайта на выбранном «движке». Этого достаточно и для создания сайтов на русском языке.
Самой распространенной средой для сайтов является WordPress, Joomla, более простой – Wordstat и другие. Каждая из этих систем поддерживает написание шаблонов в HTML, PHP, Java, C++ и на других языках (указаны по степени популярности в прикладных средах).
Особенностью современных языков программирования является использование высокоинтегрированныхсред для создания приложений. То есть программисты обычно не пишут код, как говорится, руками. Им даже достаточно составить UML-сценарии, а среда их преобразует в конечный результат на выбранном языке.
По этому принципу работают и интегрированные среды систем управления сайтами. WordPressпозволяет создавать и переделывать сайты в удобных редакторах. И только некоторую функциональность пользователь может добавить путем внесения изменений в исходный код (таблица CSS-стилей и пользовательский Function.php). Опять же из среды можно получить доступ к этому разделу и написать короткое дополнение или функцию. Важным замечанием является тот факт, что PHPработает на стороне сервера, то есть не требует установки приложений на стороне клиента.

Языки для создания сайтов и высоконагруженных проектов

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

  • JavaScript – мощный язык для программирования ярких динамических сред с разнообразными визуальными эффектами, работающих с сетевыми приложениями. Все красивые сайты с появляющимися объектами, анимацией сделаны на Java, хотя некоторые эффекты подобного плана могут быть реализованы с помощью CSS и PHP. Важной особенностью является кроссплатформенностьи адаптивность по отношению к любым типам устройств;
  • Java – это уже кроссплатформенный язык программирования, который используется для создания апплетов, интегрируемых в веб-сайты;
  • Python – высокоуровневая среда программирования уникальных веб-порталов с собственной системой управления сайтов, работает на стороне клиента. Среда поддерживает функциональное и структурированное программирование (отличающееся от объектного в PHP и событийного в WordPress) и используется в тех случаях, когда разрабатываются проекты с архитектурой, требующей применения этих принципов разработки.
  • Ruby – объектно-ориентированный язык, сопряженный с событийно-ориентированным программированием. Язык используется для порталов, нуждающихся в поддержке разных устройств, аппаратных функций и принципов функциональной разработки.
  • Perl – интерпретатор и язык сценариев, довольно часто используемая программная среда для веб-разработки. Особенно для высоконагруженных проектов, так как имеет встроенные инструменты системного программирования, позволяющие избежать сбоев.
  • C# – наиболее развитая программная среда для разработки программных приложений, в том числе, работающих на разных уровнях стека OSI. Применяется для специализированных проектов, создания браузеров и CMS.
  • SQL, PLPGSQL – высокоуровневые языки программирования для работы с базами данных сайтов типа MySQL и других.

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

Какой язык выбрать для сайта?

Для создания собственного веб-сайта нужно подобрать систему управления сайтами CMS. Адаптация своего ресурса предполагает доработку готового шаблона. В WordPress шаблоны называются темами. Для этих целей потребуется разработать собственные функции. Чтобы создавать сайт, достаточно двух языков программирования PHP и JavaScript. Для оформления текстов, конечно, необходимо знать синтаксис HTML&CSS.

Выбор технологий для большого и не очень большого веб-проекта

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

Но прежде, чем что-то выбирать, давайте посмотрим, какие технологии бывают, чем они отличаются и в каких случаях какую технологию выбрать.

Как чаще всего выбирают технологию сейчас:
  1. Она мне нравится
  2. Знакомый посоветовал
  3. Прочитал в Интернете
  4. На этой технологии сделан аналогичный сайт
В чем тут проблема:
  1. Нравится. Очень субъективно. А что, если по требованиям она не подходит? Или на ней работают очень дорогие и редкие специалисты? Или она вообще умирает?
  2. Знакомый. Обычно это тот знакомый, который «чуть лучше» разбирается в ИТ, чем тот, кому он советует. И даже если он программист с опытом, он не может знать всех решений на всех популярных языках. Ведь никто не спрашивает, по каким критериям выбирал этот знакомый. Если этот знакомый не CTO Google, я бы так просто не доверял такой рекомендации.
  3. Прочитал. Тут уже лучше: можно найти разные сравнения и аргументацию. Но опять же, чтобы разобраться во всех решениях человеку, пусть даже с крепкими знаниями в разработке, нужно время. А без знаний в разработке все прочитанные технические обзоры ничего не стоят.
  4. Аналог. Большинство популярных сайтов написаны на тех или иных технологиях, потому что так «исторически сложилось». Если бы Facebook сейчас выбирал технологию для себя, я сомневаюсь, что он взял бы за основу PHP. А еще может быть, что технология уже устарела, её продавили на основе прошлых 3-х пунктов, выбрали какую-то разрекламированную технологию, а не действительно эффективную и т.д. Вы вряд ли можете знать реальные причины выбор технологий в других проектах. Оптимальные технологии используются крайне редко в аналогичных проектах.

Важные критерии при выборе технологий:

  1. Размер и тип проекта
  2. Сложность проекта
  3. Скорость разработки
  4. Стоимость специалистов
  5. Доступность специалистов
  6. Доступные инструменты разработки
  7. Наличие готовых решений
  8. Гибкость решения
  9. Наличие широкого сообщества
  10. Отказоустойчивость решения
  11. Тренд его развития
  12. Наличие подробной документации
  13. Стоимость поддержки
  14. Требования к нагрузкам
  15. Требования к безопасности
  16. Кроссплатформенность
  17. Возможности интеграции с другими решениями
Какие бывают проекты

К технологиям мы еще вернемся, а пока давайте разберемся, какие бывают проекты. Часто тип проекта говорит сам за себя, и можно сразу сказать, что подойдет: либо уже готовое решение, либо хотя бы в какую сторону нужно двигаться.

По сложности проекты делятся:

  1. Простые (визитки, лендинги, простые интернет-магазины, простые приложения) — такие решения обычно делаются на тематических коробочных решениях, CMS или шаблонах.
  2. Средние (сложные интернет-магазины и маркетплейсы, порталы национального масштаба, разнообразные сервисы, продвинутые приложения) — такие решения обычно делаются на фреимворках.
  3. Сложные (огромные порталы, социальные сети, инновационные и нетиповые решения) — ядро таких проектов обычно разрабатывается на чистом (нативном) языке программирования.
Языки программирования

В технологиях я бы выделил 3 уровня абстракции:

  1. Чистый язык — это материал, из которого можно сделать все, что угодно. Ограничивают нас только возможности языка. На чистом языке сделаны все крупнейшие сайты мира с посещаемостью в сотни миллионов и миллиардов пользователей, такие как: Instagram, YouTube, Pinterest, Tumblr, Dropbox, Twitter, Facebook, Amazon, Digg, LinkedIn и другие. Более того, крупнейшие проекты в мире даже создают новые технологии для себя, так как уже существующие их не устраивают.
  2. Фреимворк — это некая среда разработки для программиста с готовыми правилами и инструментами. Фреимворк, с одной стороны, помогает и ускоряет разработку, а с другой, накладывает определенные ограничения. На фреимворках делаются проекты средней сложности с посещаемостью в миллионы.
  3. CMS — это уже готовое решение, конструктор, в котором мы по частям собираем нужный проект. Его скорее не программируют, а настраивают. Ограничений тут огромное количество, выйти за границы коробки сложно и неэффективно. На CMS делаются простые сайты с посещаемостью до миллиона пользователей в месяц.

Сегодня есть огромное количество разных языков программирования, на которых делают сайты. И, более того, на всех популярных языках есть примеры огромных сайтов. Если 10 лет назад, говоря о технологиях больших сайтов, все говорили преимущественно о Java, то сегодня это может быть почти любой язык, и утверждать, что сайты делаются на каком-то конкретном языке, — стереотип. Это связанно с развитием самих языков, за последнее десятилетие многие сильно продвинулись в развитии и получили широкие возможности. Конечно, каждый язык чем-то отличается, и выбирая мы опять же должны руководствоваться объективными критериями с оглядкой на задачи проекта.

На чистом языке, без использования фреимворков и коробочных решений, пишутся огромные проекты с повышенными требованиями по гибкости, нагрузкам и безопасности. Для таких огромных проектов часто бюджет не играет такого значения, как эффективность. Чем больше проект, тем больше будет требований по гибкости и нагрузкам, а значит, проще писать все с нуля, выделяя на это лучших специалистов, чем если брать какие-то готовые решения, которые непонятно кем писались и непонятно какие проблемы в них скрыты. К примеру, когда речь о небольшом проекте с посещаемостью в 10 тыс. человек в день, то нам будет дешевле сделать его на CMS, которая будет потреблять в 3 раза больше ресурсов сервера, поставить дополнительный сервер за 50$ / мес., и он будет работать. Когда же мы говорим о сайте с посещаемостью в 100 млн. пользователей в день, стоимость добавления серверов у нас будет просто космической, поэтому нам проще и дешевле вложить деньги в разработку решения на чистом языке, которое будет оптимальным именно для конкретного проекта.

Чем больше проект, тем больше стек технологий, который в нем используется. В огромных порталах может использоваться сразу несколько языков программирования. Опять же, мы приходим к объективным критериям выбора технологий. Часто один язык может хорошо решать одну задачу, а другой — другую. Такие проекты могут быть настолько огромными, что их части могут работать на разных серверах, с разными доменами (поддоменами) и разными технологиями. Не следует бояться винегрета технологий в большом проекте, хотя и допускать его нужно только, когда это действительно необходимо, а также помнить, что далеко не все технологии совместимы. Самый яркий пример использования разных технологий — Google. Он на столько большой, чтобы разные его части написаны на C/C++, Java, Python, JS и других языках. Более того, Google активно создает новые технологии, как, например, популярный нынче AngularJS.

Попробую дать краткую характеристику каждому из популярных языков:

  1. PHP — его используют в основном для простых и средних проектов. Очень много коробочных решений. Относительно дешевые программисты. Антитренд последних лет, хотя с выходом последней версии языка под номером 7, он получил действительно мощные возможности.
  2. Python — современный язык, разработка на нем быстрая и качественная. Используют его для средних и больших проектов. Программистов найти проблематично, и стоят они не дешево.
  3. Ruby — современный язык, разработка на нем также быстрая. Его используют в основном для разработки простых и средних проектов, часто разрабатывают стартапы. Программистов также мало, и они дорогие.
  4. Java — разработка на нем очень долгая и дорогая. Его используют в основном для больших проектов со специфическими требованиями.
  5. C# — аналог Java, также используют для больших проектов, часть в сфере FinTech.
  6. JS — очень быстро развивается, тренд последних лет. Огромное количество наработок, и можно писать все, что угодно, даже игры. Его используют для средних и больших проектов, но действительно мощные возможности этот язык получил недавно, потому примеров больших проектов пока мало, специалисты самые дорогие, и найти их сложнее всего.

Примеры больших сайтов:

  • PHP: Facebook, Вконтакте, КиноПоиск
  • Python: Instagram, Pinterest, Reddit
  • Ruby: 500px, Groupon, Airbnb
  • Java: Ebay, Amazon, Alibaba
  • C#: Guru, Stack Overflow, Bank of America
  • JS: LinkedIn, Walmart, PayPal
Фреймворки и платформы

Это некая среда разработки для программистов, где есть готовая инфраструктура и ряд готовых функций со стандартными решениями типичных задач. Такой себе полуфабрикат, из которого можно сделать конфетку. На каждом языке есть много разных фреймворков. Есть как общие, которые создавались для разработки любых решений, так и специализированные, под узкие задачи. Например, Sylius — специализированный E-commerce фреймворк на основе Symfony. Также есть те, на которых делаются большие и сложные решения, а другие для этого не предназначены. Ниже я опишу популярные фреймворки для каждого из языков, на которых можно писать большие и сложные решения.

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

Популярные фреймворки и платформы:

  1. PHP: Symfony, Laravel
  2. Python: Django
  3. Ruby: Ruby On Rails
  4. Java: Spring
  5. C#: .NET
  6. JS: Node.js, AngularJS

.NET и Node.js — это целые самостоятельные платформы, которые базируются на определенных языках, но имеют очень широкие возможности.

Недавно мы проводили исследования по тем фреймворкам, на которых специализируемся. Смотрели в каких больших проектах они используются. В частности огромные сайты на Python / Django и огромные сайты на PHP / Symfony. Также мы писали, как мы разрабатывали социальную сеть на Symfony вместе с API (статья больше про API, самое широкое описание в рунете по этой теме). Такие же огромные сайты есть на каждом из перечисленных фреймворках.

CMS и CMF

Это готовое программное обеспечение, которое нужно только настроить, реже — дописать / переписать какую-то из частей. Таких решений очень много на любом языке, но исторически так сложилось, что в основном все популярные CMS сделаны на PHP. Тут дело в развитии языков, раньше простые сайты, для которых и создавались CMS, писались на PHP. Я еще застал те времена, когда CMS почти не было, были скрипты — отдельные готовые части разных сайтов. Позже эти скрипты собирали в коробочный продукт, который был призван решить потребности 90% простых сайтов. Так и получилось, что основные CMS сделаны на PHP. Сегодня CMS на других языках развиваются слабо, потому что уже есть сильные конкуренты на PHP, а для простого сайта язык не играет большой роли, поэтому все смотрят на возможности этих готовых продуктов.

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

CMS бывают разные по назначению: общие, для интернет-магазинов, для блогов и т.д. Разные по условиям использования: платные и бесплатные. Для каждой популярной CMS есть много разных платных и бесплатных модулей, которые легко подключать и использовать.

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

Именно в работе с CMS возникает больше всего непонимание среди конечных заказчиков таких решений. Любая CMS — это тонны готового программного кода, на все случае жизни. В коробочной поставке идут десятки и сотни модулей. Все это очень сильно ограничивает специалистов. Такие решения сильно «тормозят», они абсолютно не гибкие, их очень легко взломать, особенно бесплатные CMS. Еще часто взламывают CMS через модули сторонних разработчиков, в которых есть критические уязвимости, потому что мы никогда не знаем, какого уровня программист писал тот или иной модуль. То есть любая CMS НЕ рассчитана для большого и сложного сайта. Она не может выдержать большие нагрузки. Это решение небезопасно, чтобы не говорили разработчики конкретной CMS.

Я видел решения почти на всех популярных CMS, с многими за более, чем 10 лет работы, пришлось поработать лично. Часть из них популярна в рунете, а часть знают в основном на западе. На используемые в них языки CMS разбивать нет смысла, по причинам, описанным выше. Лучше сказать несколько слов про каждую популярную CMS:

  1. WordPress — некогда блоговый движек, сейчас на ней делаются почти любые сайты, включая магазины. Одна из самых популярных CMS в мире, есть примеры довольно посещаемых сайтов. На ней часто делают информационные сайты, в том числе разные СМИ. Система бесплатная.
  2. Joomla! — CMS общего назначения. Качеством особо не отличается, на ней делают очень маленькие сайты, и обычно дешевле всех других вариантов, так как именно с этой CMS начинают учиться многие начинающие программисты. Система бесплатная.
  3. Drupal — это уже CMF для общего назначения, с недавнего времени поставляется со встроенных фреймворком Symfony. Довольно мощная, на ней есть известные сайты, например, официальный сайт Белого Дома. Система бесплатная.
  4. Magento — самая популярная система управления для интернет-магазинов в мире. Довольно мощная и сложная. В рунете используется редко, в основном на западе.
  5. PrestaShop — одна из самых популярных CMS для магазинов в мире. Тоже довольно мощная, используют в основном на западе. Система бесплатная.
  6. OpenCart — еще одна популярная система для интернет-магазинов, но её, наоборот, больше используют в рунете, чем на западе. В основном для маленьких и несложных магазинов. Система бесплатная.
  7. 1С-Битрикс — очень распиаренная CMS общего назначения, номер 1 в рунете. Возможности очень широкие. На ней часто пытаются делать большие и сложные сайты, а после определенного порога в посещаемости переписывают их на других технологиях. Многие считают, что только эта CMS может интегрироваться с 1С, что не является правдой, поскольку все перечисленные CMS из этого списка могут интегрироваться с 1С, для этого у всех CMS есть специальные модули. Система платная.

Ранее, мы проводили исследования, на каких CMS сделаны самые посещаемые сайты рунета: часть 1 и часть 2, крупнейшие интернет-магазины и крупнейшие сайты банков. Эти исследования подтверждают описанные выводы в статье.

Шаблоны

В последние 5 лет очень активно развивают шаблонные решения. Это еще на одну ступеньку выше, чем CMS. Если CMS — это конструктор, и его нужно настраивать, то шаблоны — это уже готовые решения под типовые случаи. Например, в каждом городе есть свои рестораны, такси, клиники и т.д. Для всех этих типов малого бизнеса нужно примерно одно и тоже. Поэтому, можно просто выбрать готовый тематический шаблон, заменить в нем логотип, цвета и контент. При желании такие шаблоны можно дорабатывать по усмотрению владельца.

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

Есть специальные каталоги шаблонов: TemplateMonster, ThemeForest и др. Часто встречаются онлайн-конструкторы, в том числе тематические: Wix, PageCloud и др.

Мобильные приложения

В мобильных приложениях в последнее время используется два подхода: нативная разработка и кроссплатформенные технологии. Нативная ведется на оригинальных языках программирования, в частности Swift (для iOS, ранее был Objective-C) и Java (для Android). Кроссплатформенных технологий сейчас довольно много, они есть на базе разных языков программирования, в частности: Apache Cordova, React Native и др. Некоторые лучше, некоторые хуже. В любом случае, сложные приложения всегда пишутся на нативных технологиях. С кроссплатформой часто возникают проблемы, вплоть до того, что некоторые функции просто нереализуемы на тех или иных кроссплатформенных технологиях, сильно грузится оперативная память устройства, быстро садится батарея и т.д.

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

Стек технологий в больших проектах

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

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

Для примера рассмотрим технологии Instagram (данные Insight IT):

  • Ubuntu Server 14.04 LTS — основная серверная операционная система
  • Python — основной язык программирования серверной части
  • Django — фреймворк
  • nginx — второй уровень балансировки входящих HTTP-запросов
  • gunicorn — WSGI-сервер
  • HAProxy — балансировка нагрузки внутри системы
  • PostgreSQL — основное хранилище данных
  • postgis — поддержка гео-запросов
  • pgfouine — отчеты на основе логов
  • pgbouncer — создание пула соединений
  • Redis — дополнительное хранилище данных
  • Memcached — кэширование
  • Gearman — очередь задач
  • Solr — гео-поиск
  • munin, statsd, pingdom — мониторинг
  • Fabric — управление кластером
  • xfs — файловая система
Стоимость специалистов

Один из важнейших факторов выбора технологии является стоимость и доступность специалистов, потому что именно это — самая затратная часть в любом проекте. В рунете есть только одна пузомерка по зарплатам: https://jobs.dou.ua/salaries/ — я отфильтровал по Киеву, уровень Senior, опыт 3-5 лет. Сравним средние значения.

  1. C# – 3072$
  2. Java – 3300$
  3. JS – 3500$
  4. PHP – 2780$
  5. Python – 3000$
  6. Ruby – 3000$
  7. Scala – 3900$

Теперь переведем цифры на человеческий язык. Java хоть и не новый язык, но специалисты на нем всегда были одними их самых дорогих. PHP всегда был самым дешевым, да и специалистов на рынке очень много. В сравнение я внес еще и Scala, как один из новейших и трендовых языков, по этой причине он дороже всех. Еще дорогой JS, это связанно с его бурным ростом в последние годы и растущей популярностью Node.js, а также AngularJS.

Таким образом: если мы хотим экономить, то лучше смотреть на PHP — специалисты дешевые, а комьюнити большое. А если хотим самое качественное, то смотрим на Scala, который называют будущем веб-разработки, но, правда, на нем найти специалистов почти невозможно, и наработок просто нет.

Еще важным параметром будет скорость разработки. Ведь важна не только зарплата программистов, но и скорость разработки. Если не учитывать уже существующие наработки, то одними из самых быстрых в разработке будут Python и Ruby, а самый медленный — Java. Кстати, по этой причине за последние 10 лет почти не вышло новых мегапроектов на Java, зато вышло много проектов на Python, о чем я расскажу ниже.

Тренды

Выбирая технологию, нам нужно смотреть вперед. Особенно, если речь о большом проекте. Все технологии очень быстро развиваются, выходят все новые и новые версии. Языки сильно меняются каждые 5-7 лет, фреймворки — каждые 2-3 года, а CMS — каждые 1-2 года. Важно выбрать не просто хорошую технологию сегодня, а предугадать тренды развития так, чтобы остаться на коне и через несколько лет. Иначе, в конечном счете, придется переписывать проект, что всегда очень проблематично.

Есть всевозможные исследования, которые нам могут подсказать некоторые статистические выкладки. Например, исследование TIOBE Index показывает интересную статистику:

По результатам разных исследований можно выделить явных лидеров по росту — это JS (версия ES6 и выше) и мультипарадигмальные языки, в частности Scala. Кстати, именно Scala считается преемником языка Java и во многом на него похож. Также не плохо себя показывает Python.

Антитренды держат ряд старых языков и PHP. Правда, недавно вышла 7я версия PHP, в которой исправлены многие серьезные недостатки. Так что, я думаю, мы скоро увидим новый виток развития PHP. Также многие большие проекты переписываются с Ruby на другие языки, тоже некий антитренд.

Для иллюстрации посмотрим, каких специалистов не хватает в США:

Именно это можно считать реальной картиной трендов, которые мы видим и у нас.

На чем делались большие проекты за последние 10 лет?

  1. Airbnb – Ruby
  2. Instagram – Python
  3. Pinterest – Python
  4. Foursquare – Python
  5. Groupon – Ruby -> JS
  6. Twitter – Ruby -> Scala
  7. Uber – JS
Стоимость поддержки

Безусловно, важный критерий выбора технологии — это стоимость поддержки, о которой мало кто задумывается в начале разработки. Обычно все мыслят категориями стоимости часа поддержки, что в корне неправильно. Нам важны несколько параметров: стоимость часа, количество часов, официальная поддержка технологии, доступность специалистов, правильный подход к разработке и некоторые другие.

Стоимость часа зависит от зарплаты специалисты, с этим мы уже разобрались. А вот количество часов зависит от самой технологии и качества написания кода. Если решение коробочное, то часов на него может уходить очень много. То есть, с одной стороны, мы можем сэкономить при разработке первой версии проекта, но после погрязнуть в его постоянной доработке. Хорошо, когда решение популярное, и есть официальная документация. Но часто выбирают малоизвестные коробочные решения без какой-либо документации — в таких решениям стоимость поддержки будет во много раз выше стоимости самой коробки. То же касается некачественной разработки: у нас почему-то полностью отсутствует культура проведения технических аудитов готовых решений или их частей. В среднем за 20-40 часов можно проверить почти любое решение и найти его основные минусы. Чем более качественный код, тем легче, а следовательно, и дешевле его поддерживать.

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

Так что выбрать?

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

Ниже я сделал опрос по предпочтительному языку программирования для большого проекта. Подразумевается уровень проектов с посещаемостью в 100 млн. пользователей и больше. Если у вас есть опыт разработки больших проектов, хотя бы на несколько миллионов пользователей, прошу не просто проголосовать, но и обосновать свое мнение в комментариях, так как у каждого разные опыт и предпочтения. Разбавим некоторую долю субъективизма статьи мнениями других членов сообщества 🙂

P.S.. В нашей школе есть несколько интересных курсов по программированию. Чтобы записаться пишите на info@digitov.com

P.P.S. Чтобы получать наши новые статьи раньше других или просто не пропустить новые публикации — подписывайтесь на нас в Facebook, VK и Twitter.

Автор:
Никита Семенов, CEO, Компания «SECL Group»

Какие языки программирования надо знать для создания сайтов

Как стать WordPress разработчиком: путь от новичка до профи

Узнайте как стать web разработчиком с нуля

Как стать разработчиком React? Все что нужно знать

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

Важность языков программирования в веб-разработке

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

�� Готовы шагнуть в мир IT? Наши Start Course — ваш стартовый билет! ����

�� Начните без подготовки:

  • �� Свободное владение компьютером
  • ���� Знание английского языка на уровне чтения

�� Условия:

  • �� Онлайн формат.
  • �� Доступ к лекциям и видео-урокам.
  • �� Без проверки заданий.
  • �� Поддержка в чате Slack.

�� Специальные цены и скидки:

Java Start: 2 450 грн / 80 USD

Java Tools * : 2 950 грн/105 USD

Python Start: 2 450 грн / 80 USD

C# Start: 2 450 грн / 80 USD

JavaScript Start: 2 450 грн / 80 USD

*Доступен после нашего курса Java Start или прочтения книги Я. Файна «Java Programming»

Разработчики часто используют комбинацию нескольких языков, чтобы создать функциональные и привлекательные сайты. Перечислим основные из них, которые вам могут пригодиться. Например, HTML (определяет структуру и содержимое веб-страниц), CSS (отвечает за внешний вид и стилизацию страниц), JavaScript (добавляет динамическую и интерактивную функциональность).

Это основной набор языков, которые важно знать для создания фронтенда сайта. Однако, для создания более сложных и функциональных веб-приложений может потребоваться знание и других языков программирования.

Например, таких, как Python, PHP и Ruby, которые также имеют свои особенности и применение в веб-разработке. Python, например, обладает простым синтаксисом и широким спектром библиотек, PHP — достаточно специализированный для создания динамических страниц и приложений, а Ruby — прост в использовании.

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

Обзор языков программирования для создания сайтов

Рассмотрим упомянутые языки программирования более подробно.

Языки программирования для создания сайтов

Похожие материалы

Как стать WordPress разработчиком: путь от новичка до профи

Узнайте как стать web разработчиком с нуля

Как стать разработчиком React? Все что нужно знать

Какой язык программирования лучше использовать для создания сайтов?

На выбор языка программирования влияет множество факторов, таких как требования проекта, опыт программиста и сфера применения сайта. Однако, для создания динамических и интерактивных сайтов наиболее популярными языками являются JavaScript, PHP и Python.

Какие языки программирования используются для фронтенда разработки сайтов?

Для фронтенда разработки сайтов наиболее часто используются HTML, CSS и JavaScript. HTML отвечает за структуру и содержимое страницы, CSS — за внешний вид и стиль, а JavaScript — за интерактивность и динамическое поведение сайта.

Какие языки программирования используются для бэкенда разработки сайтов?

Для бэкенда разработки сайтов наиболее часто используются языки программирования, такие как PHP, Python, Ruby и Java. Они позволяют обрабатывать данные, взаимодействовать с базами данных и выполнять серверные операции.

Какой язык программирования лучше выбрать для создания электронной коммерции?

Для создания электронной коммерции рекомендуется использовать языки программирования, такие как PHP, Python или Ruby. Они предоставляют мощные инструменты для обработки платежей, управления заказами и взаимодействия с базами данных.

Какой язык программирования лучше выбрать для создания блога?

Для создания блога можно использовать различные языки программирования в зависимости от требований проекта. Однако, популярными выборами являются PHP и Python, так как они обеспечивают простоту разработки и хорошую поддержку для работы с базами данных.

Какой язык программирования лучше выбрать для создания большого и сложного веб-приложения?

Для создания больших и сложных веб-приложений рекомендуется использовать языки программирования, такие как Java, Python или Ruby on Rails. Они предоставляют мощные инструменты и фреймворки для разработки масштабируемых и надежных веб-приложений.

На каких языках программирования создают web сайты

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

Какие языки нужно знать, чтобы создавать сайты?

Опытные разработчики говорят, что выбор языка программирования зависит от множества факторов. Однако следует понимать, что идеального решения попросту не существует, у каждого варианта есть свои достоинства и недостатки. Нужно выбрать тот язык, который лучше всего подойдет для решения поставленных задач. Вопросы, которые нужно рассмотреть перед тем, как выбрать язык:

  • серверная платформа;
  • серверное ПО;
  • наличие опыта в создании сайтов;
  • выбранная база данных.

Наиболее популярные языки

Сайты Популярность
(уникальные посетители в месяц)
Front-end
(Клиентский)
Back-end
(Серверный)
База данных
Google.com 1,600,000,000 JavaScript C, C++, Go, Java, Python BigTable, MariaDB
Facebook.com 1,100,000,000 JavaScript Hack, PHP (HHVM), Python, C++, Java, Erlang, D, Xhp, Haskell MariaDB, MySQL,HBase Cassandra
YouTube.com 1,100,000,000 JavaScript C, C++, Python, Java, Go Vitess, BigTable, MariaDB
Yahoo 750,000,000 JavaScript PHP MySQL, PostgreSQL,VB.NET
Amazon.com 500,000,000 JavaScript Java, C++, Perl Oracle Database
Wikipedia.org 475,000,000 JavaScript PHP, Hack MySQL, MariaDB
Twitter.com 290,000,000 JavaScript C++, Java, Scala, Ruby MySQL
Bing 285,000,000 JavaScript ASP.NET Microsoft SQL Server
eBay.com 285,000,000 JavaScript Java, JavaScript, Scala Oracle Database
MSN.com 280,000,000 JavaScript ASP.NET Microsoft SQL Server
Microsoft 270,000,000 JavaScript ASP.NET Microsoft SQL Server
Linkedin.com 260,000,000 JavaScript Java, JavaScript, Scala Voldemort
Pinterest 250,000,000 JavaScript Django, Erlang MySQL, Redis
WordPress.com 240,000,000 JavaScript PHP, JavaScript (Node.js) MariaDB, MySQL

php

PHP. В его основе — самый простой язык разметки, HTML. PHP связывает пользователя с серверной частью. Именно на этом языке реализуются такие функции, как формы обратной связи, поля регистрации и т. п. Синтаксис этого языка очень легко и просто изучить. Для создания коммерческого портала без PHP не обойтись, так как именно на нем проще всего получить контактные данные пользователя. Базовое достоинство языка состоит в том, что, используя его, программисты могут очень быстро и без лишних усилий составлять динамические страницы.

python

Python. На русском его часто называют «питон». Это высокоуровневый язык, используемый для общих задач, чаще всего — для выполнения задач сервером. Его ориентир — повышение производительности программиста и читаемости кода. При помощи языка можно выполнять резервное копирование многих парадигм программирования. Питон отлично работает на серверах Windows и Linux.

ruby

Ruby. На русском часто его называют «руби». Это динамический, рефлективный и высокоуровневый язык для ООП (объектно-ориентированного программирования). Он дает возможность реализовать многопоточность на любой ОС, отличается строгой типизацией динамического вида, и обладает рядом других опций. По характеристикам синтаксиса Руби ближе всего к аналогам Eiffel и Perl. Кроме того, отдельные детали позаимствованы из Python.

ASP. Этот язык разработан корпорацией Microsoft. С использованием этой технологии можно разрабатывать приложения для www.asp. Платформы для работы языка следующие: Internet Information Server (IIS) и Windows NT. ASP довольно сложно назвать непосредственно языком, это скорее технология для подсоединения программы к интернет-странице. Все достоинства ASP — в простом скриптовом языке и возможностях применения сторонних СОМ-элементов.

javascript

JavaScript. Принцип «яваскрипт» немного отличается от прочих языков программирования. Его главное отличие состоит в прямом подключении к HTML-файлу. Сценарий, созданный на базе JavaScript, обрабатывается интерпретатором, который встроен в браузер. Этот язык используется для большого спектра задач: создание динамических страниц (контент на них может меняться по загрузки документа);

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

  • изменять содержимое страницы: дописывать или убирать текст, менять стили и теги;
  • реагировать на какие-то события (например, на щелчок мыши) и выполнять заданную функцию;
  • отображать сообщения, ставить и считывать cookies, проверять правильность введенных данных;
  • загружать новые данные без перезагрузки документа, и пр.

perl

Perl. Первое время этот язык использовался для соединения программ, которые выполняли разные задачи, в единый сценарий для решения целого комплекса задач: обработки текста, администрирования и пр. Сегодня же Перл используется в основном для разработки приложений CGI. Он помогает администрировать сервера и прочие системы. Благодаря простоте и скорости написания сценария на Перле, его адаптировали ко всем популярным платформам, включая Mac и Windows. Perl имеет открытый исходный код, абсолютно бесплатный.

Нужно ли много знаний?

Базовые знания по программированию вcе приобретают на уроках информатики в школе. Работать на начальном уровне с Паскаль и Делфи приходилось фактически каждому. Но другие, более сложные языки программирования, требуют другого, более комплексного и серьезного подхода. Первое, что нужно для успешного программиста — математический, логический склад ума и желание совершенствоваться в своем деле. При этом не стоит пытаться выучить сразу все языки. Лучше хорошо освоить один, чем иметь отрывочные знания о пяти языках. Все языки имеют схожие принципы, они все строятся на логике действий, поэтому со временем, с каждым новым языком учить его все проще. Копировать или менять чужой код могут многие, но писать свой код, стать настоящим «художником» способен далеко не каждый.

  • 01.12.2017
  • Комментариев: 0
  • работа с сайтом

Статьи по теме:

  • Обслуживание и сопровождение веб-сайта
  • За чем нужен личный кабинет пользователя на сайте?
  • Квизы на сайт для роста конверсии
  • Безопасный редизайн сайта
  • Как выбрать хостинг в Минске

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *