Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

С++ — самый красивый язык програмирования

Автор GaLL, февраля 10, 2009, 11:37

0 Пользователи и 1 гость просматривают эту тему.

Алексей Гринь

Цитата: GaLL от февраля 13, 2009, 18:06
Цитата: Алексей Гринь от февраля 13, 2009, 17:57

Если нравится жить мифами и предубеждениями, пожалуйста.

Я предложил поставить эксперимент.

Что будем сравнивать? На какой задаче?
肏! Τίς πέπορδε;

GaLL

Цитата: Невский чукчо от февраля 13, 2009, 18:02
Хм, если бы среди компьютеров провели опрос какой язык программирования им нравится, что бы они выбрали?  :tss:

Ассемблер, конечно! :) На всех остальных языках процессорам приходится выполнять много лишнего. Вспоминается mov eax, eax из проги, написанной в Delphi.

GaLL

Цитата: Алексей Гринь от февраля 13, 2009, 18:08
Что будем сравнивать? На какой задаче?

Вариантов очень много, не знаю, на чем остановиться.

Алексей Гринь

Может, попробуем C# vs. C++? C# третьей версии наполовину функционален :) С собой сейчас только gcc и C#овский компилятор.
肏! Τίς πέπορδε;

GaLL

Цитата: Алексей Гринь от февраля 13, 2009, 18:12
Может, попробуем C# vs. C++? C# третьей версии наполовину функционален :) С собой сейчас только gcc и C#овский компилятор.

Тоже можно. Только С++ лучше будем тестить на компиляторе от Intel или Microsoft, они генерируют более быстродейственный код, нежели gcc/g++, по крайней мере те версии, с которыми я сталкивался.

myst

Цитата: "злой" от
У меня есть кое-какой опыт дизассемблирования (прошивок для спутниковых ресиверов). Там местами либо программист сухорукий, либо компилятор неэффективный, но код явно можно было сделать порациональнее. Асм рулит.
Качество кода у разных компиляторов под разные процессоры разное. Если для IA-32 и компилятор от Intel, то я тягаться с ним не буду. А вот для Atmel'ов можно потягаться. :)
К тому же не надо забывать, что даже в пределах IA-32 оптимальный машинный код для разных моделей процессоров будет разным. Ассемблер теряет смысл. А если мы хотим перенести программу на другую процессорную архитектуру, то в случае ассемблера идём за мылом и верёвкой. :)

myst

Цитата: "GaLL" от
Человек почти во всех случаях (кроме самых тривиальных) может придумать, как оптимизировать созданный компилятором код, но на это может уйти очень много времени.
На каком проценте задач это жизненно необходимо?
Какой получаемый профит? Что делать при апгрейде процессора, снова грызть этот кактус?

Алексей Гринь

ЦитироватьТолько С++ лучше будем тестить на компиляторе от Intel или Microsoft

Не имею таких и не умею. Интел - согласен, Майкрософт - поспорил бы.
肏! Τίς πέπορδε;

GaLL

Цитата: myst от февраля 13, 2009, 18:24
Цитата: "GaLL" от
Человек почти во всех случаях (кроме самых тривиальных) может придумать, как оптимизировать созданный компилятором код, но на это может уйти очень много времени.
На каком проценте задач это жизненно необходимо?
Какой получаемый профит? Что делать при апгрейде процессора, снова грызть этот кактус?

Вы так говорите, как будто я за оптимизацию всего подряд. :) Вовсе нет, это, так сказать, маргинальня задача.

GaLL

Цитата: Алексей Гринь от февраля 13, 2009, 18:25
ЦитироватьТолько С++ лучше будем тестить на компиляторе от Intel или Microsoft

Не имею таких и не умею. Интел - согласен, Майкрософт - поспорил бы.

В смысле - поспорил? :???
А какое умение Вы подразумеваете? Сам язык везде почти один и тот же. Наверно, речь идет о разнообразных опциях компиляции, но тут можно в порядке эксперимента проверить эффективность кода, сгенереированного с разными ключами.

myst

Цитата: "GaLL" от
Вы так говорите, как будто я за оптимизацию всего подряд.  Вовсе нет, это, так сказать, маргинальня задача.
В такой ситуации руками оптимизировать переписыванием на ассемблер тоже нет никакого смысла. В общем, асм — для встроенных систем, там он действительно Д'Артаньян. :)

Алексей Гринь

Цитата: GaLL от февраля 13, 2009, 18:29
Цитата: Алексей Гринь от февраля 13, 2009, 18:25
ЦитироватьТолько С++ лучше будем тестить на компиляторе от Intel или Microsoft

Не имею таких и не умею. Интел - согласен, Майкрософт - поспорил бы.

В смысле - поспорил? :???
А какое умение Вы подразумеваете? Сам язык везде почти один и тот же. Наверно, речь идет о разнообразных опциях компиляции, но тут можно в порядке эксперимента проверить эффективность кода, сгенереированного с разными ключами.

Ну-ну, особенно микрософтский С++ такой же. Очень такой же. Да.
肏! Τίς πέπορδε;


GaLL

Цитата: myst от февраля 13, 2009, 18:30
Цитата: "GaLL" от
Вы так говорите, как будто я за оптимизацию всего подряд.  Вовсе нет, это, так сказать, маргинальня задача.
В такой ситуации руками оптимизировать переписыванием на ассемблер тоже нет никакого смысла. В общем, асм — для встроенных систем, там он действительно Д'Артаньян. :)

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

Алексей Гринь

Цитата: myst от февраля 13, 2009, 18:33
Господа, всё уже сделано до нас!
http://shootout.alioth.debian.org

Я то же самое нагуглил, но мне везде The requested URL /u32q/gpp.php was not found on this server. пишут.
肏! Τίς πέπορδε;

GaLL

Цитата: Алексей Гринь от февраля 13, 2009, 18:33

Ну-ну, особенно микрософтский С++ такой же. Очень такой же. Да.

Если ограничиться тестированием компиляторов, то зачем весь этот Microsoft specific?


myst

Цитата: "GaLL" от
Так я о том же. "Магринальная задача", т. е. иногда возникает такая необходимость, в подавляющем же большинстве случает - совсем нет.
Я хотел сказать, что на персоналках и для «маргинальной задачи» тоже смысла нет. :)

GaLL

Цитата: myst от февраля 13, 2009, 18:36
Цитата: "GaLL" от
Так я о том же. "Магринальная задача", т. е. иногда возникает такая необходимость, в подавляющем же большинстве случает - совсем нет.
Я хотел сказать, что на персоналках и для «маргинальной задачи» тоже смысла нет. :)

Нет, есть. Вспомните Doom II и Quake. Можно еще вспомнить разработку ОС и драйверов.

myst

Цитата: "GaLL" от
Нет, есть. Вспомните Doom II и Quake.
В те времена смысл ещё сохранялся. А сейчас интеловцы такой зверинец развели, что чёрт ногу сломит. Количество специалистов, способных его приручить, боюсь, очень невелико. А ведь ещё есть AMD. Да и Cyrix восстал из ада. :)

GaLL

Вы имеете в виду расширения архитектуры x86, начиная от MMX и пр.? Это не такая уж проблема, просто заниматься этим теперь нет особого смысла. И это одна из причин, почему время С++ с его упором на быстродействие уходит.

myst

Цитата: "GaLL" от
Вы имеете в виду расширения архитектуры x86, начиная от MMX и пр.?
Я имею в виду, что внутренняя архитектура интеловских процессоров меняется от модели к модели. И машинный код, оптимальный для одной модели, уже не так оптимален для другой.

myst

Цитата: "GaLL" от
Можно еще вспомнить разработку ОС и драйверов.
При разработке ОС (MenuetOS не в счёт :) ) обычно стремятся минимизировать необходимый ассемблерный код, и с драйверами та же история, насколько я знаю.

GaLL

Цитата: myst от февраля 13, 2009, 19:03
Цитата: "GaLL" от
Вы имеете в виду расширения архитектуры x86, начиная от MMX и пр.?
Я имею в виду, что внутренняя архитектура интеловских процессоров меняется от модели к модели. И машинный код, оптимальный для одной модели, уже не так оптимален для другой.

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

Алексей Гринь

ЦитироватьКроме того, есть такие грубые "хаки", как самомодифицирующийся код. ;)

Его дебуггить потом ...
肏! Τίς πέπορδε;

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр