Страуструп против АНБ

velkin velkin

Страуструп чётко разделяет Си и C++


Власти США требуют отказаться от языка C++. Его создатель призывает одуматься

В своем открытом письме, опубликованном на open-std.org, Страуструп выразил несогласие с позицией агентства. Во-первых, он отметил, что его представители «смешали в одну кучу» C и C++, несмотря на то, что языки развивались независимо на протяжении последних 30 лет.


На что стоит обратить внимание в первую очередь так это на то, что Бьерн Страуструп чётко разделяет языки программирования Си и C++.

В действительности же, по его мнению, C++ ни в чем не уступает современным так называемым безопасным языкам вроде C#, Go, Java, Ruby, Rust и Swift.


Это как раз то, о чём говорят разработчики на протяжении десятилетий.

По мнению программиста и ученого, помимо прочего, авторы рекомендаций не видят всю картину целиком. В их представлении безопасность ПО якобы ограничивается безопасной работой с памятью.


И об этом тоже, игнорирование Valgrind и прочих вспомогательных инструментов это проблема исключительно некомпетентности программистов, не говоря уже о том, что именно программисты, а не язык программирования и не компьютер создают утечки памяти.

Почему Линус Торвальдс использует Си в ядре Linux


Ранее Линус Торвальдс заявлял что в ядре операционной системы Linux не будет C++ по причине того, что программисты могут наделать ненужных ошибок используя дополнительные парадигмы программирования.

C++ приводит к действительно очень плохому выбору дизайна. Вы неизменно начинаете использовать "приятные" библиотечные возможности языка, такие как STL и Boost, и другую полную и полную чушь, которая может "помочь" вам программировать, но вызывает:

— бесконечное количество боли, когда они не работают (и любой, кто говорит мне, что STL и особенно Boost стабильны и переносимы, настолько полон BS, что это даже не смешно)

— неэффективные абстрактные модели программирования, когда через два года вы замечаете, что какая-то абстракция была не очень эффективной, но теперь весь ваш код зависит от всех хороших объектных моделей вокруг него, и вы не можете исправить это, не переписав свое приложение.

Другими словами, единственный способ сделать хороший, эффективный, системный и переносимый C++ заключается в том, чтобы ограничить себя всеми вещами, которые в основном доступны на Си. И ограничение вашего проекта Си означает, что люди не облажаются в этом, а также означает, что вы получаете много программистов, которые действительно понимают проблемы низкого уровня и не облажаются с какой-либо идиотской "объектной моделью".


Конечный выбор всегда между Си и C++


Опять же давайте вспомним статью Прикладные антисанкционные языки программирования. Почему когда компании США массово уходят с российского рынка всплывает эта тема. Очевидно потому, что языки программирования принадлежащие компаниям США, а не мировому сообществу будут терять популярность.

Если говорить о серьёзных продуктах, то есть ровно два языка на которые стоит переходить, это Си или C++. Причём попытка использовать C++ как Си может привести к непредсказуемым результатам, так как трудно вручную поддерживать разделение по возможностям.

Это опять же говорит о том, что начинать обучение лучше всего на компиляторах Си, чтобы случайно не начать применять C++. И только когда сознание программиста сформируется чтобы понимать именно алгоритмы, а не абстрактную миширу, переходить на C++. О последнем я рассуждал в теме Почему программисты прошлого были умнее.
Nuzhny
Nuzhny
25.01.2023 08:03
Здравствуйте, velkin, Вы писали:

V>

Почему Линус Торвальдс не использует Си в ядре Linux


А что же он там использует,если не Си? Раст?
velkin
velkin
25.01.2023 08:15
Здравствуйте, Nuzhny, Вы писали:

V>>

Почему Линус Торвальдс не использует Си в ядре Linux

N>А что же он там использует,если не Си? Раст?

Да, это ошибка по невнимательности. Заменил на использует Си, хотя мысль про не использует C++.