avva: (moose)
[personal profile] avva
Любопытная презентация о том, почему динамически языки все еще тормозят.

Основная мысль автора: в наше время умных JIT нет никакой причины на уровне самого языка, чтобы Питон или Руби выполнялись медленнее C или Джавы; но это неизбежно продолжает происходить, потому что в динамических языках сложилась культура не считать копии объектов и для всего использовать ассоциативные массивы.

Интересная мысль, но спорная. Мне мешают с ней согласиться два соображения.

Во-первых, я поверю, что Питон выполняется со скоростью C/C++, когда это увижу. На примере серьезного размера программы, делающей что-то нетривиальное с вычислениями или обработкой большого количества данных. И желательно в официальной среде Питона, а не PyPy каком-нибудь. То же касается Руби.

Во-вторых, если представить себе такой Питон, в котором мы боимся сделать лишний split(), всем функциям, создающим большие строки, передаем готовые буферы для них, а данные типа ключ-значение не кидаем в первый попавшийся словарь, а аккуратно планируем для них класс с полями - если все это себе представить и содрогнуться, то станет неясно, зачем таким Питоном пользоваться, и почему не писать сразу на C++ (или Джаве, если хочется защиты побольше). Динамические языки типа Питона и Руби так выросли в популярности в последние 15 лет не потому, что у них динамическая типизация (Смоллток их в этом всех перещеголял, а как был маргинальным, так и остался) - а потому, что в них просто, удобно и приятно работать со строками и простыми их коллекциями. Если бояться сделать лишний ' '.join(), то мало кто захочет писать на таком Питоне.

Date: 2013-03-06 02:39 am (UTC)
From: [identity profile] kot-begemot.livejournal.com
Как по мне, все эти Руби-Питоны не многим лучше Перла (не к ночи будь помянут), и имеют право на существование просто потому что колонию леммингов обучить им можно, а правильному программированию - нет. Массовое же программное обеспечение сегодня создаётся в основном силами тех самых леммингов с помощью новомодных средств разрабоки и соответствующих методолгий, начисто отрицающих самую возможность какого бы то ни было дизайна или хотя бы архитектурного планирования. Отсюда неизбежно следует, что улучшать их, в общем-то, без толку - проще железку помощнее поставить, благо овёс нынче подешевел неприлично.

Date: 2013-03-06 03:35 am (UTC)
From: [identity profile] kaathewise.livejournal.com
Ой, какая печальная ситуация... А что порекомендуете-то вместо унылого питоно-перла?

(no subject)

From: [identity profile] darky1982.livejournal.com - Date: 2013-03-06 03:38 am (UTC) - Expand

(no subject)

From: [identity profile] kot-begemot.livejournal.com - Date: 2013-03-06 03:55 am (UTC) - Expand

(no subject)

From: [identity profile] francis-drake.livejournal.com - Date: 2013-03-06 06:35 am (UTC) - Expand

(no subject)

From: [identity profile] kot-begemot.livejournal.com - Date: 2013-03-06 03:54 am (UTC) - Expand

(no subject)

From: [identity profile] huzhepidarasa.livejournal.com - Date: 2013-03-06 04:46 am (UTC) - Expand

(no subject)

From: [identity profile] kot-begemot.livejournal.com - Date: 2013-03-06 05:12 am (UTC) - Expand

(no subject)

From: [identity profile] huzhepidarasa.livejournal.com - Date: 2013-03-06 06:04 am (UTC) - Expand

(no subject)

From: [identity profile] huzhepidarasa.livejournal.com - Date: 2013-03-06 07:17 am (UTC) - Expand

(no subject)

From: [identity profile] vfork.livejournal.com - Date: 2013-03-06 10:44 am (UTC) - Expand

(no subject)

From: [identity profile] huzhepidarasa.livejournal.com - Date: 2013-03-06 11:08 am (UTC) - Expand

(no subject)

From: [identity profile] kaathewise.livejournal.com - Date: 2013-03-06 04:58 am (UTC) - Expand

(no subject)

From: [identity profile] kot-begemot.livejournal.com - Date: 2013-03-06 05:15 am (UTC) - Expand

(no subject)

From: [identity profile] kaathewise.livejournal.com - Date: 2013-03-06 05:22 am (UTC) - Expand

(no subject)

From: [identity profile] kot-begemot.livejournal.com - Date: 2013-03-06 05:35 am (UTC) - Expand

(no subject)

From: [identity profile] kaathewise.livejournal.com - Date: 2013-03-06 05:39 am (UTC) - Expand

(no subject)

From: [identity profile] kot-begemot.livejournal.com - Date: 2013-03-06 05:47 am (UTC) - Expand

(no subject)

From: [identity profile] kaathewise.livejournal.com - Date: 2013-03-06 06:20 am (UTC) - Expand

(no subject)

From: [identity profile] nalivalovo.livejournal.com - Date: 2013-03-06 09:19 pm (UTC) - Expand

(no subject)

From: [identity profile] ly0lik.livejournal.com - Date: 2013-03-06 05:41 am (UTC) - Expand

(no subject)

From: [identity profile] kot-begemot.livejournal.com - Date: 2013-03-06 05:47 am (UTC) - Expand

(no subject)

From: [identity profile] ly0lik.livejournal.com - Date: 2013-03-06 08:13 pm (UTC) - Expand

(no subject)

From: [identity profile] asox.livejournal.com - Date: 2013-03-06 11:45 am (UTC) - Expand

(no subject)

From: [identity profile] huzhepidarasa.livejournal.com - Date: 2013-03-06 02:10 pm (UTC) - Expand

(no subject)

From: [identity profile] asox.livejournal.com - Date: 2013-03-06 02:40 pm (UTC) - Expand

(no subject)

From: [identity profile] huzhepidarasa.livejournal.com - Date: 2013-03-06 02:57 pm (UTC) - Expand

(no subject)

From: [identity profile] asox.livejournal.com - Date: 2013-03-06 03:10 pm (UTC) - Expand

(no subject)

From: [identity profile] huzhepidarasa.livejournal.com - Date: 2013-03-06 03:25 pm (UTC) - Expand

(no subject)

From: [identity profile] asox.livejournal.com - Date: 2013-03-06 03:40 pm (UTC) - Expand

(no subject)

From: [identity profile] huzhepidarasa.livejournal.com - Date: 2013-03-06 03:59 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/_winnie/ - Date: 2013-03-06 04:40 pm (UTC) - Expand

(no subject)

From: [identity profile] huzhepidarasa.livejournal.com - Date: 2013-03-06 05:16 pm (UTC) - Expand

(no subject)

From: [identity profile] potan.livejournal.com - Date: 2013-03-06 11:59 am (UTC) - Expand

Date: 2013-03-06 04:01 am (UTC)
From: [identity profile] bolk.livejournal.com
Пайтон и Руби в одну кучу смешали, удивительно. Это языки, можно сказать, с противоположной синтаксической насыщенностью. Руби очень насыщен и продолжает дело Перла, Пайтон кажется недостаточно «мясистым» бывшим перловикам.

(no subject)

From: [identity profile] kot-begemot.livejournal.com - Date: 2013-03-06 04:13 am (UTC) - Expand

Date: 2013-03-06 06:55 am (UTC)
From: [identity profile] migmit.livejournal.com
Их, по крайней мере, можно распарсить.

Date: 2013-03-06 07:11 am (UTC)
From: [identity profile] javax-slr.livejournal.com
Вот взять груви. Одно его применение - "удобная" джава.
Другое - DSL. На нем чертовски удобно делать DSL

(no subject)

From: [identity profile] nec-p1us-u1tra.livejournal.com - Date: 2013-03-06 09:24 am (UTC) - Expand

(no subject)

From: [identity profile] javax-slr.livejournal.com - Date: 2013-03-06 09:26 am (UTC) - Expand

Date: 2013-03-06 07:48 am (UTC)
From: [identity profile] eterevsky.livejournal.com
Спорное утверждение. По-вашему, на каком-нибудь питоне нельзя писать качественный код? Или бессмысленно это делать?

(no subject)

From: [identity profile] nalivalovo.livejournal.com - Date: 2013-03-06 09:25 pm (UTC) - Expand

(no subject)

From: [identity profile] eterevsky.livejournal.com - Date: 2013-03-07 10:35 am (UTC) - Expand

Date: 2013-03-06 08:29 am (UTC)
From: [identity profile] kodt-rsdn.livejournal.com
Можно подумать, на сях и жабе нельзя выучиться говнокодить за 21 день? Весь полуостров Индостан тому пример.
Только паттернв говнокода разные. И области применения тоже: какой-нибудь веб против какого-нибудь энтерпрайза или эмбеддеда. Что, в эмбеддеде мало хиндусятины?

Date: 2013-03-06 05:40 am (UTC)
From: [identity profile] dmzlj.livejournal.com
Я что-то пропустил, и JIT умеют делать с динамическими языками unboxing, удаление информации о типах и доступ к массивам без контроля границ?
Edited Date: 2013-03-06 05:42 am (UTC)

Date: 2013-03-06 06:19 am (UTC)
From: [identity profile] cmm.livejournal.com
boxing, информация-о-типах и контроль границ являются проблемами производительности разве что для ембедщиков.  а в остальном мире Жаба считается достаточно быстрой, например.

(no subject)

From: [identity profile] http://users.livejournal.com/sorcerer_/ - Date: 2013-03-06 07:09 am (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2013-03-06 07:16 am (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/sorcerer_/ - Date: 2013-03-07 02:19 am (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2013-03-06 08:20 am (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2013-03-06 09:06 am (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2013-03-06 09:34 am (UTC) - Expand

(no subject)

From: [identity profile] cmm.livejournal.com - Date: 2013-03-06 10:14 am (UTC) - Expand

(no subject)

From: [identity profile] huzhepidarasa.livejournal.com - Date: 2013-03-06 11:15 am (UTC) - Expand

Date: 2013-03-06 07:26 am (UTC)
From: [identity profile] huzhepidarasa.livejournal.com
Да, V8 все это делает, насколько я знаю.

Date: 2013-03-06 05:54 am (UTC)
From: [identity profile] akalenuk.livejournal.com
Если честно, я не совсем понял предмета разговора. Да, все правильно: строки, контейнеры - удобство против бережливости. Ну и да, никакая самая хитрая компиляция не обеспечит того же прироста, что и замена алгоритмов с логарифмической сложностью их аналогами со сложностью константной. Все предпосылки правильные, а выводов я за деревьями не вижу.

Date: 2013-03-06 01:43 pm (UTC)
From: [identity profile] http://users.livejournal.com/_winnie/
> Ну и да, никакая самая хитрая компиляция не обеспечит того же прироста, что и замена алгоритмов с логарифмической сложностью их аналогами со сложностью константной

Вроде бы интерпретаторы SQL именно про то, что бы выполнение запросов

for x in X: 
  for y in Y: 
    if x.id == y.id and y.owner == 3: 
      print x.name 

было за O(1) а не за O(N^2), более того подсказывают админу как настроить индексы

Date: 2013-03-06 06:09 am (UTC)
From: [identity profile] cmm.livejournal.com
в наше время умных JIT нет никакой причины на уровне самого языка, чтобы Питон или Руби выполнялись медленнее C или Джавы

я не знаю про наше время, но нормальные динамические языки (в том числе, ЧБСХ, тот же Смолток) выполняются вполне себе быстро уже лет тридцать.

а основной причиной всех проблем экосистемы "скриптовых" говноязычков является удивительное невежество её участников.

Date: 2013-03-06 06:58 am (UTC)
From: [identity profile] migmit.livejournal.com
В принципе, совпадает с тем, что я неделю назад писал в твиттере: "Looks very bullshitty to me. JIT used as a buzzword". В общем, тупо не верю.

Date: 2013-03-06 06:59 am (UTC)
From: [identity profile] alex shayda (from livejournal.com)
У вас ошибка в исходных:
Перл (а он "динамический") быстрее С++, а С++ конечно быстрее Джавы. (ИМХО медленнее Джавы ничего не создано пока)

Date: 2013-03-06 07:05 am (UTC)
From: [identity profile] kaathewise.livejournal.com
Перл быстрее плюсов, чо, правда? Пруф?
Питон быстрее джавы? Wuuut?

(no subject)

From: [identity profile] orleanz.livejournal.com - Date: 2013-03-06 07:06 am (UTC) - Expand

(no subject)

From: [identity profile] alex shayda - Date: 2013-03-06 07:32 am (UTC) - Expand

(no subject)

From: [identity profile] kaathewise.livejournal.com - Date: 2013-03-06 07:50 am (UTC) - Expand

(no subject)

From: [identity profile] alex shayda - Date: 2013-03-06 08:29 am (UTC) - Expand

(no subject)

From: [identity profile] kaathewise.livejournal.com - Date: 2013-03-06 08:56 am (UTC) - Expand

(no subject)

From: [identity profile] huzhepidarasa.livejournal.com - Date: 2013-03-06 08:48 am (UTC) - Expand

(no subject)

From: [identity profile] kaathewise.livejournal.com - Date: 2013-03-06 09:02 am (UTC) - Expand

(no subject)

From: [identity profile] huzhepidarasa.livejournal.com - Date: 2013-03-06 09:46 am (UTC) - Expand

(no subject)

From: [identity profile] kaathewise.livejournal.com - Date: 2013-03-06 09:55 am (UTC) - Expand

(no subject)

From: [identity profile] huzhepidarasa.livejournal.com - Date: 2013-03-06 10:20 am (UTC) - Expand

(no subject)

From: [identity profile] kaathewise.livejournal.com - Date: 2013-03-06 10:43 am (UTC) - Expand

(no subject)

From: [identity profile] huzhepidarasa.livejournal.com - Date: 2013-03-06 10:43 am (UTC) - Expand

(no subject)

From: [identity profile] dmytrish.livejournal.com - Date: 2013-03-13 05:06 pm (UTC) - Expand

Date: 2013-03-06 07:05 am (UTC)
From: [identity profile] orleanz.livejournal.com
Питон гораздо медленне Джавы

про скорость Перла - скажите это создателям игровых движков которые их на с++ пишут, по старинке

(no subject)

From: [identity profile] alex shayda - Date: 2013-03-06 07:34 am (UTC) - Expand

(no subject)

From: [identity profile] migmit.livejournal.com - Date: 2013-03-06 07:51 am (UTC) - Expand

(no subject)

From: [identity profile] alex shayda - Date: 2013-03-06 08:31 am (UTC) - Expand

(no subject)

From: [identity profile] migmit.livejournal.com - Date: 2013-03-06 09:23 am (UTC) - Expand

(no subject)

From: [identity profile] orleanz.livejournal.com - Date: 2013-03-06 09:46 am (UTC) - Expand

(no subject)

From: [identity profile] alex shayda - Date: 2013-03-06 02:52 pm (UTC) - Expand

(no subject)

From: [identity profile] huzhepidarasa.livejournal.com - Date: 2013-03-06 03:32 pm (UTC) - Expand

(no subject)

From: [identity profile] http://users.livejournal.com/sorcerer_/ - Date: 2013-03-07 02:24 am (UTC) - Expand

(no subject)

From: [identity profile] orleanz.livejournal.com - Date: 2013-03-06 09:57 am (UTC) - Expand

Date: 2013-03-06 07:56 am (UTC)
From: [identity profile] eterevsky.livejournal.com
А что с PyPy не так? CPython — очень консервативный интерпретатор, я сомневаюсь, что в нём будут делать JIT. Что не значит, что питон в принципе медленный.

Насколько я знаю, из реализаций современных динамических языков самая быстрая — LuaJIT. Быстрее чем V8, во всяком случае.

А на счёт использования ассоциативных массивов где не попадя и аналогичных методов — профайлинг никто не отменял. Чтобы сделать программу быстрой, нужно сначало сделать её правильной, а потом переписать 5% самого исполняемого кода.

Date: 2013-03-06 08:52 am (UTC)
From: [identity profile] ext-1684936.livejournal.com (from livejournal.com)
Я в целом согласен с автором, но я ещё более радикален. По моему, он ошибается только в перекладывании оптимизации split(), join(), append(), etc. на писателя на языке. Эту оптимизацию должны делать сами JIT, run-time support и стандартные библиотеки.

Да, это сложно, но вполне возможно.

Я работаю в Talaria Technologies http://talariatech.com/ которая делает нечто подобное не для для Питона и Руби, а для значительно более популярного PHP.

Я сейчас пишу уже 3-ю версию (за 2 года!) наших внутренних строк, и мы уже на 3-й версии наших ассоциативных массивов. Смерть копированию и выделению памяти!

Date: 2013-03-06 09:28 am (UTC)
From: [identity profile] nec-p1us-u1tra.livejournal.com
Комментарии полны истинных программистов и архитекторов.
А я последний год пишу в основном в Tcl. Очень удобен, можно по месту загнуть до DSL.

Date: 2013-03-06 11:41 am (UTC)
From: [identity profile] asox.livejournal.com
но это неизбежно продолжает происходить, потому что в динамических языках сложилась культура не считать копии объектов и для всего использовать ассоциативные массивы.

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

Во-вторых, если представить себе такой Питон, в котором мы боимся сделать лишний split(), всем функциям, создающим большие строки, передаем готовые буферы для них, а данные типа ключ-значение не кидаем в первый попавшийся словарь, а аккуратно планируем для них класс с полями - если все это себе представить и содрогнуться, то станет неясно, зачем таким Питоном

Мне почему-то кажется, что без статической типизации подобные дейсвтия будут попросту бессмысленны. Ну и, соответственно, на чём-нибудь крупном мы уткнёмся в эти самые "внезапные" прблемы.

Date: 2013-03-06 12:44 pm (UTC)
From: [identity profile] haiut.livejournal.com
действительно интересная мысль, и на мой взгляд, не такая спорная - культура программирования на языках вроде Питона, PHP, и иже с ними действительно никудышная.

во многих случаях она предполагает short-lived programs/processes, где возиться с "правильными" структурами данных и думать об оптимальном выделении памяти есть неинтересная трата времени .. а когда культура (и с ней примеры в tutorials) сложилась, бороться с ней - дело неблагодарное.

кстати, я вполне могу поверить, что большинство простых операций JIT-компилированый код Питона может выполнять со скоростью, сопоставимой с, например, Java или C++ ..

Date: 2013-03-06 01:40 pm (UTC)
From: [identity profile] cema.livejournal.com
станет неясно, зачем таким Питоном пользоваться

Именно!

Date: 2013-03-06 02:08 pm (UTC)
From: [identity profile] meshko.livejournal.com
+500, удивительно, умный же мужик, а пишет глупости.

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

Date: 2013-03-06 05:18 pm (UTC)
From: [identity profile] angerona.livejournal.com
если вместо питона взять МАТЛАБ, например, то вполне все быстро получается.

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 29th, 2025 10:11 am
Powered by Dreamwidth Studios