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

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

> Да - добавляя тому бардаку с фундаментальными проблемами еще бардака - фундаментальные проблемы порешаются.

Вот меня удивляет, что часто в язык тянут какие-то фичи, совершенно туда не вписывающийся. Это было с Си, когда Страуструп начал прикручивать классы, теперь вот к этому прикручивают ещё чёрт знает что в C++0x. Неужели так сложно разработать новый язык, похожий на старый, и добавить туда некое подобие FFI, чтобы пользоваться старьём.

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

> А - ты из этих. Мечтаешь достичь уровня своей некомпетентности.

Что в этом плохого? Эта система работает. Мир не провалился в анальную жопу, крутится как-то, хоть и руководят на каждом отдельном посту те, кто достиг уровня своей некомпетентности.

Карьера вида «через пять лет я забыл чему учили в ВУЗе

Мне забывать нечего, я в ВУЗе ничему не учился.

Да - добавляя тому бардаку с фундаментальными проблемами еще бардака - фундаментальные проблемы порешаются.

Проблемы есть, но решаются, и очень неплохо. И без всяких там функциональщиков с их навязчивыми идеями.

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

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

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

>У тебя весьма странные представления о работе менеджера проекта.

Это практически объективный закон иерархических организаций.

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

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

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

А лозунги в защиту С++ и одновременно желание перейти на админдолжность - демонстрирует.


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

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

Ага, наверное по этой причине после 35 лет программист уже никому не нужен. Предполагается, что он уже достаточно взрослый, чтобы заняться более полезным делом, управлением. Да и почему бы и не заняться - кибернетика, это все ж таки наука об управлении в первую очередь. А MBA получить не проблема, да и полезно вообще.

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

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


Пообщавщись в жабской рыссылке с атцами, а так же наблюдая некоторые другие примеры, я сделал вывод, что это очень херово когда люди которые знают 1 язык и написали еще один - дизайнят языки. Особенно когда они делают это последние 15 лет и за это время не удосужищись посмотреть вокруг. Такой же пример Александреску с его D.

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

>Что в этом плохого? Эта система работает.

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

Мир не провалился в анальную жопу, крутится как-то, хоть и руководят на каждом отдельном посту те, кто достиг уровня своей некомпетентности.


Это показывает только что провалить мир в анальную жопу не так просто.

Мне забывать нечего, я в ВУЗе ничему не учился.


Оно и видно.

Проблемы есть, но решаются, и очень неплохо.


Ну да. И какие же фундаментальные проблемы были решены?

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

> Мир не провалился в анальную жопу
еще нет, но уже проваливается

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

Common Lisp

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

Common Lisp

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

> Пообщавщись в жабской рыссылке с атцами, а так же наблюдая некоторые другие примеры, я сделал вывод, что это очень херово когда люди которые знают 1 язык и написали еще один - дизайнят языки. Особенно когда они делают это последние 15 лет и за это время не удосужищись посмотреть вокруг. Такой же пример Александреску с его D.

Это да, эффект второй системы. Но как бы подразумевалось то, что люди осознают фундаментальные дефекты первого и делают второй язык не как «первый, но с улучшениями», а как «новый, с возможностью использования старого». Но это, наверно, было бы слишком радикально: люди не поймут дизайнера языка.

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

Ну, спецификации-то меняются, новое добавляется и т.д.

pugs неплохой, да

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

> Такой же пример Александреску с его D.

Кстати, он в одной из своих книг (где-то 1995 год) говорил, что был поражён тем, что некоторые выделывают на плюсовых шаблонах: функции с 4-5 шаблонными параметрами. Неужели он не знал, что такие вещи возможны (в принципе) уже давно, еще с тех времён, как Милнер сделал ML?

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

И без всяких там функциональщиков с их навязчивыми идеями.

Nec sutor ultra crepidam

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

>Ага, наверное по этой причине после 35 лет программист уже никому не нужен.

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

Предполагается, что он уже достаточно взрослый,


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

Вывод - нафиг он такой нужен?

чтобы заняться более полезным делом, управлением.


Ты наверное думаешь что программисты делятся на две категории одни становятся менеджерами а другие после 35 в нирвану? Или куда? Или все становятся менеджерами? То есть в галерах где количество программистов - 200, через средних 7 лет будет 200 менеджеров? Или что?

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

>В смысле? У D плохой дизайн?

D это попытка сделать С++ с целовеческим лицом. В результате это и получилось.

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

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

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

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

> а как же номера телефонов так удобнее вводить

ААААА!"! это пиздец сказка какая-то, я дико ржал

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

>Неужели он не знал, что такие вещи возможны (в принципе) уже давно, еще с тех времён, как Милнер сделал ML?

Вот именно. Александреску вместо того чтобы решить фундаментальные проблемы С++, сделал «свои шаблоны только лучше», и прочие «свои XXX но только лучше». То есть взял за основу С++ и «улучшил». А то что его в принципе брать не надо было...

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

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

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

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

>ну так надо его продвигать значит?

году этак в 2000 - может быть. Сейчас он уже сильно опоздал.

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

> В жабской рассылке просто поражает засилие перлов вида «а поймут ли люди такую сложную конструкцию как лямбда».

Может, их просто запугали страшилками про вещи вроде монад или континуаций? Мол, надо знать теорию категорий... :)

возможности вводит числа с пробелами - а как же номера телефонов так удобнее вводить

Твою мать... И эти люди разрабатывают языки?

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

> А учитывая какой «важной» херней они страдают вроде возможности вводит числа с пробелами

У вас не осталось ссылки? Хочу своими глазами увидеть.

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

>Может, их просто запугали страшилками про вещи вроде монад или континуаций?

Если бы. Они перед написанием лямбд даже не удосужились посмотреть вокруг на другие языки. А Джон Роуз даже мантру изобрел чтобы это обосновать «мы не будем делать фичь потому что у других есть такие фичи». В результате изобретение синтаксиса лямбды - это было просто эпически. Особено когда вещи которые решены даже в С# обявлялись «эпическими нерешаемыми проблемами».

Твою мать... И эти люди разрабатывают языки?


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

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

> и нужен - это не значит что «я собрал компилятор, ура», нужны ide, инструменты для тестирования, профилирования etc., по крайней мере некоторое время назад с этим было довольно туго

emacs давно кроссплатформенный

не-не-не, уж лучше eclipse (хотя попробовать можно, конечно)

> и да, меня смущает зоопарк компиляторов

Ну, что я могу сделать-то?

я Вам ничего делать и не предлагал :) что характерно

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

> почему теоретически, мне нужен практически, сейчас под проект, платформы: Solaris, Windows, Linux

Они есть под все эти платформы.

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

лучше в таком разе java + clojure, меньше напрягает

> и нужен - это не значит что «я собрал компилятор, ура», нужны ide, инструменты для тестирования, профилирования etc., по крайней мере некоторое время назад с этим было довольно туго

Только вот IDE нормальной нет, а тестирование есть уже давно, вот недавно вышел фреймворк для тестирования, и ещё один для бенчмарков. Поддержка профилирования тоже хорошая: HPC, ThreadScope.

ну, посмотрим провентилируем :)

> и да, меня смущает зоопарк компиляторов

GHC — пока единственный «серьёзный» компялятор. Hugs не умеет в объектный код, В YHC много чего нет. Остальные вообще больше исследовательские. Не знаю, где вы там увидели зоопарк..

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

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

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

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

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

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

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

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

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

Да нет, у них там основные платформы в Tier 1. То есть они гарантируют работоспособность на них.

Кроме того, сейчас ведётся работа над LLVM-бэкендом. Результаты многообещающие.

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

Не понял сути. Куда он денется-то? :) Ну, если станет популярнее, то появятся ещё, как было с Sun JDK -> OpenJDK, или .NET -> Mono. Впрочем, GHC изначально под BSD.

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

Исключения отлавливаются тестами.

только не надо забывать что 100% покрытия тестами кода не существует по объективным причинам :)

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

> Поддержка профилирования тоже хорошая: HPC, ThreadScope.

То есть HPC — это для проверки покрытия тестами, а профилироание в GHC есть из коробки. Нужны варианты, собранные с ключом -prof. Там в мануале всё есть.

P.S. ThreadScope: классная штука для многопоточных программ.

anonymous ()

Лет через 40, наконец, осилят С#.

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

> И использование исключений эту «понимабельность» улучшает :)

Согласен, но ухудшает рефакторинг.

В больших проектах важно второе. В маленьких первое.

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

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

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

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