LINUX.ORG.RU

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


0

0

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

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

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

★★★★★

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

я бы не говорил "даже" :), по многим параметрам eclipse и xCode круче, ну да ладно, судя по всему ты сидишь на винде, так что можешь писать письма создателям своих любимых WOW, NFS, Quake, HL2 и т.д., что они полные ламеры. Кстати очень интересно на чем пишешь ты?

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

Пока у нас не используются java-CPU надо быть полным идиотом чтобы говорить что низкоуровневые языки программирования не нужны. Товарищ, на чём вы напишете java-машину?

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

у шефа взял, он давно на ней под маком работал - мы все проекты уже перевели на xCode, но некоторые все еще оставили и на CodeWarrior

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

> Промышленные CAD/CAM/CAE программы.

На практике это как раз ниша C++ (я писал практически не нужен). Однако в теории лично я бы предложил все-таки перейти на высокоуровневые языки.

> Кроме нереальных обьемов там и код достаточно наукоемкий.

Про наукоемкий код не очень понял. наукоемкий код в безумном фреймворке для расчетов на C++ (100Мб в врхиве), но его объем лично меня как раз наыводит на мысль что-то тут что-то не так с выбором языка.

> Глянь хотя бы в открытый OpenCASCADe.

Что у нас кошернее сейчас -JVM или CLR? То и выбрать.

> На С? боюсь, что на планете столько geek-ов не наберется.

Хорошо бы написать базовые вещи на C (для упрощения биндингов), но писать геморойно, да.

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

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

Да, С вечно живой. Прикол в том, что C++ - не низкоуровневый.

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

>Вообще интересно как на это отреагирует boost - там наврено по этому поводу можно будет кучу кода сделлать более читаемым, часть вообще выкинуть...

Открою тебе секрет: почти все нововведения в STL из нового стандарта - из Boost. Авторы большого кол-ва предложений по нововведениям в язык - авторы Boost. Некоторые из разработчиков Boost, ИМХО, даже входят в комитет по стандартизации. Так что они как раз отреагируют отлично.

Тем более, что с помощью новых средств можно будет решить ещё более сложные задачи, которые было невозможно решить ранее.

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

ставил я NetBeans - не впечатлило, в eclipse мне понравилась организация проектов - цвс, добавление существующих папок и файлов, копирование конфигураций, организация свойств проекта, автодополнение, рефакторинг и т.д., да и eclipse на gtk написан, так что прекрасно вписывается в Gnome

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

> Че и такие люди тут сидят? без понятия че такое VC, но зато флеймят по полной

Среда (о них шла речь) - VS.

sv75 ★★★★★
()

"Автору С++ место в дурке или на погосте" (с) проф.В.С.Луговский

И действительно, чем больше работаю с Objective-C, тем более убеждаюсь в правоте Профессора.

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

>Будущее за управляемыми языками со сборкой мусора.

Аргументы?

1. Рисуем графики количества вакансий на тех (C\C++\Delphi) и на других (все остальные из распространенных?), экстраполируем.

2. "Надоело очищать память. За%!#лись"

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

>И действительно, чем больше работаю с Objective-C, тем более убеждаюсь в правоте Профессора.

Сколько парадигм программирования он поддерживает? 1? В сад.

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

Думаю у нас с тобой консенсус :)

C++ (pronounced "see plus plus", IPA: /siː plʌs plʌs/) is a general-purpose programming language with high-level and low-level capabilities. It is a statically typed, free-form, multi-paradigm, usually compiled language supporting procedural programming, data abstraction, object-oriented programming, and generic programming.

C++ is regarded as a mid-level language. This indicates that C++ comprises a combination of both high-level and low-level language features.

взято с Wikipedia

я просто о том, что нельзя всё и вся писать на Java/.NET всякому инструменту своё применение.

Радует, что здесь не только больные радикалы (handshake)

rudchenkos
()

Из интересного/забавного -- параллельное исполнение блоков кода и отложенный вызов функции (future). Из разочаровывающего -- отсутствие автоматической сборки мусора. smart pointers всё-таки несколько не то. Хочется: поддержки регистрации указателей на выделенную память со стороны языка, чтобы потом не сильно выкорёживаться в сборщике мусора. Да, это даст некоторый рантайм-оверхед, но вряд ли сильно измеримый, да и как обычно, добавили б новое слово "не регистрировать" для указателей, за которыми сам программист проследить обещает. Типа noregister, по аналогии с бесполезным словом register. Порадовала lambda. Вообще бы не помешали анонимные классы из Java.

А в целом, не зацепило ничего. Пока нет сборки мусора, остальное второстепенно. Интересно, лет через 15 сделают? Хотя вряд ли, к тому времени все будут на Java/C#...

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

>1. Рисуем графики количества вакансий на тех (C\C++\Delphi) и на других (все остальные из распространенных?), экстраполируем.

"Кто на ком стоял? Извольте выражаться яснее." (с) М.Булгаков

>2. "Надоело очищать память. За%!#лись"

Осильте Smart Pointer'ы и будет вам счастье, а заодно и быстродействие.

Sectoid ★★★★★
()

Спасибо доброму человеку, запостившему ссылку на Вики :)

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

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

> Сколько парадигм программирования он поддерживает? 1? В сад.

Неоднократо натыкаюсь на мнения что C++ офигенно мультипарадигменный, но так и не пойму где там анонимные функии, к примеру? В общем огосписок парадигм, пожалуйста.

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

> Осильте Smart Pointer'ы и будет вам счастье, а заодно и быстродействие.

Отложенная сборка мусора эффективнее, чем по счётчикам ссылок. Хотя latency может страдать, да. Так что механизм управления не помешал бы.

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

>Товарищ, на чём вы напишете java-машину?

jvm и javac пишутся на java с испольщованием jni. только первая версия была написана на cи

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

> eclipse на gtk написан

Долго смеялся! Eclipse написан на Java. :))) С использованием платформенно-зависимой (JNI) библиотеки SWT. Которая в некоторых конкретных случаях использует GTK+. :) И не поддерживает, в отличие от Swing, MVC:))). (Не надо только про "типа MVC" в JFace:)) )

> так что прекрасно вписывается в Gnome

А под офтопиком, Motif, KDE и Aqua Eclipse не работает? :)) Не вписывается? :))

> автодополнение

А кульхацкеры из Новой Каховки :)) не знают, что в NetBeans тоже это есть? Тогда - учить матчасть! :)))

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

> где там анонимные функии, к примеру

А, как раз появилась.

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

> jvm и javac пишутся на java с испольщованием jni. только первая версия была написана на cи

ну а jni (java native interface) на чём? :) всё равно нельзя отрекаться от нативного кода

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

> но так и не пойму где там анонимные функии, к примеру?

Ты вроде преподаватель? Ну так осиль пройти по ссылке на Вики, и увидишь там лямбды.

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

>...но так и не пойму где там анонимные функии, к примеру?

Есть в Boost.Lambda. Нативно будут в C++0x.

>В общем огосписок парадигм, пожалуйста.

Цитирую http://ru.wikipedia.org/wiki/Мультипарадигменный_язык_программирования :

"...Обобщённое программирование, императивная, объектно-ориентированная..."

И ещё они почему-то забыли шаблонное метапрограммирование.

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

> Сколько парадигм программирования он поддерживает?

Ну, я видать, не столь шибко умный, поэтому предпочитаю использовать Obj-C безо всяких >1 "парадигм программирования". :)))

Видать, переквалифицировался я из "жабабыдлокодера" с "объджективбыдлокодера". :))) Чай не за "UAH" работаю - деньги не пахнут. :))

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

> Ты вроде преподаватель? Ну так осиль пройти по ссылке на Вики, и увидишь там лямбды.

Поправился уже. Однако мультипарадигменным ведь гордо назывался C++ (original edition).

sv75 ★★★★★
()

Посмотрел в википедии. Ужас полный. лучше писать на чистом С или на Java(что я и делаю), чем на этом переходном варианте.

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

>Отложенная сборка мусора эффективнее, чем по счётчикам ссылок. Хотя latency может страдать, да. Так что механизм управления не помешал бы.

Если для Вас latency не важен - пожалуйста, http://en.wikipedia.org/wiki/C++0x#Transparent_Garbage_Collection . Для меня - очень важен.

Кстати, чем сборка мусора эффективнее умных указателей?

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

> мультипарадигменным ведь гордо назывался C++ (original edition).

Редакция 1986-го года? Ну так он тоже мультипарадигменный: объектно-ориентированное и процедурное.

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

> Чай не за "UAH" работаю - деньги не пахнут. :))

А ты знаешь, что торговля наркотиками или там сутенерство приносит больше денег? Тех самых, которые не пахнут :D

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

> Долго смеялся!

псих? если ты не понял, что я хотел сказть, то ты тормоз, с чем тебя и поздравляю

> А под офтопиком, Motif, KDE и Aqua Eclipse не работает? :)) Не вписывается? :))

еще раз убеждаюсь - ты тормоз, ресь шла об внешнем виде, в частности об стиле виджетов

> не знают, что в NetBeans тоже это есть?

знают, только вот автодолнение разным бывает, eclipse смотрит include и по ним выстраивает список автодополнения, потому он прекрасно дополняет к примеру wx, если ты видишь разницы между качеством, а тебе надо лишь сам факт наличия, то никто тебе не виноват

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

> Да, С вечно живой. Прикол в том, что C++ - не низкоуровневый.

Лечится вам надо. С++ такой же низкоуровневый как и С. При этом он еще и на порядок удобнее благодаря шаблонам, перегрузке, RAAI.

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

> Лечится вам надо. С++ такой же низкоуровневый как и С.

Извини, но сам дурак. Он даже по википедии среднеуровневый. Язык C компилируется в машинные коды очевидным образом. В отличие от C++, где этот процесс, мягко говоря, неочевиден. Но тебе достаточно просто показать ядро ОС на C++ с подержкой исключений как аргумент в свою пользу ;)

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

> Если для Вас latency не важен - пожалуйста, http://en.wikipedia.org/wiki/C++0x#Transparent_Garbage_Collection .

А мне часто пофиг, лишь бы был. Почитал. Это больше похоже на намерение, не заметил ничего конкретного о реализации.

> Кстати, чем сборка мусора эффективнее умных указателей?

Скажи, друг-программер, shared_ptr могут учитывать циклические ссылки? Ну а вообще, вот: http://en.wikipedia.org/wiki/Reference_counting#Advantages_and_disadvantages

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

>> Лечится вам надо. С++ такой же низкоуровневый как и С.

>Извини, но сам дурак.

Уровень дискуссии потрясает

> Он даже по википедии среднеуровневый. Язык C компилируется в машинные коды очевидным образом. В отличие от C++, где этот процесс, мягко говоря, неочевиден.

То есть "очевидность" компиляции - это отличие низко- от среднеуровневого?

> Но тебе достаточно просто показать ядро ОС на C++ с подержкой исключений

Ядро NT написано на Си с исключениями. Теперь скажи - Си по-прежнему является низкоуровневым языком? Если да, то почему?

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

> Да, я согласен в этом споре с теми, кто за питон =)

Имеется в виду Boost.Python? ;)

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

> Отложенная сборка мусора эффективнее, чем по счётчикам ссылок. Хотя latency может страдать, да. Так что механизм управления не помешал бы.

тут основная проблема в legacy. если нужен просто сборщик, для этого есть Boehm GC. для отложенной сборки -- передаешь указатель из shared_ptr::get() туда, где по каким-либо причинам нужен сырой, объект "отложенно" удалится при выходе из области видимости/удалении класса. вот тебе и весь механизм управления.

в коде, исходники которого тебе доступны, не трудно завернуть все в shared_ptr и проверить результат валгриндом. для сторонних либ, которым нужен сырой указатель -- все равно так или иначе нужен контроль за памятью, а в многих настолько старых проектах еще и new/delete/*alloc/free используются вперемежку. я уж не говорю про до сих пор встречающуюся проблемы с delete и delete[]. как в таких условиях делать еще и стандартный сборщик, завязанный на особое поведение new?

зато сейчас ты получаешь ту самую (сравнительно) предсказуемую latency. со сборщиком на выходе рано или поздно наталкиваешься на то, что его необходимо тюнить. если проект большой, то алгоритмы очистки в разных модулях будут отличаться. переключать GC policy на лету? это ни чем не отличается от того, что уже есть сейчас.

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

> Он даже по википедии среднеуровневый

Да кого волнует эта классификация в педивикии. С++ низкоуровневый по возможностям, а не по классификации.

> Язык C компилируется в машинные коды очевидным образом. В отличие от C++, где этот процесс, мягко говоря, неочевиден

Бред.

> Но тебе достаточно просто показать ядро ОС на C++ с подержкой исключений как аргумент в свою пользу ;)

Исключения в ядре - это вообще спорная вещь. Однако Оффтопег-NT использует исключения в ядре. Правда не С++, а SEH. Так же дрова пишут на С++.

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

> Скажи, друг-программер, shared_ptr могут учитывать циклические ссылки?

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

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

"мы используем контейнеры STL рактически как встроенные типы. Язык прогрессирует."
в результате программы с тойже функциональность что и ограниченным использованием темплейтов требуют в разы (если не на порядок) больше ресурсов. прежде всего памяти....
память кончено недорога но ведь теперь ее есть ведрами каждая программа... и начинается перед запуском редактора диаграммм закройте ide.... итд.

dimav123
()

Интересно, а Гик отметился в теме? А то я его заигнорил ;)

По теме: гуд, приятно, что язык развивается

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

> мы используем контейнеры STL рактически как встроенные типы. Язык прогрессирует." > в результате программы с тойже функциональность что и ограниченным использованием темплейтов требуют в разы (если не на порядок) больше ресурсов. прежде всего памяти....

ЛОЛ, иди отсюда не позорься.

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

Это теперь новый фетиш на лоре - бегать по темам и всем радостно сообщать, кого заигнорил.

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

> обработка исключений в QNX такая же как и в линупсе - посылка сигнала

Ты бы сначала определил, каким именно значением термина "исключение" ты пользуешься.

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