Форум программистов, компьютерный форум CyberForum.ru

Какие есть компиляторы c++ без изменения синтаксиса - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
kaheu
 Аватар для kaheu
34 / 0 / 0
Регистрация: 19.08.2013
Сообщений: 246
27.07.2014, 12:19     Какие есть компиляторы c++ без изменения синтаксиса #1
какие есть компиляторы c++ без изменения синтаксиса?
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.07.2014, 12:19     Какие есть компиляторы c++ без изменения синтаксиса
Посмотрите здесь:

Инкапсулировать без серьезного изменения..возможно ли? C++
Определить, какие из этих имен встречаются во всех классах, какие есть хотя бы в двух классах, и какие - только в одном классе C++
Возможно ли как-то в Visual Studio 2010 проверять есть ли утечки памяти? Может есть какие-то специальные плагины для этого? C++
C++ Какие книги есть по Си++?
как узнать какие изменения произошли в 2 документах C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
28.07.2014, 20:15     Какие есть компиляторы c++ без изменения синтаксиса
  #21

Не по теме:

Цитата Сообщение от CyberSolver Посмотреть сообщение
Топикстартер ведь говорил про расширение языка в смысле изменения семантики
По постам автора, я не уверен, что он сам знает о чем говорит.

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16828 / 5249 / 321
Регистрация: 30.03.2009
Сообщений: 14,136
Записей в блоге: 26
28.07.2014, 21:10     Какие есть компиляторы c++ без изменения синтаксиса #22
Цитата Сообщение от CyberSolver Посмотреть сообщение
Запретить, конечно, не может. Но если они изменят семантику, к примеру, try-catch, можно сразу и навсегда выкинуть сие... хм, поделие на мороз.
Понятие "расширение" подразумевает введение дополнений, а не изменение существующих конструкций

Цитата Сообщение от CyberSolver Посмотреть сообщение
Вообще, это было первое, чему меня научили в Си++ (раньше чем using namespace std; ) - всё, что non-standart, - сразу в топку. А в стандарте ясно написано: любые изменения стандарта автоматически non-standart (привет, кэпы из ISO).
Об чём и идёт речь с самого начала. Вопрос только в том, что такое non-standard. Для эксперта этот вопрос затруднений не вызывает. А новичку далеко не сразу и не везде понятно, что есть стандарт, а что нет. Потому ТС и спросил, как сие возможно проконтролировать в автоматическом режиме, а не в режиме постоянного чтения стандартов

Цитата Сообщение от Toshkarik Посмотреть сообщение
Одно дело, когда функция/оператор существует лишь для реализации компилятора и стандартной библиотеки, и другое, когда их делают для использования сторонними разработчиками. typeof и __typeof__, как мне кажется, наглядный пример
Это не так. Этим расширением пользуется множество разработчиков, выпускающих программные продукты, которые поставляют дополнительные хидеры. Т.е. разработчики библиотек. А так же разработчики ядра линукса (потому что ядро поставляет множество инклюдов в user-space). А может кто-то ещё. В любом случае новичок, увидевший где-то использование typeof и попробовавший его на gcc, далеко на сразу поймёт, что сие есть расширение языка C, а не стандартный C
Toshkarik
 Аватар для Toshkarik
1139 / 856 / 50
Регистрация: 03.08.2011
Сообщений: 2,381
Завершенные тесты: 1
28.07.2014, 21:15     Какие есть компиляторы c++ без изменения синтаксиса #23
Видать, опять неправильно поняли. Я имел ввиду, что typeof - расширение для сторонних разработчиков, а __typeof__ - для внутренней реализации. Хоть они и выполняют одно и то же. Возможно, даже один является макросом другого.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16828 / 5249 / 321
Регистрация: 30.03.2009
Сообщений: 14,136
Записей в блоге: 26
28.07.2014, 22:51     Какие есть компиляторы c++ без изменения синтаксиса #24
Нет. Точно так же __typeof__'ом пользуются все. К тому же glibc (которая является системной библиотекой) НЕ является частью компилятора. Как минимум это говорит о том, что __typeof__ - это не внутреннее расширение, а для широкого использования

Добавлено через 1 час 27 минут
Цитата Сообщение от CyberSolver Посмотреть сообщение
Топикстартер ведь говорил про расширение языка в смысле изменения семантики
К слову говоря, такого он вовсе не говорил. Это уже ты за него придумал
CyberSolver
 Аватар для CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 686
Записей в блоге: 1
29.07.2014, 06:42     Какие есть компиляторы c++ без изменения синтаксиса #25
Цитата Сообщение от Evg Посмотреть сообщение
К слову говоря, такого он вовсе не говорил. Это уже ты за него придумал
Цитата Сообщение от 0x10 Посмотреть сообщение
Не по теме:
Сообщение от CyberSolver
Топикстартер ведь говорил про расширение языка в смысле изменения семантики
По постам автора, я не уверен, что он сам знает о чем говорит.
По поводу гнусных расширений и не только - я бы использовал только в каких-то библиотечных файлах для оптимизации (для чего-то эти расширения же придумали). Но я бы их обернул во что-то, что хотя бы потенциально может быть перенесено на другие платформы. Про glibc и linux kernel - поскольку конечный юзер напрямую их почти не использует (а если использует, явно понимает, что к чему), пусть пишут там что душе угодно. Но по мне так это порочная практика. Как же принцип мира Unix: жертвуй производительностью ради переносимости? gcc со своими расширениями, конечно, переносимый, но это какая-то узкая трактовка понятия "переносимость". Ну и может я ламер, но я ещё не встретил в жизни ситуации, когда мне позарез нужны были расширения компилятора.

Может, кто-то поделится примерами из практики?
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
29.07.2014, 07:55     Какие есть компиляторы c++ без изменения синтаксиса #26
Цитата Сообщение от CyberSolver Посмотреть сообщение
я ещё не встретил в жизни ситуации, когда мне позарез нужны были расширения компилятора
В большей части прикладного кода они и не встетятся.
Пример из стандартной библиотеки - реализация type_traits.
http://en.cppreference.com/w/cpp/types
https://gcc.gnu.org/onlinedocs/gcc/T...ml#Type-Traits
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16828 / 5249 / 321
Регистрация: 30.03.2009
Сообщений: 14,136
Записей в блоге: 26
29.07.2014, 09:06     Какие есть компиляторы c++ без изменения синтаксиса #27
Цитата Сообщение от CyberSolver Посмотреть сообщение
Как же принцип мира Unix: жертвуй производительностью ради переносимости?
Сколько десятилетий назад провозгласили этот принцип? И насколько с тех пор изменился мир? И вообще, были ли в то время такие понятия, как "задача реального времени"?
CyberSolver
 Аватар для CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 686
Записей в блоге: 1
29.07.2014, 19:19     Какие есть компиляторы c++ без изменения синтаксиса #28
Цитата Сообщение от 0x10 Посмотреть сообщение
Пример из стандартной библиотеки - реализация type_traits.
Ээээээ. Ну кагбэ Александреску всё это сделал 100500 лет назад в своей Loki. На том же cpprefernece Possible implementation почти копирует его код (ну кроме всяких remove_reference). Так что мимо.

Добавлено через 6 минут
Цитата Сообщение от Evg Посмотреть сообщение
Сколько десятилетий назад провозгласили этот принцип?
Примерно 40. Фортрану поболе будет. Да и Лиспу. Думаю, постарше вас.
Цитата Сообщение от Evg Посмотреть сообщение
И насколько с тех пор изменился мир?
Нинасколько. Всё так же Си, всё те же яйца. Только теперь куча придурков решило: раз венда - это 90% рынка, а она только под Intel, то и нафиг все эти ваши Linux и ARM. Дружно все пишем на шарпе. Или уэб-интерфейсы. А хто самый умный, тому невероятно переносимая Java.
Цитата Сообщение от Evg Посмотреть сообщение
вообще, были ли в то время такие понятия, как "задача реального времени"?
=-O Вы меня, конечно, извините, но вы вроде эксперт Си++, а морозите какую-то чушь.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
29.07.2014, 19:26     Какие есть компиляторы c++ без изменения синтаксиса #29
Цитата Сообщение от CyberSolver Посмотреть сообщение
ну кроме всяких
Я и не сказал, что трейтсы должны быть на 100% реализованы на расширениях компилятора. Часть их используют (has_trivial_[constructor|destructor|etc...])
CyberSolver
 Аватар для CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 686
Записей в блоге: 1
29.07.2014, 19:34     Какие есть компиляторы c++ без изменения синтаксиса #30
Цитата Сообщение от 0x10 Посмотреть сообщение
Я и не сказал, что трейтсы должны быть на 100% реализованы на расширениях компилятора.
Вообще, про то и речь: все traits давно реализованы на чистых шаблонах уже лет 10-15 как. Здесь та же ситуация, что с Boost: творения всяких маньяков типа Александреску попадают в стандарт. (Даже странно, что в Си++11/14 не добавили сериализацию, в бусте давно есть).

Так что мало того что всё это не требует никаких расширений компилятора вообще, так и возникает вопрос: а зачем вам столько информации о типах на этапе компиляции?
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
29.07.2014, 19:39     Какие есть компиляторы c++ без изменения синтаксиса #31
Цитата Сообщение от Evg Посмотреть сообщение
И вообще, были ли в то время такие понятия, как "задача реального времени"?
В то время были ОС реального времени .
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
29.07.2014, 19:42     Какие есть компиляторы c++ без изменения синтаксиса #32
Цитата Сообщение от CyberSolver Посмотреть сообщение
Так что мало того что всё это не требует никаких расширений компилятора вообще,
Я говорю об обратном - некоторые трейтсы требуют поддержки компилятора.
Цитата Сообщение от CyberSolver Посмотреть сообщение
а зачем вам столько информации о типах на этапе компиляции?
Повторю то, что уже говорил выше: это может быть неочевидно для прикладного программиста. Я не писал библиотечный код, а потому не могу привести конкретные примеры применимости.
CyberSolver
 Аватар для CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 686
Записей в блоге: 1
29.07.2014, 19:52     Какие есть компиляторы c++ без изменения синтаксиса #33
Цитата Сообщение от 0x10 Посмотреть сообщение
Я говорю об обратном - некоторые трейтсы требуют поддержки компилятора.
Это какие?
Цитата Сообщение от 0x10 Посмотреть сообщение
Повторю то, что уже говорил выше: это может быть неочевидно для прикладного программиста.
Может, я дурак, но что кому неочевидно?
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
29.07.2014, 19:57     Какие есть компиляторы c++ без изменения синтаксиса #34
Цитата Сообщение от CyberSolver Посмотреть сообщение
Это какие?
http://www.boost.org/doc/libs/1_54_0...nstructor.html
Without some (as yet unspecified) help from the compiler, has_trivial_constructor will never report that a user-defined class or struct has a trivial constructor;
Просмотр всех остальных оставляю по желанию, сам не искал.

Цитата Сообщение от CyberSolver Посмотреть сообщение
Может, я дурак, но что кому неочевидно?
Прикладному программисту может быть неочевидно "зачем столько информации о типах на этапе компиляции". Сходу мне придумывается оптимизация функции типа push_back: при перевыделении памяти переместить объекты из старой памяти в новую безопасно можно только если их move-конструкторы не бросают исключений. Кажется нормальным вариантом для оптимизации.
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4237 / 2770 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
29.07.2014, 20:27     Какие есть компиляторы c++ без изменения синтаксиса #35
Цитата Сообщение от CyberSolver Посмотреть сообщение
По поводу гнусных расширений и не только - я бы использовал только в каких-то библиотечных файлах для оптимизации (для чего-то эти расширения же придумали).
Если разработака ведется именно под Linux, то бывает эти расширения во всю используются.
Цитата Сообщение от CyberSolver Посмотреть сообщение
Но я бы их обернул во что-то, что хотя бы потенциально может быть перенесено на другие платформы.
Живой пример (из OpenJDK)
C++
1
2
3
4
5
6
7
8
9
10
11
#ifdef __GNUC__
#define LIKELY(x) __builtin_expect((x),1)
#define UNLIKELY(x) __builtin_expect((x),0)
#else
#define LIKELY(x) (x)
#define UNLIKELY(x) (x)
#endif
 
if (LIKELY(ptr != NULL) {
    // code
}
CyberSolver
 Аватар для CyberSolver
101 / 74 / 17
Регистрация: 23.07.2014
Сообщений: 686
Записей в блоге: 1
29.07.2014, 20:39     Какие есть компиляторы c++ без изменения синтаксиса #36
Цитата Сообщение от Kastaneda Посмотреть сообщение
Живой пример
Ну вот примерно так бы и обернул, хотя бы define'ами.
Evg
Эксперт С++Автор FAQ
 Аватар для Evg
16828 / 5249 / 321
Регистрация: 30.03.2009
Сообщений: 14,136
Записей в блоге: 26
29.07.2014, 22:40     Какие есть компиляторы c++ без изменения синтаксиса #37
Цитата Сообщение от CyberSolver Посмотреть сообщение
Нинасколько. Всё так же Си, всё те же яйца
Только вот процессора сильно поменялись в своём внутреннем устройстве. Если раньше достаточно было повысить частоту в два раза, после чего программа начинала работать в два раза быстрее, то сейчас это уже не так. Процессоры стали сложнее, а потому стало сложнее писать под них оптимальный код. Далеко не всегда получается это сделать на чистом языке без использования расширений. Я уж не говорю о том, что приличная доля вычислений перетекла с CPU на GPU, где чистый язык вообще мало канает

Цитата Сообщение от CyberSolver Посмотреть сообщение
Только теперь куча придурков решило: раз венда - это 90% рынка, а она только под Intel, то и нафиг все эти ваши Linux и ARM
Опять-таки мало понятно, откуда ты такую ересь высасываешь. Есть конкретное приложение, работающее под вполне себе конкретной системой, к которой ставится вполне себе нехилое требование - миллион транзакций в секунду. Все доводы из разряда "жертвуй производительностью ради переносимости" идут лесом как минимум потому, что переносимость нафиг никому не нужна при такой постановке задачи. Понятно, что всегда нужно по возможности стараться писать максимально переносимый код, но когда из принципа начинает уродоваться программа из соображений "пусть в 10 раз медленнее, зато строго по стандарту", то это такой же маразм диванных теоретиков, как "программирование без goto".

Цитата Сообщение от CyberSolver Посмотреть сообщение
Вы меня, конечно, извините, но вы вроде эксперт Си++, а морозите какую-то чушь
В каком конкретно месте чушь и в чём она выражается?

Цитата Сообщение от uglyPinokkio Посмотреть сообщение
В то время были ОС реального времени
И что, они писались на чистом (стандартном) языке программирования без расширений? А ведь именно в контексте использования расширений и начался спор
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.07.2014, 06:07     Какие есть компиляторы c++ без изменения синтаксиса
Еще ссылки по теме:

Компиляторы. Какие преимущества между "кнопкой" и консолью? C++
Какие есть GUI библиотеки для c++ C++
Какие независимые друг от друга изменения позволят коду отработать корректно? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
uglyPinokkio
325 / 228 / 41
Регистрация: 30.05.2014
Сообщений: 682
30.07.2014, 06:07     Какие есть компиляторы c++ без изменения синтаксиса #38
Цитата Сообщение от Evg Посмотреть сообщение
И что, они писались на чистом (стандартном) языке программирования без расширений?
О задачах реального времени имеет смысл говорить только применительно к ОС реального времени, а это ниша довольно специфическая. RT11 помнится была написана на ассемблере. А в целом вполне очевидно, что есть задачи, для которых производительность важнее переносимости, иначе вот этого: https://software.intel.com/sites/lan...trinsicsGuide/ бы не было.
Yandex
Объявления
30.07.2014, 06:07     Какие есть компиляторы c++ без изменения синтаксиса
Ответ Создать тему
Опции темы

Текущее время: 11:37. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru