Esta es probablemente una pregunta estúpida, pero me he estado preguntando sobre esto por un tiempo. ¿Tiene C (o cualquier otro lenguaje de bajo nivel, para el caso) incluso una fuente, o es el compilador la parte que "hace todo el trabajo", incluido el análisis? Si es así, ¿no podrían los diferentes compiladores tener diferentes dialectos en C? ¿De dónde viene el factor stdlib en esto? Realmente me gustaría saber cómo funciona esto.¿Es C de código abierto?
Respuesta
El lenguaje C no es un software sino un defined standard, por lo que uno no diría que es de código abierto, sino que es un estándar abierto.
Hay un gazillion diferentes compiladores para C sin embargo, y muchos de los que son de hecho de código abierto. El ejemplo más notable es GCC's C compiler, que está todo bajo GNU General Public License (GPL), una licencia de fuente abierta.
hay más opciones. Watcom es de código abierto, por ejemplo. No hay escasez de compiladores C de fuente abierta, pero sin duda el más extendido, al menos en el mundo no Windows, es GCC.
Para Windows, su mejor apuesta es probablemente Watcom o GCC usando Cygwin o MinGW.
compilador de C de GCC está escrito en C. Así que sabemos que hay al menos uno compilador de C escrito en C.
de GNU stdlib
(glibc) también está escrito en C (stdio.h, stdlib.h) Pero también tiene algunas partes escritas en lenguaje ensamblador.
C es un estándar que especifica cómo los compiladores de C deben generar programas.
C no tiene ningún código fuente, al igual que una nota musical no tiene ningún plástico.
Algunos compiladores de C, como GCC, son de código abierto.
el compilador determinar todas las asignaciones de C a Asamblea etc ... pero por lo que alguien ser dueño de ella ..... nadie es realmente el dueño C sin embargo, la norma ANSI/ISO determina las normas
C es simplemente un lenguaje, y uno estandarizado en eso, también. Es más o menos el compilador que "hace todo el trabajo". Diferentes compiladores tenían dialectos diferentes; antes del estándar C99 ANSI, tenías cosas como Borland C y otros compiladores que compiten, que implementaron el lenguaje C de maneras fantásticas.
stdlib
es sólo un acuerdo sobre un conjunto de librerías estándar que se requieren para estar presente en cualquier aplicación ANSI C.
para añadir a las otras grandes respuestas:
En cuanto a los diferentes dialectos - hay algunas características adicionales añadidas a C que son compilador específico. Puede proporcionar el indicador de línea de comando -std=...
a gcc para especificar el estándar C que desea usar, cada uno tiene ligeras variaciones/adiciones a la sintaxis, el más común es probablemente c99
.
Cada compilador tiende a implementar algunos extras diferentes, por ejemplo, typeof()
no está en el estándar C y los compiladores no tienen que implementar esto, pero no obstante es útil y la mayoría de los compiladores lo proporcionan. Aquí es a list of gcc C extensions
El stdlib es un conjunto de funciones especificadas en el estándar C. Al igual que los compiladores, stdlib puede tener diferentes implementaciones.La implementación de GNU es de código abierto, al igual que gcc, pero existen otros compiladores y otras implementaciones de stdlib que son de código cerrado.
Una muy buena pregunta. There is a way para definir un estándar de lenguaje (¡no la implementación!) En forma de un "código fuente", en un lenguaje estricto y sin ambigüedades. Lamentablemente, todos los idiomas antiguos, incluida C, están mal definidos. Pero aún es posible traducir esas definiciones a un formulario de código fuente.
Otro enfoque es definir un idioma a través de su operational semantics, a menudo en forma de una implementación de referencia simple (e ineficaz).
Helgi Hrafn Gunnarsson ha escrito la respuesta principal, pero pensé que sería útil señalar que efectivamente también se puede llegar a dialectos.
Los compiladores deberían hacer lo mismo con respecto al estándar que admitan (que en estos días debería ser prácticamente la misma versión) pero hay áreas grises. La forma en que los compiladores trabajan para la funcionalidad 'indefinida', por ejemplo. Si la especificación C dice que el comportamiento no está definido para un caso específico, entonces el compilador puede hacer prácticamente lo que quiera.
También hay ejemplos de funciones agregadas a las bibliotecas (y nuevas bibliotecas agregadas) por los fabricantes del compilador para soportar características de plataforma específicas, crear una ventaja competitiva o simplemente facilitar la vida. El cínico podría sugerir que algunos de estos se agregan para ayudar a bloquear a las personas en un compilador específico también.
Yo diría que C como lenguaje no es de código abierto. Como señalaron muchos, puede descargar librerías y compiladores con licencia GNU de forma gratuita, pero si quisiera escribir su propio compilador C, necesitaría seguir los estándares ISO C, e ISO cobrar efectivo por la especificación de la C idioma, que en el momento de publicar esto es de $ 178. Así que realmente la respuesta depende de qué elementos le interesan ser gratuitos y de código abierto.
- 1. ¿ExtJS es de código abierto?
- 2. ¿El compilador de C# es de código abierto?
- 3. C# código abierto analizador NMEA
- 4. Código abierto compilador/convertidor C++ a C#
- 5. Proyecto de código abierto simple C
- 6. ¿Qué es una buena implementación de árbol abierto de código abierto en C?
- 7. Cliente de código abierto torrent en C#
- 8. GitHub para Windows: ¿es de código abierto?
- 9. ¿Magento realmente es de código abierto?
- 10. Buen código fuente abierto para C++
- 11. ¿El código fuente abierto es JVM?
- 12. código abierto RTOS enlaces de código
- 13. de código abierto máquina virtual
- 14. Pequeña biblioteca Unicode de código abierto para C/C++
- 15. Perfiladores de código abierto recomendados
- 16. OCR de código abierto
- 17. Sistema experto de código abierto
- 18. ¿Qué es un buen primer proyecto de código abierto?
- 19. Incluyendo código en proyectos de código abierto
- 20. de código abierto C++ exploración de la biblioteca
- 21. ¿Proyecto de código abierto para el desarrollador de C++?
- 22. F # proyectos de código abierto
- 23. Verificación ortográfica de código abierto
- 24. Biblioteca de dibujo de código abierto (dwg) en C#
- 25. El más bello software de código abierto escrito en C++
- 26. servidor proxy de código abierto C# - ¿algún proyecto/ejemplo?
- 27. ¿Cuál es el "mejor" intérprete de lolcode de código abierto?
- 28. ¿Cuál es su herramienta de depuración de código abierto favorita?
- 29. ¿Alternativa de código abierto para Mathworks Polyspace?
- 30. Delphi - proyectos de código abierto
buena respuesta, aunque la nota musical/analogía plástica era un poco surrealista. :-) – Spudley