Сравнительный анализ языков программирования для разработки веб-приложений
Автор: Лукин И.К.
Журнал: Теория и практика современной науки @modern-j
Рубрика: Основной раздел
Статья в выпуске: 2 (20), 2017 года.
Бесплатный доступ
В статье рассматриваются вопросы, связанные с выбором языка программирования для разработки веб-приложений. Рассматриваются три высокоуровневых языка программирования: php, ruby, python.
Веб-программирование, веб-приложение
Короткий адрес: https://sciup.org/140270729
IDR: 140270729
Текст научной статьи Сравнительный анализ языков программирования для разработки веб-приложений
PHP - это интерпретируемый язык программирования общего назначения с открытым исходным кодом, является одним из лучших и востребованных в данной области. Основным преимуществом PHP-сценариев является возможность без проблем интегрироваться в обычные html-документы, при этом сохраняя всю функциональность, конечно же, при условии наличия на веб-сервере интерпретатора языка PHP.
Главной областью применения PHP является написание программ-сценариев, которые работают на стороне сервера. Помимо различных операций с содержимым html-документов, с помощью PHP можно форматировать HTTP-заголовки, устанавливать cookie, управлять аутентификацией, а также перенаправлять пользователя на другие страницы. PHP предоставляет возможности по доступу к базам данных, позволяет проводить интеграцию с различными внешними библиотеками [1].
Таким образом, выбирая в качестве языка программирования PHP, мы получаем огромные возможности по использованию языка, свободу выбора веб-сервера и операционной системы.
PHP прекрасно подходит для разработки веб-приложений, но постоянным хранением информации не занимается. Всю информацию хранят сторонние сервисы – файловая система, различные базы данных и другие хранилища. PHP + СУБД - это мощная комбинация, позволяющая существенно упростить разработку веб-приложений и создавать более сложные веб-сайты [2].
Преимущества PHP:
- 
        
• Легок в освоении на всех этапах
 - 
        
• Поддерживается большим сообществом пользователей и разработчиков
 - 
        
• Имеет развитую поддержку баз данных
 - 
        
• Имеется огромное количество библиотек и расширений языка
 - 
        
• Может использоваться в изолированной среде
 - 
        
• Предлагает средства организации веб-сессий, программный интерфейс расширений
 - 
        
• Портирован под большое количество аппаратных платформ и операционных систем
 - 
        
• Поддержка большинства возможностей ООП
 
Недостатки PHP:
- 
        
• Не подходит для создания системных приложений или системных компонентов
 - 
        
• Глобальные параметры конфигурации влияют на базовый синтаксис языка, что затрудняет настройку сервера и ставит приложения в зависимость от конкретного окружения
 - 
        
• Большое количество устаревших и дублирующих функций, оставленных для совместимости со старыми версиями, смесь процедурных и объектных подходов, отсутствие единого стандарта наименования функций и параметров
 - 
        
• Невозможность многопоточной и асинхронной работы (отчасти решается сторонними модулями)
 - 
        
• Веб-приложения, написанные на PHP, зачастую имеют проблемы с безопасностью
 
Язык Ruby
Ruby - интерпретируемый язык высокого уровня для быстрого и удобного объектно-ориентированного программирования. Язык обладает независимой от операционной системы реализацией многопоточности, строгой динамической типизацией, «сборщиком мусора» (механизм, обеспечивающий механическое управление памятью без вмешательства программиста) и многими другими возможностями [3].
Особенности языка:
- 
        
1) Простое и быстрое программирование:
 
- 
        
• Отсутствие необходимости объявления переменных
 - 
        
• Переменные не типизированы
 - 
        
• Простой и последовательный синтаксис
 - 
        
• Автоматическое управление памятью
 
- 
        
2) Объектно-ориентированное программирование:
 
- 
        
• Всё является объектом
 - 
        
• Классы, наследование, методы и т.д.
 - 
        
• Mixin при помощи модулей (как и в PHP, множественное наследование в Ruby не поддерживается, но может быть достигнуто при помощи mixins – «примесей»)
 - 
        
• Итераторы и скобочные операции
 
- 
        
3) а также:
 
- 
        
• Целые числа с различной разрядностью
 - 
        
• Модель обработки исключительных ситуаций
 - 
        
• Динамическая загрузка
 - 
        
• Потоки
 - 
        
• Возможность прямого осуществления системных вызовов
 - 
        
• Мощная поддержка операций со строками и регулярными выражениями
 - 
        
• Немедленная обратная связь во время разработки
 
Преимущества Ruby:
- 
        
• Реализует концептуально чистую объектно-ориентированную парадигму
 - 
        
• Предоставляет продвинутые методы манипуляции строками и текстом
 - 
        
• Легко интегрирует в свои программы высокопроизводительные серверы баз данных (DB2, MySQL, Oracle и Sybase)
 - 
        
• Простой и чистый синтаксис
 - 
        
• Имеет простой программный интерфейс для создания многопоточных приложений
 - 
        
• Имеет продвинутые средства для работы с массивами
 - 
        
• Возможности языка можно расширить при помощи библиотек, написанных на C или Ruby
 - 
        
• Зарезервированные слова могут являться идентификаторами, если это не создаёт неоднозначности для парсера
 - 
        
• Встроенный отладчик
 
Недостатки Ruby:
- 
        
• Высокая сложность изучения языка
 - 
        
• Информационных ресурсов, посвящённых Ruby, недостаточно
 - 
        
• Ruby менее производителен по сравнению со многими другими языками, применяемыми в веб-разработке
 - 
        
• Ruby относительно медленно разрабатывается и развивается
 
Язык Python
Язык программирования Python используется для решения широкого спектра проблем и задач, в том числе для создания веб-сайтов.
Элегантный дизайн и эффективный, дисциплинирующий синтаксис этого языка облегчают программистам совместную работу над кодом. Python – язык, возможности которого изначально предполагалось унаследовать от нескольких, разных языков программирования, что позволяет совмещать процедурный подход к написанию кода с объектноориентированным и функциональным.
С точки зрения веб-разработки Python предоставляет простые и удобные методы для генерирования набора статических HTML-страниц, которые обслуживаются веб-сервером. Например, сценарий может принимать некоторое содержимое и добавлять к нему элементы оформления, типичные для веб-сайта (боковую панель, рекламу, стили и т.д). Все это фактически сводится к работе с файлами и обработке текста. Скрипты написанные на языке программирования Python, могут применяться для создания динамических сайтов, т.е. в связке СУБД + JavaScript (Ajax) + Python. Сайт может работать на базе обычного вебсервера, такого как Apache, и отправлять данные из форм и запросов сценарию на языке Python для обработки и возвращения результата работы [4].
Преимущества Python:
- 
        
• Хорошо читаемый код вследствие особенностей синтаксиса
 - 
        
• Предоставляет средства быстрого прототипирования (создание опытных образцов или работающих моделей системы) и динамической семантики (конструкция языков программирования)
 - 
        
• Большое русское сообщество
 - 
        
• Множество полезных библиотек и расширений языка, которые можно легко использовать в проектах благодаря предельно унифицированному механизму импорта и программным интерфейсам
 - 
        
• Хорошо продуманные и легкие в использовании механизмы модульности (функционально законченный фрагмент программы, оформленный в виде отдельного файла с исходным кодом)
 - 
        
• Абсолютно всё в Python является объектами в смысле ООП, но при этом объектный подход не навязывается программисту
 - 
        
• При высоких нагрузках на приложения использующих Python, производительность будет выше, чем в приложениях на Ruby, Java или PHP
 
Недостатки Python:
- 
        
• Несовершенная поддержка многопоточности
 - 
        
• На Python создано не так уж много качественных программных проектов по сравнению с другими универсальными языками программирования, например, PHP, Java или Ruby
 - 
        
• Изначальная ограниченность средств для работы с базами данных
 
Сравнение backend языков
В табл. 1 представлена расшифровка сокращений табл. 2
Таблица.1
Расшифровка сокращений табл. 2
| 
           +/-  | 
        
           Возможность поддерживается не полностью  | 
      
| 
           -/+  | 
        
           Возможность поддерживается очень ограниченно  | 
      
В табл. 2 представлено сравнение backend языков
Таблица.2
Сравнение backend языков
| 
           PHP  | 
        
           Ruby  | 
        
           Python  | 
      |
| 
           Предназначение  | 
        
           PHP был создан специально для веб-разработки и создания динамических вебстраниц  | 
        
           Ruby был разработан, чтобы сделать программирование гибким и удобным  | 
        
           Python был разработан, чтобы подчеркнуть производительность и читабельность кода  | 
      
| 
           Год создания  | 
        
           1995  | 
        
           1995  | 
        
           1991  | 
      
| 
           Разработан под влиянием  | 
        
           С, PERL, JAVA, C++, TCL  | 
        
           ADA, C++, CLU, DYLAN, EIFFEL, LISP, PERL, PYTHON  | 
        
           ABC, ALGOL 68, C, C++, ICON, JAVA, LISP, PERL  | 
      
| 
           На сколько прост в изучении (по 10 бальной шкале)  | 
        
           6  | 
        
           4  | 
        
           5  | 
      
| 
           Объектноориентирован  | 
        
           Да  | 
        
           Да  | 
        
           Да  | 
      
| 
           Сборка мусора  | 
        
           Да  | 
        
           Да  | 
        
           Да  | 
      
| 
           Инструкция goto  | 
        
           +/ 1*  | 
        
           -/+ 2*  | 
        
           Нет  | 
      
| 
           Возможность  | 
        
           Да  | 
        
           Да  | 
        
           Да  | 
      
| 
           компиляции  | 
        
Продолжение табл. 2
| 
           Инструкция break  | 
        
           Да  | 
        
           Да  | 
        
           Да  | 
      
| 
           “Ленивые” вычисления  | 
        
           -/+  | 
        
           -/+ 3*  | 
        
           Да  | 
      
| 
           Многомерные массивы  | 
        
           Да  | 
        
           Да  | 
        
           Да  | 
      
| 
           Цикл foreach  | 
        
           Да  | 
        
           Да  | 
        
           Да  | 
      
| 
           Множественное наследование  | 
        
           Нет  | 
        
           Нет  | 
        
           Да  | 
      
| 
           Макросы  | 
        
           Нет  | 
        
           +/-  | 
        
           Нет  | 
      
| 
           Именованные параметры  | 
        
           Нет  | 
        
           Да  | 
        
           Да  | 
      
| 
           Наличие библиотек для работы с графикой и мультимедиа  | 
        
           Да  | 
        
           Да  | 
        
           Да  | 
      
- 
        
1* - Целевая метка должна находиться в том же файле, в том же контексте.
 - 
        
2* - В языке goto нет, но есть библиотека реализующая его.
 - 
        
3* - В языке “ленивых” вычислений нет, но есть библиотека реализующая
 
их.
Список литературы Сравнительный анализ языков программирования для разработки веб-приложений
- Колисниченко, Д. Н. PHP и MySQL. Разработка Web-приложений; БХВ-Петербург, 2015. - 593 с.
 - Сафронов, М. Н. Разработка веб-приложений в Yii 2; ДМК-Пресс, 2015. - 392 с.
 - Флэнаган, Д. Мацумото, Ю. Язык программирования Ruby; Питер, 2011. - 496 с.
 - Лутц, М. Python. Карманный справочник; М.: Вильямс, 2015. - 320 с.