Страуструп против АНБ
25.01.2023
|
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++. О последнем я рассуждал в теме Почему программисты прошлого были умнее.
25.01.2023 2 комментария |
V>
Почему Линус Торвальдс не использует Си в ядре Linux
А что же он там использует,если не Си? Раст?
V>>
Почему Линус Торвальдс не использует Си в ядре Linux
N>А что же он там использует,если не Си? Раст?Да, это ошибка по невнимательности. Заменил на использует Си, хотя мысль про не использует C++.