LINUX.ORG.RU

Обзор наступающего С++0х стандарта


0

0

Это видеоинтервью с создателем С++ Б.Страуструпом.

Новый стандарт C++0x содержит серьёзные нововведения и нацелен на облегчение создания и поддержки программ без потери эффективности.

>>> Просмотр / закачка



Проверено: Shaman007 ()
Ответ на: комментарий от miroku108

>> _Эта_ популярность равна здравому смыслу.

> ЛОЛШТО?

Я думаю, ты меня понял. Если нет - это твои проблемы.

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

> Тут видишь ли какое дело: не все занимаются написанием кнопочных тыкалок, в которых пофигу на быстродействие. Сурприз, ага?

Один из главных законов программирования - Преждевременная оптимизация - Зло. Сюрприз, ага?

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

> подозреваю что там туева хуча работы с графами и сложными структурами данных. Подозреваю что выбрал бы для этой области Common Lisp и не прогдал бы.

Не *ML? Не Хаскель? 8)

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

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

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

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

>я закачал за пару часов 16% из 684M По bittorent я за такое же время скачал всё, да и то скорость явно упиралась в мой канал

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

> Один из главных законов программирования - Преждевременная оптимизация - Зло. Сюрприз, ага?

А потом будет позно пить боржоми.

miroku108
()

Хорошая новость.

Вниманию особо продвинутых анонимусов, сейчас я в Windows (ну нету у меня на работе Линуха), просто пройдусь по каталогу Program Files в поисках характерных следов С++ в исполняемых файлах:

7Zip
Acrobat Reader 8.1
Adobe Photoshop CS2
Cisco VPN Client 4.3
Diskeeper 9.0 (дефрагментатор популярный такой под венду)
eMule 1.2 (клиент P2P сети eDonkey)
EPSON PhotoQuicker 3.5
FAR 1.7
Folding@Home (типа распределенный проект биологических вычислений)
Google Earth
Intel Matrix Storage Manager
Apple iTunes 7.3
Sun JDK/JRE 6.0_01
Kaspersky Antivirus 7.0
Logitech SetPoint (утилита для моей мыши и клавиатуры)
Ahead Nero 7
Pinnacle Studio 10
Apple Quick Time Player
Radmin Viewer 3.0
RivaTuner 2.01
Apple Safari 3.03 (браузер такой новомодный)
SAP Frontend 7.10 (здоровенная клиентская программа для продуктов SAP AG)
Serv-U (FTP сервер такой с продвинутыми возможностями для Windows)
WinRAR 3

Итого 80% софта, что стоит в моей вЕнде писано на С++. Остальные тоже может быть без С++ не обошлись, но упакованы всяким aspack'ами и UPXами, мучиться с ними в поисках истины лень. К общему числу надо добавить мелкомягкие программы и саму венду, многие части которой писаны на С++.

Игр у меня нет, но сколько их у меня ни было, почти все были в частью или полностью писаны на С++.
Так что получается С++ нужен и применяется в куче весьма известных и популярных софтин.
На жабе писана только одна - Oxygen XML Editor 8.0

Охренеть, Skype 3 для Windows на Delphi писан оказывается!!!

Что до Linux у меня, то навскидку это будут все те же

KDE со всеми программами, которые для нее написаны (а это все таки немало)
Sun JDK/JRE 6.0_02

Домой приду, поинтересуюсь поподробнее



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

P.S. Не придирайтесь к набору софта, который не совсем подходит к рабочей машинке, - это мой ноутбук и я его часто домой беру.

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

> А потом будет позно пить боржоми.

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

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

> а если делать всё достаточно модульно

Достаточно модульно можно делать только очень простые системы, которые связаны м-ду собой отношениями использования. А если подсистемы связаны наследованием: например подсистема сохранения требует чтобы в обьектах был реализован нужный интерфейс.

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

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

> я не верю что ты потом сможешь что-то легко заменить и переписать с одного языка на другой.

Это не вопрос "веры" - это уже делается. Известный мне пример - Mercurial. Наверное, есть и другие.

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

>"...Обобщённое программирование, императивная, объектно-ориентированная..." И ещё они почему-то забыли шаблонное метапрограммирование.

Шаблоны это и есть обобщенное программирование

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

> Достаточно модульно можно делать только очень простые системы, которые связаны м-ду собой отношениями использования. А если подсистемы связаны наследованием: например подсистема сохранения требует чтобы в обьектах был реализован нужный интерфейс.

Ну так и нужно _всегда_ делать простые системы. Когда система становится сложной значит что-то не в порядке с уровнями абстракции и модульностью и пора эту сложноую систему разбивать на несколько простых подсистем. Например реализовать DSL который будет работать в предметной области на боллее высоком уровне.

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

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

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

>а в С++ это будет вычисление энергии взрыва a при попадании ракеты b в ближайший истребитель с, с попутным запуском ракеты и форматированием корневого раздела ;-)

Иди поспи. И все наладится у тебя.

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

>> > Чушь вот: http://www.boost.org/libs/spirit/ Точнее не чушь, а издевательство над людьми.

>> Ну давай объявим чистый Си чушью и издевательством по результатам IOCCC.

>Вот чистого C там как раз нет в помине.

Еще раз, медленно и печально: ты считаешь, что шаблоны - это "чушь и издевательство над людьми" на основании кода Spirit? Если да, то почему бы не считать чистый Си "чушью и издевательством" на основании IOCCC?

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

>P.S. http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=gcc&;. ..

интересны результаты для free pascal.

пример core и логики: http://debet.kiev.ua/index.php?pageid=23

также, в KDE внедряется удачная с моей точки зрения инфраструктура скриптинга в приложениях (Kross) -- она будет исп. в koffice, для апплетов (в т.ч. amaroK) и многих других KDE-программ

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

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

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

> чушью называю шаблоны, как средство реализации функционала

ИМХО, зря. Шаблоны - это (Тьюринг-полный?) язык в языке :) Хотя писать на этом языке - страшное дело :D

Рекомендую почитать Александреску

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

> также, в KDE внедряется удачная с моей точки зрения инфраструктура скриптинга в приложениях (Kross) -- она будет исп. в koffice, для апплетов (в т.ч. amaroK) и многих других KDE-программ

в виндоус еще ранее начала внедряться аналогичная система под названием monad. Спасибо за аргументированный плевок в сторону KDE.

"Стратегия самоудушения Linux заключается в том, что она пытается быть похожей на Windows больше, чем сам Windows" (c) лень_вспоминать, была новость на никспе

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

да, Тьюринг-полный. к тому же, еще и функциональный.

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

> Приватные конструкторы

Вроде речь шла о шаблонах O_O

> (виски зеленкой смазал уже, ага)

Боюсь даже спросить - зачем...

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

> Это у меня называлась неочевидность тпроцесса создания кода. В С посмотрел на строрчку - знаешь что в коде будет

На ассемблере надо писать, хотя и там макросы, мнемоники... бр! =)

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

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

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

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

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

>в виндоус еще ранее начала внедряться аналогичная система под названием monad.

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

>Спасибо за аргументированный плевок в сторону KDE.

«что в сердце у него, то в пьесе видит он» -- Гёте.

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

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

>RAII - автоматическое освобождение ресурсов в деструкторе при выходе из блока.

>Полиморфизм и наследование - избавляют программиста от создания этого же вручную через структуры с указателями на функциию.

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

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

vtVitus ☕☕☕
()

ИМХО, С++ - неудачная переделка Си, ведь там столько знаков препинания и т.д. и т.п., что бошка едет. В Си всё намного проще.

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

>fluxbox

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

php-coder
()
Ответ на: комментарий от CrazyPit

>> Любые программы чей код превышает 10000 строк кода,

>И как же их мерить, строки. Вот у меня прога на руби 4000 строк, но если её переписать на плюсах будет 30000 строк. Мне срочно нужно идти переписывать?))

30K строк -- это явно гипербола. При наличии качественных библиотек размер кода на C++ может не сильно проигрывать Ruby. Например, размер кода с использованием POCO может быть гораздо меньше, чем с использованием ACE.

Тем более, что когда дело упрется в производительность Ruby, то что-нибудь рано или поздно придется переписывать на C/C++.

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

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

Боюсь, что языки с поддержкой DesignByContract (Eiffel, D, Nice, Spec#) в этом плане окажутся _гораздо_ предпочтительнее C++.

eao197 👍👍
()
Ответ на: комментарий от dea

> впрочем пусть и так, тебе уже объяснили, что для С это будет сложение чисел, и вариантов в зависимости от типов не так много

> а в С++ это будет вычисление энергии взрыва a при попадании ракеты b в ближайший истребитель с, с попутным запуском ракеты и форматированием корневого раздела ;-)

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

io.put_string ("A=") io.put_integer (a) io.put_string ("B=") io.put_real (b) io.put_new_line

и сравни это с C++:

std::cout << "A=" << a << "B=" << b << std::endl;

и подумай, во что выльется сопровождение очевидного кода при необходимости смены типа a с INTEGER на NATURAL, и b с REAL на COMPLEX.

eao197 👍👍
()
Ответ на: комментарий от zubnaya_schetka_s_motorchikom

> С++ такой же низкоуровневый как и С.

Т.е. такой же "портабельный ассемблер" ? Ты ничего не путаешь.

> При этом он еще и на порядок удобнее благодаря шаблонам, перегрузке, RAAI.

Читать чужой кой код код на C++ написанный с использованием низкоуровневых фич языка вперемешку с шаблонами - это проще сразу застрелиться.

Вообщем в язык тянут всё что можно, и он становиться всё монструознее (а ля PL/1). Никогда не понимал - зачем всё тянуть в один язык ? Нельзя обьять необьятное. Что мешает разбить проект на части, и каждую писать на наиболее подходящем языке. Один хрен те же средства параллельного программирования в C++0x к Адовским и близко не подходили. Или тяжело несколько языков осилить ?

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

> По теме: нововведения радуют, но сам язык станвится уже даже не сложным, а офигенно сложным :/

Угу. Обнадеживает, что к моменту официального выхода C++0x уже может быть D2.0, который более простой и не менее мощный. Да и компилируется на пару порядков быстрее.

eao197 👍👍
()
Ответ на: комментарий от miroku108

> > Один из главных законов программирования - Преждевременная оптимизация - Зло. Сюрприз, ага?

> А потом будет позно пить боржоми.

Бред. Ибо основная оптимизация делается алгоритмами. И только потом (месте так на десятом) идёт быстродействие генерируемого кода, если конечно у нас языки не на порядки скоростью отличаются. Пишем, прогоняем профайлер, узкие места переписываем. Правило 80/20 еще никто не отменял. Против связки CL+C/Ocaml+C (или против Ады) у C++ преимуществ нет.

Darkman
()

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

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

> Бред. Ибо основная оптимизация делается алгоритмами

Бред. Производительность может падать из-за чего угодно: дурацких схем ввода-вывода, распределения памяти, и т.п.

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

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

А ты кернел-маньяк, для которого все user-mode приложения - детский сад?

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

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

>>RAII - автоматическое освобождение ресурсов в деструкторе при выходе из блока.

>>Полиморфизм и наследование - избавляют программиста от создания этого же вручную через структуры с указателями на функциию.

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

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

Судя по категоричности высказываений, ты ветеран программирования ядер ОС круче Дэвида Катлера и Линуса Торвальдса вместе взятых. Раскрой тему, а? Ну вроде "строго типизированные структуры данных в ядре ОС не нужны, потому что ,,,".

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

> Против связки CL+C/Ocaml+C (или против Ады) у C++ преимуществ нет.

Кроме одной мелочи - C++ знает на порядок-два больше людей, Ада... она за 25 лет не вышла за пределы свой песочницы, у Ocaml - неотключаемый сборщик мусора, CL - это просто нагромождение дурацких скобочек :-P. В общем, некуда податься, кроме как в Си++ :)

P.S Против связки Си++ и Питон вообще ни у кого преимуществ нет ;)

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

>> По теме: нововведения радуют, но сам язык станвится уже даже не сложным, а офигенно сложным :/

> Угу. Обнадеживает, что к моменту официального выхода C++0x уже может быть D2.0, который более простой

D - более простой? o_O ИМХО, его сложность даже и оправдать никак нельзя (в отличие от сложности Си++). Кроме того, в нем сборка мусора, а это значит - в сад до появления realtime-сборщиков.

> Да и компилируется на пару порядков быстрее.

аха, за отрицательное время :)

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

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

По сравнению с алгоритмической оптимизацией это мелкие проценты от всего готового продукта.

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

> Кроме одной мелочи - C++ знает на порядок-два больше людей,

Не аргумент. Хороший спец новый язык выучивает достаточно быстро, при условии знания парадигмы. "Быдлокодеров за еду" (C) мы не учитываем.

> Ада... она за 25 лет не вышла за пределы свой песочницы,

У неё своя оччень жирная ниша в сфере встраиваемых систем. Просто у неё слава очень сложного языка, и всё - бояться. Хотя куда ей до сложности, а уж тем более неочевидности и неоднозначности C++.

> CL - это просто нагромождение дурацких скобочек :-P.

Аргументы будут ?

> В общем, некуда податься, кроме как в Си++

Я вот наоборот - ушёл от C++ на CL+C и Аду.

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

> "Быдлокодеров за еду" (C) мы не учитываем.

_Вы_ не учитываете. Мы - учитываем.

>> Ада... она за 25 лет не вышла за пределы свой песочницы,

>У неё своя оччень жирная ниша в сфере встраиваемых систем.

Ну, может быть... я не видел. Объективные данные есть?

>> CL - это просто нагромождение дурацких скобочек :-P.

>Аргументы будут ?

Ты чо, это же была провокация флейма :D А вообще - те же аргументы, что и по Аде... только у Лиспа было не 25 лет, а 50.

>> В общем, некуда податься, кроме как в Си++

>Я вот наоборот - ушёл от C++ на CL+C и Аду.

Если не секрет - какие задачи? Сколько человек в команде?

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