О компиляторах вообще и C/C++, в частности (компиляторы годные и не очень)
Модератор: Модераторы разделов
-
- Модератор
- Сообщения: 21245
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: О компиляторах вообще и C/C++, в частности
allez поделил Delphi на 0?
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: О компиляторах вообще и C/C++, в частности
угу. Именно так.
ну я и сказал: g++. А в мне про "Мойшу". Давайте конкретно, что там не по феншую? В каком месте и какому стандарту "не соответствует"? И если можно, то без буквоедства, я надеюсь вы понимаете, что время не стоит на месте, а вот стандарт обязан быть неизменным.
-
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: О компиляторах вообще и C/C++, в частности
serzh-z
и что?
где тут написано: "g++ не умеет стандарт"?
и что?
2.2 C++ language
GCC supports the original ISO C++ standard (1998) and contains experimental support for the second ISO C++ standard (2011).
The original ISO C++ standard was published as the ISO standard (ISO/IEC 14882:1998) and amended by a Technical Corrigenda published in 2003 (ISO/IEC 14882:2003). These standards are referred to as C++98 and C++03, respectively. GCC implements the majority of C++98 (export is a notable exception) and most of the changes in C++03. To select this standard in GCC, use one of the options -ansi, -std=c++98, or -std=c++03; to obtain all the diagnostics required by the standard, you should also specify -pedantic (or -pedantic-errors if you want them to be errors rather than warnings).
A revised ISO C++ standard was published in 2011 as ISO/IEC 14882:2011, and is referred to as C++11; before its publication it was commonly referred to as C++0x. C++11 contains several changes to the C++ language, most of which have been implemented in an experimental C++11 mode in GCC. For information regarding the C++11 features available in the experimental C++11 mode, see http://gcc.gnu.org/projects/cxx0x.html. To select this standard in GCC, use the option -std=c++11; to obtain all the diagnostics required by the standard, you should also specify -pedantic (or -pedantic-errors if you want them to be errors rather than warnings).
More information about the C++ standards is available on the ISO C++ committee's web site at http://www.open-std.org/jtc1/sc22/wg21/.
By default, GCC provides some extensions to the C++ language; See Options Controlling C++ Dialect. Use of the -std option listed above will disable these extensions. You may also select an extended version of the C++ language explicitly with -std=gnu++98 (for C++98 with GNU extensions) or -std=gnu++11 (for C++11 with GNU extensions). The default, if no C++ language dialect options are given, is -std=gnu++98.
где тут написано: "g++ не умеет стандарт"?
-
- Сообщения: 1354
Re: О компиляторах вообще и C/C++, в частности
fflatx
все течет, все меняется. Вот и это утверждение более 7 лет как ложно: "в справочной системе название "Object Pascal" для языка фигурирует на равных правах с названием "Дельфи", а вы поезда под откос все пускаете.
все течет, все меняется. Вот и это утверждение более 7 лет как ложно: "в справочной системе название "Object Pascal" для языка фигурирует на равных правах с названием "Дельфи", а вы поезда под откос все пускаете.
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: О компиляторах вообще и C/C++, в частности
fflatx
ну раз тебе так ценно моё мнение, то попытаюсь объяснить, и дать совет:
Как это всё происходит в сишечке.
У программистов всегда есть соблазн добавить в ЯП что-то своё. Это нормально, в конце концов это их работа. В голом C/C++ ничего нет. Ну т.е. ваще ничего. В C++ нет даже типов данных, их нужно самостоятельно придумывать, или юзать чужие.
Стандарт в сишечке == это сборник устоявшихся идиом языка. Вроде как в русском языке -- орфография. Писать надо "корова", а не "карова". Компилятор == переводчик. Он обязан понимать "корова", ибо Розенталь. Слово "карова" он понимать не обязан. Не более и не менее. Т.е. может и понять, но будет лучше, если тактично сообщит автору о досадной опечатке.
Что касается нестандартных расширений, то это как для русского языка -- сленг. Можно сказать "ну воткнул я ещё 500 метров рамы", и это будет правильно. Хотя в русском слово "рама" вообще-то единственного числа, и фраза с т.з. русского неграмотна. Однако, в данном случае "рама" -- совершенно другое слово, и никакого отношения к СНиПам не имеет. Потому на это слово действуют совсем другие правила. В общем случае, переводчик может и неправильно переводить сленг, ежели он не в теме. Также и и специализированные компиляторы часто умеют такой "сленг", который действует только в специальных случаях. Например в OS Windows. Некоторые расширения со временем попадают в стандарт, а некоторые -- увы.
Что касается советов, то я-бы порекомендовал писать по стандарту, потому, что это решает множество проблем. Если ты написал нестандартную ерунду, то не факт, что завтра она будет работать точно также. А если по стандарту, то всё нормально будет.
Также, как и в русском, в сишечке есть UB. Например в русском UB это "хеширование". Или "хэширование". Розенталь этого не объяснил. В этом случаае следует
1. попытаться не использовать данную идиому, даже если очень хочется. Даже если сегодня она даёт профит скажем в скорости, то завтра может и поломаться вовсе. Скорость разумнее увеличивать путём выбора более быстрого CPU, а не путём кривого быдлокода.
2. если это неизбежно, следует написать комментарий, в котором объяснить, почему данный быдлокод необходим. Для себя, блжад!
3. Если ты начал писать "хеш", то и пиши уж "хеш", но никак НЕ "хэш". Если нет чужого стандарта, придерживайся хотя-бы своего.
4. Следи за развитием стандарта. Будь готов к тому, что слово "хэш" стандартизируют. И да, придётся у себя всё исправлять (что не сложно, если ты выполнил п3).
5. Помни о том, что нестандартный код выполняется как угодно. Т.е. нестандартный код == баг и дыра. Ибо враг может сделать с твоим кодом всё, что пожелает.
Ну а компилятор обязан придерживаться стандарта. Встретив нестандартную конструкцию компилятор тебе ничего не обязан. Но хороший компилятор может предупредить об ошибке.
PS: и да. Борланд == маздай, В маздае свои стандарты. Которых нет. Т.ч. спор о том, является-ли борланд стандартным == деление на ноль. Социальная олимпиада.
ну раз тебе так ценно моё мнение, то попытаюсь объяснить, и дать совет:
Как это всё происходит в сишечке.
У программистов всегда есть соблазн добавить в ЯП что-то своё. Это нормально, в конце концов это их работа. В голом C/C++ ничего нет. Ну т.е. ваще ничего. В C++ нет даже типов данных, их нужно самостоятельно придумывать, или юзать чужие.
Стандарт в сишечке == это сборник устоявшихся идиом языка. Вроде как в русском языке -- орфография. Писать надо "корова", а не "карова". Компилятор == переводчик. Он обязан понимать "корова", ибо Розенталь. Слово "карова" он понимать не обязан. Не более и не менее. Т.е. может и понять, но будет лучше, если тактично сообщит автору о досадной опечатке.
Что касается нестандартных расширений, то это как для русского языка -- сленг. Можно сказать "ну воткнул я ещё 500 метров рамы", и это будет правильно. Хотя в русском слово "рама" вообще-то единственного числа, и фраза с т.з. русского неграмотна. Однако, в данном случае "рама" -- совершенно другое слово, и никакого отношения к СНиПам не имеет. Потому на это слово действуют совсем другие правила. В общем случае, переводчик может и неправильно переводить сленг, ежели он не в теме. Также и и специализированные компиляторы часто умеют такой "сленг", который действует только в специальных случаях. Например в OS Windows. Некоторые расширения со временем попадают в стандарт, а некоторые -- увы.
Что касается советов, то я-бы порекомендовал писать по стандарту, потому, что это решает множество проблем. Если ты написал нестандартную ерунду, то не факт, что завтра она будет работать точно также. А если по стандарту, то всё нормально будет.
Также, как и в русском, в сишечке есть UB. Например в русском UB это "хеширование". Или "хэширование". Розенталь этого не объяснил. В этом случаае следует
1. попытаться не использовать данную идиому, даже если очень хочется. Даже если сегодня она даёт профит скажем в скорости, то завтра может и поломаться вовсе. Скорость разумнее увеличивать путём выбора более быстрого CPU, а не путём кривого быдлокода.
2. если это неизбежно, следует написать комментарий, в котором объяснить, почему данный быдлокод необходим. Для себя, блжад!
3. Если ты начал писать "хеш", то и пиши уж "хеш", но никак НЕ "хэш". Если нет чужого стандарта, придерживайся хотя-бы своего.
4. Следи за развитием стандарта. Будь готов к тому, что слово "хэш" стандартизируют. И да, придётся у себя всё исправлять (что не сложно, если ты выполнил п3).
5. Помни о том, что нестандартный код выполняется как угодно. Т.е. нестандартный код == баг и дыра. Ибо враг может сделать с твоим кодом всё, что пожелает.
Ну а компилятор обязан придерживаться стандарта. Встретив нестандартную конструкцию компилятор тебе ничего не обязан. Но хороший компилятор может предупредить об ошибке.
PS: и да. Борланд == маздай, В маздае свои стандарты. Которых нет. Т.ч. спор о том, является-ли борланд стандартным == деление на ноль. Социальная олимпиада.
-
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: О компиляторах вообще и C/C++, в частности
Ничего подобного. Я только на прошлой неделе помогал студентам с Дельфи.
Использовалась Дельфи 7. И справочная система, в том числе.
Если верить вики, то именно начиная с Дельфи 7 в обращение вошёл "язык Дельфи". Так вот Object Pascal там упоминается, вполне нормально. Наряду с "языком Дельфи".
Более поздние версии я, конечно, не видел, но я про них и не говорю.
-
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: О компиляторах вообще и C/C++, в частности
ну это 98й, т.к. устарел уже, и не актуальный. К тому же некоторые фичи там AFAIK противоречат более поздним стандартам, и не очень понятно, кому и зачем делать поддержку того, что давно пора закопать?
-
- Сообщения: 1354
Re: О компиляторах вообще и C/C++, в частности
Delphi 7 выпущен 09 августа 2002.
Октябрь 2004 -- http://www.win.tue.nl/~wstomv/edu/delphi/D...nguageGuide.pdf
И, строго говоря, с появлением class употребление названия Object Pascal можно считать не более, чем традицией, которой начали "класть конец" с выходом Delphi 7. Итак, чем же плохо назвать книгу программирование на языке Delphi, когда производитель называет то, о чем идёт речь в книге "The Delhi Language"?
Или речь о событиях до 09.08.2002?
Не спешите судить, попробуйте сперва немного разобраться, подвергните своё безусловно правильное мнение толике сомнения, польза обязательно будет.
-
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: О компиляторах вообще и C/C++, в частности
Плохо то, создаётся путаница. Преподаватель в своём пособии не упоминает о том,что язык "Дельфи" - диалект языка "Object Pascal".bormant писал(а): ↑21.01.2014 14:55И, строго говоря, с появлением class употребление названия Object Pascal можно считать не более, чем традицией, которой начали "класть конец" с выходом Delphi 7. Итак, чем же плохо назвать книгу программирование на языке Delphi, когда производитель называет то, о чем идёт речь в книге "The Delhi Language"?
То есть, в названии - язык Дельфи, а по сути Object Pascal.
Ну, как Вам сказать... Я с Дельфи познакомился в 2003. Так что - да, до появления той книги, на которую вы дали ссылку.
И факт переименования языка прошёл мимо нас. Ибо среда Delphi7 уже была и не менялась.
В каком же году упомянутый преподаватель свое пособие сотворил - не обратил внимания. Возможно, что и позже.
В Delphi6 язык был Object Pascal, а в Delphi7 этот же язык стал называться "Delphi". Из существенных различий заметно только появление .NET.
И теперь, когда говорят "Дельфи" - непонятно, что имеют в виду - среду или язык.
И когда человек скажет: Я пишу на Delphi, опять же непонятно, действительно ли он использует новшества языка "Delphi" (вроде той же .NET) или у него вообще Delphi6 и пишет он на самом деле на Object Pascal.
Ну и в справочной системе, как я уже сказал, Object Pascal присутствует, опять же создаётся путаница.
Это ещё откуда? Я свое мнение "безусловно правильным" никогда не считал. Вот уж чего нет, того нет.
Я всего лишь человек и могу ошибаться, так же как и все.
-
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: О компиляторах вообще и C/C++, в частности
ОК. С C++11 ситуация намного хуже. Даже у CLang, ниболее полно его поддерживающим, не всё хорошо.
Закопать C++98? Мне кажется, нам больше не о чём тут разговаривать. =))
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: О компиляторах вообще и C/C++, в частности
потому что он совсем новый. Потому не все фишки есть в g++. Вы учтите, что есть ещё gnu++98, gnu++0x, gnu++11, и gnu++1y. Этот ваш шланг умеет всё вышеперечисленное?ъ
не нужно цепляться за мёртвое.
-
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: О компиляторах вообще и C/C++, в частности
нет, ты. В старом стандарте многое УЖЕ названо deprecated (по-русски "закопать"), вот именно это в новом стандарте закопано наконец. А ты всё ещё тащишь...
-
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: О компиляторах вообще и C/C++, в частности
в новом коде уже не нужно тащить старые костыли. ИМХО.
ну а поддержка -- пусть разрабы g++ думают, у них голова больше.
-
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: О компиляторах вообще и C/C++, в частности
Ага. Сразу виден опыт. =)
Замечательный ответ:
- Чуваки, что за хрень вы мне разработали? Оно не компилируется у меня! И ваще падает на новой железке!
- Это не мы! Это разработчики GCC виноваты! Сейчас мы всё поправим за свой счёт.
По-русски так. =)
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: О компиляторах вообще и C/C++, в частности
погоди. Ты передёргиваешь: если я делаю под gnu++11, то у меня новый код отлично собирается под новым gcc. Не вижу проблемы? Проблема только в старом коде, который в C98 помечен как deprecated, и который давно пора изменить (не взирая на то, что в стандарте C98 он есть).
про что ты говоришь? Про код, который в стандарте 1998го года помечен deprecated??? Да какого ляда он ещё не исправлен?!
-
- Бывший модератор
- Сообщения: 8259
- Статус: Маньяк
- ОС: Arch, Fedora, Ubuntu
Re: О компиляторах вообще и C/C++, в частности
Я говорил про то, что нет компилятора, полностью поддерживающего стандарт C++, просто в силу монстровости этого языка. И про то, что это вполне нормально для компиляторов C/C++.
Потом утверждение "нет компилятора, полностью поддерживающего стандарт C++" волшебным образом превратилось в "нельзя сказать, что GCC не поддерживает стандарт, рассматривая G++ в контексте поддержки C++98". Я могу найти матрицу поддержки G++ для C++11. И там, упс, будет видно, что C++11 он тоже не поддерживает полностью.
Остаётся C++03... и голословное утверждение:
Остаётся, на всякий случай, проверить матрицу C++03 и в очередной раз убедиться, что drBatty не знает о чём вообще пишет свои страничные посты.
P.S.: кстати, стандарта C++0x (или GNU++0x?) не существует. Так же как и C++1y (GNU++1y). Это лишь режимы работы GCC, из которых лишь несколько соответствуют настоящим стандартам IEC C++ (C++98, C++03, C++11).
-
- Сообщения: 1147
- Статус: Slacker!
- ОС: Slackware64-current
Re: О компиляторах вообще и C/C++, в частности
Пробегал тут мимо, увидел спор тертых программистов... Мне до вас еще расти и расти, но не об том речь. Хотел всего лишь сказать: думаю, понятно, откуда пошло «язык Delphi». Люди повторяли-повторяли на каждом углу, а маркетологи про то дознались и выпустили «язык», который на самом деле «IDE». А справку толком поправлять не стали или не успели это сделать...
Slackware64-current/Xfce/Xiaomi Mi Notebook Pro 15.6 | Arch Linux/Xfce/Lenovo G580
-------------
Registered Linux User #557010
-------------
Registered Linux User #557010
-
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: О компиляторах вообще и C/C++, в частности
Может быть и так. Но я говорил о том, что преподаватель, создавая учебное пособие для студентов, обязан уточнять и раскрывать такие вещи. В противном случае, складывается впечатление, что он не отличает среду от языка, да ещё студентов учит в том же духе.
-
- Модератор
- Сообщения: 21245
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: О компиляторах вообще и C/C++, в частности
Всё куда хуже:
http://pascalbook.ru/
http://ru.scribd.com/doc/65619561/5/%D0%AF...BA-Turbo-Pascal
https://www.ozon.ru/context/detail/id/2810786/
https://www.ozon.ru/context/detail/id/8814711/
http://pascalbook.ru/
http://ru.scribd.com/doc/65619561/5/%D0%AF...BA-Turbo-Pascal
https://www.ozon.ru/context/detail/id/2810786/
https://www.ozon.ru/context/detail/id/8814711/
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 8735
- Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
- ОС: Slackware-current
Re: О компиляторах вообще и C/C++, в частности
serzh-z
вот тут надо решить: что мы будем считать "не поддержкой стандарта"? Некий минус в матрице? Или как?
Ну вот например фича auto, в стандарте C++98 она имела совсем иной смысл, который давно никому не нужен и не поддерживается.
это диалекты. Тоже стандарты, но не в том смысле.
вот тут надо решить: что мы будем считать "не поддержкой стандарта"? Некий минус в матрице? Или как?
Ну вот например фича auto, в стандарте C++98 она имела совсем иной смысл, который давно никому не нужен и не поддерживается.
я не для вас писал.
это диалекты. Тоже стандарты, но не в том смысле.
-
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: О компиляторах вообще и C/C++, в частности
Bizdelnick , простите, я не понял. Что хуже?
-
- Модератор
- Сообщения: 21245
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: О компиляторах вообще и C/C++, в частности
Называть "языком" Turbo Pascal, естественно, До этого, насколько мне известно, маркетологи не додумались, а вот отдельные пейсатели - вполне.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: О компиляторах вообще и C/C++, в частности
Вообще-то это вполне себе язык.
(wikipedia.org) писал(а):Turbo Pascal (произносится «ту́рбо паска́ль») — интегрированная среда разработки программного обеспечения для платформ DOS и Windows 3.x и язык программирования в этой среде, диалект языка Паскаль от фирмы Borland.
Я видел два варианта: среда Borland Pascal с языком Pascal и среда Borland Turbo Pascal с языком Turbo Pascal.
Чем они отличались, не вспомню, врать не буду, но различия были - и в самих средах, и в языках.
-
- Модератор
- Сообщения: 21245
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: О компиляторах вообще и C/C++, в частности
Тоже мне источник нашли. Загляните в англоязычный раздел хоть.
Вообще-то Borland Pascal и Turbo Pascal - это два разных продукта (хоть в основе у них одно и то же). Но это именно IDE с компилятором, а не язык.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 3728
- Статус: Многоуважаемый джинн...
- ОС: Slackware64-14.1/14.2
Re: О компиляторах вообще и C/C++, в частности
А что Вам не нравится?Bizdelnick писал(а): ↑22.01.2014 10:55Тоже мне источник нашли. Загляните в англоязычный раздел хоть.

Мой оппонент тоже приводил ссылку на вики здесь.
И тоже русскоязычную. А мне почему нельзя?
Язык тоже.
Я помню, как-то запустил Borland Pascal вместо Turbo Pascal. Случайно, второпях.
И у меня чего-то там не скомпилилось. Ошибки синтаксиса нашлись. А в Turbo Pascal - нормально.
Какие-то различия были на уровне языка. То ли типы данных, то ли объекты...
Точнее не вспомню, давно это было.