о динамических языках
Mar. 6th, 2013 03:57 amЛюбопытная презентация о том, почему динамически языки все еще тормозят.
Основная мысль автора: в наше время умных JIT нет никакой причины на уровне самого языка, чтобы Питон или Руби выполнялись медленнее C или Джавы; но это неизбежно продолжает происходить, потому что в динамических языках сложилась культура не считать копии объектов и для всего использовать ассоциативные массивы.
Интересная мысль, но спорная. Мне мешают с ней согласиться два соображения.
Во-первых, я поверю, что Питон выполняется со скоростью C/C++, когда это увижу. На примере серьезного размера программы, делающей что-то нетривиальное с вычислениями или обработкой большого количества данных. И желательно в официальной среде Питона, а не PyPy каком-нибудь. То же касается Руби.
Во-вторых, если представить себе такой Питон, в котором мы боимся сделать лишний split(), всем функциям, создающим большие строки, передаем готовые буферы для них, а данные типа ключ-значение не кидаем в первый попавшийся словарь, а аккуратно планируем для них класс с полями - если все это себе представить и содрогнуться, то станет неясно, зачем таким Питоном пользоваться, и почему не писать сразу на C++ (или Джаве, если хочется защиты побольше). Динамические языки типа Питона и Руби так выросли в популярности в последние 15 лет не потому, что у них динамическая типизация (Смоллток их в этом всех перещеголял, а как был маргинальным, так и остался) - а потому, что в них просто, удобно и приятно работать со строками и простыми их коллекциями. Если бояться сделать лишний ' '.join(), то мало кто захочет писать на таком Питоне.
Основная мысль автора: в наше время умных JIT нет никакой причины на уровне самого языка, чтобы Питон или Руби выполнялись медленнее C или Джавы; но это неизбежно продолжает происходить, потому что в динамических языках сложилась культура не считать копии объектов и для всего использовать ассоциативные массивы.
Интересная мысль, но спорная. Мне мешают с ней согласиться два соображения.
Во-первых, я поверю, что Питон выполняется со скоростью C/C++, когда это увижу. На примере серьезного размера программы, делающей что-то нетривиальное с вычислениями или обработкой большого количества данных. И желательно в официальной среде Питона, а не PyPy каком-нибудь. То же касается Руби.
Во-вторых, если представить себе такой Питон, в котором мы боимся сделать лишний split(), всем функциям, создающим большие строки, передаем готовые буферы для них, а данные типа ключ-значение не кидаем в первый попавшийся словарь, а аккуратно планируем для них класс с полями - если все это себе представить и содрогнуться, то станет неясно, зачем таким Питоном пользоваться, и почему не писать сразу на C++ (или Джаве, если хочется защиты побольше). Динамические языки типа Питона и Руби так выросли в популярности в последние 15 лет не потому, что у них динамическая типизация (Смоллток их в этом всех перещеголял, а как был маргинальным, так и остался) - а потому, что в них просто, удобно и приятно работать со строками и простыми их коллекциями. Если бояться сделать лишний ' '.join(), то мало кто захочет писать на таком Питоне.
no subject
Date: 2013-03-06 02:39 am (UTC)no subject
Date: 2013-03-06 03:35 am (UTC)no subject
Date: 2013-03-06 03:38 am (UTC)no subject
Date: 2013-03-06 03:54 am (UTC)А насчёт порекомендовать - так это для чего смотря. На каждую задачу - свой особый инструмент. Хотя находятся умельцы, пишущие эмуляторы x86 (ну ок, портирующие QUEMU) на JavaScript и запускающие в браузере Linux. Но это всё-таки очевидное извращение (тем и интересно).
Вот например, для написания операционных систем, к сожалению, в современных условиях только C и применяется, хотя некоторый ограниченный вариант C++ (без RTTI и exceptions) подошёл бы куда лучше.
В прикладном программировании жаба успешно додушивает плюсы, хотя кое-где плюсы всё же выживают (ну то есть там, где производительность важна).
А кое-где и на PL/SQL пишут вполне успешно - и ничего.
Вполне допускаю, что и для Питона существует своя особая ниша, в конце концов, написали же на нём целый синтетический NFS-client, и даже весьма неплохой. Ну то есть реально для работы он неприменим в силу полной тормознутости, но в качестве системы тестирования соответствия серверов стандарту 4.0/4.1 - штука незаменимая.
no subject
Date: 2013-03-06 03:55 am (UTC)no subject
Date: 2013-03-06 04:01 am (UTC)no subject
Date: 2013-03-06 04:13 am (UTC)no subject
Date: 2013-03-06 04:46 am (UTC)Вообще мне кажется, что страх перед исключениями часто иррационален.
no subject
Date: 2013-03-06 04:58 am (UTC)Это совсем не так. Дизайн и архитектурное планирование - это совсем не планирование системы типов. Архитектура строится из взаимодействующих компонент и процессов, а что там это за компонент - объект какого-то типа, объект с каким-то свойством, модуль, скрипт или удаленный сервис - это вопрос выбора. Супер-пупер типизация - это лишь свойство некоторых языков, которое нужно учитывать (и опираться на него) при написании программ на этих языках, а не неотъемлемая часть дизайна и планирования.
no subject
Date: 2013-03-06 05:12 am (UTC)no subject
Date: 2013-03-06 05:15 am (UTC)no subject
Date: 2013-03-06 05:22 am (UTC)no subject
Date: 2013-03-06 05:35 am (UTC)no subject
Date: 2013-03-06 05:39 am (UTC)no subject
Date: 2013-03-06 05:40 am (UTC)no subject
Date: 2013-03-06 05:41 am (UTC)no subject
Date: 2013-03-06 05:47 am (UTC)Связано это не только и не столько с языками как таковыми, сколько с их предметной областью и превалирующими в ней леммингами (и как следствие - методологиями, не направленными на получение оптимального кода).
no subject
Date: 2013-03-06 05:47 am (UTC)Там, по-моему, теперь и сервер тоже есть, но его я не использовал, так что за качество не поручусь. Клиент же для тестирования хорош.
no subject
Date: 2013-03-06 05:54 am (UTC)no subject
Date: 2013-03-06 06:04 am (UTC)no subject
Date: 2013-03-06 06:09 am (UTC)я не знаю про наше время, но нормальные динамические языки (в том числе, ЧБСХ, тот же Смолток) выполняются вполне себе быстро уже лет тридцать.
а основной причиной всех проблем экосистемы "скриптовых" говноязычков является удивительное невежество её участников.
no subject
Date: 2013-03-06 06:19 am (UTC)no subject
Date: 2013-03-06 06:20 am (UTC)Вообще говоря, конечно, неправда, что пишущим на питоне неважна скорость, или не нужно сложное архитектурное планирование, иногда даже наоборот, оно более необходимо, именно из-за меньшей скорости самого питона. В очередной раз видел забавный пример этого на недавнем fbhc - для с++ было достаточно тупого решения, а питон требовал чего-то более алгоритмически эффективного.
По опыту работы в Яндексе могу сказать, что на питоне поиск, конечно, никто не пишет, но достаточно сложные распределенные системы, требующие на порядок меньше ресурсов, - вполне. Думаю, что и в Гугле все примерно так же выглядит.
no subject
Date: 2013-03-06 06:35 am (UTC)no subject
Date: 2013-03-06 06:55 am (UTC)