ce qu’il a fait différemment de Lisp

1. Conditionnel Un conditionnel est une construction if-alors-else. Maintenant, nous leur donnons pour acquis. Ils ont été inventés par McCarthy lors de la mise au point de LISP. (Fortran à ce moment-là n’a eu qu’un goto conditionnel, basé sur l’instruction de transfert dans le matériel sous-jacent.) McCarthy, qui était sur le comité d’Algol, introduit sous condition d’Algol, à partir de laquelle ils se sont étendus à la plupart des autres langues.
2 . Un type de fonction. Dans Lisp, les fonctions sont des objets de première classe – sont un type de données comme entiers, chaînes, etc. et avoir une représentation littérale, peuvent être stockés dans les variables, peuvent être transmis comme des arguments, etc.
3 . Réursion Récursion existe comme concept mathématique depuis avant Lisp, bien sûr; Mais Lisp était le premier langage de programmation pour le soutenir. (On pourrait dire qu’il est implicite de faire les fonctions d’objets de première classe.)
4. Un nouveau concept de variables. Dans Lisp, toutes les variables sont en fait des pointeurs. Les valeurs ont des types, des variables non variables et d’affiliation ou de liaison signifie copier des caves, pas sur ce qu’ils pointent.
5. Collection des ordures.
6. Programmes composés d’expressions. Les programmes LISP sont des arbres d’expressions, chacun renvoie une valeur. (Dans certains LISPS, les expressions peuvent renvoyer plusieurs valeurs.) Ce contraste avec Fortran et la plupart des langues successives, qui distinguent des expressions et des déclarations.
Il était naturel d’avoir cette distinction en Fortran, car (comme prévu dans une langue Dans lequel le format d’entrée a été des cartes perforées), la langue était orientée vers des lignes. Les déclarations n’ont pas pu être données. Ainsi, pendant que vous aviez besoin d’expressions pour que les mathématiques travaillent, il n’a pas eu de sens de faire de rien d’autre retourner une valeur, car il ne pouvait y avoir rien d’attendre.
Cette limitation a disparu avec l’arrivée des langues structurées en blocs , mais à ce moment-là, c’était déjà trop tard. La distinction entre expressions et déclarations a été renforcée. Il a été transmis de Fortran à Algol et de là à ses descendants.
Lorsqu’une langue est faite entièrement des expressions, vous pouvez les faire comme vous le souhaitez. Vous pouvez dire soit (à l’aide de la syntaxe d’arc):
(si foo (= x 1) (= x 2))
ou
(= x (si FOO 1 2)
7. Un type de symbole. Les symboles diffèrent des chaînes dans lesquelles l’égalité peut être prouvée en comparant un pointeur.
8. Une notation pour le code utilisant des arbres symboles.
9. Toute langue est toujours disponible. Il n’y a pas de distinction réelle entre le temps de lecture, le temps de compilation et le temps d’exécution. Vous pouvez compiler ou exécuter du code lors de la lecture, de la lecture ou d’exécution du code lors de la compilation, de lire ou de compiler le code au moment de l’exécution.
Exécuter le code au temps de lecture permet aux utilisateurs de reprogrammer la syntaxe LISP; Le code d’exécution dans la compilation est la base des macros; La compilation au moment de l’exécution est la base de l’utilisation de LISP comme langue d’extension dans des programmes tels que EMACS; Et la lecture du temps d’exécution permet aux programmes de communiquer avec les expressions-S, une idée réinventée récemment sous forme de XML.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *