O C é código aberto?
9 answers
A linguagem C não é um software, mas um padrão definido, então não se diria que é de código aberto, mas sim que é um padrão aberto.
No entanto, existem milhões de compiladores diferentes para C, e muitos deles são de facto de código aberto. O exemplo mais notável é o compilador C do GCC , que está tudo sob a GNU General Public License (GPL), uma licença de código aberto. Há mais opções. a Watcom é de código aberto, por exemplo. Não há escassez de compiladores C de código aberto, mas sem dúvida o mais difundido, pelo menos no mundo Não-Windows, é o GCC.Para o Windows, a sua melhor aposta é, provavelmente, Watcom ou GCC usando Cygwin ou MinGW.
C é um padrão que especifica como os compiladores C devem gerar programas.
O próprio C não tem código fonte, tal como uma nota musical não tem Plástico.
Alguns compiladores C, como o GCC, são de código aberto.
C é apenas uma linguagem, e também uma linguagem normalizada. É basicamente o compilador que"faz todo o trabalho". Diferentes compiladores tinham dialetos diferentes; antes do padrão C99 ANSI, você tinha coisas como Borland C e outros compiladores concorrentes, que implementaram a linguagem C de suas próprias maneiras fantásticas.
stdlib
é apenas uma coleção acordada de bibliotecas padrão que são necessárias para estar presente em qualquer implementação ANSI C.
Para adicionar às outras grandes respostas:
Em relação aos diferentes dialetos -- há algumas características adicionais adicionadas a C que são específicas do compilador. Você poderá indicar a opção da linha de comandos -std=...
para o gcc para indicar o padrão de C que deseja usar, cada um tem Pequenas variações/adições à sintaxe, sendo o mais comum provavelmente c99
.
Cada compilador tende a implementar alguns extras diferentes, por exemplo, typeof()
não está na norma C e por isso os compiladores não têm de implementá-lo, mas, no entanto, é útil e a maioria dos compiladores fornecê-lo. Aqui está uma lista de extensões gcc C
O stdlib é um conjunto de funções especificadas na norma C. Assim como compiladores, o stdlib pode ter implementações diferentes. A implementação GNU é open source, como é gcc, mas existem outros compiladores e podem ser outras implementações de stdlib que são código fechado.
O compilador determinaria todos os mapeamentos de C para montagem, etc... mas no que diz respeito a alguém que a possui.....Noone really owns C however the ANSI / ISO determines the standards
O compilador C do GCC está escrito em C. por isso sabemos que há pelo menos um C escrito em C.
O GNU stdlib
(glibc) também está escrito em C (stdio.h, stdlib.h). Mas também tem algumas partes escritas em linguagem de montagem.
Os compiladores devem fazer a mesma coisa em relação ao padrão que suportam (que hoje em dia deve ser praticamente toda a mesma versão), mas há áreas cinzentas. A forma como os compiladores trabalham para a funcionalidade "indefinida", por exemplo. Se a especificação C disser que o comportamento não é definido para um determinado caso em que o compilador pode fazer o que quiser.
Existem também exemplos de funções adicionadas às bibliotecas (e novas bibliotecas adicionadas) pelos compiladores para suportar traços específicos de plataforma, criar uma vantagem competitiva ou simplesmente para tornar a vida mais fácil. O cínico pode sugerir que alguns destes são adicionados para ajudar a prender as pessoas em um compilador específico também.
Eu diria que C como língua não é código aberto. Como apontado por muitos, você pode baixar Compiladores e bibliotecas licenciadas GNU gratuitamente, mas se você quisesse escrever seu próprio compilador C, você precisaria seguir as normas ISO C, e ISO cobrar dinheiro duro para a especificação da linguagem C, que no momento da publicação este é $178. Então realmente a resposta depende de quais elementos você está interessado em ser livre e de código aberto.