LINUX.ORG.RU
ФорумTalks

За что любят C++?


0

0

Достаточно часто всплывает эта тему, а почему любят - никто не объясняет. Может где-то FAQ есть на эту тему?

Итак, за что любят язык C++?


Учитывая, что языки программирования - это инструменты, которые надо применять в зависимости от поставленной задачи и способов её решения, такие вопросы у меня лично всегда вызывают ассоциацию дискуссии "Почему дрель лучше отвертки?"

Terrens
()

Ну как же, Страуструп такой няшка!


ну а по сути:

1. Свобода
2. Совместимость с C
3. Производительность

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

> Не надоело подобные клоунские темы-клоны создавать?

Это первая, которую я создал - пока не надоело. Не печатать же с нуля текст? Как-то не по-опенсорцному получится... А вообще интересно и противоположные мнения почитать.

mannaz
() автор топика
Ответ на: комментарий от PIn

на С тоже можно писать программы, а не заниматься, гм, этим самым. Так почему же любят именно С++?

jcd ★★★★★
()

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

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

C тоже любят, С++ наверное любят по старой памяти, типа если С хороший значит с плюсами ещё лучше

PIn
()
Ответ на: Troll mode от Deleted

>C vs C++ == GNOME vs KDE

>KDE < GNOME

>C++ < C

FXD.

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

Наверное толксы плохо в эксплорере отображаются

mannaz
() автор топика
Ответ на: комментарий от gena2x

>Умный понятный сложный совместимый свободный.

Холодный горячий мягкий твёрдый, не?

melkor217 ★★★★★
()

За то, что его не любят.

smh ★★★
()

Было когда-то время на ЛОРе, когда толстых троллей не называли trollis vulgaris, а называли просто КЛОУНАМИ.

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

> firefox openoffice ТЧК

толсто, firefox тормозит из-за Javascript внутри, а openoffice просто криво написан, возьми тот же мелкософтный офис - он гораздо быстрее

lester ★★★★
()
Ответ на: Troll mode от Deleted

> KDE >> GNOME
Вот интересно, как это можно сдвинуть KDE на величину, равную GNOME? И что получится в разультате?...

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

>firefox тормозит из-за Javascript внутри а openoffice просто криво написан, возьми тот же мелкософтный офис - он гораздо быстрее

Ну IE7 не тормозит, например, как и MSO, да. Просто у MS очень специфический и трудоемкий стиль написания на C++. По сути от оригинального ++ там нет ничего - Memory management свой, ABI+RTTI свой, исключения свои(SEH). А отрисовка гуя в MSO, говорят, на асме.

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

> Просто у MS очень специфический и трудоемкий стиль написания на C++. По сути от оригинального ++ там нет ничего

пруфлинк

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

>> Просто у MS очень специфический и трудоемкий стиль написания на C++. По сути от оригинального ++ там нет ничего

>пруфлинк

Поизучай демонстрационные примеры из Platform SDK.

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

> Ну IE7 не тормозит, например, как и MSO, да.

Бред написали. Частично

ABI+RTTI - это пробелмы компилятора

mm - это много кто свой делает. Тут уже от API mm ОС заивисит, а не от языка. Сколько хотите new перегрушайте.

Исключение - да, через SEH реализвоано. Но это исключения С++

Открисовка гуя на асме... я валяюсьпод столом

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

>mm - это много кто свой делает. Тут уже от API mm ОС заивисит, а не от языка. Сколько хотите new перегрушайте.

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

>Открисовка гуя на асме... я валяюсьпод столом

Что может физически помешать сделать отрисовку гуя на асме? Ты видел какой у них докинг плавный?

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

> Что может физически помешать сделать отрисовку гуя на асме? Ты видел какой у них докинг плавный?

все написанное вами - ваши же домыслы

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

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

Нет. Не умеет он такого

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

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

Да и на таких задачах человек не сделает лучше компилятора. Человек не сможет учесть взаимодействие более чем 20 команда в уме. иначе ему придется делать очень объемные вычесления

Давно известно, что асм имеет смысл только на вычеслительных задачах, и то не всегда

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

>> Что может физически помешать сделать отрисовку гуя на асме? Ты видел какой у них докинг плавный?

>все написанное вами - ваши же домыслы

Часть MSO написана на асме, это не домыслы.

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

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

>Нет. Не умеет он такого

Всегда умели. Есть там такая функция - GlobalLock(). Я думал она deprecated, однако же она достуна даже из .NET.

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

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

Однако векторизовать надо ручками, компилятор тут не поможет. И для графики векторизация сподручна.

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

> Часть MSO написана на асме, это не домыслы.

пруфлин! Не верю, ибо смысла в этом нету

> Всегда умели. Есть там такая функция - GlobalLock(). Я думал она deprecated, однако же она достуна даже из .NET.

Так. расскжаите что она делает. Как она может дефрагментировать кучу? и какую? там их многО, и еще они разных типов

> Однако векторизовать надо ручками, компилятор тут не поможет.

Давно из анабиоза? они давно это умеют

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

>> Часть MSO написана на асме, это не домыслы.

>пруфлин! Не верю, ибо смысла в этом нету

Несколько лоет назад видел в блоге сотрудника майкрософт где он статисткой по коду бравировал. *.asm кода там довольно много было.

>> Всегда умели. Есть там такая функция - GlobalLock(). Я думал она deprecated, однако же она достуна даже из .NET.

>Так. расскжаите что она делает. Как она может дефрагментировать кучу? и какую? там их многО, и еще они разных типов

Она блокирует подвижный чанк памяти и возвращает указатель. После использования этот чанк надо разблокировать при помощи GlobalUnlock(), указатель при этом становится невалидным.

>> Однако векторизовать надо ручками, компилятор тут не поможет.

>Давно из анабиоза? они давно это умеют

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

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

Ну это как клякса на приеме у психиатра: я вот, например, вижу, что KDE входит в GNOME, как в женщину.

mannaz
() автор топика
Ответ на: комментарий от Absurd

> Несколько лоет назад видел в блоге сотрудника майкрософт где он статисткой по коду бравировал. *.asm кода там довольно много было

Все равно не верю. Пару кусочков если только

> Она блокирует подвижный чанк памяти и возвращает указатель. После использования этот чанк надо разблокировать при помощи GlobalUnlock(), указатель при этом становится невалидным.

И как это к куче относится? Вообще эта функция дает возможность получить доступ к какому-то блоку, фактически отмэпив его в виртаульное пространство.

Где тут особый MM, который не является частью идиологии C++.

Я например в свое время писал такой код. На стеке создавался объект, который обеспечивал перехват new для определенного типа объектов и помещал их в заранее выделеный кусок памяти (скажем пару метров). Далее работал алгоритм, который создавал туеву кучу таких объектов. Эти объекты не где не удалялись, а грохолись всем скопом сразу после выхода из этого куска кода. При этом создание множество объектов не фаргментировало память (а это было возможно, так как создавались множество других объектов при этом уже обычным образом).

И при чем тут что-то сильно отличное от идеалогии С++? В ваших словах я слышу только не понимания возможностей языка. Да, MSO сидят очень токовые люди, и выжимаю очень много. Они умеют писать красиво, и делать интересные решения в коде. Но пишут они на С++. А не на каком-то мифическом внутреннем языке "С++ + MS"

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

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

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

Это как бы было оно: ≫ если такой символ у тебя есть :}

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

>не знаю, как там у МС, не был, но вот в кедах тоже как-то плавно всё, но "марАСМом" тут и не пахнет

Кеды я ставил, они просто не работают. Причем стабильная 3-я ветка, да. Как я понял для кед самое кошерное это сидеть на генте в транке и следить за багфиксами.

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

Ты соответствуешь своему нику, держишь марку, молодец :}

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

извини, но это толсто, я сидел на 3.5.9, потом перешёл на 4.1.3, сейчас 4.2.4, конечно в 4.1 ветке бывали проблемы, но небольшие, потом и вовсе никаких

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

>Где тут особый MM, который не является частью идиологии C++.

Он там во всем. В С++ объект должен быть размещен по фиксированному адресу раз и навсегда.

>Я например в свое время писал такой код. На стеке создавался объект, который обеспечивал перехват new для определенного типа объектов и помещал их в заранее выделеный кусок памяти (скажем пару метров).

Паттерн проектирования "Детонатор".

>Но пишут они на С++. А не на каком-то мифическом внутреннем языке "С++ + MS"

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

>Вы плохо знаете возможности оптимизации. Векторизацию тот же gcc вставляет в такие неожиданные места, где ты и не подумал бы.

Ручной оптимизации критических мест это не отменяет.

Absurd ★★★
()

Блин, у меня, походу, поиск в браузере сломался. Не находит в этой теме слово "хаскель".

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

> Он там во всем. В С++ объект должен быть размещен по фиксированному адресу раз и навсегда.

Не кто не мешает ему быть проксиков. HREGION или как там дискриптор блока памяти называется должен хранитсья уже доступной памяти

> Паттерн проектирования "Детонатор"

С++ позваоляет это реализовать просто. Мало языков на это способны

> Возьми болванку для написания произвольного расширения win32, например кодека к DirectShow.

OLE? Это же чистый С++

То, что там нет стандартных библиотек, это еще не о чем не говорит. С++ принципиально не требует использование STL (даже libc++ не требуется)

> Ручной оптимизации критических мест это не отменяет.

И обычно это заключается в более правильном объяснение компилятору, что надо сделать

> Блин, у меня, походу, поиск в браузере сломался. Не находит в этой теме слово "хаскель".

Да ты что, дорогой. Здесь же дети

namezys ★★★★
()

Потому-что единственный ЯВУ, который компилится нативный код и имеет такое количество библиотек.
И, млин, чёртовы менеджеры, чтобы они подохли, не делают офигенные круглые глаза, при слове C++, как например при слове ocaml.

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