|
Модераторы: LSD |
|
Thunderbolt |
|
|||
DevRel Профиль Группа: Участник Сообщений: 122 Регистрация: 7.11.2007 Где: Тула Репутация: нет Всего: 16 |
Для меня это вопрос странен. Ответ: конечно да, и ещё долго будут писать. Однако время от времени, мне задают этот вопрос на конференциях или при общении на форумах. Я решил дать на него небольшой письменный ответ, чтобы в дальнейшем иметь возможность ответить одной ссылкой.
Мы разрабатываем инструмент анализа кода PVS-Studio для разработчиков Си/Си++ приложений. Иногда меня спрашивают, почему именно для этих языков, ведь Си/Си++ это старый язык, на котором мало кто пишет. Когда я говорю, что это весьма популярный язык и широко используется, они искренне удивляются. Причина этого видимо в том, что интернет забит статьями, форумами и новостями о новых языках и их возможностях. Среди всего этого, человек, не использующий в работе Си/Си++, просто не замечает редкие новости об этих языках. Это естественно явление. Нет смысла рекламировать и писать о том, что и так известно и широко используется. В результате складывается впечатление, что язык давно заброшен и используется только для поддержания некоторых старых проектов. Это не так. Это очень популярный, живой и активно развивающийся язык. Чтобы убедиться в этом, достаточно взглянуть на рейтинг языков программирования. На данный момент это: TIOBE Programming Community Index for January 2013. Если просуммировать C, C++ и Objective-C то мы получим 37%. Это в 6 раз больше, чем например у PHP. Не о каком угасании языков семейства Си/Си++ не может речи. Вот и ответ на вопрос, почему мы предпочитаем разрабатывать PVS-Studio именно для Си/Си++. Потому, что это наиболее востребованные языки на данный момент. Ну а во-вторых, они сложны, коварны и способствуют большому количеству ошибок. Просто райское место для развития статических анализаторов кода. Примечание. Не стоит это воспринимать как критику языка Си или Си++. Это плата за гибкость и получение быстрого оптимизированного кода. Ещё хочется коснуться заблуждения, что Си/Си++ используется только в старых проектах или в микроконтроллерах. Нет, на этих языках пишутся многие современные и известные приложения. Например, Chromium. Этот проект никак нельзя назвать древним. Вот список известных приложений, написанных на языке Си++: C++ Applications. И напоследок хочу дать ссылку на обсуждение: Why is C++ still a very popular language in quantitative finance? P.S. А Вы что думаете по этому поводу? --------------------
Карпов Андрей, DevRel в PVS-Studio. |
|||
|
||||
Alexeis |
|
|||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Вы пишите этот инструмент для языка С/С++ не потому, что он так популярен, а потому что язык сам по себе плох и нуждается в таком специальном инструменте. Характер языка таков, что способствует появлению многих типичных ошибок, которые не могут быть выявлены на этапе компиляции или пролистывания соответствующих участков кода. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
Thunderbolt |
|
|||
DevRel Профиль Группа: Участник Сообщений: 122 Регистрация: 7.11.2007 Где: Тула Репутация: нет Всего: 16 |
Я бы не был столь категоричен. Как я понимаю, php или Fortran не лучше. А, например, опечатоки вообще легко можно наделать в любом языке. --------------------
Карпов Андрей, DevRel в PVS-Studio. |
|||
|
||||
Alexeis |
|
|||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
При этом фортран не претендует на роль универсального языка, а в своей нише решает свои задачи эффективно. На счет php не знаю, но C# в случае опечатки не сможет создать такой код, который затрет чужой участок памяти и вызовет труднодиагностируемую ошибку. Получим либо ошибку компиляции или ошибку выхода за границу диапазона. В любом случае программа будет ругаться в момент появления ошибки и сразу же укажет на нее. Поэтому необходимость в стороннем инструменте отсутствует.
В одном из холиваров С++ vs Delphi была шутка, что опытный С++ программист с легкостью решит несуществующую в Delphi проблему. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
volatile |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: нет Всего: 85 |
||||
|
||||
fish9370 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: нет Всего: 1 |
я бы не стал смешивать языки Си и Си++
-------------------- undefined |
|||
|
||||
_GRIN_ |
|
|||
одинокий падаван Профиль Группа: Участник Сообщений: 272 Регистрация: 18.11.2007 Где: Калуга Репутация: нет Всего: 7 |
ИМХО.
У каждого языка своя приминимость. Так где критична надёждность и скорость работы кода - будет C/С++ (например авиация - из личного опыта) Так где более важна скорость разработки - там будет C# или подобные. -------------------- Дорогу осилит идущий |
|||
|
||||
Alexeis |
|
|||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
>я бы не стал смешивать языки Си и Си++
+1
Ну скорость еще туда-сюда, а вот надежность спорный вопрос. Там, где действительно нужна надежность, используют язык Ada вместо С++ , а там где скорость Fortran . С++ ни рыба ни мясо. Компромисс в тех ситуациях где он уместен. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
drug007 |
|
|||
Бывалый Профиль Группа: Участник Сообщений: 196 Регистрация: 3.11.2011 Репутация: нет Всего: 1 |
Как-то не очень вяжется с тем, что в F-22 американцы использовали именно С/С++. Ни Аду, ни Фортран - именно кресты. ИМХО, конечно, но Ада отомрет помаленьку, а Фортран так и останется нишевым языком, живущим за счет большого числа когда-то написанных библиотек. В принципе, эта участь уготована и С/С++ (да и любому другому успешному языку), вопрос только когда. |
|||
|
||||
Alexeis |
|
|||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Ну и молодцы что сделали, но это никак не доказывает, что С++ очень надежный язык. При выборе языка для таких систем учитывают множество факторов. Видишь, для товарища Thunderbolt, главным критерием стало распространенность. А я считаю, что именно из-за ненадежности и возникает необходимость в подобного рода затычках. Но так-то существует тестирование. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
xvr |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: нет Всего: 223 |
Увы, даже супер надежные языки (типа Ada) не гарантируют безошибочности программ. Достаточно вспомнить Ariane 5 Самый дорогой феерверк - пол миллиарда евро Это сообщение отредактировал(а) xvr - 8.2.2013, 15:56 |
|||
|
||||
fish9370 |
|
|||
Опытный Профиль Группа: Участник Сообщений: 663 Регистрация: 15.4.2007 Где: Москва Репутация: нет Всего: 1 |
интересно другое, почему Си до сих пор так популярен?
-------------------- undefined |
|||
|
||||
volatile |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: нет Всего: 85 |
Способствуют даже. (ошибочности). Программеры расслаблены, им навесили науши что язык супер-надежный. От того что вместо одной строки, нужно написать десять, программа не станет надежней. Все самые тяжелые ошибки в логике, а не в синтаксисе. И здесь надежных языков нет, и быть не может. Это сообщение отредактировал(а) volatile - 8.2.2013, 17:19 |
|||
|
||||
Alexeis |
|
||||
Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Такие ошибки инструмент статистического анализа кода не решает. Тема обсуждения "Язык С++ такой хороший и популярный, поэтому для улучшения качества кода нужно иметь специальные программки"
Так говорить, все равно что - "А давайте дадим повару супер острый нож с кучей зубчиков и торчащих опасных штук. Повар будет бояться порезаться и будет всегда им аккуратно пользоваться". Абсурд! Почему-то все делают режущие кромки только с той стороны где это нужно для резки. С остальных сторон нож безопасен. Язык Си сравним с ассемблером. Он всегда будет жить, потому что для компиляции программы на С нужно обеспечить минимум технических средств. Код Си достаточно предсказуемо превращается в машинный код, но при этом избавляет программиста от огромной части рутины ассемблера и непереносимости инструкций. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
||||
|
|||||
volatile |
|
|||
Эксперт Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: нет Всего: 85 |
Alexeis, ножи в обоих случаях с кучей зубчиков и торчащих опасных штучек. Просто в одном случае повара предупредили, а в другом сказали что нечего беспокоицца. Ошибка стоимостью в пол миллиарда евро, это не просто случайная ошибка. Это закономерность. Думаю интерес к так называемым"супернадежным языкам" пойдет на спад. --- Тема перешла в холивар уже. Удачный маркетинговый ход ТС, надо признать. А название как удачно подобрано, загляденье... |
|||
|
||||
Правила ведения Религиозных войн | |
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Религиозные войны | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |