Hace 6 días | Por invarato a linuxadictos.com
Publicado hace 6 días por invarato a linuxadictos.com

Stroustrup cree que un buen analizador estático que cumpla con las Directrices principales de C++ puede proporcionar las garantías de seguridad necesarias para el código C++ a un costo mucho menor que cambiar a nuevos lenguajes de programación seguros. Por ejemplo, la mayoría de las Directrices principales ya están implementadas en el analizador estático y el perfil seguro para la memoria de Microsoft Visual Studio. Algunas de las recomendaciones también se tienen en cuenta en el analizador estático Clang tidy.

Comentarios

i
autor

#1 #5 #13 si la IA es capaz de entenderlo...

poyeur

#1 ¿Una tilde en una variable? Hereje...

DavidElNoHomo

#1 Una noticia sobre lenguajes de programación y vienes a quejarte de la redacción, eres la puta vergüenza de los programadores.

Con énfasis en lo de puta, se entiende.

Aprovecho para saludar alimonciolimoncio, mira guapo, un lenguaje de programación de verdad, pero no te asustes.

limoncio

#8 ADORA A JAVA SUCIO HEREJE!!

mariKarmo
editado

#8 echo "fíjate si doy vergüenza que programo en PHP.";

mariKarmo

#8 pero ¡como se te ocurre llamarme puta!

mariKarmo

#8 pero ¡como se te ocurre llamarme puta! ¡qué escándalo!

DavidElNoHomo

#68 Iba a retractarme, pero ¿PHP? Pfff

T

#1 Expertos en javascript que ponen acento en el functión.

Natxelas

#15 y eñes en las variables, total al ser de tipado débil, todo vale.

daniel_martin

#1 Mételo en el compilador, a ver qué te sale.

RoyalPirate

#1 "...crítico con..." podría ser una alternativa válida

h
editado

#25 #1 Borramos "El creador del lenguaje C++", y dejamos el titular en primera persona como "Critico un informe de la NSA sobre lenguajes de programación seguros"

estoyausente

#1 4 veces lo he leído para ver si acaso entendía esa palabra

meneandro
editado

#4 Es lo de siempre: seguro por diseño (cuatro ruedas y eje ancho para mejorar estabilidad) vs seguro porque puedes llevar casco, rodilleras y coderas (aunque al ser sólo dos ruedas es más molón). Si los usas mal, puedes volcar con ambos, pero la facilidad con la que vuelcas también es mayor con uno que con otro... y el estropicio que te haces también.

saqueador

Con mi coche del 1997 si no paso de 50 y voy por carreteras de un solo sentido, es igual se seguro que el coche moderno más sofisticado. ¿Para qué quiero sistemas de seguridad inútiles que nunca voy a utilizar? Lo importante es conducir bien, si no sabes conducir quédate en casa.

a

#45 --> #46

M

#45 Lo dices como si no te pudiera chocar de atrás otro conductor a 180km/h.

Aunque la tecnología no suple una mala conducción, nunca viene de más tenerla.

ur_quan_master

#14 pero sin abusar, que algunas librerías de la Boost parecen el códice Voynich.

f
editado

#21 Ostia pues boost, cuando tenía que meter mano ahí por algún error aún tengo pesadillas

ur_quan_master

Todo lo que hace el compilador, ya no tiene que hacerse en tiempo de ejecución.

D

#2 Básicamente esa es la clave de Rust, junto a la memoria segura.

adrigm

#3 y de dart aunque suene ereje.

Or3

#11 Aserejé.

Mi puta vida.

D

#11 Mejor Dart que Flutter.

adrigm

#40 flutter es un framework que usa dart.

D

#57 Y básicamente su razón para existir.

Find

#57...y el stack se llama FART

_112

#2 template metaprogramming

e

Podría ser justificada la rabieta. En un C++20 ya se puede elegir entre gestión de memoria por conteo de referencias, por puntero único o la gestión tradicional (new-delete).
He visto artículos proponiendo analizadores estáticos que prohíban la gestión de memoria tradicional, lo cual convierte la programación en C++ en algo muy similar a Java.
Si la biblioteca que vas a usar sigue uno de estos sistemas de gestión de memoria, perfecto. Es comodísimo.
Pero hay bibliotecas antiguas que cuando te devuelven un puntero, no te indican de ninguna forma si hay liberar la memoria de dicho puntero o el objeto que te lo devuelve es el que gestiona dicha memoria y en algunos casos es terrorífico averiguarlo.
En mi humilde opinión muchos de estos problemas no serían tan graves si en C o en C++ existiese una palabra reservada para indicar quién debe gestionar la memoria, el objeto que genera el puntero o el objeto que lo va a recibir. Me extraña que en tantos años de existencia de C o C++ nadie lo haya sugerido.
También tiene mucho mérito los métodos que muchos programadores han buscado para realizar la gestión de memoria en estos lenguajes. Por ejemplo, en la biblioteca Qt (C++) se basa en un sistema de padres e hijos. Cada objeto que generes debe tener un padre y a su vez puede tener hijos. Si el padre se elimina, automáticamente se eliminan los hijos.

saqueador

#41 Es que programar con el palillo en la boca ayuda mucho.

meneandro

#33 QT "es trampa" (en el sentido de que pasa un kilo de cualquier librería estándar en c++ y se las reimplementa todas), es c++ pero en cierto sentido es su propio c++.

Penetrator

#33 una palabra reservada para indicar quién debe gestionar la memoria, el objeto que genera el puntero o el objeto que lo va a recibir. Me extraña que en tantos años de existencia de C o C++ nadie lo haya sugerido.

Hay algo parecido: http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#r3-a-raw-pointer-a-t-is-non-owning

Si devuelves un owning ya estás indicando que hay que eliminarlo. Pero creo que todavía no está estandarizado.

M
editado

No me imagino al creador de un lenguaje reconociendo que otro lenguaje es mejor.

Pero por ahí tiene razón.

Pelafustan

#7 Ahi tienes al creador de Node reconociendo que Deno es mejor

pedrobz

#30 Ha dicho lenguaje de programación, no entorno de ejecución (ambos ejecutan JavaScript/Typescript)

Pacman

#23 normal, está muerta

frg

#24 Si, claro, igual que ABAP, muerto pero vivo ...

Pacman

#56 me refería a la creadora

quiero

¿Un buen analizador estático que cumpla con las Directrices principales de C++ puede ayudar a encontrar problemas de seguridad en el código C++. ????? Mi opinión, de experto es que SÍ.

No obstante, hay una objeción: Cambiar a un lenguaje de programación seguro puede proporcionar garantías de seguridad adicionales que un analizador estático no puede proporcionar. Un lenguaje de programación seguro puede tener características diseñadas específicamente para prevenir problemas de seguridad como la inyección de código o la corrupción de memoria, y además, el cambio a un lenguaje de programación seguro puede requerir una inversión significativa en tiempo y recursos, lo que puede ser costoso, no ser rentable.

En resumen, un analizador estático puede ayudar a mejorar la seguridad del código C++, pero cambiar a un lenguaje de programación seguro puede proporcionar garantías adicionales.

Soy experto en IA

D

#47 Detectado.

SaulBadman
editado

Existiendo la encapsulación en clases, existiendo el patrón RAII[1], y existiendo los punteros únicos y compartidos, quién tiene una fuga de memoria en C++ es porque está desactualizado, hace las cosas más, o tiene otros problemas mucho más graves.

[1]: https://es.wikipedia.org/wiki/RAII

d

#28 me parecen anécdotas

c

#35 Entonces haces honor a tu nick

ed25519

Bjarne Stroustrup es dios

c

#6 ¿Están de rebajas en el olimpo?

ed25519

#18 ++ stroustrup;

frg

#6 Dios se hace viejo.

No me imagino a ninguno de los creadores de Cobol diciendo nada sobre su lenguaje

#6 Pues a mí, C++ me parece un mojón de cuidado

x

#6 Niklaus Wirth discrepa. 

frg

Puedes criticar la elección de lenguajes, puedes decir que la seguidad no son solo errores de asignación de memoria, pero intentar vender que un análisis estático en lugar de alabar el trabajo de Rust no tiene nombre.

En parecido orden de cosas, estoy impaciente esperando que muchos trozos del kernel se hagan en Rust, evitando muchos de los errores y posibles vulnerabilidades actuales.

c

#20 Lo irónico es que Rust, precisamente, se basa en un analizador estático. La diferencia es que en lugar de encajar a martillazos un modelo de memoria en el lenguaje, diseñaron el lenguaje desde cero para ajustarse al modelo de memoria, que es lo lógico.

aritzg

Pues yo con java bastante bien. Besis

Zeioth

Llega tarde a la fiesta. Rust ya ha resuelto el problema.

quique

#9 - Toc-toc
- ¿Quién es?
- Carbon

d

#9 ahora solo hace falta que a alguien le importe y lo utilize para algo útil y no para decir que ha resuelto un supuesto problema teórico

c

#16 ¿Firefox te parece un problema teórico? ¿Y librsvg? (por poner dos ejemplos)

RubiaDereBote

#16 derrochas desconocimiento

c

Aprovecho para pedir recomendación de libro para aprender Rust (como contexto, llevo quince años programando en C++)

a

#49 te van a recomendar de todo menos un libro.

D

#49 "El libro".

n

Me parece que alguien tiene el ego un poco herido...