starkiller wrote:AndreyT wrote:
Мир, программирующий на С, сегодня программирует в подавляющем большинстве на C89/90. Какие-либо местечковые диалекты C89/90 являются не более чем недоделанным/урезанными/расширенными и т.п. реализациями C89/90 и именно так себя и позиционируют.
Вы о каком мире говорите? Такое ощущение что вы где то работаете в академических кругах или на консалтерскую контору. У них популярно программирование на "стандартном" С. Мир в основном пишет под GCC (что уж стандартным в вашем понимании C никак не назовешь) и других "местечковых диалектах".
Отнюдь. Я работаю на сугубо "практическую" контору. И пишем мы именно на С. Причем строимся для большого количества платформ - Solaris, несколько Linux-ов, WinNT, как 32, так и 64 бита. Раньше еще строились для HP-UX, AIX и еще кое-каких зверей, которые сейчас отошли на задний план. GCC у нас используется только для Linux. На Solaris используется "родной" компилер (как и на HP-UX и AIX). На WinNT - компилер из комплекта MSVC.
На "местечковых диалектах" мир пишет просто потому, что стеднестатистический программист с самого начала учился писать на каком-то местечковом диалекте и просто не знает, где проходит граница между ним и стандартным С. Потом, при необходимости, этот же программист (или специально заточенный человек) ударно выполняет работу по "портированию" с одного местечкового диалекта на другой (читай: гора #ifdef-ов), победно рапортует о предпринятых усилиях и "лавры текут к нему" за успешно выполненную бессмысленную работу.
Кстати, я никоим образом не утверждаю, что пользоваться особенностями конкретной реализации и/или платформы нельзя. Я лишь считаю, что надо понимать, что делаешь, и не лезть в местечковые дебри, если требуемая функциональнсть прекрасно реализуется стандартными средствами языка. С этим, впрочем, мало кто станет спорить, но к сожалению уровня компетентности среднестатистического девелопера сегодня как правило недостаточно, чтобы следовать этому правилу. Отсюда - разнообразные "писания под GCC" со всеми вытекающими.