2010-11-20 8 views
6

** Por favor, personas, esta pregunta no pretende comenzar ninguna guerra de fuego. **¿Las bibliotecas existentes mueren cuando aparece una nueva característica como parte del núcleo del lenguaje?

Estoy tratando de entender qué sucede con las bibliotecas existentes que implementan algunas funcionalidades cuando la misma funcionalidad que no estaba previamente allí en el lenguaje ahora viene como parte del lenguaje? Por ej. C++ pronto tendría std :: thread como parte del estándar de lenguaje, entonces ¿qué ocurre con las bibliotecas POSIX o Boost?

También me gustaría saber qué experiencias pueden tener los usuarios de otros lenguajes de programación al respecto.

+0

Los hilos POSIX no serán reemplazados por una biblioteca C++. Son las llamadas al sistema nativo. Otros lenguajes y bibliotecas se basarán en ellos para construir soporte de subprocesos en Unix, los programadores C seguirán usándolos y aún puede usarlos en código C++ para acceder a las características de bajo nivel del sistema (digamos un sistema especializado NUMA) o construir otro tipo de bibliotecas de concurrencia . –

Respuesta

2

C++ std :: thread está en grandes partes basado en hilos de refuerzo. Así que los hilos de refuerzo nunca desaparecerán, vivirán en la biblioteca estándar de C++. Además, en muchas plataformas, los subprocesos de refuerzo utilizan subprocesos posix como back-end, por lo que nunca desaparecerán.

+0

El hecho de que uno esté inspirado por el otro no significa que sean lo mismo. De hecho, es probable que exista una proporción justa de programas que incluyan tanto std :: thread como boost :: thread. Pero en algún momento, boost :: thread se enlata o deciden mantenerlo en paralelo (por compatibilidad con versiones anteriores). – Tom

+0

... aunque supongo que probablemente lo mantengan indefinidamente para admitir usuarios que no tienen acceso a std :: thread. Lo que significa que los hilos de refuerzo nunca desaparecerán realmente. – Tom

9

La adopción de nuevas tecnologías nunca ocurre durante la noche. Habrá un retraso mientras los compiladores implementan las nuevas versiones de la Biblioteca estándar, y luego otro retraso mientras los compiladores llegan a los desarrolladores.

Mis dos últimos trabajos han presentado una interacción ocasional con Visual C++ 6, que tiene más de 10 años. Existe una gran renuencia a pasar del código de trabajo a un nuevo modelo mejorado.

Si las bibliotecas antiguas realmente mueren, es a través de un proceso de obsolescencia gradual en lugar de extinción masiva repentina.

Dependiendo de la biblioteca, es posible que la próxima norma simplemente capture una instantánea de la función actual, y la biblioteca principal continuará evolucionando como una incubadora para C++ 1x, C++ 2x y así sucesivamente.

-3

Tal cosa no ha sucedido todavía. C++ solo tiene una implementación hasta ahora.

+0

Eh, la implementación es realmente una palabra incorrecta aquí. Quiero decir que solo hay una versión del estándar C++ y un borrador. – milan

+0

Puede editar su publicación original y corregir ese bit de información. – jwueller

+1

nah, eso me enseñará a escribir más concienzudamente :) – milan

4

A veces los autores de bibliotecas continúan manteniendo su biblioteca porque su biblioteca hace algo ligeramente diferente de cómo se hace dentro del idioma: esta diferencia ofrece una ventaja única o es fundamentalmente más fácil de asimilar. En cualquier caso, si hay suficiente deseo del usuario de que continúe o si el autor es obstinado, se mantendrá. Eventualmente, sin embargo, las personas solo usan lo que viene naturalmente en un idioma si la ventaja no es lo suficientemente grande.

Cuestiones relacionadas