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 ()

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

>> Пока они поняли что все совсем не так - очень много времени прошло.

Они, походу, не поняли разницу между теоретической книжкой по тех. наукам и всякими священным писаниями.

Вообще то там теоретики от программирования рассказывали как теоретически обоснованно компиляторы делать.

Так что нах теоретиков от программирования. Включая функциональщиков.

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

>> И как ты хтого не допустишь если в оных надо вызывать сторонние функции?

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

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

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

>>Устав, как известно, написан кровью. А coding standards написаны потом, нервами и потраченными зря мегабаксами.

Очень, очень хороший язык.

Хм... А язык то тут причем. Кодинг стандарт нужен независимо от языка.

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

> Коллега, программизм уже давно не является моим хобби. Какого хрена я буду убивать время? Единственное, для чего этим стоит заниматься - больше денег/выше по лестнице.

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

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

>Это прям какой-то комплекс, укоренившийся глубоко в детстве,

Точно. Опыт.

R, ты просто не осилил плюсы как инструмент


Это ты оправдываешь так свои дурацкие правила в выдуманном мире? Иначе придется осознать что ты имеешь дело не с реальностью а с фантасмагорией? Два раза ку. Всем лежать. Пол часа.


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

потому что никто гарантию не даст что в один прекрасный момент на той или иной платформе всё будет работать и не сломает себе ноги

если это не платный продукт, то гарантии скорее всего у тебя никакой не будет, так что не говори глупостей

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

я про то что mission critical на haskell персонально мне писать ссыкотно :) может это и не так уже, но я, пожалуй, ещё подожду ибо своими руками себе гемор лепить неохота

а для science-oriented задач haskell рулит, чего бы и нет

правда вон берём NumPy и Python рулит тоже :)

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

это другой пугающий момент, если в одно прекрасное утро GHC становится героем, то придётся лапу в рот, что не хотелось бэ

А если в одну утро java sun'овская станет героем?

есть большое количество товарищей которые в неё вложились (типа ibm, oracle etc.), вряд ли утонет

а за Haskell кто стоит?

Что вообще за херь, как ghc героем станет, что, со всех зеркал мира пропадут сорцы компилятора?

нет, не пропадут, но гарантии никакой

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

>Хм... А язык то тут причем. Кодинг стандарт нужен независимо от языка.

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

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

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

>> Но это, наверно, было бы слишком радикально: люди не поймут дизайнера языка.

Люди то как раз поймут - людям это раз плюнуть. Просто писатели до сих пор в фантазиях 15летней давности. В жабской рассылке просто поражает засилие перлов вида «а поймут ли люди такую сложную конструкцию как лямбда». А учитывая какой «важной» херней они страдают вроде возможности вводит числа с пробелами - а как же номера телефонов так удобнее вводить - можнол сделать много выводов по поводу их самоощущений.

Нашел кого в пример приводит. :)))) Разработчики явы!!!! :))))) Если бы не жутки пиар .....

Лучше посмотрел на разработчиков parrot.

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

Спасибо, Капитан :)

стараемся, товарищ Одмерал :)

Изначально речь была о том, что конкретно *исключения* не отлавливаются при рефакторинге, что неверно.

отлавливаются, нормально так, тут вопросов нет

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

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

Одна проблема. Если их делать частью интерфейса, то происходит постоянна ломка интерфейсов и переписывания всего. Что приводит к куче ошибок. Если не делать, то изменения не отследить. Большинство больших проектов - не делают. Как понимаю в новом стандарте и нельзя будет. Остается ловить глюки.

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

Посмотри на опыт больших проектов.

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

> Ты слишком категоричен. Вроде уже не юноша? ;)

Именно. Категоричность юношов основывается на эмиризме. Моя на апостериоризме.

PS: Долбаный курсовик по канту.


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

> JackyTreehorn (фотография)

У тебя полная каша в голове.

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

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

> Спасибо, Капитан :) Изначально речь была о том, что конкретно *исключения* не отлавливаются при рефакторинге, что неверно.

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

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

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

Оно и понятно. Лучше бы и не совались в то в чем не разбираетесь, а только нахватались маркетоидного бреда.

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

>> Хм... А язык то тут причем. Кодинг стандарт нужен независимо от языка.

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

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

Понятно. Вы не сталкивались с нормальным кодинг стадартом.

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

>> Хм... А язык то тут причем. Кодинг стандарт нужен независимо от языка.

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

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

Понятно. Вы не сталкивались с нормальным кодинг стадартом.

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

>Понятно. Вы не сталкивались с нормальным кодинг стадартом.

Это вы не сталкивались с нормальными языками.

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

> void f() {

int * i = new/malloc/....
g(); //maybe exception
//really?
}

У меня в коде на С++ есть Glib::RefPtr, так что не страшно )))

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

Коллега, неплохо было бы выражать свои мысли соответствующим образом, а то сплошной «казнить нельзя помиловать». Изменения где делались?

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

> Какого бреда, коллега? Единственный бред, который у меня в голове - это Ваш в этой ветке.

Судя по всему вы мне не коллега.

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

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

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

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

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

Писать все в одну длиннючую строку - тоже легально. Но не надо.

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

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

> а за Haskell кто стоит?

Мыкрософт.

Ничего подобного. Из того, что 4-5 разработчиков GHC работают в MS Research, ещё не значит, что Microsoft за этим стоит. В MS Research вообще работает много известных учёных, включая Энтони Хоара.

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

>> Понятно. Вы не сталкивались с нормальным кодинг стадартом.

Это вы не сталкивались с нормальными языками.

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

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

> Коллега, неплохо было бы выражать свои мысли соответствующим образом, а то сплошной «казнить нельзя помиловать». Изменения где делались?

В библиотеке.

Отловить надо в программе.

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

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

Допустим. Все равно это не связано с «шаблоны не трогать».

Писать все в одну длиннючую строку - тоже легально. Но не надо.


Опять же из разряда именовыания переменныхз и выравнивания скобок. А совсем не «допустимых фич языка».

И никто не говорит, что C++ идеален.


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

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

упрощенное подмножество C++ — это язык, на котором можно писать относительно комфортно, но это не идеал. Такой вещи, как идеальный язык, вообще нет.

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

А ты не причмокивай так громко, когда отсасываешь

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

> а за Haskell кто стоит?

кроме большого каммюнити - хз. Думаю универы стоят как-никак


нет, не пропадут, но гарантии никакой

Еще раз. Гарантии у тебя и так НИКАКОЙ нет, если ты не используешь .NET. Свободный софт не содержит гарантий

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

ASText(Acrobat), std::string(STL), std::wstring(STL), GString(GLib), QString(Qt), CString(MFC), ну и, ессно, char*/wchar_t* - вот полный перечень строковых типов, которые щас используются в рамках одного проектика...
Ну не дохрена ли? :) Хорошо, хоть буст еще своих не добавил :)

Давайте вот в таком ракурсе порассуждаем о молотках?

Имеем 7 очень различных типов молотков для забивания простенького «обойного» гвоздя. Неужто это такая суровая необходимость - для забивки одного гвоздика покупать аж 7 молотков? :)

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

>Lisp - встраивая в свои программы его урезают по самое нихачу.

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

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

Фигасе зоопарк развели. У меня CString, std::string и char*, и то, хватает с головой.

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

>> Ну приведите мне нормальный язык.

Haskell, LISP, Java, C#, Scala, Groovy, Ocaml, F#.....

https://www.securecoding.cert.org/confluence/display/java/The+CERT+Oracle+Sec...

Остальное то же можно найти но в части применения их для корпорация я сомневаюсь и потому мне лень тратить время.

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

Это ты зря. Дествительно, могут быть какие-то ограничения на использования фич языка, но при этом сам язык может быть нормальным.
Например, очень часто в perl не рекоммендуется использовать ; как разделители для разных выражений (regex'ов). Что разумно, ибо получается какая-то херня. Но язык данную фичу (использование любого символа в качестве разделителя) поддерживает

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

> ASText(Acrobat), std::string(STL), std::wstring(STL), GString(GLib), QString(Qt), CString(MFC), ну и, ессно, char*/wchar_t* - вот полный перечень строковых типов, которые щас используются в рамках одного проектика...

А зачем, позвольте узнать?

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

> Коллега, Вы слегка потеряли нить разговора, но это не смертельно. Вам треуголка жмет.

Хм... вместо вас бот с ничего не значащими фразами?

Все что я сказал предельно ясно.

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