A definição de linguagem baseada em C

4

Qual é a definição de linguagem baseada em C?
C # é considerado como baseado em C?
Java é considerado como baseado em C?

Além disso, o que significa para um idioma ser baseado em outro idioma?

    
por Sonosar 24.05.2011 / 18:30
fonte

9 respostas

18

C baseado em meios gerais se parece com C em uma visualização de sintaxe. Não tem nada a ver com o funcionamento da linguagem ou com os recursos que ela oferece.

Qualquer coisa parecida com a seguinte será chamada c like

Type Declaration([Type] Param)
{
    Type Var (Statement Ender)
    Var[Selctor]SubItem 
}

Onde qualquer coisa que se pareça com isso pode ser chamada de lisp based

(lambda (arg) (+ arg 1))

Algumas pessoas fizeram muito trabalho e criaram uma árvore de idiomas para referência.

    
por 24.05.2011 / 18:47
fonte
5

Não há definição fixa. Mas sim, a maioria das pessoas consideraria ambas terem raízes em C.

Como regra geral, as chaves e as definições de função de cabeça para baixo que iniciam com o tipo de retorno ( return-type name(parameters) ) têm certeza de que uma linguagem tem suas raízes (sintáticas) em C .

É claro que, semanticamente, existem muitas outras linguagens que tiveram maior influência sobre C # e Java do que C. Mas sintaticamente, é bem claro que ambos são baseados em C.

    
por 24.05.2011 / 18:36
fonte
5

Sua pergunta pode não ter uma resposta definitiva porque as linguagens de programação são desenvolvidas em um modelo e seguem paradigmas (como funcional, orientado a objetos, processual, multi-paradigm etc.) que podem ser influenciados por muitos outros fatores e implementação) e, portanto, não pode ser baseada apenas em um único idioma, sem qualquer alteração em qualquer um deles (se houver algum que tente, não faria muito sentido), mas linguagens baseadas em C existem aqui.

C foi e é uma linguagem extremamente bem sucedida e muitos programadores estavam e ainda estão familiarizados com ela, então fazia sentido que as linguagens entendidas como linguagem de programação geral seguissem sua já familiar sintaxe de código, como blocos dentro de chaves e declarações de função e assim por diante e muitos, por exemplo, ver o Wikipedia "Lista de idiomas baseados em C" e observe que C em si deve algo semelhante ao ALGOL. Uma boa visualização pode ser encontrada na Wikipedia “Lista geracional de linguagens de programação” .

Mas como eu disse eu não considero esta resposta como definitiva porque uma linguagem também pode ser dita basear-se em outra de muitas maneiras, baseando seus principais paradigmas mas seguindo uma sintaxe diferente para que uma linguagem baseada em C possa ser criada sem chaves e semi-pontos, mas em muitos casos esse raciocínio é válido.

EDIT: da Wikipedia (o segundo link) um forro geral (novamente não definitivo) para sua segunda pergunta seria

the ancestor language with the strongest influence may be considered as the base language.

    
por 24.05.2011 / 19:26
fonte
4

Quando eu vejo (ou digo) "linguagem baseada em C" ou eu penso (ou quero dizer) "uma linguagem que segue a sintaxe C na natureza e é geralmente imperativo". Geralmente isso significa que a linguagem foi projetada para vender para programadores C . (Por exemplo, Pike, C ++ e Java - "é apenas C com objetos" ou "dynamic C" ou qualquer outra coisa.)

Assim, para mim , Java é uma linguagem "baseada em C" - isto é, ainda que a mecânica subjacente em Java seja quase inteiramente diferente a sintaxe imperativa básica de C. No entanto, além de algumas semelhanças de sintaxe e natureza imperativa, não há muitas semelhanças entre essas linguagens, por isso é importante não ler muito esse tipo de proposições.

Scala, por outro lado, não se encaixaria nesse requisito para mim, pois não é "geralmente imperativo" (pelo menos quando usado de forma idiomática).

Claro, isso é apenas meu uso do termo ;-) Assim, por causa da imprecisão, quando tais declarações / termos são usados, eles geralmente devem ser qualificados com o "X é C- baseado porque ... "para garantir um significado comum entre as partes.

    
por 24.05.2011 / 18:40
fonte
2

"Baseado em C" é um termo bastante nebuloso em geral. Nesse caso, ambas as linguagens podem ser consideradas "baseadas em C", porque emprestam muitas construções de sintaxe de C (delimitadores de chave, terminações de linha de ponto-e-vírgula, declarações de tipo de prefixo, etc.), mas são linguagens muito diferentes. termos de abordagem / paradigma.

Como resultado, a classificação de "baseado em C" é realmente muito útil em geral, exceto a partir de uma perspectiva histórica.

    
por 24.05.2011 / 18:35
fonte
2

A sintaxe estranha (por exemplo, nova) é mais difícil de lidar para muitas pessoas do que a sintaxe de aparência familiar. Assim, muitos idiomas são projetados para se parecer com a sintaxe C para fazer com que os novos usuários se sintam à vontade. Neste contexto, se uma linguagem (que pode ser completamente diferente por baixo) parecer bastante com C para evitar que os programadores de alunos C fujam gritando muitos parênteses, colchetes, novas palavras-chave, pontuação APL, etc., então pode-se dizer ser baseado em C. Vários designers de linguagens afirmaram esconder as implementações de "gostei", Scheme, Forth, Simula, Smalltalk, etc. como dentro de uma sintaxe similar a C para ajudá-los a ganhar mais popularidade de linguagem ou acessibilidade.

    
por 24.05.2011 / 21:19
fonte
1

Uma linguagem é baseada em outra linguagem, se foi projetada para modificar essa linguagem. "Projetado modificando", é claro, é o que "baseado em" significa. No caso de Java e C #, você pode ver que ambos foram criados modificando C: eles têm operadores de C, precedência de operadores de C, a maioria das palavras-chave de C, sintaxe de chaves de C, operadores booleanos de C, a sensibilidade de C, comportamento de C para o operador de divisão, o fall-through de C para as declarações switch, etc.

Além disso, a palavra oficial é que o Java é strongmente influenciado pelo Objetivo C . Objetivo C, como todos sabem, é baseado em C. O C # é baseado em Java. Isso faria com que ambos fossem pelo menos strongmente influenciados por C.

Por fim, esta é a terceira frase da especificação da linguagem Java :

The Java programming language is related to C and C++ but is organized rather differently, with a number of aspects of C and C++ omitted and a few ideas from other languages included.

Parece uma declaração tão clara quanto possível, pois Java é baseado, pelo menos em parte, em C (com alguns aspectos omitidos e alguns outros aspectos incluídos).

    
por 24.05.2011 / 18:59
fonte
1

Eu acho que C é realmente considerado um descendente de Algol. Algol e C são estritamente processuais, e Java e C # são orientados a objetos, então eles realmente derivam de Simula, apesar das muitas semelhanças sintáticas com C.

    
por 24.05.2011 / 18:41
fonte
0

É apenas algo que é dito de uma linguagem em duas situações:

  • você deseja atribuir algumas de suas desvantagens à sua herança C (colocar a culpa em outro lugar ou sugerir que a linguagem é irremediavelmente ruim)

  • você deseja reivindicar uma aparência familiar para obter novos programadores, insinuando que eles já sabem a maioria deles.

O que é compartilhado por todos esses idiomas "baseados em C" é tão pequeno que praticamente não tem importância.

    
por 24.05.2011 / 18:46
fonte

Tags