No es raro que los lenguajes de programación tengan fallas.
Un buen ejemplo está en Java: Thread.stop()
ahora está en desuso.
En general, no hay una forma segura de implementarlo. No puede funcionar y ha quedado en desuso. No me hagas comenzar (de nuevo) sobre el pobre diseño de concurrencia en Java.
- Cómo migrar a Alemania
- ¿Cuál es la mayor ventaja de usar imágenes Docker sobre los administradores de paquetes regulares?
- ¿Qué lenguajes de programación se utilizan para crear algunas de las aplicaciones de Android más populares?
- ¿Cómo utiliza su equipo el software de gestión de proyectos (JIRA, Asana, Trello, etc.)?
- ¿Cuáles son las aplicaciones para ganar dinero real?
¿Por qué? ¿Qué hacemos con cualquier monitor sostenido por el hilo hecho para parar? Si los liberamos, existe la posibilidad de que cualquier subproceso que esté esperando en esos monitores encuentre inmediatamente un estado de objeto no válido y, si no lo hacemos, esos subprocesos se estancarán. Si adoptamos el enfoque loco de lanzar algún tipo de excepción de ‘hilo esperado detenido’ en cada hilo en ese estado, es probable que estemos lanzando un montón de excepciones inesperadas y generalmente irrecuperables en todo el resto del sistema. Lo único que puede esperar de t.stop()
es la corrupción de toda la aplicación. También podría llamarlo System.fubar()
(Google ‘fubar’ si no lo sabe).
Otro ejemplo famoso es char * gets(char *);
que se lee de la entrada estándar en C. Una vez más, esto es inherentemente inseguro y no hay forma de evitar la sobrescritura del búfer y el comportamiento indefinido cuando se usa esa función.
gets
es tan malo que es (creo) la única función completamente eliminada del lenguaje. Algunas cosas pueden quedar obsoletas, pero las implementaciones compatibles no deben proporcionar esa función. Use fgets
lugar.
Hay cosas como std::auto_ptr
en C ++ que se ven bastante peligrosas hoy en día, pero fueron lo mejor que el lenguaje permitiría antes de que se introdujeran las referencias móviles. Sin embargo, Thread.stop()
y char * gets(char *);
fueron irreparablemente malos el día que entraron y malos todos los días desde entonces.