Язык программирования C, несомненно, является одним из самых успешных языков программирования в компьютерных науках. Впервые появившись примерно в 1972 году, C вышел из Bell Labs и был создан Деннисом Ритчи. За последние 20 лет C был признан одним из двух самых популярных языков программирования в мире по индексу программирования TIOBE.
Это самый популярный язык среди разработчиков встраиваемых систем, который используется почти в 80% всех встраиваемых проектов. Не пора ли разработчикам встраиваемых систем перейти на более современный язык после почти полувекового использования? Пришло время уйти в отставку C?
По нескольким причинам искушение отказаться от C и перейти к более современному языку программирования относительно велико. Во-первых, инженеры начального уровня, которых часто высоко ценят технологические компании, практически не имеют опыта работы с C. Университетские программы сегодня сосредоточены на обучении современным языкам, таким как Python или C++. Подготовка их к скорости и опыту может потребовать значительных денежных и временных вложений, в которых заинтересованы лишь немногие компании.
Далее, несмотря на свою популярность, язык программирования C устарел. C не поддерживает современные концепции программирования, такие как классы и наследование. Если вы сравните наборы функций современных языков, таких как C++, Python и Rust, язык C начинает походить на динозавра! В последний раз в стандарт C добавлялись новые функции в 2011 году! В стандартной версии 2017 года были только технические исправления и уточнения, а предстоящая стандартная версия, ожидаемая в 2023 году, скорее всего, тоже не раскачает лодку.
Отказ от C по-прежнему выглядит заманчиво, но есть несколько проблем с простым отказом от C. Во-первых, C — отличный язык для низкоуровневых процедурных приложений, работающих близко к аппаратному обеспечению. Он компактный и эффективный. Во-вторых, старшие инженеры укоренились в языке. Они находятся на этапе, когда они использовали язык десятилетиями и практически не заинтересованы в изучении и переходе на более современный язык. Наконец, так много устаревших библиотек и кодовых баз используют C, что мы не можем просто отказаться от них. Стоимость переноса устаревшего кода будет слишком высока!
Кажется, у нас немного затруднительное положение! Как индустрия, мы должны отказаться от C, чтобы использовать более современные языки и методы, но время и затраты на изменения, а также объем устаревшего кода, который мы должны поддерживать, часто мешают отказу от C. Потребность в более современных технологиях, в то время как сохранение преимуществ, которые мы получаем от C, может оттолкнуть нас от использования одного доминирующего языка и заставить нас полагаться на несколько языков для выполнения работы.
Использование других языков для поддержки C уже может происходить. Например, в таблице 1 ниже показано место нескольких языков в индексе TIOBE. В прошлом в информатике доминировали один или два языка. Сегодня все четыре ведущих языка имеют рейтинг около 10%. Можно сказать, что это указывает на конец одного доминирующего языка. Вместо этого разработчики будут использовать несколько языков для достижения своих конечных целей.
Если внимательно посмотреть внутри отрасли, то это уже происходит. Есть компании, переходящие на использование C++, у которых все еще есть многочисленные библиотеки C. Компании, пробующие Rust, но полагающиеся на свои проверенные библиотеки C как часть сборки, и наоборот. К сожалению, или, возможно, в зависимости от вашей точки зрения, к счастью, это означает, что C будет продолжать оставаться доминирующим языком на неопределенный срок в будущем.
Пришло время уйти в отставку C? Это простой, но сложный вопрос. Можно сказать да, но это зависит от того, что вы делаете. Возможно, вы не захотите использовать C++ или другой язык с 8-битным микроконтроллером. Если вы работаете с передовыми 32-разрядными микроконтроллерами, используя машинное обучение, или разрабатываете подключенные устройства, язык, отличный от C, предоставит вам дополнительные инструменты, необходимые для достижения успеха.
Время и стоимость переключения языков могут оказаться слишком высокими. Субъективное эмпирическое правило заключается в том, что если это новый дизайн, начните с современного языка. Если это устаревший дизайн, используйте устаревший код и напишите новый код на современном языке.
C, язык программирования, разработка, семейство C