?

Log in

No account? Create an account
Tim Sweeney: The Next Mainstream Programming Languages - Valse oubliée [entries|archive|friends|userinfo]
aruslan

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]
[ delicious | aruslan's delicious ]

Links
[Links:| Tags Profile Friends FG1 PP gamedev XNA FF Entries Comments Memories ]

Tim Sweeney: The Next Mainstream Programming Languages [Feb. 5th, 2006|10:53 pm]
aruslan
[Tags|, , , , ]

Презентация с POPL: http://www.cs.princeton.edu/~dpw/popl/06/Tim-POPL.ppt
Обсуждение: http://lambda-the-ultimate.org/node/1277

via pierre
LinkReply

Comments:
(Deleted comment)
[User Picture]From: aruslan
2006-02-05 08:32 pm (UTC)
Тим рассказывает, как фронтьер сильных вычислений в лице геймдев индустрии подомнёт под себя Яндекс с Гуглем и к 2009 году получит >1TFLOPS непрерывно в качестве бесплатного приложения к скринсейверу на HD проекторе.
Но счастье будет небесплатным, а в виде 20+ cores, 80+ threads.
И как жить с этим, программируя на C++ нельзя.

Объясняется, что язык должен быть lenient (non-strict, насколько я понял - в обсуждении на Lambda-the-Ultimate ссылку дают, id90 - туда же, -- компилятор имеет право редуцировать жадно, если это допустимо; для lazy - явные suspend/eval), чисто функциональный но в возможностью аннотирования side effects, полностью GC, с аккуратно прибитой exception моделью в стиле C#/Java по поводу операторов языка (доступ к элементам массива и т.п.).
Сильная аннотация типов, вплоть до nat(m) - натуральное n<m (для индексации массивов, опять же).

Приводится вот такая табличка:
Game SimulationNumeric ComputationShading
Languages
C++, ScriptingC++CG, HLSL
CPU Budget10%90%n/a
Lines of Code250,000250,00010,000
FPU Usage0.5 GFLOPS5 GFLOPS500 GFLOPS
ParallelismSoftware Transactional MemoryImplicit Thread ParallelismImplicit Data Parallelism


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

PerformanceWhen updating 10,000 objects at 60 FPS, everything is performance-sensitive
ModularityVery important with ~10-20 middleware libraries per game
ReliabilityError-prone language / type system leads to wasted effort finding trivial bugs
Significantly impacts productivity
ConcurrencyHardware supports 6-8 threads
C++ is ill-equipped for concurrency


Дальше объясняется, почему кривой С++, почему крива потоковая модель, построенная на разделении состояния + мониторах.
В пример ставится shader languages, в которых параллелизм по данным вполне.

Предлагается аннотировать код (чисто функциональный vs side effects), и использовать модель Software Transactional Memory (composable memory transactions) - недетерминистски упорядоченные наборы атомарных операций.

Уф, устал.
Четай Lambda-the-Ultimate уже! :)
(Reply) (Parent) (Thread)
[User Picture]From: _foreseer
2006-02-06 09:20 am (UTC)
ну да, к 2009 заткнет за пояс текущий яндекс, да и то только на специальных тестах :) яндекс с гуглем btw параллелизуются на порядки проще. гуглю вон вообще одного mapReduce'a для этого похоже хватает. И код в них проще и его существенно меньше, так шо c++ здесь не проблема. халява в общем :)
(Reply) (Parent) (Thread)
From: vitaly_b
2006-02-06 11:53 am (UTC)
Самый жуткий код в Unreal - это код, написанный лично Tim Sweeny. Так что его рассуждения о языках программирования весьма опасны :)
(Reply) (Parent) (Thread)
From: vitaly_b
2006-02-06 12:53 pm (UTC)
"Переводя" его доклад: "мы очень плохо написали своё двигло, но по-другому не умеем. Во всё виноват этот мерзкий C++".

Чего только стоит это высказывание: "When updating 10,000 objects at 60 FPS..."
Не делайте так :)
(Reply) (Parent) (Thread)
From: boris_batkin
2006-02-06 07:50 pm (UTC)
С++ очевидно себя изживает. при этом тим доверия не вызывает совсем.
(Reply) (Thread)
[User Picture]From: aruslan
2006-02-09 07:17 pm (UTC)
Тим слишком много курит розовых таблеток, такое моё мнение.
А C++ себя изжил, это так.
Расскажи лучше про правильный лисп как-нибудь.
(Reply) (Parent) (Thread)