LINUX.ORG.RU
ФорумTalks

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


0

0

http://tech.slashdot.org/article.pl?sid=08/04/26/1627248

Всегда подозревал, что маразматический старикашка ничего кроме своего Literate programming асилить не может. Он призывает производителей микросхем вернуться в век, когда программы выполнялись на одном ядре

Перемещено Die-Hard из Development

anonymous

Ответ на: комментарий от anonymous

> книжки кнута не читал и не собираюсь.

И правильно, друк, Ничего полезного в них нету.

tailgunner ★★★★★
()

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

anonymous
()


--- cut ---
As to your real question, the idea of immediate compilation and "unit tests" appeals to me only rarely, when I’m feeling my way in a totally unknown environment and need feedback about what works and what doesn’t. Otherwise, lots of time is wasted on activities that I simply never need to perform or even think about. Nothing needs to be "mocked up."
--- cut ---

что называется "почувствуй разницу".

// wbr

klalafuda ★☆☆
()

Кнут дело говорит, ребятня. Параллельное программирование вручную = анальное рабство. А ну марш прорабатывать пи-исчисление и сопутствующие вещи. Я не шучу.

anonymous
()


--- cut ---
Donald: The field of combinatorial algorithms is so vast that I’ll be lucky to pack its sequential aspects into three or four physical volumes, and I don’t think the sequential methods are ever going to be unimportant. Conversely, the half-life of parallel techniques is very short, because hardware changes rapidly and each new machine needs a somewhat different approach. So I decided long ago to stick to what I know best. Other people understand parallel machines much better than I do; programmers should listen to them, not me, for guidance on how to deal with simultaneity.
--- cut ---

так и напрашивается мысль "ну не долбоёб ли онанимус?".

// wbr

klalafuda ★☆☆
()
Ответ на: комментарий от klalafuda

Re^2: Дональд Кнут сказал, что параллельное программирование выше его способностей.

> так и напрашивается мысль "ну не долбоёб ли онанимус?".

Ну почему сразу долбоёб? Просто он использует критическую уязвимость "по ссылкам не ходить" :)

Кстати, похоже что это он пару дней назад здесь же предлагал закопать C++, переврав какую-то фразу про сборщики мусора.

// Ѣ ходят на ЛОР не по ссылкам

gaa ★★
()
Ответ на: комментарий от anonymous

>книжки кнута не читал и не собираюсь.

абсолютно верно, все что написал Кнут уже реализовала Великая Фирма Microsoft в своем передовом продукте VB for idiots.

generatorglukoff ★★
()
Ответ на: комментарий от anonymous

один ононимуз фееричнее другого

сегодня соревнование по пердежу в лужу? (%

AnDoR ★★★★★
()

А ты, дурачок, способен программировать многопоточность КАЧЕСТВЕННО?

У Кнута, знаешь ли, очень высокие стандарты. Если он не может делать это так же хорошо, как последовательное программирование, то, значит, этого делать и не стоит вовсе. Разумный подход.

До сих пор НИКТО не научился правильному параллельному программированию. Вообще никто, включая самого Робина Милнера.

anonymous
()
Ответ на: комментарий от anonymous

> Если он не может делать это так же хорошо, как последовательное программирование, то, значит, этого делать и не стоит вовсе. Разумный подход.

Если не нужно программировать параллельные приложения - очень разумный. Но вот беда - их таки надо программировать :D

> До сих пор НИКТО не научился правильному параллельному программированию. Вообще никто, включая самого Робина Милнера.

Ты хотел сказать - до сих пор никто не знает, что такое правильное параллельное проограммирование?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> Но вот беда - их таки надо программировать :D

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

>Ты хотел сказать - до сих пор никто не знает, что такое правильное параллельное проограммирование

Я это не только хотел сказать, я это даже и сказал.

anonymous
()
Ответ на: комментарий от anonymous

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

А, так "достаточно независимые потоки" не являются параллельным программированием? Тогда ой. А как определить, достаточно ли независимы потоки?

>> Ты хотел сказать - до сих пор никто не знает, что такое правильное параллельное проограммирование

> Я это не только хотел сказать, я это даже и сказал.

Если никто не знает, какое правильное, откуда ты знаешь, что все известные - неправильные? :D

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> А, так "достаточно независимые потоки" не являются параллельным программированием?

Естественно. Поскольку ничем это не отличается от не-параллельного программирования.

Тупейший пример:

dd ... | nc ...

И nc ... | dd ... на другом конце.

Не просто параллельное во все щели, но ещё офигеть какое распределённое программирование, где все компоненты сделаны абсолютно и тупо последовательными.

> А как определить, достаточно ли независимы потоки?

Например, по отсутствию обратной связи.

> Если никто не знает, какое правильное, откуда ты знаешь, что все известные - неправильные? :D

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

anonymous
()
Ответ на: комментарий от tailgunner

> Если никто не знает, какое правильное, откуда ты знаешь, что все известные - неправильные? :D

По моему нет правильного или не правильного, а есть более эффективные или менее эффективные, более удобные и менее удобные, средства и методы разработки в тех или иных условиях.

ilnurathome
()
Ответ на: комментарий от ilnurathome

Математическое обоснование алгоритмов-наше всио

Сборная гопников-быдлопрограммеров

anonymous
()
Ответ на: комментарий от anonymous

> Не просто параллельное во все щели, но ещё офигеть какое распределённое программирование, где все компоненты сделаны абсолютно и тупо последовательными.

Вот именно. CSP решает :)

>> А как определить, достаточно ли независимы потоки?

> Например, по отсутствию обратной связи.

Ну, это тривиальный и вырожденный случай... неинтересно.

>> Если никто не знает, какое правильное, откуда ты знаешь, что все известные - неправильные? :D

>Нельзя легко доказывать наличие или отсутствие фундаментальных свойств у таких алгоритмов

Каких именно фундаментальных свойств?

tailgunner ★★★★★
()
Ответ на: комментарий от anonymous

>Тупейший пример:

>dd ... | nc ...

>И nc ... | dd ... на другом конце.

Имеешь ввиду конвеер? Так это тоже параллельное программирование, причем запихнуть в конвеер, можно не все, да и массштабирование под вопросом.

ilnurathome
()
Ответ на: комментарий от klalafuda

> так и напрашивается мысль "ну не долбоёб ли онанимус?".

+1. Я чертовски самокритичен.

anonymous
()
Ответ на: комментарий от anonymous

> Математическое обоснование алгоритмов-наше всио

Хочешь сказать, что выбор средств на производительность не влияет? Изъезженная тема про OpenMP vs MPI.

ilnurathome
()

>Всегда подозревал, что маразматический старикашка ничего кроме своего Literate programming асилить не может. Он призывает производителей микросхем вернуться в век, когда программы выполнялись на одном ядре

Почему бы сразу не назвать Кнута и Столлмана - ботаниками, и пойти пить пиво в подворотню? Не забудь бить машины.

xTERM ★★
()

Надоело тупое быдло на ЛОРе.

xTERM ★★
()

А по теме: многоядерность - зло. На сервере еще нормально, не спорю. Но на клиенте (а кол-во клиентов на несколько порядков больше) оно только уменьшает производительность, ибо редко у нас активно больше 2х программ на десктопе. Можно конечно расспараллеливать существующие программы, но однопоточный процесс быстрой сортировки на одном мощном ядре будет быстрее своих параллельных альтернатив на двух половинных ядрах. Да и программирование усложняется несказанно... низкоуровневые языки уже использовать проблематично, а за счет высокоуровневых тормозов еще добавится. Тут плакать надо, а не радоваться. Возможно Intel уже не может создать одно хорошее ядро вместо двух плохих, что опять-таки не повод для веселья...

xTERM ★★
()
Ответ на: комментарий от ilnurathome

>> Математическое обоснование алгоритмов-наше всио

>Хочешь сказать, что выбор средств на производительность не влияет? Изъезженная тема про OpenMP vs MPI.

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

generatorglukoff ★★
()
Ответ на: комментарий от xTERM

>многоядерность - зло.

отсутствие мозгов и кривые руки - зло.

>ибо редко у нас активно больше 2х программ на десктопе

Tasks: 95 total, 3 running, 92 sleeping, 0 stopped, 0 zombie

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

Безусловно. Но никто не будет делать половинные ядра. А вот проблема упереться в граничную тактовую частоту весьма реальна, и либо произойдет технологическая революция (появятся процессоры принципиально другого типа), либо эволюция - ядер станет больше.

>Да и программирование усложняется несказанно...

Думать вообще сложно, может слесарем?^W^W^W^W^W А о чем мы тут говорим? Нет математики вокруг этого дела. Как появится - все будет кристально прозрачно как 10+10=100.

generatorglukoff ★★
()
Ответ на: комментарий от generatorglukoff

>>ибо редко у нас активно больше 2х программ на десктопе

>Tasks: 95 total, 3 running, 92 sleeping, 0 stopped, 0 zombie

Ну вот, 2 задачи, и ps. Так что xTERM прав :D

tailgunner ★★★★★
()
Ответ на: комментарий от generatorglukoff

Революция будет. Потому что тот, кто сдепает процессор, работающий в 1000 раз быстрее современных, получит очень много денег, а это хороший challendge. А ядра увеличивать — тупиковый путь.

Legioner ★★★★★
()
Ответ на: комментарий от Legioner

> Революция будет. Потому что тот, кто сдепает процессор, работающий в 1000 раз быстрее современных, получит очень много денег, а это хороший challendge. А ядра увеличивать — тупиковый путь.

Везде есть свой предел, кремний к нему подошел, и выше своей головы уже не прыгнет. Говоряд, что еслиб чипы делали из германия, то тактовую частоту можно было-бы еще как минимум на несколько порядков поднять, но увы, на данном этапе, себистоимость производства одного чипа уровня хотя-бы StrongARM-а (по кол-ву транзисторов) будет выше чем себистоимость сборки Bugatti Veyron.

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

Чем кстати вам так не угодил путь увеличения числа ядер? Природа давно так сделала, и получился вполне себе моск млекопитающего, -- сверхпараллельный компьютер, по уровню параллелеризма превосходящий любые Blue Gene/L. А с введением в строй быстрых interconnect-ов между ядрами, основанных на оптике, прирост производительности от увеличения числа ядер станет более линейным, так что будет всем счастье.

fmj
()
Ответ на: комментарий от fmj

> Чем кстати вам так не угодил путь увеличения числа ядер?

+1, Массово-параллельные компьютеры - вполне отработанная в середине 80-х технология, а тут еще и ФП суетится, обещая распараллеливание почти на халяву.

tailgunner ★★★★★
()
Ответ на: комментарий от fmj

> Нужно что-то принципиально новое, и не факт, что это принципиально новое в ближайшем столетии создадут

Я практически на 99% уверен, что создадут, причём в ближайшие 10 лет. Т.е. в 2018 году производительность среднего компьютера будет больше сегодняшней на пару порядков.

> Чем кстати вам так не угодил путь увеличения числа ядер?

Во-первых банально греться будет. Уже сейчас охлаждение становится проблемой, если на плате будут стоять 64 сегодняшних процессора, нужно будет очень активное водяное охлаждение.

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

Единственная возможность захвата десктопа многоядерниками — создание языка, очень похожего на Java/C#, который будет автоматически или почти автоматически параллелиться и самостоятельно разруливать дедлоки и проблемы синхронизации. И давать реальное, близкое к линейному повышение производительности.

Иначе просто не будут покупать 10-ядерные процессоры, если они не дадут никакого преимущества пред 2-ядерными, что бы ни вещали маркетологи. Потребитель дурак но не идиот, у него всегда есть телефон "программиста Васи", с которым он посоветуется перед покупкой.

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

Legioner ★★★★★
()
Ответ на: комментарий от xTERM

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

HP
()
Ответ на: комментарий от Legioner

Да. Sun уже получила большие средства от правительства на создание лазерных соединителей между элементами процессора.

xTERM ★★
()
Ответ на: комментарий от Legioner

> Единственная возможность захвата десктопа многоядерниками — создание языка, очень похожего на Java/C#

Ничего, подожди, они (бараны) скоро к иммутабельности привыкнут. Ещё пара поколений таких языков, и введут ключевое слово mutable, оставив всё остальное иммутабельным. Вот тогда и можно будет параллелить попсовые языки.

anonymous
()
Ответ на: комментарий от Legioner

>И давать реальное, близкое к линейному повышение производительности.

О таком даже мечтать нельзя, гугли "закон Амдала".

anonymous
()

> Он призывает производителей микросхем вернуться в век, когда программы выполнялись на одном ядре

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

anonymous
()
Ответ на: комментарий от Legioner

> создание языка, очень похожего на Java/C#, который будет автоматически или почти автоматически параллелиться и самостоятельно разруливать дедлоки и проблемы синхронизации.

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

Сейчас пока ковыряю opents и upc, на предмет возможного применения.

ilnurathome
()
Ответ на: комментарий от Legioner

>Я практически на 99% уверен, что создадут, причём в ближайшие 10 лет. Т.е. в 2018 году производительность среднего компьютера будет больше сегодняшней на пару порядков.

С цифрами нелады. К 2018 дай тнб массовым станет то, что сейчас в виде концептов существует. О связке изобретут+внедрят и говорить смешно.

>Единственная возможность захвата десктопа многоядерниками — создание языка, очень похожего на Java/C#, который будет автоматически или почти автоматически параллелиться и самостоятельно разруливать дедлоки и проблемы синхронизации.

Критичное к производительности разве не на си пишут? А то и на асме. Если у них не получается с одним ядром справиться, с чего ждать такого скачка?

>Иначе просто не будут покупать 10-ядерные процессоры, если они не дадут никакого преимущества пред 2-ядерными, что бы ни вещали маркетологи.

Будут. Просто очередной кризис будет тормозить на 4х ядрах чуть более, чем на 16. Вот и купят.

>Потребитель дурак но не идиот, у него всегда есть телефон "программиста Васи", с которым он посоветуется перед покупкой.

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

anonymous
()
Ответ на: комментарий от Legioner

> Единственная возможность захвата десктопа многоядерниками — создание языка, очень похожего на Java/C#, который будет автоматически или почти автоматически параллелиться и самостоятельно разруливать дедлоки и проблемы синхронизации.

Жабабыдлокодеры такие жабабыдлокодеры. Им тут про ФП, про пи-исчисление, а они всё мыслят своими мутексами и семафорами. Пока не осознаешь, что кроме исторически сложившейся парадигмы параллелизма с разделяемым состоянием есть и другие пути, можешь в тред не приходить.

anonymous
()
Ответ на: комментарий от anonymous

>> И давать реальное, близкое к линейному повышение производительности.

> О таком даже мечтать нельзя, гугли "закон Амдала".

Закон Амдала не запрещает линейное повышение производительности.

tailgunner ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.