Quelles sont les langues de programmation ne sont pas considérés comme de haut niveau? [fermé]

StackOverflow https://stackoverflow.com/questions/2624781

Question

Dans la théorie informatique je l'entends et lu sur les langues de haut niveau et bas niveau de tous les temps.

Et pourtant, je ne comprends pas pourquoi cela est toujours pertinent car il n'y a pas de (pertinents) langages de bas niveau, sauf assembleur en usage aujourd'hui.

Ainsi, vous obtenez:

bas niveau

  • Assembleur

Certainement pas bas niveau

  • C
  • BASIC
  • FORTRAN
  • COBOL
  • ...

de haut niveau

  • C ++
  • Ruby
  • Python
  • PHP
  • ...

Et si l'assembleur est de bas niveau, comment pourriez-vous mettre par exemple C dans la même liste. Je veux dire: C est extrêmement haut niveau par rapport à l'assembleur. Même même pour COBOL, Fortran, etc.

  • Alors, pourquoi tout le monde keep mentionner haut et langages de bas niveau si l'assembleur est vraiment la seule langue à faible niveau?
Était-ce utile?

La solution

Selon Wikipedia , les langages de bas niveau sont le code de la machine et l'assemblage.

De la source:

  

Dans l'informatique, un faible niveau   langage de programmation est une programmation   langue qui fournit peu ou pas   abstraction à partir d'un ordinateur de la   Architecture d'ensemble d'instructions. Le mot   « Faible » fait référence à la petite ou   quantité d'abstraction inexistante   entre la langue et la machine   la langue; à cause de cela, de bas niveau   langues sont parfois décrites comme   étant « proche du matériel. »

Alors, pour répondre à:

  

Alors, pourquoi tout le monde keep mentionner haut et langages de bas niveau si l'assembleur est vraiment la seule langue à faible niveau.

Je ne sais pas qui « tout le monde » est, mais je me risquerais à dire que lorsque les langues de retour de haut niveau ne sont pas aussi commun qu'aujourd'hui, il était plus pertinent de parler de bas niveau par rapport à haut niveau (parce qu'il y avait une quantité relativement importante de programmeurs d'écriture du code assembleur). Dans les temps modernes, il est une distinction moins importante. Personnellement, j'entends rarement les personnes qui utilisent ces termes, sauf de faire la différence entre l'ensemble ou non (sauf pour les moments où vous pourriez entendre quelqu'un soulevé sur Python référence à C ou C ++ aussi bas niveau, mais ce n'est pas dans l'esprit de la définition originale ).

Autres conseils

Vous constaterez que

  

bon nombre des vérités nous nous accrochons à dépendre de notre propre point de vue.

Pour un programmeur C, Assembleur est un langage de bas niveau. Pour un programmeur Java, C est un langage de bas niveau et ainsi de suite.

Je pense que les gens de programmation premier ordinateur-programme stocké avec 1 et de 0 feriez ont pensé assembleur un langage de haut niveau. Il est relatif.

(Citation de Retour du Jedi )

Vous posez une question relativement subjective; il est une question sur la terminologie, qui vernaculaire, et la perspective.

Par exemple, est Lisp un haut niveau ou d'un langage de bas niveau? Que faire si la mise en œuvre est en cours d'exécution sur une machine Lisp?

Souvent, quand les gens tentent de construire un spectre de bas niveau à haut niveau, ce qu'ils tentent de quantifier un certain degré de « proximité avec le matériel », par opposition au degré de « l'abstraction ».

Qualités qui comptent pour la proximité d'une mise en œuvre du matériel:

  • Le programmeur contrôle directement la mise en page de la mémoire des données et a accès à l'exécution à des adresses mémoire de données.
  • Les opérations mathématiques sont définies en termes de matériel ou vaguement définis afin de se conformer à différents types de matériel.
  • Il peut y avoir une bibliothèque offrant allocation dynamique de mémoire, mais l'utilisation de la mémoire dynamique est manuelle.
  • Gestion de la mémoire lors de la manipulation de la chaîne est manuelle.

qualités Converse qui comptent vers l'abstraction d'une mise en œuvre du matériel:

  • Le programmeur n'a pas accès à temps courir à l'adresse de données (références au lieu de pointeurs).
  • Les opérations mathématiques sont définies en termes spécifiques ne sont pas liés au matériel spécifique. (Par exemple, ActionScript 3 supports du type Number qui auto-convertis du nombre entier à virgule flottante plutôt que de trop-plein de l'expérience).
  • Gestion de la mémoire dynamique est gérée par l'environnement, éventuellement par le biais de comptage de référence, la collecte des ordures, ou d'un autre système de gestion automatique de la mémoire.
  • Gestion de la mémoire lors de la manipulation de chaînes est toujours caché du programmeur et géré par l'environnement.

D'autres qualités peuvent rendre une langue très abstraite par rapport au matériel sur lequel il fonctionne:

  • syntaxe déclarative basée sur la recherche. (Par exemple Prolog)

Avec des facteurs comme ceux-ci à l'esprit, je réviserait le spectre que vous avez écrit comme suit:

Niveau le plus bas:

  • Assembleur de la plate-forme en question.

langages de bas niveau avec le contrôle de flux de niveau supérieur à l'assemblage:

  • C, C ++
  • Pascal

langues de haut niveau:

  • FORTRAN
  • COBOL
  • Python
  • Perl

langues au plus haut niveau:

  • PROLOG
  • Python
  • Système

Python apparaît deux fois par intention -. Elle couvre une partie du spectre en fonction de la façon dont le code est écrit

bas niveau, je voudrais ajouter:

  • IL NET
  • Java JVM
  • Autre code P-utilisé dans des environnements comme VB6

Le « niveau » d'une langue est une cible mouvante. En 1973, PL / je considérais comme un langage de haut niveau. Aujourd'hui, C est considéré (au moins par les professionnels de la langue) comme langage de bas niveau [voir note]. Certaines des raisons:

  • représentations au niveau machine Expose de numéros
  • "entier" dépassement arithmétique peut
  • Pas de support réel pour les chaînes, ou à tout le moins, les chaînes ne sont pas de première classe
  • Gestion de la mémoire manuelle
  • arithmétique d'adresse
  • Unsafe

Une langue de haut niveau pourrait inclure

  • Prise en charge des types entiers indépendants de la machine cible
  • arithmétique entier par défaut ne déborde moins que la machine à court de mémoire
  • Cordes en tant que valeurs de première classe avec, par exemple, la concaténation construit en
  • Gestion automatique de la mémoire sans arithmétique d'adresse
  • Sécurité

Certains candidats comme « langues de haut niveau » par cette définition pourrait inclure Icône, Scheme, Smalltalk, et certains de vos langages de script préférés.

Retour au jour où j'étais un jeune savant et les dinosaures parcouraient la terre, les gens appelé Icône comme « très langue de haut niveau ». Comme récemment que il y a 15 ans, vous pouvez même assister à un symposium sur appris très haut niveau des langues. Mais ce terme n'est pas utilisé beaucoup plus.

  

Pourquoi tout le monde keep mentionner des langues de niveau faible et élevé?

Même si la différence entre « haut » et « bas » ne cesse de changer, des distinctions comme celles énumérées ci-dessus sont encore importants. Et il y a tellement nombre distinction que les mots « haut » et « bas » peut être un raccourci utile. Mais pas utile à un cynique, un langage de haut niveau est celui qui ressemble au moins aussi puissant que quelle que soit ma langue préférée est, et un langage de bas niveau est tout le reste. En d'autres termes, « niveau » peut facilement dégénérer en simple injures.

Note: Il est difficile de trouver des citations pour la terminologie utilisée à des réunions professionnelles, en particulier lorsque les professionnels n'utilisent pas les termes « bas niveau » et « haut niveau », parce qu'ils ne sont pas si technique. Mais danben sur les citations posées, et je trouve un couple:


P.S. Ne comptez pas trop sur Wikipedia pour de bonnes informations sur les langages de programmation, en particulier si la référence Wikipedia cite pas de références ou sources

devinant Purement, mais cela peut être un cas de langue de décalage, dans lequel la distinction entre langauges faible revenu et à haut niveau évolue lentement dans l'esprit des gens dans la différence entre les langues-non gérés managed- et, typé et typées-langues etc.etc. (Au moins dans la façon dont les gens utilisent la terminologie).

Dans une large mesure, les catégories « bas niveau » et « haut niveau » et non binaires, mais sont un continuum. Il y a quelques langues qui sont clairement à faible niveau (assemblage, code machine), mais au-delà il n'y a vraiment que « niveau supérieur » et « niveau inférieur ».

Comme je le vois, les langues « niveau inférieur » nécessitent un code qui ressemble plus à l'architecture de l'ordinateur, et les langues « niveau supérieur » acceptent le code qui ressemble plus à la structure du problème. Mais avec cela, les langues peuvent être de haut niveau pour un problème et de bas niveau pour une autre.

bas niveau Binaire Assembleur

ET IL Java JVM Autre code P-utilisé dans des environnements comme VB6

Certainement pas bas niveau

C DE BASE FORTRAN COBOL Python Perl Pascal

de haut niveau C ++ Rubis Python PHP PROLOG Schéma

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top