Сравнительный анализ языков программирования для разработки веб-приложений
Автор: Лукин И.К.
Журнал: Теория и практика современной науки @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 с.