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


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 plug-in, componentes GUI, etc.).

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

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

Ventanas, tengo heard contiene C, C++ e Intel Assembly. ¿Linux o Mac OS contienen algún código ensamblador?

Además, ¿hay lenguajes de scripting como Ruby, Python, etc. utilizados por los desarrolladores del sistema operativo para scripting de partes del sistema operativo? ¿Qué partes del sistema operativo se escribirían en cada idioma?

Author: Brock Woolf, 2009-02-24

13 answers

  • Windows: C++, el núcleo está en C
  • Mac: Objetivo C, el núcleo está en C (el subsistema IO PnP está incrustado 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 usarán algún código ensamblador.

 223
Author: Paul Betts,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-06-18 18:06:41

Linux: C. Algunas partes en ensamblado.

[...] Está mayormente en C, pero la mayoría de la gente no llamaría a lo que escribo C. Utiliza todas las características concebibles del 386 que pude encontrar, ya que era también un proyecto para enseñarme sobre el 386. Como ya se ha mencionado, usa una MMU, tanto para paginación (aún no en disco) como para segmentación. Es la segmentación que lo hace REALMENTE 386 dependiente (cada tarea tiene un Segmento de 64Mb para código y datos - máximo 64 tareas en 4Gb. Cualquiera que necesite más de 64Mb / tarea - cookies difíciles). [...] Algunos de mis archivos"C" (específicamente mm. c) son casi tanto ensamblador como C. [...] Desemejante minix, también me gustan las interrupciones, así que las interrupciones son manejadas sin tratar de ocultar la razón detrás de ellos. (Fuente)

Mac OS X: Cocoa principalmente en Objective-C. Kernel escrito en C, algunas partes en ensamblado.

Mac OS X, en la capa del kernel, es en su mayoría un sistema operativo más antiguo y libre llamado BSD (específicamente, es Darwin, un una especie de híbrido de BSD, Mach y algunas otras cosas)... casi enteramente C, con un poco de ensamblador lanzado. (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#. Algunos piezas en ensamblador.

Usamos casi en su totalidad C, C++ y C# para Windows. Algunas áreas de código son ensamblados afinados / escritos a mano. (Fuente)

Unix: C. Algunas partes en ensamblado. (Fuente)

 83
Author: Pacerier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-04 16:21:37

Mac OS X utiliza grandes cantidades de C++ dentro de algunas bibliotecas, pero no está expuesto ya que tienen miedo de la ruptura de ABI.

 13
Author: alex strange,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-27 06:07:54

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

 8
Author: Larry Osterman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-24 02:57:40

Entiendo que este es un post antiguo, pero Windows definitivamente no está escrito en C++. Hay mucho C++ en él, pero lo que técnicamente definimos como un sistema operativo no está en C++. La API de Windows, el kernel de Windows (ambos son en esencia lo que es un sistema operativo) están escritos en C. Hace años me dieron un código filtrado para Windows 2000 y Windows XP. El código no estaba lo suficientemente completo como para compilar el núcleo o la API, pero pudimos compilar programas individuales y Servicio. Por ejemplo, pudimos compilar con éxito el bloc de notas.exe, mspaint.exe, y el spoolsv.servicio exe (cola de impresión). Todo escrito en C. No he mirado de nuevo, pero estoy seguro de que el código filtrado todavía sobrevive como archivos torrent por ahí que todavía pueden estar disponibles.

 8
Author: Duke Bishop,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-12-29 03:21:17
  • windows: C++
  • linux: C
  • mac: Objetivo C
  • android: JAVA, C, C++
  • Solaris: C, C++
  • iOS 7: Objective-C,Swift, C, C++
 7
Author: sonsha,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-22 02:55:12

Tienes razón MacOSX tiene Objective-C en el núcleo.

Windows C++

Linux C

Acerca de los lenguajes de scripting, no, son bastante de alto nivel.

 6
Author: OscarRyz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-24 02:57:52

He leído u oído que Mac OS X está escrito principalmente en Objective-C con algunas de las partes de nivel inferior, como el núcleo, y los controladores de dispositivos de hardware escritos en C. Creo que Apple "come(s) su propia comida para perros", lo que significa que escriben Mac OS X usando sus propias Herramientas de desarrollo Xcode. El GCC(GNU Compiler Collection) compiler-linker es la herramienta de línea de comandos unix que xCode utiliza para la mayor parte de su compilación y/o enlace de ejecutables. Entre otros idiomas posibles, Sé que GCC compila código fuente de los lenguajes C, Objective-C, C++ y Objective-C++.

 5
Author: Patrick Cassell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-25 03:56:44

El núcleo Linux está escrito principalmente en C (y un poco de lenguaje ensamblador, me imagino), pero algunas de las utilidades (programas) importantes del espacio de usuario son scripts shell escritos en el lenguaje de scripting Bash. Más allá de eso, es un poco difícil definir "Linux" ya que básicamente construyes un sistema Linux recogiendo bits y piezas que quieres y poniéndolas juntas, y dependiendo de lo que un usuario individual de Linux quiera, puedes involucrar casi cualquier lenguaje. (Como dijo Paul, Python y C++ juegan funciones importantes)

 3
Author: David Z,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-24 03:00:44

Como una adición sobre el núcleo de Mac OS X, Finder no había sido escrito en Objective-C antes de Snow Leopard. En Snow Leopard fue escrito en Cocoa, Objective-C

 3
Author: Çağatay Gürtürk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-01-21 18:22:30

Ver bajo el título Un Sistema Operativo Que Se Ejecuta En Múltiples Plataformas donde dice:

Most of the source code for Windows NT is written in C or C++.
 3
Author: pcunite,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-05-04 01:45:35

Windows obviamente no está escrito en C# (!)

Simplemente vea el código fuente de Windows y verá...

 1
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-02-25 15:21:44

Wow!!! 9 años de pregunta, pero acabo de encontrar una serie de interno artículo en la historia de la línea de comandos de Windows y creo que alguna parte de ella podría ser relevante lado de Windows de la pregunta:

Para aquellos que se preocupan por estas cosas: Muchos 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 huella 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 finales de la década de 1990, cuando la memoria costaba ~MB 60/MB (¡sí ... $ 60 por MEGABYTE!), el costo de memoria oculta de vtables, etc. fue 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 rendimiento y escala muy significativas para el código C++ en ese momento. Mientras uno todavía tiene que tener cuidado, la sobrecarga de rendimiento de C++ moderno en las computadoras modernas son mucho menos preocupantes, y a menudo son una compensación aceptable teniendo en cuenta sus beneficios de seguridad, legibilidad y mantenimiento ... es por eso que estamos actualizando constantemente el código de la consola a C++moderno.

 1
Author: adem,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-16 09:05:48