А если измерить?

Как можно сравнивать языки программирования.
20 октября 2016326451Илья Бубнов22631017

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

Простота использования

Как определить, насколько легко новичку выучить язык программирования? За базис лучше всего брать школьный Pascal: возможности там были не великие, зато близость к английскому языку и отсутствие лишних действий на первых порах позволяют проникнуться к языку большой симпатией. То есть человек, не обладающий исключительными навыками в программировании, может или сразу, или после короткого ликбеза интерпретировать код начальной сложности. По такому критерию к сложным в данном случае можно отнести Assembler или C++.

Но есть и другой взгляд: брать за самый сложный язык тот, по которому вы сможете отыскать меньше всего литературы, в частности на русском языке. Как правило это недавно созданные экземпляры или практически не имеющие реального применения в современном мире. Но тут здесь возникает большая сложность градации: если условные Rust или C можно расставить по разным полюсам рейтинга без особых проблем, то как быть с давним спором Ruby и Python?

Прибыльность

Это то, на что обращают внимание молодые умы и посетители сайтов с онлайн-курсами. Ведь всегда есть вопросы: «если я изучу C, когда ко мне придёт миллион? А будет с Python быстрее?». Но дело в том, что оценка языка, как источника дохода, напрямую зависит от рыночной ситуации. То есть возможно язык Haskell и принесёт вам большой доход, но лишь в том случае, если вы найдёте соответствующую работу. А вот со знанием PHP вы сможете начать зарабатывать свой миллион раньше, правда потратите втрое больше чистого времени.

Было бы разумным ввести некую единицу оценки прибыльности исходя из соотношения зарплата/вакансия. Тогда, скорее всего, в лидерах бы оказались языки для мобильных платформ Android и iOS, т.е. Java и Swift. Однако в данном случае стоит вопрос необходимости и достаточности знания профильного языка: если безупречное владение тем же PHP может составлять 30% «must-have» требований, то вот Swift вряд ли потянет и на 10%. Да и является ли показателем качества языка количество вакансий? Может быть, всё в точности наоборот?

Быстродействие

Ещё один довольно спорный фактор, зависящий по сути от двух факторов – поставленной задачи и используемой машины, то есть абсолютно субъективных факторов. Нет, конечно, мы можем взять одну машину и устроить на ней сотни тестов разной сложности, чтобы выяснить, что C – это отличный язык программирования по быстродействию, а в самом низу списка будет Basic. Но градация скорости в середине вновь будет очень небольшой и брать её за показатель преимущества – нелепо.

Удобство

Субъективный параметр, который тем не менее, часто принимается за доказательство. Удобным язык может называться, если стандартные конструкции в нём записываются максимально коротко.  Также удобным языком можно называть тот, где риск появления плавающей ошибки минимален. Удобный язык – этот тот, для работы с которым создано множество редакторов, плагинов, надстроек и пр. На самом деле любой основополагающий принцип языка можно выдать за удобство и оказаться правым. Так что такое удобство?

Область применения

Вот это первый аргумент в сегодняшнем списке, который можно посчитать, привести примеры и выявить победителя. Однако в каком случае данный спор выявит победителя? В каком случае количество бьёт качество? В споре двух мальчишек на уроке информатики? В реальной ситуации, когда человек подбирает себе инструмент для конкретной задачи или будущей работы, вопрос выбора языка с широким диапазоном применения обычно не стоит. Как правило, ситуация обратная: чем уже специализация, тем эффективнее применение языка. То есть знать несколько языков куда полезнее, чем один, но “широкоформатный”.

Функциональность

Функциональность и возможности – это как раз то, что можно почерпнуть из соответствующей таблички в Википедии. Сравнение полезное, достаточно полное и спорить с собеседником можно просто тыкая в соответствующую таблицу. Но вновь возвращаемся к эффективности такого сравнения: сподобят ли вас потенциально большие возможности взяться за изучение нового языка? Или это только отпугнёт?

А как вы считаете, можно ли сравнивать языки программирования? По каким ещё критериям?

Популярные статьи

Новые комментарии