Langage de programmation
Saviez-vous ...
Enfants SOS b??n??voles ont aid?? ?? choisir des articles et faites autre mat??riel p??dagogique parrainage d'enfants aide les enfants un par un http://www.sponsor-a-child.org.uk/ .
Un langage de programmation est un langage artificiel qui peut ??tre utilis?? pour contr??ler le comportement d'une machine, en particulier un ordinateur . Les langages de programmation sont d??finis par syntaxique et r??gles s??mantiques qui d??crivent leur structure et leur sens respectivement. De nombreux langages de programmation ont une certaine forme de description ??crite de leur syntaxe et la s??mantique; certains sont d??finis par une mise en ??uvre officielle (par exemple, un Norme ISO), tandis que d'autres ont une impl??mentation dominante (par exemple, Perl ).
Les langages de programmation sont ??galement utilis??s pour faciliter la communication sur la t??che d'organiser et de manipulation de l'information, et d'exprimer des algorithmes pr??cis??ment. Certains auteurs limitent le terme "langage de programmation" pour les langues qui peuvent exprimer tous les algorithmes possibles; parfois le terme " langage informatique "est utilis?? pour les langues artificielles plus limit??es.
Langage de programmation listes |
---|
|
Des milliers de diff??rents langages de programmation ont ??t?? cr????s ?? ce jour, et de nouvelles langues sont cr????s chaque ann??e.
D??finitions
Traits souvent consid??r??es comme importantes pour constituer un langage de programmation:
- Fonction: Un langage de programmation est un langage utilis?? pour ??crire programmes informatiques, qui impliquent un ordinateur effectuant une sorte de calcul ou algorithme et ??ventuellement contr??ler des appareils externes tels que des imprimantes, des robots, et ainsi de suite.
- Cible: Langages de programmation diff??rent langues naturelles que les langues naturelles ne sont utilis??s que pour l'interaction entre les personnes, tandis que les langages de programmation permettent ??galement l'homme de communiquer des instructions aux machines. Certains langages de programmation sont utilis??s par un dispositif pour contr??ler un autre. Par exemple Programmes PostScript sont souvent cr????s par un autre programme pour contr??ler un imprimante d'ordinateur ou ??cran.
- Constructions: Les langages de programmation peuvent contenir des constructions pour la d??finition et la manipulation structures de donn??es ou ?? commander le flux d'ex??cution.
- Puissance expressive: Le th??orie de calcul classe langues par les calculs qu'ils sont capables d'exprimer. Tous Turing langues compl??tes peut mettre en ??uvre le m??me ensemble de algorithmes . ANSI / ISO SQL et Charit?? sont des exemples de langues qui ne sont pas encore Turing souvent appel??s langues compl??tes de programmation.
Langues non-informatiques, tels que des langages de balisage comme HTML ou grammaires formelles comme BNF, ne sont g??n??ralement pas consid??r??s comme des langages de programmation. Un langage de programmation (qui peuvent ou peuvent ne pas ??tre Turing complet) peut ??tre incorpor?? dans ces langues (h??tes) non-calcul.
But
Un objectif important de langages de programmation est de fournir des instructions ?? un ordinateur. Ainsi, les langages de programmation diff??rent de la plupart des autres formes d'expression humaine en ce qu'elles exigent un plus grand degr?? de pr??cision et l'exhaustivit??. Lorsque vous utilisez un langage naturel pour communiquer avec d'autres personnes, auteurs humains et haut-parleurs peuvent ??tre ambigus et faire de petites erreurs, et encore se attendre leur intention d'??tre compris. Cependant, au sens figur??, les ordinateurs "font exactement ce qu'on leur dit de faire", et ne peuvent pas ??comprendre?? ce que le code de la programmation destin??e ?? ??crire. La combinaison de la d??finition de la langue, la programme et les entr??es du programme doivent sp??cifier enti??rement le comportement externe qui se produit lorsque le programme est ex??cut??.
Beaucoup de langues ont ??t?? con??us ?? partir de z??ro, modifi?? pour r??pondre aux nouveaux besoins, combin??e avec d'autres langues, et finalement tomb??e en d??su??tude. Bien qu'il y ait eu des tentatives pour concevoir une langue ??universelle?? de l'ordinateur qui sert toutes fins, tous ont pas r??ussi ?? ??tre accept?? dans ce r??le. La n??cessit?? pour les langues informatiques divers d??coule de la diversit?? des contextes dans lesquels les langues sont utilis??es:
- Les programmes vont de petits scripts ??crits par des amateurs individuels ?? d'??normes syst??mes ??crits par des centaines de programmeurs.
- Les programmeurs vont dans l'expertise des novices qui ont besoin de la simplicit?? avant tout, ?? des experts qui peuvent ??tre ?? l'aise avec une complexit?? consid??rable.
- Les programmes doivent ??quilibrer la vitesse, la taille et la simplicit?? sur des syst??mes allant de microcontr??leurs ?? superordinateurs.
- Les programmes peuvent ??tre ??crites une fois et non pour les g??n??rations changent, ou ils peuvent subir des modifications ?? peu pr??s constante.
- Enfin, les programmeurs peuvent simplement diff??rent dans leurs go??ts: ils peuvent ??tre habitu??s ?? discuter des probl??mes et de les exprimer dans une langue particuli??re.
Une tendance commune dans le d??veloppement des langages de programmation a ??t?? d'ajouter plus de capacit?? ?? r??soudre des probl??mes en utilisant un niveau plus ??lev?? de abstraction. Les premiers langages de programmation ont ??t?? tr??s ??troitement li??e au mat??riel sous-jacent de l'ordinateur. Comme nouveaux langages de programmation ont d??velopp??, fonctionnalit??s ont ??t?? ajout??es qui permettent aux programmeurs d'exprimer des id??es qui sont plus ??loign??s de la simple traduction en instructions mat??rielles sous-jacentes. Parce que les programmeurs sont moins li??s ?? la complexit?? de l'ordinateur, leurs programmes peuvent faire plus avec moins d'effort informatique du programmateur. Cela leur permet d'??crire plus de fonctionnalit??s par unit?? de temps.
Processeurs de langage naturel ont ??t?? propos??s comme un moyen d'??liminer la n??cessit?? d'un langage sp??cialis?? pour la programmation. Cependant, cet objectif demeure lointain et ses avantages sont ouverts au d??bat. Edsger Dijkstra a pris la position que l'utilisation d'un langage formel est essentiel pour pr??venir l'introduction de concepts vides de sens, et a rejet?? la programmation en langage naturel comme "stupide." Alan Perlis ??tait similaire d??daigneux de l'id??e.
??l??ments
Syntaxe
La forme de la surface d'un langage de programmation est connu comme son syntaxe. La plupart des langages de programmation sont purement textuelle; ils utilisent des s??quences de texte comprenant des mots, des chiffres et des signes de ponctuation, un peu comme les langues naturelles ??crites. D'autre part, il existe des langages de programmation qui sont plus graphique dans la nature, en utilisant les relations spatiales entre les symboles de sp??cifier un programme.
La syntaxe d'un langage d??crit les combinaisons possibles de symboles qui constituent un programme syntaxiquement correct. Le sens donn?? ?? une combinaison de symboles est assur??e par s??mantique (soit formelle ou cod?? en dur dans un mise en ??uvre de r??f??rence). Comme la plupart des langues sont textuelle, cet article traite de la syntaxe textuelle.
syntaxe du langage de programmation est g??n??ralement d??finie en utilisant une combinaison de expressions r??guli??res (pour structure lexicale), et Backus-Naur Form (pour structure grammaticale). Voici une grammaire simple, bas?? sur Lisp:
expression ::= atom | list
atom ::= number | symbol
number ::= [+-]?['0'-'9']+
symbol ::= ['A'-'Z''a'-'z'].*
list ::= '(' expression* ')'
Cette grammaire pr??cise ce qui suit:
- une expression est soit un atome ou une liste;
- un atome est soit un chiffre ou un symbole;
- un nombre est une s??quence ininterrompue d'un ou plusieurs chiffres d??cimaux, ??ventuellement pr??c??d?? par un signe plus ou moins;
- un symbole est une lettre suivie par z??ro ou plusieurs caract??res (hors espaces); et
- une liste est une paire assortie de parenth??ses, avec z??ro ou plusieurs expressions ?? l'int??rieur.
Les exemples suivants sont des s??quences symboliques bien form??es dans cette grammaire: ' 12345
',' ()
',' (ab c232 (1))
'
Tous les programmes syntaxiquement correctes ne sont pas s??mantiquement correcte. De nombreux programmes syntaxiquement correctes sont n??anmoins mal form??es, selon les r??gles de la langue; et peut (en fonction de la sp??cification du langage et la solidit?? de la mise en ??uvre) entra??nera une erreur de traduction ou de l'ex??cution. Dans certains cas, de tels programmes peuvent exposer comportement ind??fini. M??me quand un programme est bien d??fini dans une langue, il peut encore avoir un sens qui ne est pas destin?? par la personne qui l'a ??crit.
Utilisation langage naturel ?? titre d'exemple, il peut ne pas ??tre possible d'attribuer un sens ?? une phrase grammaticalement correcte ou de la peine peut ??tre faux:
- " Id??es vertes incolores dorment furieusement. "Est grammaticalement bien form??, mais n'a pas de sens g??n??ralement admis.
- "John est un c??libataire mari??." est grammaticalement bien form?? mais exprime un sens qui ne peut pas ??tre vrai.
Le fragment du langage C suivante est syntaxiquement correct, mais effectue une op??ration qui ne est pas s??mantiquement d??fini (car p est un pointeur NULL, les op??rations P> r??el et p-> im aurait aucun sens):
complexe * p = NULL; abs_p complexe = sqrt (p-> r??el * p> real + p-> im * p-> im);
La grammaire n??cessaire de sp??cifier un langage de programmation peut ??tre class?? par sa position dans le Hi??rarchie de Chomsky. La syntaxe de la plupart des langages de programmation peut ??tre sp??cifi?? en utilisant un type-2 grammaire, ce est ?? dire, ils sont grammaires hors-contexte.
S??mantique statique
Les s??mantique statique d??finit restrictions sur la structure des textes valables qui sont difficiles ou impossibles ?? exprimer dans formalismes syntaxiques standard. La plus importante de ces restrictions sont couvertes par des syst??mes de type.
Type de syst??me
Un syst??me de type d??finit comment un langage de programmation classe des valeurs et des expressions dans types, comment il peut manipuler ces types et comment ils interagissent. Ceci comprend g??n??ralement une description de la des structures de donn??es qui peuvent ??tre construits dans la langue. La conception et l'??tude des syst??mes de type utilisant les math??matiques formelle est connu comme tapez th??orie.
En interne, tous les donn??es aux ordinateurs num??riques modernes sont stock??s simplement comme des z??ros et de uns ( binaires ).
Tap?? contre langues non typ??es
Une langue est tap?? si la sp??cification de chaque op??ration d??finit les types de donn??es ?? laquelle l'op??ration est applicable, avec l'implication que ce ne est pas applicable ?? d'autres types. Par exemple, " this text between the quotes
"est une cha??ne. Dans la plupart des langages de programmation, divisant un nombre par une cha??ne n'a pas de sens. La plupart des langages de programmation modernes seront donc rejeter tout programme de tenter d'effectuer une telle op??ration. Dans certaines langues, l'op??ration de sens sera d??tect?? lorsque le programme est compil?? ("statique" v??rification de type), et rejet?? par le compilateur, tandis que dans d'autres, il sera d??tect?? lorsque le programme est ex??cut?? ("dynamique" la v??rification de type), r??sultant dans un environnement d'ex??cution exception.
Un cas particulier de langages typ??s sont les langues de type unique. Ce sont souvent des scripts ou langages de balisage, comme Rexx ou SGML, et ne ont qu'un seul type de donn??es - le plus souvent des cha??nes de caract??res qui sont utilis??s pour les donn??es symboliques et num??riques.
En revanche, une langue non typ??, comme la plupart langages d'assemblage, permet ?? toute op??ration ?? effectuer sur les donn??es, qui sont g??n??ralement consid??r??s comme des s??quences de bits de diff??rentes longueurs. Langages de haut niveau qui sont non typ?? comprennent BCPL et certaines vari??t??s de Forth.
Dans la pratique, tandis que quelques langues sont consid??r??es tap?? du point de vue de tapez la th??orie (v??rification ou de rejeter toutes les op??rations), la plupart des langues modernes offrent un degr?? de frappe. Beaucoup de langues de production fournissent des moyens de contourner ou de contourner le syst??me de type.
Statique par rapport typage dynamique
En typage statique toutes les expressions ont leurs types d??termin??s avant le programme en cours d'ex??cution (g??n??ralement au moment de la compilation). Par exemple, 1 et (2 + 2) sont des expressions enti??res; ils ne peuvent pas ??tre transmises ?? une fonction qui attend une cha??ne, ou stock??s dans une variable qui est d??fini pour tenir les dates.
Langage ?? typage statique peuvent ??tre dactylographi??s ou manifestement saisissez-d??duite. Dans le premier cas, le programmeur doit ??crire explicitement ?? certains types positions textuelles (par exemple, ?? la variable d??clarations). Dans le second cas, le compilateur d??duit les types d'expressions et d??clarations en fonction du contexte. La plupart des grands langage ?? typage statique, tels que C ++ , C # et Java , sont manifestement tap??. Type complet inf??rence a traditionnellement ??t?? associ?? avec moins de langues traditionnels, tels que Haskell et ML. Cependant, de nombreuses langues manifestement tap?? soutiennent type partiel inf??rence; par exemple, Java et C # d??duire deux types dans certains cas limit??s typage dynamique, aussi appel?? le typage latente, d??termine le type-s??curit?? des op??rations lors de l'ex??cution. en d'autres termes, les types sont associ??s ?? des valeurs d'ex??cution plut??t que des expressions textuelles. Comme avec les langues de type d??duit, langages typ??s dynamiquement ne n??cessitent pas le programmeur ?? ??crire des annotations de type explicites sur les expressions. Entre autres choses, cela peut permettre une seule variable pour faire r??f??rence ?? des valeurs de types diff??rents ?? diff??rents points dans l'ex??cution du programme. Cependant, les erreurs de type ne peuvent pas ??tre d??tect??s automatiquement jusqu'?? un morceau de code est effectivement ex??cut??, rendant plus difficile le d??bogage. Ruby, Lisp, JavaScript et Python sont typ??s dynamiquement.
Typage faible et forte
Typage faible permet une valeur d'un type ?? traiter comme un autre, par exemple le traitement d'une cha??ne comme un certain nombre. Cela peut parfois ??tre utile, mais il peut ??galement permettre ?? certains types de d??fauts du programme de passer inaper??us au la compilation et m??me au le temps d'ex??cution.
Typage fort emp??che le dessus. Une tentative d'effectuer une op??ration sur le mauvais type de valeur g??n??re une erreur. Type s??curis?? langues fortement typ??es sont souvent appel??es ou s??curit??.
Une autre d??finition de "faiblement typ??" se r??f??re aux langues, tels que Perl , JavaScript et C ++ , ce qui permet un grand nombre de conversions de type implicites. En JavaScript, par exemple, l'expression 2 * x
convertit implicitement x
?? un certain nombre, et cette conversion r??ussit, m??me si x
est null
, undefined
, un Array
, ou une cha??ne de lettres. Ces conversions implicites sont souvent utiles, mais ils peuvent masquer des erreurs de programmation.
Forte et statique sont maintenant g??n??ralement consid??r??s comme des concepts orthogonaux, mais l'usage dans la litt??rature diff??re. Certains utilisent le terme fortement typ?? pour signifier fermement, statiquement typ??, ou, encore plus de pr??ter ?? confusion, pour signifier tout simplement statiquement typ??. Ainsi C a ??t?? appel?? ?? la fois fortement typ?? et faiblement, statiquement typ??.
la s??mantique d'ex??cution
Une fois les donn??es a ??t?? sp??cifi??, la machine doit ??tre charg?? d'effectuer des op??rations sur les donn??es. La s??mantique d'ex??cution d'un langage d??finit comment et quand les diff??rentes constructions d'une langue doivent produire un comportement du programme.
Par exemple, la s??mantique peuvent d??finir le strat??gie par laquelle les expressions sont ??valu??es ?? des valeurs, ou la mani??re dont structures de contr??le ex??cutent conditionnellement d??clarations.
Biblioth??que de base
La plupart des langages de programmation ont un associ?? biblioth??que centrale (parfois connu sous le nom ??biblioth??que Standard??, en particulier si elle est incluse dans le cadre de la norme linguistique publi??), qui est classiquement mis ?? disposition par toutes les impl??mentations de la langue. Biblioth??ques de base comprennent g??n??ralement les d??finitions pour les algorithmes couramment utilis??s, structures de donn??es, et les m??canismes d'entr??e et de sortie.
La biblioth??que de base d'une langue est souvent consid??r??e comme faisant partie de la langue par ses utilisateurs, bien que les concepteurs peuvent l'ont trait??e comme une entit?? s??par??e. De nombreuses sp??cifications linguistiques d??finissent un noyau qui doit ??tre mis ?? disposition dans toutes les impl??mentations, et dans le cas des langues standardis??es cette biblioth??que de base peuvent ??tre n??cessaires. La ligne entre une langue et sa biblioth??que de base diff??re donc d'une langue ??. En effet, certaines langues sont con??us de sorte que les significations de certaines constructions syntaxiques ne peuvent m??me pas ??tre d??crits sans se r??f??rer ?? la biblioth??que centrale. Par exemple, en Java , une cha??ne litt??rale est d??finie comme une instance de la classe java.lang.String; De m??me, dans Smalltalk, un anonyme expression de fonction (un ??bloc??) construit une instance de la classe BlockContext de la biblioth??que. Inversement, Sch??ma contient plusieurs sous-ensembles coh??rents qui suffisent pour construire le reste de la langue comme macros de la biblioth??que, et donc les concepteurs de langage ne m??me pas la peine de dire quelles parties de la langue doivent ??tre mises en ??uvre comme des constructions linguistiques, et qui doit ??tre mis en ??uvre en tant que parties d'un biblioth??que.
Pratique
Les concepteurs et les utilisateurs d'une langue doivent construire un certain nombre d'artefacts qui r??gissent et permettent la pratique de la programmation. Le plus important de ces artefacts sont la description et la mise en oeuvre langue.
Sp??cification
La sp??cification d'un langage de programmation est destin?? ?? fournir une d??finition de la langue utilisateurs et le r??alisateurs peuvent utiliser pour d??terminer si le comportement d'un programme est correct, compte tenu de son code source.
Une sp??cification de langage de programmation peut prendre plusieurs formes, dont les suivantes:
- Une d??finition explicite de la syntaxe, la s??mantique statique, et la s??mantique d'ex??cution de la langue. Alors que la syntaxe est g??n??ralement sp??cifi?? en utilisant une grammaire formelle, d??finitions s??mantiques peuvent ??tre r??dig??s en langage naturel (par exemple, le langage C ), ou d'un s??mantique formelle (par exemple, le Standard ML et Les sp??cifications de sch??ma).
- Une description du comportement d'un Traducteur de la langue (par exemple, le C ++ et Sp??cifications Fortran). La syntaxe et la s??mantique de la langue doivent ??tre d??duites ?? partir de cette description, qui peut ??tre ??crit dans un langage formel naturel ou un.
- Une r??f??rence ou la mise en ??uvre du mod??le, parfois r??dig??s dans la langue ??tant pr??cis?? (par exemple, Prolog ou ANSI REXX). La syntaxe et la s??mantique de la langue sont explicites dans le comportement de la mise en ??uvre de r??f??rence.
Ex??cution
Une mise en ??uvre d'un langage de programmation fournit un moyen d'ex??cuter ce programme sur une ou plusieurs configurations de mat??riel et de logiciel. Il ya, en gros, deux approches de mise en ??uvre du langage de programmation: compilation et interpr??tation. Il est g??n??ralement possible de mettre en oeuvre une langue en utilisant soit la technique.
La sortie d'un compilateur peut ??tre ex??cut?? par le mat??riel ou un programme appel?? un interpr??te. Dans certaines impl??mentations qui font usage de l'approche de l'interpr??teur il n'y a pas de fronti??re distincte entre compilation et l'interpr??tation. Par exemple, certaines impl??mentations du langage de programmation BASIC compiler puis ex??cuter la source d'une ligne ?? la fois.
Les programmes qui sont ex??cut??s directement sur le mat??riel se ex??cutent g??n??ralement de plusieurs ordres de grandeur plus rapide que ceux qui sont interpr??t??es dans le logiciel.
Une technique pour am??liorer la performance des programmes interpr??t??s est Compilation ?? la vol??e. Ici, le machine virtuelle, juste avant l'ex??cution, traduit les blocs de bytecode qui vont ??tre utilis??s en code machine pour ex??cution directe sur le mat??riel.
Histoire
Les premiers d??veloppements
Les premiers langages de programmation ant??rieures ?? l'ordinateur moderne. Le 19??me si??cle avait "programmable" m??tiers ?? tisser et parchemins joueur de piano qui ont appliqu?? ce sont aujourd'hui reconnus comme des exemples de langages de programmation sp??cifiques au domaine. Au d??but du XXe si??cle, des cartes perfor??es donn??es cod??es et dirig??s traitement m??canique. Dans les ann??es 1930 et 1940, les formalismes de Eglise Alonzo lambda-calcul et Alan Turing s ' machines de Turing fournis abstractions math??matiques pour exprimer des algorithmes ; le calcul de lambda reste influent dans la conception du langage.
Dans les ann??es 1940, les premiers ordinateurs num??riques aliment??s ??lectriquement ont ??t?? cr????s. La premi??re langage de programmation de haut niveau pour ??tre con??u pour un ordinateur ??tait Plankalk??l, d??velopp?? pour l' allemand Z3 par Konrad Zuse entre 1943 et 1945.
Les ordinateurs du d??but des ann??es 1950, en particulier le UNIVAC I et la IBM 701 utilis?? programmes en langage machine. Premi??re g??n??ration de programmation en langage machine a ??t?? rapidement remplac?? par un seconde g??n??ration de langages de programmation connus sous le nom langues de l'Assembl??e. Plus tard dans les ann??es 1950, la programmation en langage d'assemblage, qui avait ??volu?? pour inclure l'utilisation de macro-instructions, a ??t?? suivie par le d??veloppement des trois langues de programmation au niveau sup??rieur: FORTRAN, LISP, et COBOL. Des versions ?? jour de tous ceux-ci sont encore en usage g??n??ral, et chacun a fortement influenc?? le d??veloppement des langues plus tard. A la fin des ann??es 1950, la langue formalis?? comme Algol 60 a ??t?? introduit, et les langages de programmation les plus tard sont, ?? bien des ??gards, les descendants de Algol. Le format et l'utilisation des langages de programmation d??but a ??t?? fortement influenc?? par le les contraintes de l'interface.
Raffinement
La p??riode des ann??es 1960 ?? la fin des ann??es 1970 a apport?? le d??veloppement des grands paradigmes linguistiques actuellement en usage, que de nombreux aspects ??taient raffinements d'id??es dans la premi??re Troisi??me g??n??ration des langages de programmation:
- APL introduit programmation de type tableau et influenc?? programmation fonctionnelle.
- PL / I (NPL) a ??t?? con??u dans les ann??es 1960 pour int??grer les meilleures id??es de FORTRAN et COBOL.
- Dans les ann??es 1960, Simula a ??t?? le premier langage con??u pour soutenir programmation orient??e objet; Au milieu des ann??es 1970, Smalltalk suivi avec le premier ??purement?? langage orient?? objet.
- C a ??t?? d??velopp?? entre 1969 et 1973 en tant que la programmation des syst??mes de la langue, et reste populaire.
- Prolog, con??u en 1972, a ??t?? le premier langage de programmation logique.
- En 1978, ML a construit un syst??me de type polymorphe sur le dessus de Lisp, pionnier statiquement typ?? langages de programmation fonctionnels.
Chacune de ces langues a engendr?? toute une famille de descendants, et la plupart des langues modernes comptent au moins un d'entre eux dans leur ascendance.
Les ann??es 1960 et 1970 ont ??galement vu un d??bat consid??rable sur les m??rites de programmation structur??e, et si les langages de programmation devraient ??tre con??us pour le soutenir. Edsger Dijkstra, dans une c??l??bre lettre 1968 publi?? dans le Communications de l'ACM, ont fait valoir que GOTO devraient ??tre ??limin??s de tous les langages de programmation "de niveau sup??rieur".
Les ann??es 1960 et 1970 a ??galement vu l'expansion des techniques qui r??duisent l'empreinte d'un programme ainsi que l'am??lioration de la productivit?? du programmeur et utilisateur. Le jeu de cartes pour un d??but 4GL ??tait beaucoup plus petite pour la m??me fonctionnalit?? exprim?? dans un Pont 3GL.
Consolidation et la croissance
Les ann??es 1980 ont ??t?? des ann??es de consolidation relative. C ++ programmation orient??e objet et des syst??mes combin??s. Le gouvernement des Etats-Unis normalis??e Ada, un langage de programmation de syst??mes destin??s ?? ??tre utilis??s par les entrepreneurs de la d??fense. Au Japon et ailleurs, des sommes ??normes ont ??t?? consacr?? aux enqu??tes dite langues "cinqui??me g??n??ration" qui a incorpor?? constructions de programmation logique. La communaut?? des langages fonctionnels d??m??nag?? ?? normaliser ML et Lisp. Plut??t que d'inventer de nouveaux paradigmes, tous ces mouvements ??labor??s sur les id??es invent??es dans la d??cennie pr??c??dente.
Une tendance importante dans la conception de la langue dans les ann??es 1980 ??tait un accent accru sur la programmation pour les syst??mes ?? grande ??chelle gr??ce ?? l'utilisation de modules ou unit??s d'organisation ?? grande ??chelle de code. Tous les syst??mes du module notables d??velopp??s dans les ann??es 1980 Modula-2, Ada, et ML, bien que d'autres langues, comme PL / I, d??j?? eu un large soutien pour la programmation modulaire. Syst??mes de modules ??taient souvent attach??s ?? constructions de programmation g??n??riques.
La croissance rapide de l' Internet au milieu des ann??es 1990 a cr???? des opportunit??s pour de nouvelles langues. Perl , ?? l'origine un outil de script Unix d'abord publi?? en 1987, est devenu commun en dynamique sites Web. Java est venu ?? ??tre utilis?? pour la programmation c??t?? serveur. Ces d??veloppements ne ??taient pas fondamentalement roman, plut??t ils ??taient raffinements des langues et des paradigmes existants, et en grande partie bas??e sur la famille C des langages de programmation.
l'??volution du langage de programmation continue, tant dans l'industrie et la recherche. Les orientations actuelles sont la s??curit?? et la v??rification de la fiabilit??, de nouveaux types de modularit?? ( mixins, d??l??gu??s, aspects), et l'int??gration de bases de donn??es.
Le L4G sont des exemples de langues qui sont sp??cifiques ?? un domaine, comme SQL, qui manipule et retours ensembles de donn??es plut??t que les valeurs scalaires qui sont canonique ?? la plupart des langages de programmation. Perl , par exemple, avec son ' ici document ??peut contenir plusieurs programmes 4GL, ainsi que les programmes JavaScript multiples, dans le cadre de son propre code de perl et utiliser l'interpolation de variables dans le 'document en' pour soutenir la programmation multi-langue.
usage de la langue de mesure
Il est difficile de d??terminer quels sont les langages de programmation les plus largement utilis??s, et quels moyens l'utilisation varie selon le contexte. Une langue peut occuper le plus grand nombre d'heures de programmeur, un autre ont plus de lignes de code, et un tiers utilisent le plus de temps processeur. Certaines langues sont tr??s populaires pour des types particuliers d'applications. Par exemple, COBOL est toujours forte dans le centre de donn??es d'entreprise, souvent sur de grandes mainframes; FORTRAN dans les applications d'ing??nierie; C dans les applications embarqu??es et de syst??mes d'exploitation; et d'autres langues sont r??guli??rement utilis??s pour ??crire de nombreux types d'applications.
Diff??rentes m??thodes de mesure de la popularit?? de la langue, chacun ??tant soumis ?? une polarisation diff??rente sur ce qui est mesur??, ont ??t?? propos??es:
- compter le nombre des offres d'emploi qui mentionnent la langue
- le nombre de livres vendus qui enseignent ou d??crivent la langue
- les estimations du nombre de lignes existantes de code ??crit dans la langue-qui peut sous-estimer les langues ne trouve pas souvent dans les recherches publiques
- chiffres de r??f??rences linguistiques trouv??s en utilisant un moteur de recherche web.
Taxonomies
Il ne existe aucun r??gime de classification global pour les langages de programmation. Un langage de programmation donn??e n'a g??n??ralement pas une langue anc??tre unique. Langues surviennent souvent en combinant les ??l??ments de plusieurs langues remplac??es avec de nouvelles id??es en circulation ?? l'??poque. Id??es qui proviennent dans une langue se r??pandra dans une famille de langues apparent??es, puis bondir soudainement ?? travers lacunes familiales ?? appara??tre dans une famille tout ?? fait diff??rente.
La t??che est encore compliqu??e par le fait que les langues peuvent ??tre class??s long de plusieurs axes. Par exemple, Java est ?? la fois un langage orient?? objet (car il encourage orient?? objet organisation) et une langue concurrente (car il contient des constructions int??gr??es pour l'ex??cution de plusieurs threads en parall??le). Python est un orient??e objet langage de script.
Dans les grandes lignes, les langages de programmation se divisent en programmation paradigmes et un classement par domaine d'utilisation pr??vue. Paradigmes comprennent la programmation proc??durale, la programmation orient??e objet, programmation fonctionnelle, et programmation logique; certaines langues sont des hybrides de paradigmes ou multi-paradigmatique. Une langage d'assemblage ne est pas tant un paradigme de mod??le direct d'une architecture de la machine sous-jacente. En effet, les langages de programmation peuvent ??tre consid??r??es comme objectif g??n??ral, des langages de programmation du syst??me, les langages de script, langues sp??cifiques ?? un domaine, ou langages concurrents / distribu??s (ou une combinaison de ceux-ci). Certaines langues d'usage g??n??ral ont ??t?? con??us en grande partie avec des objectifs ??ducatifs.
Un langage de programmation peut aussi ??tre class?? par des facteurs non li??s au paradigme de programmation. Par exemple, la plupart des langages de programmation utilisent langue anglaise des mots-cl??s, tandis qu'un minorit?? ne le font pas. D'autres langues peuvent ??tre class??s comme ??tant ??sot??rique ou non.