Представитель Шуры Люберецкого в ЖЖ (brat_luber) wrote,
Представитель Шуры Люберецкого в ЖЖ
brat_luber

Мир насекомых

Недавно видел обсуждение одной допустимой в C++ конструкции, которая относилась к “undefined behaviour” – то есть могла вести себя по-разному (и вела!) в разных компиляторах. ЕМНИП, в Microsoft Visual C++ все работало более-менее нормально, а в GCC или Sun C++ валилось с ошибкой (причем сильно зависело от настроек оптимизации и фазы Луны). Естественно, не обошлось без коммента вроде “Опять ерундой занимаетесь, у людей в Windows и Visual Studio все работает, а остальные сами себе злобные буратины”.

В общем, комментарий прекрасно иллюстрирует, казалось бы, очевидную вещь: сегодняшнее программирование нацелено в основном на платформу Windows+Intel, все остальные варианты – удел маргиналов-”красноглазиков”. Это очевидно, например, так же, как очевидно господство млекопитающих в природе. Но достаточно спросить специалиста, и вы с удивлением узнаете, что сейчас на Земле – “золотой век” насекомых. Около 80% всех живых существ – насекомые, а насчитывается их, по разным оценкам, от 2 до 10 миллионов видов.

Точно так же о господстве архитектуры x86 можно заявлять, не представляя себе современную ситуацию на рынке микропроцессоров. Если годовой объем продаж x86 составляет, по оптимистичной оценке, около 100-200 миллионов штук, то различных микроконтролеров (от 8-битных PIC или AVR до 32-битных ARM всех видов) ежегодно продается, держитесь за стул, более 10 миллиардов (из них ARM – примерно 3 миллиарда). Сейчас передо мной гарантированно лежат четыре устройства на ARM разных типов, и подозреваю, что реально это число несколько больше (не все свои девайсы я разбираю :)).

Наверное, если посчитать совокупную вычислительную мощность всех выпускаемых ARM, они могут “уесть” x86. Впрочем, это зависит и от методики подсчета – например, вычисления с плавающей запятой на ARM реализованы несколько хуже, чем на x86.

В отличие от “простых” микроконтролеров, ARM – довольно развитая 32-битная архитектура, со всеми ее достоинствами и недостатками (вроде адресации “жалких” 4 Гб памяти). Практически невозможно писать серьезные приложения для ARM на ассемблере (за исключением совсем “микроконтролерных” задач, типа поморгать светодиодиком), так что стандартом де-факто для разработки под эти процессоры стал C, с ростом мощности процессора переходящий в C++.

Существует довольно много компиляторов C и C++, генерирующих код для ARM – начиная с GCC и Microsoft Visual C++ (да, большинство КПК работают под управлением ARM), заканчивая какими-нибудь экзотическими компиляторами ANSI C (кстати, написать неоптимизирующий компилятор C – не такая уж и сложная задача, что привело к появлению огромного количества компиляторов “чистого C”). Более того, обычно все безобразия на ARM творят с использованием какой-нибудь ОС – от “самодельных” менеджеров ресурсов до более навороченных FreeRTOS и даже вариантов Linux или *BSD (там, где ресурсы позволяют). Более того, столь любимые многими iPhone, iPod и iPad со своей ОС – тоже пример устройств на ARM.

Представляете, какой “зоопарк” складывается из средств разработки под самую популярную сегодня процессорную архитектуру? И поверьте, никого не волнует, что там думают в Microsoft по поводу некоторых неоднозначных конструкций C++. Кстати, никто не гарантирует, что та ошибка, связанная с выравниванием членов структур, не проявится в том же майкрософтском компиляторе с другой целевой архитектурой.

Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там, используя свое имя пользователя из ЖЖ (вход по OpenID).

Tags: паяльный бред, программирование
Subscribe

  • Что-то к хвостику прилипло

    Цитату я взял из замечательного анекдота, прочитанного в комментариях у ex0_planet. Но он прекрасно отражает сущность некоторых “шилдов…

  • С праздником всех причастных!

    –. . -. .-. .. …. –. . .-. -.-. Запись опубликована в блоге Шуры Люберецкого. Вы можете оставлять свои комментарии там,…

  • Ригонда-102

    Восстанавливаю, хотя это громко сказано, скорее – занимаюсь мелким профилактическим обслуживание – радиолу “ Ригонда-102“,…

Comments for this post were disabled by the author