Конец нересурсов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 13.11.11 22:48
Оценка: 15 (1) +3 :))
К разговорам о ренессансе C++.

Чертовски любопытное выступление Герба Саттера "Why C++".

Оригинал: http://herbsutter.com/2011/09/07/my-c-and-beyond-intro-c-renaissance/ (видео почему-то не открывается).

То же, на Channel9: http://channel9.msdn.com/posts/C-and-Beyond-2011-Herb-Sutter-Why-C

Видео не ахти и пока что я не смог найти расшифровки, может, кто знает, где она есть?

Вкратце, о чём оно.

— В 1999-2009 акцент в индустрии смещался с энергопотребления и энергоэффективности на производительность программистов и абстрактные игры (я бы назвал это явление A Momentary Lapse Of Reason — бывает, что там);
— Начиная с 2010 всё возращается на круги своя — начинают считать циклы/ватт потребляемой мощности (Саттер называет это Return of The King);
— Ну и собственно, о том, как возвращаются позиции C++ и в мобильных устройствах, и на серверах;
— И да, о том, как C++ поможет в борьбе с глобальным потеплением (ну куда ж без трололо? правда, это уже Страуструп).

По ходу он, конечно, проезжается по поводу того, что "All Windows API will be managed", ну и там ещё много такого троллинга, одно только "Coffe-based languages" чего стоит.

Есть ссылка на любопытный документ, озаглавленный, ни много ни мало: Dark Silicon and the End of Multicore Scaling (см. здесь). Там авторы делают не слишком утешительные выводы относительно перспектив роста производительности многопроцессорных систем в ближайшее время, что как бы символизирует.

В общем, похоже, что нересурсам грядёт неиллюзорный лимит и это начинают всё громче и громче признавать.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re: опечатка
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 13.11.11 22:53
Оценка:
ГВ>- В 1999-2009 акцент в индустрии смещался с энергопотребления и энергоэффективности [...]

...смещался с производительности [...]

Энергоэффективность там упоминается в другом контексте.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re: Конец нересурсов
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 14.11.11 00:36
Оценка:
ГВ>- Начиная с 2010 всё возращается на круги своя — начинают считать циклы/ватт потребляемой мощности (Саттер называет это Return of The King);

Остается ключевой вопрос:
в каком именно году весь код facebook-а и все приложения android-а перепишут на C++? а также все тонкие приложения (например, gmail)?
Re[2]: Конец нересурсов
От: Cyberax Марс  
Дата: 14.11.11 00:50
Оценка: 1 (1) :))
Здравствуйте, DarkGray, Вы писали:

ГВ>>- Начиная с 2010 всё возращается на круги своя — начинают считать циклы/ватт потребляемой мощности (Саттер называет это Return of The King);

DG>Остается ключевой вопрос:
DG>в каком именно году весь код facebook-а и все приложения android-а перепишут на C++? а также все тонкие приложения (например, gmail)?
В Android'е сейчас с помощью NDK можно на С++ писать. А тонкие приложения у себя Гугл переписывает на Go, из тех, которые не написаны на Java.
Sapienti sat!
Re[2]: Конец нересурсов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 14.11.11 00:53
Оценка:
Здравствуйте, DarkGray, Вы писали:

ГВ>>- Начиная с 2010 всё возращается на круги своя — начинают считать циклы/ватт потребляемой мощности (Саттер называет это Return of The King);


DG>Остается ключевой вопрос:

DG>в каком именно году весь код facebook-а и все приложения android-а перепишут на C++? а также все тонкие приложения (например, gmail)?

Не знаю на счёт Андроида, но Facebook, таки, пошёл в сторону C++: http://developers.facebook.com/blog/post/358/

Они там, похоже, трансформируют PHP в C++:

The main challenge of the project was bridging the gap between PHP and C++. PHP is a scripting language with dynamic, weak typing. C++ is a compiled language with static typing. While PHP allows you to write magical dynamic features, most PHP is relatively straightforward. It's more likely that you see if (...) {...} else {..} than it is to see function foo($x) { include $x; }. This is where we gain in performance. Whenever possible our generated code uses static binding for functions and variables. We also use type inference to pick the most specific type possible for our variables and thus save memory.

The transformation process includes three main steps:

1. Static analysis where we collect information on who declares what and dependencies,
2. Type inference where we choose the most specific type between C++ scalars, String, Array, classes, Object, and Variant, and
3. Code generation which for the most part is a direct correspondence from PHP statements and expressions to C++ statements and expressions.


И на момент публикации (февраль 2010) обслуживали 90% трафика с помощью этого самого HipHop.

Так что...
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[3]: Конец нересурсов
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 14.11.11 01:02
Оценка: +1
ГВ>Они там, похоже, трансформируют PHP в C++:

тогда тем более можно считать, что .net и java тоже трансформируются в C++ (вернее, сразу в машкод).
в чем тогда point статьи?
Re: Конец нересурсов
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 14.11.11 01:13
Оценка:
ГВ>- В 1999-2009 акцент в индустрии смещался

в моем понимании, как всё эти годы был акцент на том, что программист пишет на той фигне, на которой ему удобнее, а умный черный ящик обеспечит, чтобы это выполнялось быстро, так он и остался.
максимум, что поменялось за это время — это то, что из-за появления реальной многоплатформенности появилась тенденция генерить не сразу машкод, а сначала C++/C, java-у или .net, который уже потом транслируется в машкод.
Re[4]: Конец нересурсов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 14.11.11 01:16
Оценка:
Здравствуйте, DarkGray, Вы писали:

ГВ>>Они там, похоже, трансформируют PHP в C++:


DG>тогда тем более можно считать, что .net и java тоже трансформируются в C++ (вернее, сразу в машкод).


Считай, кто тебе запрещает?

DG>в чем тогда point статьи?


Пойнт в том, что по причинам низкой производительности кода, получаемого из PHP Facebook-у пришлось воспользоваться вот такой хитрой технологией.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[5]: Конец нересурсов
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 14.11.11 01:22
Оценка:
ГВ>Пойнт в том, что по причинам низкой производительности кода, получаемого из PHP Facebook-у пришлось воспользоваться вот такой хитрой технологией.

так для Facebook новый код-то пишется на php? или сразу на C++?
Re[2]: Конец нересурсов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 14.11.11 01:24
Оценка: -1
Здравствуйте, DarkGray, Вы писали:

ГВ>>- В 1999-2009 акцент в индустрии смещался


DG>в моем понимании, как всё эти годы был акцент на том, что программист пишет на той фигне, на которой ему удобнее, а умный черный ящик обеспечит, чтобы это выполнялось быстро, так он и остался.


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

DG>максимум, что поменялось за это время — это то, что из-за появления реальной многоплатформенности появилась тенденция генерить не сразу машкод, а сначала C++/C, java-у или .net, который уже потом транслируется в машкод.


Проблема в том, что получив MSIL или байт-код Java зачастую уже нельзя провести тех же оптимизаций, которые возможны, если иметь доступ ко всему массиву исходных текстов. Ну и плюс к тому — разнообразные runtime-вычисления тоже вносят некоторую лепту. GC — ну, с этим понятно: постоянно работающий анализ состояния вычислительной системы на производительность может повлиять ровно одним способом (если что, то я понимаю, что здесь дело в нюансах и подчас GC может оказаться эффективнее new/delete, но именно, что подчас).
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[6]: Конец нересурсов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 14.11.11 01:37
Оценка:
Здравствуйте, DarkGray, Вы писали:

ГВ>>Пойнт в том, что по причинам низкой производительности кода, получаемого из PHP Facebook-у пришлось воспользоваться вот такой хитрой технологией.


DG>так для Facebook новый код-то пишется на php? или сразу на C++?


Не знаю. Нашлась вот такая страничка — так там полный букет, включая Эрланг.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[3]: Конец нересурсов
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 14.11.11 01:41
Оценка: +1
ГВ> Об этом можно спорить, конечно, но демагогии вокруг того, насколько производительность программиста важнее производительности программы я тоже наслушался по самую макушку.

на примере JavaScript-а и sql-я видно, что кроме вышеперечисленного, еще важна переносимость и дуракоустойчивость


ГВ>Проблема в том, что получив MSIL или байт-код Java зачастую уже нельзя провести тех же оптимизаций, которые возможны, если иметь доступ ко всему массиву исходных текстов. Ну и плюс к тому — разнообразные runtime-вычисления тоже вносят некоторую лепту. GC — ну, с этим понятно: постоянно работающий анализ состояния вычислительной системы на производительность может повлиять ровно одним способом (если что, то я понимаю, что здесь дело в нюансах и подчас GC может оказаться эффективнее new/delete, но именно, что подчас).


если уж из php умудряются генерить C++ код без gc (или все-таки у них там есть свой GC?), то уж из .net-а или java-ы тем более это можно сделать.
Re[4]: Конец нересурсов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 14.11.11 01:46
Оценка:
Здравствуйте, DarkGray, Вы писали:

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


DG>на примере JavaScript-а и sql-я видно, что кроме вышеперечисленного, еще важна переносимость и дуракоустойчивость


Правда, что-то мне подсказывает, что в случае Facebook решающим аргументом был накопленный объём исходников на PHP.

ГВ>>Проблема в том, что получив MSIL или байт-код Java зачастую уже нельзя провести тех же оптимизаций, которые возможны, если иметь доступ ко всему массиву исходных текстов. Ну и плюс к тому — разнообразные runtime-вычисления тоже вносят некоторую лепту. GC — ну, с этим понятно: постоянно работающий анализ состояния вычислительной системы на производительность может повлиять ровно одним способом (если что, то я понимаю, что здесь дело в нюансах и подчас GC может оказаться эффективнее new/delete, но именно, что подчас).


DG>если уж из php умудряются генерить C++ код без gc (или все-таки у них там есть свой GC?), то уж из .net-а или java-ы тем более это можно сделать.


А кто-то с этим спорил? Осталось только додаться появления компиляторов Java->C++ и C#->C++.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[3]: Конец нересурсов
От: Cyberax Марс  
Дата: 14.11.11 01:47
Оценка: 1 (1)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>И на момент публикации (февраль 2010) обслуживали 90% трафика с помощью этого самого HipHop.

Реально HipHop — это на практике просто threaded interpreter. Среднее ускорение 2-3 раза всего по сравнению с чистой интерпретацией.
Sapienti sat!
Re[4]: Конец нересурсов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 14.11.11 01:49
Оценка:
Здравствуйте, DarkGray, Вы писали:

DG>если уж из php умудряются генерить C++ код без gc (или все-таки у них там есть свой GC?) [...]


Слушай, скачай, да посмотри, что и как они там генерят. Вот ссылка на википедию, дальше по ссылкам. Проект с открытыми исходниками.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[4]: Конец нересурсов
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 14.11.11 01:55
Оценка:
Здравствуйте, Cyberax, Вы писали:

ГВ>>И на момент публикации (февраль 2010) обслуживали 90% трафика с помощью этого самого HipHop.

C>Реально HipHop — это на практике просто threaded interpreter. Среднее ускорение 2-3 раза всего по сравнению с чистой интерпретацией.

В принципе — неплохой результат, если учесть, что иначе им пришлось бы тонны кода переписывать. С другой стороны — наверняка, можно было бы добиться большего, если бы, как я понимаю, не необходимость тащить саму модель PHP.
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[5]: Конец нересурсов
От: DarkGray Россия http://blog.metatech.ru/post/ogni-razrabotki.aspx
Дата: 14.11.11 02:07
Оценка:
ГВ> Осталось только додаться появления компиляторов Java->C++ и C#->C++.

второе уже, как минимум, два года есть в виде того же MonoTouch http://en.wikipedia.org/wiki/Mono_(software)#MonoTouch , который переводит C# в objective-c
Re[5]: Конец нересурсов
От: Cyberax Марс  
Дата: 14.11.11 02:08
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>В принципе — неплохой результат, если учесть, что иначе им пришлось бы тонны кода переписывать. С другой стороны — наверняка, можно было бы добиться большего, если бы, как я понимаю, не необходимость тащить саму модель PHP.

Хех. У меня тут знакомый переписал код с php на Node.js — тупо простым переносом кода с php на JavaScript. Так оно стало работать в 5 раз (!!!) быстрее из-за того, что для JS виртуальная машин делает нормальную компиляцию.
Sapienti sat!
Re[6]: Конец нересурсов
От: dimgel Россия http://dimgel.ru/
Дата: 14.11.11 02:11
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Хех. У меня тут знакомый переписал код с php на Node.js — тупо простым переносом кода с php на JavaScript.


Там модели наследования слишком сильно отличаются, тупо не перенесёшь, разве что код совсем простой. (К теме jit это отношения не имеет.)
Re[7]: Конец нересурсов
От: Cyberax Марс  
Дата: 14.11.11 02:15
Оценка:
Здравствуйте, dimgel, Вы писали:

C>>Хех. У меня тут знакомый переписал код с php на Node.js — тупо простым переносом кода с php на JavaScript.

D>Там модели наследования слишком сильно отличаются, тупо не перенесёшь, разве что код совсем простой. (К теме jit это отношения не имеет.)
Насколько я понял, там у него дубовый код на PHP без всяких классов и прочего.
Sapienti sat!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.