Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
34 / 0 / 1
Регистрация: 19.08.2013
Сообщений: 246
1

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

27.07.2014, 12:19. Показов 2642. Ответов 37
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
какие есть компиляторы c++ без изменения синтаксиса?
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.07.2014, 12:19
Ответы с готовыми решениями:

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

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

Какие компиляторы вам известны?
Какие компиляторы языка С вам известны? Опишите их особенности

Какие компиляторы (или среды) поддерживают с++ 11?
У меня wxDev c++ билд 7.4. я понятия не имею какой там с++. компиляторы от default GCC до default...

37
0x10
28.07.2014, 20:15     Какие есть компиляторы c++ без изменения синтаксиса
  #21

Не по теме:

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

0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
28.07.2014, 21:10 22
Цитата Сообщение от CyberSolver Посмотреть сообщение
Запретить, конечно, не может. Но если они изменят семантику, к примеру, try-catch, можно сразу и навсегда выкинуть сие... хм, поделие на мороз.
Понятие "расширение" подразумевает введение дополнений, а не изменение существующих конструкций

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

Цитата Сообщение от Toshkarik Посмотреть сообщение
Одно дело, когда функция/оператор существует лишь для реализации компилятора и стандартной библиотеки, и другое, когда их делают для использования сторонними разработчиками. typeof и __typeof__, как мне кажется, наглядный пример
Это не так. Этим расширением пользуется множество разработчиков, выпускающих программные продукты, которые поставляют дополнительные хидеры. Т.е. разработчики библиотек. А так же разработчики ядра линукса (потому что ядро поставляет множество инклюдов в user-space). А может кто-то ещё. В любом случае новичок, увидевший где-то использование typeof и попробовавший его на gcc, далеко на сразу поймёт, что сие есть расширение языка C, а не стандартный C
0
1181 / 894 / 94
Регистрация: 03.08.2011
Сообщений: 2,461
28.07.2014, 21:15 23
Видать, опять неправильно поняли. Я имел ввиду, что typeof - расширение для сторонних разработчиков, а __typeof__ - для внутренней реализации. Хоть они и выполняют одно и то же. Возможно, даже один является макросом другого.
0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
28.07.2014, 22:51 24
Нет. Точно так же __typeof__'ом пользуются все. К тому же glibc (которая является системной библиотекой) НЕ является частью компилятора. Как минимум это говорит о том, что __typeof__ - это не внутреннее расширение, а для широкого использования

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

Может, кто-то поделится примерами из практики?
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
29.07.2014, 07:55 26
Цитата Сообщение от CyberSolver Посмотреть сообщение
я ещё не встретил в жизни ситуации, когда мне позарез нужны были расширения компилятора
В большей части прикладного кода они и не встетятся.
Пример из стандартной библиотеки - реализация type_traits.
http://en.cppreference.com/w/cpp/types
https://gcc.gnu.org/onlinedocs... ype-Traits
0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
29.07.2014, 09:06 27
Цитата Сообщение от CyberSolver Посмотреть сообщение
Как же принцип мира Unix: жертвуй производительностью ради переносимости?
Сколько десятилетий назад провозгласили этот принцип? И насколько с тех пор изменился мир? И вообще, были ли в то время такие понятия, как "задача реального времени"?
0
102 / 75 / 17
Регистрация: 23.07.2014
Сообщений: 877
Записей в блоге: 1
29.07.2014, 19:19 28
Цитата Сообщение от 0x10 Посмотреть сообщение
Пример из стандартной библиотеки - реализация type_traits.
Ээээээ. Ну кагбэ Александреску всё это сделал 100500 лет назад в своей Loki. На том же cpprefernece Possible implementation почти копирует его код (ну кроме всяких remove_reference). Так что мимо.

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

Так что мало того что всё это не требует никаких расширений компилятора вообще, так и возникает вопрос: а зачем вам столько информации о типах на этапе компиляции?
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
29.07.2014, 19:39 31
Цитата Сообщение от Evg Посмотреть сообщение
И вообще, были ли в то время такие понятия, как "задача реального времени"?
В то время были ОС реального времени .
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
29.07.2014, 19:42 32
Цитата Сообщение от CyberSolver Посмотреть сообщение
Так что мало того что всё это не требует никаких расширений компилятора вообще,
Я говорю об обратном - некоторые трейтсы требуют поддержки компилятора.
Цитата Сообщение от CyberSolver Посмотреть сообщение
а зачем вам столько информации о типах на этапе компиляции?
Повторю то, что уже говорил выше: это может быть неочевидно для прикладного программиста. Я не писал библиотечный код, а потому не могу привести конкретные примеры применимости.
0
102 / 75 / 17
Регистрация: 23.07.2014
Сообщений: 877
Записей в блоге: 1
29.07.2014, 19:52 33
Цитата Сообщение от 0x10 Посмотреть сообщение
Я говорю об обратном - некоторые трейтсы требуют поддержки компилятора.
Это какие?
Цитата Сообщение от 0x10 Посмотреть сообщение
Повторю то, что уже говорил выше: это может быть неочевидно для прикладного программиста.
Может, я дурак, но что кому неочевидно?
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
29.07.2014, 19:57 34
Цитата Сообщение от CyberSolver Посмотреть сообщение
Это какие?
http://www.boost.org/doc/libs/... uctor.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-конструкторы не бросают исключений. Кажется нормальным вариантом для оптимизации.
0
5231 / 3204 / 362
Регистрация: 12.12.2009
Сообщений: 8,113
Записей в блоге: 2
29.07.2014, 20:27 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
}
0
102 / 75 / 17
Регистрация: 23.07.2014
Сообщений: 877
Записей в блоге: 1
29.07.2014, 20:39 36
Цитата Сообщение от Kastaneda Посмотреть сообщение
Живой пример
Ну вот примерно так бы и обернул, хотя бы define'ами.
0
Evg
Эксперт CАвтор FAQ
21279 / 8301 / 637
Регистрация: 30.03.2009
Сообщений: 22,659
Записей в блоге: 30
29.07.2014, 22:40 37
Цитата Сообщение от CyberSolver Посмотреть сообщение
Нинасколько. Всё так же Си, всё те же яйца
Только вот процессора сильно поменялись в своём внутреннем устройстве. Если раньше достаточно было повысить частоту в два раза, после чего программа начинала работать в два раза быстрее, то сейчас это уже не так. Процессоры стали сложнее, а потому стало сложнее писать под них оптимальный код. Далеко не всегда получается это сделать на чистом языке без использования расширений. Я уж не говорю о том, что приличная доля вычислений перетекла с CPU на GPU, где чистый язык вообще мало канает

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

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

Цитата Сообщение от uglyPinokkio Посмотреть сообщение
В то время были ОС реального времени
И что, они писались на чистом (стандартном) языке программирования без расширений? А ведь именно в контексте использования расширений и начался спор
0
327 / 230 / 55
Регистрация: 30.05.2014
Сообщений: 682
30.07.2014, 06:07 38
Цитата Сообщение от Evg Посмотреть сообщение
И что, они писались на чистом (стандартном) языке программирования без расширений?
О задачах реального времени имеет смысл говорить только применительно к ОС реального времени, а это ниша довольно специфическая. RT11 помнится была написана на ассемблере. А в целом вполне очевидно, что есть задачи, для которых производительность важнее переносимости, иначе вот этого: https://software.intel.com/sit... sicsGuide/ бы не было.
0
30.07.2014, 06:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.07.2014, 06:07
Помогаю со студенческими работами здесь

Какие есть сборки для установки без компиляции?
Есть ли какие-нибудь сборки для моментальной установки без сборки оси? Мне как новичку сложно с...

Какие вы знаете компиляторы, которые жестко контролируют, чтобы не было вставок из C++
Многие (чуть ли не все) компиляторы не контролируют, является ли программа смесью языков Си и С++....

Есть ли какие-нибудь редакторы HTML, которые позваляют без всяких заморочек привязывать БД к страницам?
Есть ли какие-нибудь редакторы HTML, которые позваляют без всяких заморочек привязывать БД к...

Есть ли онлайн компиляторы APK?
Декомпиляторы нашел. Про компиляторы инет молчит- надо устанавливать прогу? (просто я сейчас на...


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

Или воспользуйтесь поиском по форуму:
38
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru