¿En qué idiomas están escritos Windows, Mac OS X y Linux?

Resuelto Brock Woolf asked hace 15 años • 12 respuestas

Me preguntaba quién sabe de qué lenguajes de programación están compuestos Windows, Mac OS X y Linux y qué lenguajes se utilizan para cada parte del sistema operativo (es decir, kernel, arquitectura de complementos, componentes GUI, etc.).

Supongo que hay varios lenguajes para cada uno y, obviamente, sé que el kernel de Linux está escrito en C.

Supongo que Mac OS X contiene una gran cantidad de código Objective-C, ya que es el lenguaje de Apple derivado de NeXT.

He oído que Windows contiene C, C++ e Intel Assembly. ¿Linux o Mac OS contienen algún código ensamblador?

Además, ¿existen lenguajes de secuencias de comandos como Ruby, Python, etc., utilizados por los desarrolladores del sistema operativo para crear secuencias de comandos en partes del sistema operativo? ¿Qué partes del sistema operativo estarían escritas en cada idioma?

Brock Woolf avatar Feb 24 '09 09:02 Brock Woolf
Aceptado
  • Windows: C++, el kernel está en C
  • Mac: Objetivo C, el kernel está en C (el subsistema IO PnP está integrado en C++)
  • Linux: la mayoría de las cosas están en C, muchas aplicaciones de usuario están en Python, KDE es todo C++

Todos los núcleos también utilizarán algún código ensamblador.

Ana Betts avatar Feb 24 '2009 02:02 Ana Betts

Linux: C. Algunas piezas en montaje.

[...] Está principalmente en C, pero la mayoría de la gente no llamaría a lo que escribo C. Utiliza todas las características imaginables del 386 que pude encontrar, ya que también fue un proyecto para enseñarme sobre el 386. Como ya se mencionó , utiliza una MMU, tanto para paginación (aún no en disco) como para segmentación. Es la segmentación lo que la hace REALMENTE dependiente de 386 (cada tarea tiene un segmento de 64 Mb para código y datos - máximo 64 tareas en 4 Gb. Cualquiera que necesite más de 64 Mb/tarea - cookies difíciles). [...] Algunos de mis archivos "C" (específicamente mm.c) son casi tan ensambladores como C. [...] A diferencia de minix, también me gustan las interrupciones, por lo que las interrupciones se manejan sin tratar de ocultarlas. la razón detrás de ellos. (Fuente)

Mac OS X: Cocoa principalmente en Objective-C. Kernel escrito en C, algunas piezas en montaje.

Mac OS X, en la capa del núcleo, es principalmente un sistema operativo antiguo y gratuito llamado BSD (específicamente, es Darwin, una especie de híbrido de BSD, Mach y algunas otras cosas)... casi en su totalidad C, con un poco de del ensamblador incluido. (Fuente)

Gran parte de Cocoa se implementa en Objective-C, un lenguaje orientado a objetos que se compila para ejecutarse a una velocidad increíble, pero que emplea un tiempo de ejecución verdaderamente dinámico que lo hace excepcionalmente flexible. Debido a que Objective-C es un superconjunto de C, es fácil mezclar C e incluso C++ en sus aplicaciones Cocoa. (Fuente)

Windows: C, C++, C#. Algunas piezas en ensamblador.

Usamos casi en su totalidad C, C++ y C# para Windows. Algunas áreas del código están ajustadas o escritas a mano. (Fuente)

Unix: C. Algunas piezas en montaje. (Fuente)

Pacerier avatar Sep 25 '2011 21:09 Pacerier

¡¡¡Guau!!! 9 años de preguntas, pero acabo de encontrar una serie de artículos internos sobre la historia de la línea de comandos de Windows y creo que una parte de ellos podría ser el lado relevante de la pregunta de Windows:

Para aquellos que se preocupan por estas cosas: muchos se han preguntado si Windows está escrito en C o C++. La respuesta es que, a pesar del diseño basado en objetos de NT, como la mayoría de los sistemas operativos, Windows está escrito casi en su totalidad en 'C'. ¿Por qué? C++ introduce un costo en términos de uso de memoria y sobrecarga de ejecución de código. Incluso hoy en día, los costos ocultos del código escrito en C++ pueden ser sorprendentes, pero a fines de la década de 1990, cuando la memoria costaba ~$60/MB (sí... ¡$60 por MEGABYTE! ), el costo de memoria oculta de vtables, etc. era significativo. Además, el costo de la indirección de llamadas a métodos virtuales y la desreferenciación de objetos podría resultar en penalizaciones de escala y rendimiento muy significativas para el código C++ en ese momento. Si bien todavía hay que tener cuidado, la sobrecarga de rendimiento del C++ moderno en computadoras modernas es mucho menos preocupante y, a menudo, es una compensación aceptable considerando sus beneficios de seguridad, legibilidad y mantenibilidad... razón por la cual estamos actualizando constantemente el código de la consola al C++ moderno.

 avatar Aug 16 '2018 09:08

Windows: principalmente C y C++, algo de C#

Larry Osterman avatar Feb 24 '2009 02:02 Larry Osterman