Euphorisme (langage de programmation)
L'euphorisme est un langage de programmation interprété par créé par Robert Craig de logiciel rapide de déploiement.
Introduction
Développé comme un projet personnel pour inventer un langage de programmation à partir de zéro, la première incarnation de l'euphorisme a été créé par Robert Craig sur une Méga-RUE d'Atari. Il a appelé Euphoria comme acronyme pour le " ; Utilisateur programmant avec les objets hiérarchiques pour Applications" interprété robuste ; , bien qu'il y ait un certain soupçon que c'est en fait un Backronym . La première incarnation publique de la langue était pour la plate-forme à 32 bits de DOS et a été libérée dans le juillet 1993 . La version originale d'Atari, jusqu'ici, n'a pas été libérée. En date du dégagement de la version 3.0 ( le 17 octobre , 2006 ), c'est la source ouverte .
Il a été développé avec les buts suivants de conception :
plus facile à apprendre et employer que le BASIC et avec à constructions à niveau élevé plus-conformées
Pour employer la mémoire à 32 bits de plat-forme pour éviter la gestion de la mémoire principale compliquée et classer/adressant des limites
Appui de correction et erreur-manipulation d'exécution
Indice inférieur et type vérification
Dactylographie variable lâche et stricte
Programmation orientée objectivement par l'intermédiaire des objets comme types, définis pour l'utilisateur ou autrement
Interprété, avec la gestion de la mémoire principale et la collection d'ordures automatiques
Avec le dégagement de la version 2.5 l'interprète d'euphorisme a été coupé en deux sections : l'analyseur d'entrée et l'interprète principal. La source d'entrée et ouverte, est maintenant écrite dans l'euphorisme au lieu du C. Le d'entrée est également employé avec Euphorisme--c au traducteur et à la reliure.
Dispositifs
La collection hétérogène de
dactylographie (les ordres)
Bibliothèque de graphiques de DOS
Programme de mise au point
Système de base de données
Manipulation de bas niveau de mémoire
Appui de Windows api
Cgi de programmant
Modes d'exécution
Interprète Traducteur du C (E2C) pour les executables ou le autonomes de enchaînement dynamique
Compilateur de Bytecode et interprète (Shrouder)
La reliure lie le code source d'euphorisme à l'interprète pour créer un exécutable.
Utilisation
L'euphorisme a été principalement employée par des amateurs pour le jeu d'ordinateur d'utilité et programmant, mais a prouvé utile pour des buts assez divers. La force primaire semble être la facilité de traiter les collectes des données dynamiques de divers types, les plus utiles en traitant le traitement de corde et à traitement d'images, qui peut être tout à fait difficile dans beaucoup de langues. Elle a été employée dans les expériences de l'intelligence artificielle , l'étude des mathématiques , pour la programmation de enseignement, et pour mettre en application des polices impliquant des milliers de caractères. En outre, on s'est avéré que l'euphorisme est un langage de programmation utile de cgi : la recherche d'archives de dossier est écrite dans l'euphorisme, par exemple.
Types de données
L'euphorisme a deux types de données de base : ; atome : Ce sont des nombres, mis en application en tant que le nombre entier de 31 bits ou 64-bit IEEE à point mobile, selon la valeur courante. L'euphorisme change dynamiquement l'exécution en la plus efficace pour la valeur courante de la donnée élémentaire. ; ordre : Le dirige qui peut avoir zéro éléments ou plus ; chaque élément est un atome ou un ordre . Le nombre d'éléments dans un ordre n'est pas fixe ; le codeur peut ajouter ou enlever des éléments de la manière prescrite pendant le d'exécution. L'euphorisme manipule automatiquement l'attribution et la désaffectation du RAM , et la collection d'ordures automatique pour vous. Différents éléments sont mis en référence using une valeur d'index jointe entre crochets. Le premier élément dans un ordre a un index d'un. Des ordres inclus par intérieur d'éléments sont mis en référence par des valeurs d'index bracked additionnelles, ainsi X [2] se rapporte au deuxième élément contenu dans l'ordre qui est le troisième élément du X.En plus, l'euphorisme a deux types de données spécialisés par de : ; nombre entier : Un formulaire spécial de l'atome , limité à 31 valeurs du nombre entier de bit dans la gamme -1073741824 1073741823. Les types de données du nombre entier sont plus efficaces que les types de données de l'atome , mais ne peuvent pas contenir la même gamme des valeurs. Des caractères sont stockés car les nombres entiers, par exemple le ASCII de codage - « A » est exactement identique que le codage 65. ; objet : Un datatype générique qui peut contenir ci-dessus l'un des, et peut être changé pendant le d'exécution. Ceci signifie que si vous avez un objet appelé le X qui est assigné la valeur 3.172, alors plus tard vous pouvez lui assigner le " de valeur ; ABC" ;. Noter cela en fait, chaque élément d'un ordre est réellement un objet .
Il n'y a aucun type de données de la corde de caractère, comme ceux-ci sont représentés par un ordre des valeurs du nombre entier . Cependant, parce que les cordes littérales sont si utilisées généralement dans la programmation, l'euphorisme interprète double-citent les caractères inclus comme ordre des nombres entiers. Ainsi " ; ABC" ; est vu comme si le codeur avait écrit : {« A », « B », « C »} ce qui est identique que : {65.67}
Bonjour monde
met (1, " ; Bonjour monde ! \ n" ;)
Exemples
Note de : Début de commentaires de code de avec un double " de tiret ; --" ; et passer par la fin de la ligne. Il n'y a aucun commentaire multiligne.En tant que brefs exemples, le code suivant
delete_item global de fonction (objet vieux, groupe d'ordre) position de nombre entier -- Coder commence -- position = trouvaille (vieille, groupe) si position > 0 puis groupe = groupe. longueur (groupe) finir si retourner le groupe finir la fonction
recherche un vieil article dans un groupe d'articles. Si trouvé, il l'enlève en enchaînant tous les éléments avant lui avec tous les éléments après lui. Le résultat est alors retourné. Noter que les éléments dans les ordres sont 1 basé répertorié. Ceci signifie que le premier élément a un index de 1.
La simplicité est évidente parce que le code trace clairement ses constructions avec des mots. Au lieu des croisillons, des points-virgules, et des points d'interrogation, vous voyez des expressions comme « si.then », « extrémité si », et « fonction de fin ».
La flexibilité est présente ; l'article « vieux » a pu être des cordes, des nombres, des images, ou des collectes des données entières elles-mêmes. Une fonction différente pour chaque type de données n'est pas nécessaire, ni le programmeur doit vérifier les types de données. Cette fonction fonctionnera avec n'importe quel ordre des données de n'importe quel type, et n'exige aucune bibliothèque externe.
replace_item global de fonction (l'objet vieux, objectent groupe le nouveau, d'ordre) position de nombre entier -- Coder commence -- position = trouvaille (vieille, groupe) si position > 0 puis groupe = nouveau finir si retourner le groupe finir la fonction
La sûreté est présent étant donné qu'il n'y a aucun indicateur impliqué et des indices inférieurs sont automatiquement vérifiés. Ainsi la fonction ne peut pas mémoire d'accès out-of-bounds, et ne peut pas aller au delà de l'extrémité de l'ordre ou avant le commencement de elle pour corrompre la mémoire. Il n'y a aucun besoin explicitement d'assigner ou désaffecter la mémoire, et aucune possibilité d'une fuite.
group = groupe. longueur (groupe)
montre certains des moyens de gestion de l'ordre . Un ordre peut contenir une collection de n'importe quels types, et ceci peut être découpé (pour prendre un sous-ensemble des données dans un ordonnancer ) et être enchaîné en tranches dans les expressions, sans le besoin de fonctions spéciales.5 présente le nouveau symbole de « $ », qui est employé pour le " ; longueur (ordre). " ; Ainsi, l'exemple ci-dessus pourrait être écrit dans 2.5 comme suit :
group = groupe. $
Dépassement de paramètre
Un autre dispositif est que tous les arguments aux routines sont toujours passés par valeur. Il n'y a aucun service de passer-par-référence. Ceci est mis en application d'une façon très efficace car les ordres font automatiquement Copie-sur-écrire le la sémantique de . En d'autres termes, quand vous passez un ordre à une routine, au commencement seulement une référence à elle a passé mais au point que la routine modifie d'abord un paramètre d'ordre, l'ordre est copié et les mises à jour de routine une copie de l'original.
Langues comparables
Langage de programmation du D Langage de programmation de Lua
Langage de programmation de python
Rebol - d'échange de données et langage de programmation
Boxx
.
| Random links: | Claremont, la Californie | Résolution 3236 de l'Assemblée générale des Nations Unies | Kanenobu | Syberia II | Dossier international d'adoption | Euforia_(lenguaje_de_programación) |