LINUX.ORG.RU

быстрый взгляд на C++0x


0

0

Страуструп описал вкратце улучшения, грозящие всем программёрам С++ в следующем стандарте, который должен выйти к 2009 году. Немалая толика софта под линукс пишется на С++ поэтому новость будет интересна не только разработчикам, пишущим на С++. Итак, что же нам светит:

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

Обещается опциональная сборка мусора и поддержка параллелизма. Внимание разработчиков стандарта фокусируется на расширениях, которые "меняют способ которым люди думают" (дословно!). Добавлено наиболее значительное расширение - "концепция" как "тип типов" (посредством where-выражения) и обобщенный список инициализации. Обещано, что вектора базовых типов будут работать не медленнее встроенных массивов тех же типов. В общем всё для того, чтобы сделать обощённое программирование таким же мейнстримом как объектно-ориентированное.
Также комитет по языку уже проголосовал за добавку в STL хешей, регекспов, смарт-поинтеров, генераторов случайных чисел и математических спец-функций. Появится новый тип итераторов - auto с автоопределением своего типа. Наконец-то стандартизаторы обещают уделять внимания простоте не меньше, чем гибкости но, тем не менее, не в ущерб последней.

Просьба языковой флейм не начинать, языки всякие важны, языки всякие нужны.

>>> Подробности

★★

Проверено: Pi ()

BASIC - THE BEST, 'cause it's a BEAST!

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

>>вот между пересборкой и выдачей страницы мы и рестартуем весь сервер, правда? :)

>man dlopen

ох, потечём! :) а падать то в корку тоже вместе со всем сервером будем, да?

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

> И мне стало жить хуже. Я прихожу на работу и плачу. А потом силой заставляю себя работать. Не получая практически никакого удовольствия.

В "Мы" такие проблемы решали с помощью Великой Операции.

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

а лучше 2 форка!

ну и метод... я бы не додумался

Pi ★★★★★
()

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

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

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

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

А почему на C++ нельзя написать вот такое приложение: http://javamaniac.com/resource.jsp?id=26 ? Ась? Если вы такие умные?

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

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

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

Все это на жабе написать можно (в ядро придется добавить немного асма - но асм и в ядре линуха есть). Если не ставить слишком жестких ограничений на производительность;)

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

А почему на C++ нельзя написать вот такое приложение: http://javamaniac.com/resource.jsp?id=26 ? Ась? Если вы такие умные?

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

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

По поводу не ООП-ности С++: http://public.research.att.com/~bs/oopsla.pdf Я просто хотел отметить что C++ не является "чистым" ОО-языком также как ЛИСП не является "чистым" функциональным языком (если правильно помню главной нефункциональной фичей ЛИСПа является оператор присваивания setq)

Генерики Java не рекомендуется использовать в ресурсоемких вычислениях (если не ошибаюсь, то такую рекомендацию видел прямо на сановском сайте) из-за больших накладных расходов на боксинг/анбоксинг. Если вам с такими вычислениями сталкиваться не приходится это не значит что они вообще никому не нужны.

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

>Все это на жабе написать можно (в ядро придется добавить немного асма - но асм и в ядре линуха есть). Если не ставить слишком жестких ограничений на производительность;)

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

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

и объясни мне каким боком боксинг/анбоксинг связан с дженериками?

уже был правильный ответ - ресурс процессора тратится на class casting, но для JIT это не актуально. Так что используй на здоровье.

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

В.Н.И. в каждой смысловой связке

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

>Вот когда создатели жабы откажутся от байткода

именно тогда он опустится до состояния

>С++ в которую добавленно несколько довольно не плохих примочек.

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

> (если правильно помню главной нефункциональной фичей ЛИСПа является оператор присваивания setq)

Нифига ж себе... А CLOS как же? А MetaObject Protocol?

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

> Kruto!!! Ne luchshe li togda voobshe otkazatsa ot C++? Tipa, Stroustrup, vali-ka ty v Bobrujsk. Pardon za translit.

А тебе какая нахрен разница? Компилятор, что для C, что для С++ один и тот же... умеешь C++ - используй его, ниасилил - ковыряйся в С.

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

Boxing/unboxing в java будет происходить всегда, когда генерики используются для примитивных типов (таких как int).

Если ты используешь скажем List<int>, то в памяти он будет храниться как object[]. Т.е. при каждом обращении/изменении нужно будет производить boxing/unboxing. В частности это было сделано для того чтобы сохранить некоторую обратную совместимость со старыми JVM. Так что в Java генерики это просто средство для упрощения синтаксиса ценой вполне определенных накладных расходов.

В .net в этом плане получше. Там данные будут храниться в int[] и расходов на боксинг не происходит.

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

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

Совсем бестолочь? Байт код - основная фича джавы, build once - run everywhere.

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

По поводу не ООП-ности С++: http://public.research.att.com/~bs/oopsla.pdf Я просто хотел отметить что C++ не является "чистым" ОО-языком также как ЛИСП не является "чистым" функциональным языком (если правильно помню главной нефункциональной фичей ЛИСПа является оператор присваивания setq)

Я вообще не поднмал темы про ООП и С++.
Мое мнение, С++ ООП язык (если кто-то не согласен, я не буду спорить, как не буду никому доказывать то, что небо голубое (оно конечно не чисто голобуое и по этому поводу наверняка много больных людей написало статей).


re:Генерики Java не рекомендуется использовать в ресурсоемких вычислениях (если не ошибаюсь, то такую рекомендацию видел прямо на сановском сайте) из-за больших накладных расходов на боксинг/анбоксинг.

анбоксинг(autoboxing) - это создание из примитивов соответсвующих объектов.
из long будет создан экземпляр класса Long и т.д.
из char - Char
и т.д.

к Generics отношение autoboxing не имеет.

на счет
re: видел прямо на сановском сайте

а инопланетян вы не видели рядом?


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

Где я говорил, что generics/autoboxing или методы позволяющие обходится без них не нужны?



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

> а падать то в корку тоже вместе со всем сервером будем, да?

Да. А ты хотел и рыбку съесть и.... ?

Хочешь си с крестами в вебе - получай все прелести.

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

>Мое мнение, С++ ООП язык (если кто-то не согласен, я не буду спорить, как не буду никому доказывать то, что небо голубое (оно конечно не чисто голобуое и по этому поводу наверняка много больных людей написало статей).

Больного человека зовут Бьерн Страуструп

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

>Байт код - основная фича джавы, build once - run everywhere.

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

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

>Генерики Java не рекомендуется использовать в ресурсоемких вычислениях

При чем тут боксинг? И что-то я не пойму каким образом генерики что-то там замедляют?

ArrayList<String> strings = new ArrayList<String>(); strings.add("aaa"); String s = strings.get(0);

Компиляется в:

ArrayList arraylist = new ArrayList(); arraylist.add("aaa"); String s = (String)arraylist.get(0);

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

Другое дело что на вот такое

public class g extends ArrayList<String> { public String get(int i) { return null; } }

сгенерируется еще один метод и будет лишний call.

public java.lang.String get(int); Code: 0: aconst_null 1: areturn

public java.lang.Object get(int); Code: 0: aload_0 1: iload_1 2: invokevirtual #2; //Method get:(I)Ljava/lang/String; 5: areturn

Но все равно - при чем тут боксинг?

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

> пых-пых тоже не плохо ведет себя на разных платформах.

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

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

ну фактически ты сказал следующее "Boxing/unboxing в java будет происходить всегда, когда генерики используют Boxing/unboxing", а сами дженерики на производительность почти не влияют, о чем собственно и говорилось.

а то, что ты привел, это проблема не генериков а реализации коллекций (точнее отсутствия в Java коллекций примитивных типов)

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

> Написано выше.

Единственная разница - это вызов инструкции checkcast. 1 инструкция байткода.

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

>сами дженерики на производительность почти не влияют, о чем собственно и говорилось.

А самих то дженериков в java получается и нету. Т.е. как уже и говорил, генерики в java это просто "синтаксический сахар" как любят писать западные товарищи. Этакая надстройка над коллекциями, которые в свою очередь тоже не безупречны в плане производительности.

А вот ссылка на ту статью на сановском сайте http://java.sun.com/j2se/1.5.0/docs/guide/language/autoboxing.html Цитата оттуда:

So when should you use autoboxing and unboxing? Use them only when there is an &#8220;impedance mismatch&#8221; between reference types and primitives, for example, when you have to put numerical values into a collection. It is not appropriate to use autoboxing and unboxing for scientific computing, or other performance-sensitive numerical code. An Integer is not a substitute for an int; autoboxing and unboxing blur the distinction between primitive types and reference types, but they do not eliminate it.

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

> точнее отсутствия в Java коллекций примитивных типов

Не в java а в jre. Дык там ного чего нет. Интернет же не запретили и апача никто не отменял http://jakarta.apache.org/commons/primitives

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

>Хочешь си с крестами в вебе - получай все прелести.

ну так с того и начали: с появлением веба засилье плюсов объективно рухнуло, а сами они устарели.

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

>> Написано выше.

>Единственная разница - это вызов инструкции checkcast. 1 инструкция байткода.

И что? К чему вы это написали? Вы с чем то не согласны или на оборот согласны?

Yilativs ★★★★
()

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

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

>>Мое мнение, С++ ООП язык (если кто-то не согласен, я не буду спорить, как не буду никому доказывать то, что небо голубое (оно конечно не чисто голобуое и по этому поводу наверняка много больных людей написало статей).

re: Больного человека зовут Бьерн Страуструп

Вместо того, что бы ответить, на поставленные вопросы вы решили объявить больным старика Страуструпа? Забавно.

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

>>место того, что бы ответить, на поставленные вопросы вы решили объявить больным старика Страуструпа? Забавно.

Нет так зовут автора статьи (в общем то довольно известной), которую вы не удосужились открыть. http://public.research.att.com/~bs/oopsla.pdf Так что больным старика Страуструпа назвали тоже вы. Вот это действительно забавно.

wbr

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

Lisp ни фига не функциональный язык. Тупи дальне.

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

Лисп НЕ ПООЩРЯЕТ функциональный стиль. Использовать комбинаторы и карринг на Лиспе не так просто и естественно, как в настоящих функциональных языках.

Кстати, барашек, про Европу ты тоже попукал - Лисп в США любят (MIT и CMU расстарались), а в Европах всё больше ML юзается.

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

Деточка, тупица, убей себя об стену быстро.

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

>>место того, что бы ответить, на поставленные вопросы вы решили объявить больным старика Страуструпа? Забавно.

>Нет так зовут автора статьи (в общем то довольно известной), которую вы не удосужились открыть.

Я бы рекомендовал вам удосужится прочесть учебник английского языка.
Тогда бы вы смогли ответить на следующие вопросы, процитируйте:
Где Страуструп говорит, что С++ не ООП язык?
Где я называл старика Страуструпа больным?
Где вы нашли статью на sun.com в которой говорится что generics медленный из за autoboxing'a?

PS Если вы не удосужитесь ответить на эти вопросы, не удивляйтесь тому , что я проигнорирую ваш следующий пост.

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

Да я знаю, просто какой-то идиот предлагает мне убить себя.

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

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

А у пупе не надорввеццца? Для простого кулькулятора писать еще и броузер и вебсервер... Мда. Люди десятками лет шли к модульности, чтобы кусок одной программы можно было использовать в другой, а в C++ до сих пор надо для простейших вещей писать новую ось с броузером и своим медиаплеером, ага

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

>Перфокарты - тоже кое где встречаются.

Никак в передовых китайских универах? Али в ПТУ в твоем застранском городе?

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

Yilativs-а, однако, надо в цирке показывать. Большие бабки можно будет срубить.

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

>А у пупе не надорввеццца? Для простого кулькулятора писать еще и броузер и вебсервер... Мда. Люди десятками лет шли к модульности, чтобы кусок одной программы можно было использовать в другой, а в C++ до сих пор надо для простейших вещей писать новую ось с броузером и своим медиаплеером, ага

Это я к тому что на С++ можно написать все, 80% софта которым ты пользуешся написан на С и С++ а ни как не на джаве, а пример с калькулятором не очень удачный а то можно подумать что это предел для джавы, и опять этот веб, калькулятор на флеш будет покрасивее. Софт это не только веб а если такой мощный язык как джава нужен только для веб то нафик он такой мощный нужен.

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

>Например, системы СОИ для летательных аппаратов пишутся целиком в машинных кодах, и ни про какую Java там вообще не вспоминают (как, впрочем, и про C++).

а) Что такэ "системы СОИ"?

б) Ищем про ScanEagle UAV Real Time

http://www.sun.com/aboutsun/media/video/sunnewstoday.html

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

>Где Страуструп говорит, что С++ не ООП язык?

FAQ с сайта Бьерна Страутрупа

Is C++ an Object-Oriented language?

C++ is a multi-paradigm programming language that supports Object-Oriented and other useful styles of programming. If what you are looking for is something that forces you to do things in exactly one way, C++ isn't it. There is no one right way to write every program - and even if there were there would be no way of forcing programmers to use it. That said, writing C-style programs in C++ is for most applications not an optimal use of C++. To be a really effective C++ programmer, you must use the abstraction mechanisms and the type system in a way that fits reasonably with their intent. Trying to ignore or defeat the C++ type system is a most frustrating experience. Writing Smalltalk-style in C++ can be equally frustrating and sub-optimal as writing C-style code in C++. For a more detailed discussion see any of my overview or style papers from my bibliography. In particular, see my OOPSLA paper "Why C++ isn't just an Object-Oriented Programming Language".

Ссылка на упомянутую статью уже давал два раза. В первый раз вы ее проигнорировали. Во второй видимо ограничились прочтением заголовка. --------------------------------------------------------------------------- >Где я называл старика Страуструпа больным? Вот тут http://www.linux.org.ru/view-message.jsp?msgid=1217255#1219043 Пусть и неспециально и в неявной форме. Просто похоже что ТАКОГО либерализма от Страутструпа вы не ожидали.

Кстати ответ про ООП-ность C++ адресовался не лично вам, но вы полезли отвечать и на него. --------------------------------------------------------------------------- >Где вы нашли статью на sun.com в которой говорится что generics медленный из за autoboxing'a?

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

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

wbr

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