Il creatore di C ++ ha criticato l'imposizione di linguaggi di programmazione sicuri

Bjarne Stroustrup, il creatore del linguaggio C++, ha pubblicato obiezioni alle conclusioni del rapporto della NSA, che raccomandava alle organizzazioni di abbandonare i linguaggi di programmazione come C e C++, che lasciano la gestione della memoria allo sviluppatore, a favore dei linguaggi ​​come C#, Go, Java, Ruby, Rust e Swift, che forniscono la gestione automatica della memoria o eseguono controlli di sicurezza della memoria in fase di compilazione.

Secondo Stroustrup i linguaggi sicuri citati nel rapporto della NSA in realtà non sono superiori al C++ nelle applicazioni che dal suo punto di vista sono importanti. In particolare, le raccomandazioni di base per l'utilizzo del C++ (C++ Core Guideline), sviluppate negli ultimi anni, coprono metodi di programmazione sicuri e prescrivono l'uso di strumenti che garantiscono un lavoro sicuro con tipi e risorse. Ciò lascia la possibilità agli sviluppatori che non necessitano di garanzie di sicurezza così rigorose di continuare a utilizzare i vecchi metodi di sviluppo.

Stroustrup ritiene che un buon analizzatore statico che segua le linee guida C++ Core possa fornire le garanzie necessarie per la sicurezza del codice C++ a un costo significativamente inferiore rispetto alla migrazione a nuovi linguaggi di programmazione sicuri. Ad esempio, la maggior parte delle linee guida principali sono già implementate nell'analizzatore statico e nel profilo di sicurezza della memoria inclusi in Microsoft Visual Studio. Alcune raccomandazioni vengono prese in considerazione anche nell'analizzatore statico Clang Tidy.

Il rapporto della NSA è stato anche criticato per essersi concentrato solo sui problemi di memoria, tralasciando molti altri problemi del linguaggio di programmazione che influiscono sulla sicurezza e sull'affidabilità. Stroustrup vede la sicurezza come un concetto più ampio, i cui diversi aspetti possono essere raggiunti mediante una combinazione di stile di codifica, librerie e analizzatori statici. Per controllare l'inclusione di regole che garantiscano la sicurezza dell'utilizzo di tipi e risorse, si propone di utilizzare annotazioni nel codice e opzioni del compilatore.

Nelle applicazioni in cui le prestazioni sono più importanti della sicurezza, questo approccio consente l'applicazione selettiva di funzionalità che garantiscono la sicurezza solo dove è necessaria. Gli strumenti di sicurezza possono anche essere applicati in modo frammentario, ad esempio iniziando con il controllo del raggio d’azione e le regole di inizializzazione, per poi adattare gradualmente il codice a requisiti più rigorosi.

Fonte: opennet.ru

Aggiungi un commento