На данный момент существует около 700 различных языков программирования, каждый из которых служит конкретной цели, удовлетворяет определенный круг потребностей и обладает своими сильными и слабыми сторонами. Из них на плаву держатся только 200-250. Все эти языки делятся на 2 категории: либо статически, либо динамически типизированные.
Первые обычно компилируются: то есть анализ и преобразование «человеческого» кода происходит компилятором, далее создается новый файл, выполняемый далее программистом вручную. Динамические же, как правило, интерпретируются: то есть анализ и построчный запуск кода осуществляется интерпретатором.
Большинство программистов любит динамически типизированные ЯП, так как они реже подвергаются ошибкам и намного легче интерпретируются людьми (например, Python). Но за все нужно платить, и в данном случае жертвой становится скорость. Сейчас мы и обсудим примеры таких относительно медленных, но, тем не менее, широко распространенных языков, которые относятся к группе динамически типизированных.
Сценарии Perl будут знакомы всем, кто уже сталкивался с UNIX. Данный язык создавали с целью упрощения задач, которые приходилось решать разработчикам при формировании длинных «скатертей» на Shell. Мы имеем в виду гряды команд, которые помещались в 1 файл и выполнялись последовательно.
Также Perl облегчил задачи, считающиеся настоящим кошмаром для решения с помощью С и других популярных языков. Но, как всегда, чем-то пришлось пожертвовать, поэтому Perl заметно отстал в плане производительности.
Помимо этого, хорошего Perl-разработчика найти невероятно сложно. Ведь, в отличие от того же Python, этот язык обладает повышенной чувствительностью к реализации: все операторы в коде должны стоять на правильном месте, иначе эффективной программы не получится.
Несмотря на отставание от высокоуровневых конкурентов, Perl растет и развивается, а проблем с эффективностью становится все меньше (яркий пример – выпуск в 2019-м году Perl 6).
Скриптовый ЯП, используемый в сфере веб-разработки. Как правило, им пользуются в паре с HTML и CSS, а также MySQL. Хотя часто можно услышать, что PHP устарел, результаты исследований
В этом языке хорошо практически все: невысокий порог вхождения, простой синтаксис и бюджетное размещение, однако ему недостает производительности.
Медленная скорость PHP объясняется отсутствием JIT-компилятора, а также его принадлежностью к динамически типизированным языкам.
Во второй половине 2020 года был выпущен PHP 8, который оснастили не только классной оптимизацией производительности, но и встроенным Just-in-Time компилятором. Данные улучшения помогли ему впритык приблизиться к ЯП своей категории по эффективности и быстродействию.
Этот язык прост в использовании за счет его объектно-ориентированности. Что касается производительности, он работает медленнее языков с компилятором, так как относится к интерпретируемым, т.е. выполняет код последовательно: один оператор за другим.
Причиной проседания Ruby по скорости является GIL, долгая сборка мусора и большое потребление памяти.
Согласно данным нескольких авторитетных источников, например,
Преимущества Python значительно превосходят его недостатки, однако у большинства разработчиков есть претензии к скорости. Как и Ruby, этот язык медленный из-за интерпретируемости и GIL.
С другой стороны, Python полон мощными функциями и эффективными библиотеками, которые существенно повышают его производительность. Именно поэтому он продолжает процветать, оставляя позади другие популярные языки программирования.
Быстродействие и производительность – это очень важные факторы для любого разработчика. Но нельзя забывать, что часто связанные с ними проблемы возникают не из-за языков программирования, а по причине плохой реализации и неграмотного дизайна кода. Так что самое главное – это учиться и получать как можно больше ценного опыта. В чем и желаем вам удачи!