LINUX.ORG.RU

Разрешено использование C++ в GCC

 , , , , ,


0

1

Вчера в списке рассылки GCC появилось важное сообщение по поводу использования языка программирования C++ при разработке GCC (GNU Compiler Collection, а не сам компилятор языка C).

Марк Митчелл (Mark Mitchell), один из основных разработчиков GCC:

Я рад сообщить, что руководящий комитет GCC и FSF одобрили использование C++ в самом GCC. Конечно, нет никаких причин использовать возможности С++ только потому, что мы умеем это делать. Главная цель - предоставить пользователям более качественные компиляторы, а не кодовую базу на C++ для самих себя.

Перед тем, как мы действительно начнём использовать C++, мы должны определиться с набором правил, которыми нужно будет руководствоваться при использовании C++ для разработки GCC. Я считаю, что для начала мы должны минимизировать список разрешённых возможностей С++, чтобы не подвергать разработчиков GCC, не знакомых с C++, таким резким переменам в основном языке разработки компиляторов. Мы всегда сможем расширить использование С++ позднее, если появится такая необходимость.

На данный момент разработчики ограничиваются стандартом C++98 и использованием типа long long для 64-битных целых чисел. Использование множественного наследования, шаблонов (тех, которые не входят в стандартную библиотеку C++) и исключений, скорее всего, будет запрещено. Это мотивировано тем, что это будет сложно для программистов на C, а также тем, что сами программисты C++ могут с лёгкостью допустить ошибки в таких вещах.

Так как язык C++ достаточно обширен, то Марк Митчелл предложил составить список того, что разрешается использовать, а не того, что использовать нельзя. На данный момент необходимо составить некоторые информационные нормативы, а не очередной стандарт ISO.

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

>>> Официальный анонс

★★★★

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

Ответ на: комментарий от rtvd

> А Вы полагаете, что любой, присоединившийся к проекту, это уже мозги?

Нет, но я считаю, что три мозга - это маловато. И кстати, нужны просто квалифицированные руки - ученым неинтересны вещи вроде той же динамической линковки.

Историю делают личности а не толпа.

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

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

msn stl, а даже если и не устраивает, то что мешает написать контейнер с проверкой?

Это поможет, но не спасет.

от непроверки границ ещё как спасёт :)

1. null pointers, dangling references. http://qconlondon.com/london-2009/presentation/Null References: The Billion D...

да, и? :) тестирование спасёт отца русской демократии

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

эм, а где уже такой анализ можно произвести? и к каким неведомым силам тот анализ будет посвящён?

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

>Не всех удаётся научить. Вот ты, например, ниасилил.

Похоже это ты ниасилил, потому и выступаешь за «ограничения языка» и рассказываешь про новичков. О себе заботишься?

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

>особой заинтересованности в развитии плюсов у корпораций нет.

Да - есть только истраченные бабки и привкус отвращения. Особой заинтересованности действительно нет.

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

>то такоие технологии практически незнакомы миру бизнеса,

Меня все донимают предлождениями пописать на хаскеле финансовые системы для банка входящего в пятерку самых крупных в мире.

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

>> Историю делают личности а не толпа.

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


А кто рано встает тому боженька питнка дает.


Продолжим в том же духе?:)

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

>> Вот. Наконец то согласился, что это должен делать не стандартизатор, а источник языка.

Стандартизатор и есть источник.

Хм... А до этого ворил, что источник Керниган и Ричи.

Теперь осталось понять: стандартизаторы лишь стандартизируют.

Иди учи в словарь что такое стандарт.

Ты мне скажи, человек который пишет на Си Кернигана и Ричи не на Си пишет?

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

> Продолжим в том же духе?:)

Продолжай, конечно - но с тем, кто это начал :D

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

>Похоже это ты ниасилил, потому и выступаешь за «ограничения языка» и рассказываешь про новичков.

Я? Ты меня с кем-то путаешь. Просто есть выбор: отказаться от сложных возможностей языка или от простых программистов. Создатели языков php, vb, delphy, java выбрали первое. Создатель c++ не стал ничего выбирать, а предоставил выбор программистам (тимлидам и т.п.).

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

>> Похоже это ты ниасилил, потому и выступаешь за «ограничения языка» и рассказываешь про новичков.

Я? Ты меня с кем-то путаешь. Просто есть выбор: отказаться от сложных возможностей языка или от простых программистов. Создатели языков php, vb, delphy, java выбрали первое. Создатель c++ не стал ничего выбирать, а предоставил выбор программистам (тимлидам и т.п.).

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

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

>Хм... А до этого ворил, что источник Керниган и Ричи.

Ты обратись к врачу. По мозгам. Я сказал что керниган и ричи были источником С когда не было на него стандарта что есть факт. Сейчас источником с++ есть стандартизирующая группа что есть тоже факт.

Ты мне скажи, человек который пишет на Си Кернигана и Ричи не на Си пишет?


Человек не знаю на чем пишет. А на С сейчас есть стандарт.

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

>Создатель c++ не стал ничего выбирать, а предоставил выбор программистам (тимлидам и т.п.).

Они не сложные. Они нихрена не работающие. Ничего сложнго в исключениях нет. Просто они хзреново реализованы в С++ и нихрена не работают в конкретных реалихзация или работают не одинаково. Что возвращает нас к тому что язык настолько дикий что никто его еще не реализовал в рамках стандарта.

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

>> Хм... А до этого ворил, что источник Керниган и Ричи.

Ты обратись к врачу. По мозгам. Я сказал что керниган и ричи были источником С когда не было на него стандарта что есть факт. Сейчас источником с++ есть стандартизирующая группа что есть тоже факт.

Ты мне скажи, человек который пишет на Си Кернигана и Ричи не на Си пишет?

Человек не знаю на чем пишет. А на С сейчас есть стандарт.

То есть человек пишущий на Си Кернигана и Ричи не на Си пишет.

Думаю тебе к врачу надо. Хотя, безполезно. Тебе ничто не поможит.

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

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

>так че ж ты не напишешь?

Сейчас в основном на скале.

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

>Я же говорю, тебе не понять что одновременно действуют все стандарты на язык.

Что в фразе «на сегодняшний день не существует компилятора С++ реализующего стандарт даже 98 года» тебе непонятно?

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

>>Создатель c++ не стал ничего выбирать, а предоставил выбор программистам (тимлидам и т.п.).

Они не сложные. Они нихрена не работающие. Ничего сложнго в исключениях нет. Просто они хзреново реализованы в С++ и нихрена не работают в конкретных реалихзация или работают не одинаково. Что возвращает нас к тому что язык настолько дикий что никто его еще не реализовал в рамках стандарта.

Опять? Еще раз. Ничего сложного нет. И в плюсах они работют. Но в отличии от тебя дюди могут видеть недостатки исключений и отказать от них. В яве отказаться от исключений, практически невозможно. В C++ - легко. Есть более одного стиля программирования. Обычно их выбирают под задачи. Думаю тебе стоит это уяснить.

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

>> Я же говорю, тебе не понять что одновременно действуют все стандарты на язык.

Что в фразе «на сегодняшний день не существует компилятора С++ реализующего стандарт даже 98 года» тебе непонятно?

Понятно все. Но странным образом. Ты заговорил о стандартах. А до этого говорил что нет ни одной реализации языка. Таки понял различия между стандартами и языком?

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

> Ничего сложного нет.

Именно поэтому такие проблемы с совместимостью компиляторов.

И в плюсах они работют.


А пацаны в мозилле и не знают.

Думаю тебе стоит это уяснить.


Думаю тебе стоит перестать выдавать желаемое за действительное.


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

>А до этого говорил что нет ни одной реализации языка.

Я не знаю что у вас в деревне понимают под языком - но у меня в деревне то что написано в спецификации.

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

>> Ничего сложного нет.

Именно поэтому такие проблемы с совместимостью компиляторов.

Вообще-то проблемы в основном в другом, а не в исключениях. Только причем тут это?

И в плюсах они работют.

А пацаны в мозилле и не знают.

Пацаны в мозиле видят недостатки. Чем они вызваны - дело десятое. Те для кого эти недостатки неважны - используют.

Покажи мне проект на java без исключений...

Думаю тебе стоит это уяснить.

Думаю тебе стоит перестать выдавать желаемое за действительное.

Думаю желаемое говоришь ты.

Признать что существует более одного стиля программирования можешь? Признать что стиль программирования без исключений в C++ возможен а в java нет - можешь?

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

>> А до этого говорил что нет ни одной реализации языка.

Я не знаю что у вас в деревне понимают под языком - но у меня в деревне то что написано в спецификации.

Не. Не лечиться.

Спецификация - это спецификация. И их может быть для одного языка несколько. Или не может быть?

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

>Вообще-то проблемы в основном в другом, а не в исключениях.

В исключениях тоже. Именно потому они забанены в мозилле, а не по вашим мифическим «сложностям понимания».

Пацаны в мозиле видят недостатки.


Может ты прочитаешь, что написали пацаны в мозилле, а не будешь придумывать за них? Это portability guide. При чем его можно модифицировать если покажешь что хоть одно правило написанное там - не соответствует действительности со всеми компиляторами которые заявлены в поддержке.

Чем они вызваны - дело десятое.


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

Признать что стиль программирования без исключений в C++ возможен а в java нет - можешь?


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

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

>Спецификация - это спецификация. И их может быть для одного языка несколько.

Не. Не лечиться.


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

>> Признать что стиль программирования без исключений в C++ возможен а в java нет - можешь?

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

То есть, непортабельность недостатком не является?

:)))

Говрю же. Мозиловцы видят недостатки важные для них. Или видели когда-то, но сейчас уже поздно менять. Но суть не в этом.

Суть в том что в C++ можно отказаться, в java - нет.

Все.

Еще раз. Там недостатки исключений, любые, неважны. Используются. Где важны нет.

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

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

>> Спецификация - это спецификация. И их может быть для одного языка несколько.

Не. Не лечиться.

Ну так ты ответь да или нет?

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

>Мозиловцы видят недостатки важные для них.

Да - про это весь тред. С++ это недостаток который не могут реализовать нормально последние 27 лет.

Или видели когда-то, но сейчас уже поздно менять.


Ты русский язык понимаешь? Поменять можно хоть сейчас если покажешь что хоть одно из правил на заявленных компиляторах не выполняется. У мозилловцев как раз всяких бредовых предубеждений - нет.

Вот мне важны недостатки исключений.


классическая задача:

Реализовать функцию f(x) = { 0 < x < 10 : x * x ; иначе недопустимый аргумент }

Вперед.

И я не хочу их использовать в ява.


Инженерно. Научно. Мама я нехочу.

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

>Ну так ты ответь да или нет?

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

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

:) Я хотел увидеть решение от злобного троля без исключений.

К стати решение такое есть: но для этого надо знать что такое дизьюнтктивное объединение (Maybe в хаскеле и Option в скале). И иметь представление как нужно переписать функции +-*/ чтобы безболезненно применять такие функции в вычислениях (для чего не помешает представление о монадах).

PS: угу - и зачем нам функциональное программировани...


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

>По моему гораздо лучше подходит чистый функциональный язык

флаг в руки, пиши новый компилятор

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

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

Толсто, в яве у исключений меньше недостатков (по крайней мере оно не вылезет где не ждешь, такой код не компилируется)

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

> Опять? Еще раз. Ничего сложного нет. И в плюсах они работют. Но в отличии от тебя дюди могут видеть недостатки исключений и отказать от них. В яве отказаться от исключений, практически невозможно. В C++ - легко. Есть более одного стиля программирования. Обычно их выбирают под задачи. Думаю тебе стоит это уяснить.

А можно поподробнее? Так сказать, «на лопате».

1. чем плохи исключения (как понятие, а не как конкретная реализация в C++/Java)?

2. Почему это на Java нельзя без исключений, а в C++ можно?

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

> 2. Потому что в С++ их можно отключить.

Правда?

Что будет тогда с кодом, которых бросает исключение?

И что будет, если библиотека захотела его бросить?

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

>Простите, но как это вы можете ставить замечательную платформу mono в один ряд с этим богомерзким С++?

так лучше

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

> Похоже, это только в vc. Не будет размотки стека и вызова деструкторов.

ОК. В любом случае, не вижу как при этом не наступит смерть или по крайней мере нарушение работы.

И тем более не вижу, как эта сомнительная фича может быть преимуществом C++ перед Java. :-)

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

>да хватит его кормить уже.

я убивал время;)

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

> Можно увеличить быстродействие и уменьшить объем кода :-D

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

У меня один знакомый, когда был еще ребенком, написал чудесный архиватор. Сжимал он все что угодно раз в 100. Только вот не разжимал.

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

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

Утипути, какой толстенький. Назови мне язык, несколько независимых реализаций которого двоично-совместимы.

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

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

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

> Кстати, мне тоже интересно, что несовместимого в стандартных исключениях, например?

В Си++ есть минимум 2 принципиально разных способа их реализации :) Это не говоря о деталях.

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