@Letopisec

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

Я тут погуглил, и мне стало интересно: большинство вопросов о том, какой язык самый лучший, какой язык самый популярный, какой язык самый быстрый.

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

А если один язык посчитал быстрее, значит он лучше?

А количество написанных строк кода при достижении одинакового результата показывает какой язык лучше?
  • Вопрос задан
  • 769 просмотров
Решения вопроса 4
Jacen11
@Jacen11
Я тут погуглил, и мне стало интересно, большинство вопросов о том, какой язык самый лучший, какой язык самый популярный, какой язык самый быстрый.

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

Вот я могу вызвать метод, или написать метод какого-то вычисления, то это скорость чего будет?Скорость языка или грамотность программиста? Или производительность компьютера?
А если один язык посчитал быстрее, значит он лучше?
ответом на этот вопрос будет ответ на мой вопрос - Вот ты можешь прыгнуть, можешь подумать, то это скорость чего будет? Скорость твоего языка или твоя грамотность? Или атмосферное давление? А если одна рука быстрее, значит нога лучше?

А количество написанных строк кода при достижении одинакового результата показывает какой язык лучше?
конечно. Вот смотри решение задачи на брейнфаке под спойлером. Используется только 8 символов для команд и все в одну строку, что может быть лучше? Самый лучший язык
Пользователь вводит буквы одну за другой, пока не введет символ точки (код 46). Выведите введенные символы в алфавитном порядке (с повторениями)
>>,[>>,]<<[[<<]>>>>[<<[>+<<+>-]>>[>+<<<<[->]>[<]>>-]<<<[[-]>>[>+<-]>>[<<<+>>>-]]>>[[<+>-]>>]<]<<[>>+<<-]<<]>>>>[.>>]


как вообще определяется лучшесть и быстрость
очевидно статьи будут в разы полнее, чем любой из ответов здесь. Ты уже пробовал гуглить, значит тебя не забанили, продолжай
Ответ написан
Комментировать
@majstar_Zubr
C++, C#, gamedev

А как вообще определяется лучшесть и быстрость..
А если один язык посчитал быстрее, значит он лучше?


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

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

Почему новички гуглят самый быстрый язык, а не самый медленный?


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

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


Количество строк в решении задачи на языке А по сравнению с языком Б может позволить неточно оценить отношение цикломатических сложностей для решений. Но это имеет смысл только для языков из одной категории. Например, для ПО для работы с геоданными и картами может потребоваться встроить какой-нибудь существующий язык, либо навелосипедить DSL. К примеру, в качестве встраиваемых кандидатов можно взять lua, js, python. Если в аналитической модели большинство операций связано с операциями над множествами, то на тестовой задаче станет видно, что решения на python самые лаконичные. Если в модели много работы с данными разных типов, то возможно тут выиграет js. Если все модели данных уже предопределены, или в числодробилках задействованы распараллеливание вычислений, то скорее всего обвязка на lua даст самый лаконичный результат. Да, все дело в том, какие именно паттерны и модели изначально встроены в синтаксис языка. По факту, именно специализация языка на классе задач позволяет сделать решение лаконичным.

Но лаконичность и скорость исполнения более важны для языков с JIT компиляцией. В AoT основная ценность это производительность программы и минимальное потребление ресурсов, в C++ лаконичность в решении это результат введения чего-то хорошего в стандарт. В целом, нужно исходить от класса задач, а не просто из количества строк.
Ответ написан
Комментировать
vabka
@vabka
Токсичный шарпист
1. Немного душно, но язык не может быть быстрее или медленнее. Лучше или хуже.
Скорость - это зависит от реализации.
Лучшесть - от задачи.

то как определить, какой из них лучше, какой быстрее?

Также как и с интернетом - сравнить в лоб.
Скорость - бенчмарками, в похожих задачах на одинаковом железе.
Лучшесть - попробовав решить какую-нибудь проблему.

А если один язык посчитал быстрее, значит он лучше?

Если это был единственный критерий, то да.


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

Если такой критерий был, то да
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Если говорить о скорости, то компилируемые языки всегда будут быстрее интерпретируемых. Просто из-за разных принципов выполнения программы.
Есть еще языки с JIT компиляцией, типа Java, C# и т.п.
Они могут быть быстрее компилируемых в каких-то случаях, т.к. они точно знают на каком процессоре работают в каждом конкретном случае и могут максимально использовать возможности текущего процессора для оптимизации кода.
В компилируемых языках, как правило, программист собирает программу под некоторую абстрактную архитектуру, например под x64, но у конкретного процессора, на котором будет выполнятся программа могут быть какие-то расширенные возможности, о которых программист (компилятор) не знает во время компиляции (или решает не использовать их для универсальности). При этом JIT компилятор может использовать эти расширенные возможности и добьется лучшей производительности.
Но если поставить в одинаковые условия компилируемые языки и языки с JIT компиляцией, то, думаю, результат будет то же в пользу компилируемых языков. Но в реальности такое (заранее известные условия исполнения для компилируемого кода) встречается не часто.

К слову, в том же питоне (интерпретируемый язык), например, модули для математических вычислений (numpy, scipy, ...) написаны на компилируемых языках (C/C++), поэтому они работают быстрее, чем аналогичный код на питоне без использования этих модулей. Да и сам интерпретатор питона написан на компилируемом языке :)

Скорость не единственный критерий для ЯП. Имеет значение и скорость разработки конкретной задачи и поддержка каких-то возможностей и т.д. и т.п.

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

Практически все задачи можно решить почти на любом ЯП, но есть ЯП, которые хорошо подходят для решения задачи, а есть те, что не очень. В общем, подбирайте язык под задачу.
Например, если вы работаете в вебе, то это JS, php, python, java, C# и еще пачка других
Если это десктоп приложение с GUI, то: Java, C# может быть С++
Если это встраиваемая техника и реальное время, ядро ОС или драйверы: C/C++
Если это ИИ, компьютерное зрение и т.п. computer science: python, R, что-то еще
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы