Pergunta

Na teoria da informática, ouço e li sobre idiomas de alto e baixo nível o tempo todo.

No entanto, não entendo por que isso ainda é relevante, pois não há idiomas de baixo nível (relevantes), exceto o assembler em uso hoje.

Então você recebe:

Nível baixo

  • Assembler

Definitivamente não é de baixo nível

  • C
  • Básico
  • Fortran
  • COBOL
  • ...

Alto nível

  • C ++
  • Rubi
  • Pitão
  • Php
  • ...

E se o Assembler for de baixo nível, como você poderia colocar, por exemplo, C na mesma lista. Quero dizer: C é extremamente alto em comparação com o assembler. Mesmo mesmo para Cobol, Fortran, etc.

  • Então, por que todo mundo continua mencionando idiomas de alto e baixo nível se o assembler é realmente o único idioma de baixo nível?
Foi útil?

Solução

De acordo com Wikipedia, os idiomas de baixo nível são o código da máquina e a montagem.

Da fonte:

Na ciência da computação, uma linguagem de programação de baixo nível é uma linguagem de programação que fornece pouca ou nenhuma abstração da arquitetura do conjunto de instruções de um computador. A palavra "baixa" refere -se à quantidade pequena ou inexistente de abstração entre a linguagem e a linguagem da máquina; Por esse motivo, as línguas de baixo nível às vezes são descritas como "próximas ao hardware".

Então, para responder:

Então, por que todo mundo continua mencionando idiomas de alto e baixo nível se o assembler é realmente o único idioma de baixo nível.

Não sei quem é "todo mundo", mas eu me arriscaria, quando os idiomas de alto nível não eram tão comuns quanto hoje, era mais relevante falar sobre o nível baixo e o alto nível (porque Havia uma quantidade relativamente significativa de programadores escrevendo código de montagem). Nos tempos modernos, é uma distinção menos importante. Pessoalmente, raramente ouço pessoas usando esses termos, exceto para diferenciar entre montagem ou não (exceto nos momentos em que você pode ouvir alguém criado no python referente-se a C ou C ++ como baixo nível, mas isso não está no espírito da definição original ).

Outras dicas

Vai descobrir que

Muitas das verdades que nos apegamos a depender de nosso próprio ponto de vista.

Para um programador C, o Assembler é uma linguagem de baixo nível. Para um programador Java, C é uma linguagem de baixo nível e assim por diante.

Eu suspeito que o pessoal da programação do Computador de programa armazenado pela primeira vez com 1s e 0s teriam considerado montador uma linguagem de alto nível. É tudo relativo.

(Citação do Retorno dos Jedi)

Você está fazendo uma pergunta relativamente subjetiva; É uma pergunta sobre terminologia, essa vernáculo e perspectiva.

Por exemplo, o LISP é um idioma de alto nível ou de baixo nível? E se a implementação estiver em execução em uma máquina Lisp?

Freqüentemente, quando as pessoas tentam construir um espectro de baixo nível a alto nível, o que está tentando quantificar é um grau de "proximidade com o hardware", em oposição ao grau de "abstração".

Qualidades que contam para a proximidade de uma implementação com o hardware:

  • O programador controla diretamente o layout de memória dos dados e tem acesso no tempo de execução para os endereços de memória dos dados.
  • As operações matemáticas são definidas em termos de hardware ou fracamente definidas para estar em conformidade com diferentes tipos de hardware.
  • Pode haver uma biblioteca fornecendo alocação de memória dinâmica, mas o uso da memória dinâmica é manual.
  • O gerenciamento da memória durante a manipulação da string é manual.

Converse qualidades que contam para a abstração de uma implementação do hardware:

  • O programador não tem acesso ao tempo de execução ao endereço de dados (referências em vez de ponteiros).
  • As operações matemáticas são definidas em termos específicos não vinculados a hardware específico. (por exemplo, ActionScript 3 suporta o Number Digite que se autodenomina do número inteiro ao ponto flutuante, em vez de experimentar o excesso.)
  • O gerenciamento da memória dinâmica é tratada pelo ambiente, possivelmente por meio de contagem de referência, coleta de lixo ou outro esquema de gerenciamento de memória automatizado.
  • O gerenciamento da memória durante a manipulação da string está sempre oculto do programador e tratado pelo ambiente.

Outras qualidades podem tornar um idioma muito abstrato em comparação com o hardware no qual ele é executado:

  • Sintaxe declarativa e baseada em pesquisa. (por exemplo, Prolog)

Com fatores como esses em mente, eu revisaria o espectro que você escreveu da seguinte forma:

Nível mais baixo:

  • Linguagem de montagem da plataforma em questão.

Idiomas de baixo nível com controle de fluxo de nível superior do que a montagem:

  • C, C ++
  • Pascal

Idiomas de alto nível:

  • Fortran
  • COBOL
  • Pitão
  • Perl

Idiomas de nível mais alto:

  • Prolog
  • Pitão
  • Esquema

O Python aparece duas vezes por intenção - abrange uma parte do espectro, dependendo de como o código é escrito.

Tão baixo nível, eu acrescentaria:

  • .NET IL
  • Java JVM
  • Outro código P usado em ambientes como o VB6

O "nível" de um idioma é um alvo em movimento. Em 1973, PL/I era considerado uma linguagem de alto nível. Hoje, C é considerado (pelo menos pelos profissionais de idiomas) como uma linguagem de baixo nível [ver nota de rodapé]. Algumas das razões:

  • Expõe representações de números no nível da máquina
  • A aritmética "inteira" pode transbordar
  • Não há apoio real para strings, ou pelo menos, as cordas não são de primeira classe
  • Gerenciamento de memória manual
  • Endereço aritmético
  • Inseguro

Uma linguagem de alto nível pode incluir

  • Suporte para tipos inteiros independentes da máquina de destino
  • A aritmética inteira padrão nunca transborda, a menos que a máquina fique sem memória
  • Strings como valores de primeira classe com, por exemplo, concatenação incorporada
  • Gerenciamento automático de memória sem endereço aritmética
  • Seguro

Alguns candidatos como "idiomas de alto nível" por essa definição podem incluir ícone, esquema, SmallTalk e algumas das suas linguagens de script favoritas.

Naquela época, quando eu era jovem estudioso e dinossauros percorreram a terra, as pessoas se referiam ao ícone como um "muito idioma de alto nível ". Há 15 anos, você pode até assistir a um simpósio instruído em idiomas de nível muito alto. Mas esse termo não é mais usado.

Por que todo mundo continua mencionando idiomas de alto e baixo nível?

Embora a diferença entre "alta" e "baixa" continue mudando, distinções como as listadas acima ainda são importantes. E há assim muitos A distinção de que as palavras "altas" e "baixas" podem ser uma abreviação útil. Mas não é tão útil-a um cínico, uma linguagem de alto nível é uma que parece pelo menos tão poderosa quanto qualquer que seja a minha linguagem favorita, e uma linguagem de baixo nível é todo o resto. Em outras palavras, "nível" pode degenerar facilmente em mero xingamento de nome.

Nota de rodapé: É difícil encontrar citações para terminologia usada em reuniões profissionais, especialmente quando os profissionais não usam os termos "de baixo nível" e "de alto nível" porque não são tão técnicos. Mas Danben Questionado sobre citações, e eu encontrei um casal:


PS não conta muito na Wikipedia para obter boas informações sobre linguagens de programação, especialmente se a referência da Wikipedia citar sem referências ou fontes

Puramente adivinhando aqui, mas isso pode ser um caso de mudança de linguagem, pelo qual a distinção entre os lançamentos de baixo e alto nível está evoluindo lentamente na mente das pessoas para a diferença entre as idiomas gerenciados e não gerenciados, digitados e não-lançantes etc etc. (Pelo menos na maneira como as pessoas estão usando a terminologia).

Em grande parte, "baixo nível" e "alto nível", não categorias binárias, mas são um continuum. Existem alguns idiomas que são claramente de nível baixo (montagem, código da máquina), mas além disso há realmente apenas "nível superior" e "nível inferior".

Eu o vejo "idiomas de" nível inferior "exigem código que se parece mais com a arquitetura do computador, e os idiomas de" nível superior "aceitam código que se parece mais com a estrutura do problema. Mas com isso, os idiomas podem ser de alto nível para um problema e de baixo nível para outro.

Montador binário de baixo nível

Et il Java JVM Outro código P usado em ambientes como VB6

Definitivamente não é de baixo nível

C FORTRAN COBOL Python Perl Pascal

Esquema de PróLomo Python Python Python Python de alto nível

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top