2009-07-06 6 views
2

La programmation a parcouru un long chemin. Je suis encore relativement jeune (premier ordinateur: C64), donc je prends pour acquis de nombreuses choses dans la programmation qui ont évidemment été introduites à un moment donné et qui ont facilité les façons de programmer qui sont maintenant monnaie courante.Quand et dans quelle langue certaines fonctions de programmation ont-elles été introduites?

Ce qui suit est un (pas exhaustive) la liste des caractéristiques, où j'aimerais savoir dans quelle langue et quand ils ont été introduits:

  • introduction de fonctions
  • langage compilé
  • langage interprété
  • structures en boucle & conditionnelle
  • le tableau de
  • le dictionnaire (Hashtable)
  • allocation de multi-threading
  • programmation fonctionnelle (fonctions en tant que données) orientation
  • objet
  • (avons-nous besoin d'être plus précis? peut-être l'héritage était là plus tôt que les interfaces?)
  • génériques
  • programmation
  • méta-programmation orientée aspect

Si vous le pouvez, essayez de sauvegarder votre déclaration avec une référence. Si vous pensez avoir manqué un élément important du langage de programmation dont l'introduction devrait également être appréciée, veuillez commenter cette question de manière à pouvoir l'ajouter à la liste.

MISE À JOUR: Je suppose qu'un langage de programmation ne peut présenter tout ce qui ne serait pas possible en assembleur, je suis à la recherche plutôt pour les langues qui ont fait une certaine caractéristique à la disposition des « simples mortels ».

+6

Il doit être dit: http://james-iry.blogspot.com/2009/05/brief-incomplete-and-mostly-wrong.html – Stobor

+0

@Frank, cliquez simplement sur "modifier" puis cochez "Wiki de la communauté" "case à cocher juste en dessous de la zone d'édition. –

+0

Je pense que vous pouvez avoir une orientation d'objet sans héritage et interfaces. – lhahne

Répondre

8

Lisp. 1958.

Alternativement,

  • introduction de fonctions - le lambda-calcul de Alonzo Church, 1930

  • langage compilé - Grace Hopper, 1952

  • langage interprété - Lisp, 1958, peut-être quelque chose avant.

  • conditionnel & structures en boucle - Bletchley Park Bombe années 1940 (couru dans une boucle).Jacquard, 1801

  • le tableau - comme un espace contigu de mémoire avec un index, Bletchley Park ou Manchester bébé, 1940

  • le dictionnaire (Hashtable) -

  • tolérance de multi-filetage - Jacquard, 1801; Multix 1965

  • programmation fonctionnelle (fonctions en tant que données) - Godel, 1930

  • orientation objet

    • Simula (Dahl et Nygaard 1967) pour OO à base de classe avec l'héritage
    • CLU (Liskov 1975) les itérateurs avaient une interface commune, et permettaient des types de données abstraits avec l'état encapsulé et le comportement
    • Smalltalk (Kay fin des années 1970) 'tout est un objet'
    • Eifell (Meyer 1986) conception par contrat influencé interface s
    • Java
  • génériques - méthodes génériques (Lisp à nouveau) ou types paramétriques (Modula ???)?

  • aspect programmation orientée - protocole méta-objet Lisp commun, fin des années 1980

  • méta-programmation - macros Lisp, quelque temps dans les années 50 ou 60

+1

Cette blague Jacquard est géniale! –

+1

Juste deux petites questions: il n'existe pas de langage compilé ou de langage interprété. Si quelqu'un utilise un compilateur ou un interprète pour implémenter un langage est un détail d'implémentation interne de cette implémentation de langage spécifique et n'a absolument rien à voir avec ce langage. Exemple: la grande majorité des implémentations Lisp sont en fait compilées. –

+0

@Jorg: Vous avez un point juste, mais je pense que les termes sont toujours valables. Selon l'oracle Wikipedia, il y a aussi: http://en.wikipedia.org/wiki/Compiled_language et http://en.wikipedia.org/wiki/Interpreted_language – Noldorin

1

Vous pouvez utiliser un graphique de langue ici: http://www.levenez.com/lang/ et Wikipedia pour trouver des réponses. Pour commencer: fonctions, boucles et conditionnels sont chez nous depuis Fortran. Et puis, en 1958 Lisp est arrivé, je pense que certains diront que le reste est venu alors :)

+0

Belle carte. Ça va aller sur mon mur ici au bureau :) – flq

0

Je pense que nous pouvons dire en toute sécurité "assembleur". La plupart sinon tous ces concepts existent depuis très longtemps.

+0

Assembler n'a aucune de ces fonctionnalités! – finnw

+0

La question était quand ces fonctionnalités ont-elles été introduites. Et ils ont été introduits dans les programmes d'assembleur dans les années 1950. –

+0

Orientation de l'objet? Meta programmation? Génériques? Je ne pense pas que vous puissiez dire que l'un de ceux-ci s'applique (ou s'applique actuellement) à l'assembleur. – Noldorin

1

premières Trouver conduit toujours à cheveux scission. Je parie que toutes les choses que vous avez mentionnées ont été faites plusieurs fois avant qu'elles ne se produisent. Néanmoins, voici une tentative:

  • fonctions - FORTRAN, mais pas récursif. LISP ou Algol pour la récursivité.
  • langage compilé - FORTRAN
  • langage interprété - LISP
  • structures conditionnelles et boucle - FORTRAN, mais Algol nous a donné de la Programmation
  • tableau - FORTRAN
  • le dictionnaire - Snobol, Je pense
  • allocation de multi-threading - PL/I
  • programmation fonctionnelle - LISP mais peut-être pas dans un sens fort.
  • orientation objet - Simula mais Smalltalk était le vrai vulgarisateur
  • génériques - ne sais pas
  • aspect orienté - dunno
  • méta-programmation - peut-être C++, mais le code de génération de code n'est pas un nouvelle idée
4

au meilleur de ma connaissance (et avec l'aide de Wikipedia), je dirais ce qui suit:

  • Fonctions - Début Assembly, en utilisant des instructions telles que "passer à la sous-routine".
  • langue Compilé - On peut dire que A-0 en 1952 ou [FORTRAN] (http://en.wikipedia.org/wiki/FORTRAN en 1957.
  • langue Interprété -. Smalltalk() dans les années 1970
  • conditionnelles & les structures en boucle - Les premiers Assembly, utilisant des branches/des sauts
  • Tableaux - Utilisé dans les tous premiers ordinateurs (années 1940). Apparu comme une caractéristique de langue dans FORTRAN. Voir this text.
  • Hashtable - Autour de la même période que les tableaux, car il n'utilise vraiment qu'un algorithme de base au-dessus d'une structure de données de tableau. En tant que classe, peut-être Dictionary en Smalltalk.
  • Multi-threading - C'est en outre une caractéristique du système d'exploitation/une bibliothèque, bien que les fonctionnalités de langage puissent bien sûr faciliter le codage multithread. Cela remonte probablement aux années 1960 et 1970, et j'imagine que cela pourrait se faire à Assemby.
  • Programmation fonctionnelle - LISP dans les années 1950, inspiré de lambda calculus d'Alan Turing.
  • Orientation de l'objet (OOP) - Simula dans les années 1960.
  • Génériques - CLU dans les années 1970.
  • programmation orientée aspect - Peut-être AspectJ en 2001. (. Quelqu'un peut avoir besoin de me corriger)
  • méta-programmation - Early Assembly, avec le code d'auto-modification.

S'il vous plaît n'hésitez pas à modifier/mettre à jour ce avec des informations supplémentaires.

+0

Smalltalk est apparu en 1980, et a été précédé par interprété BASIC et APL, entre autres. Lambda calculus dû à Churce & Kleene. –

+0

Le premier langage interprété était probablement Lisp, avec BASIC au milieu des années soixante aussi plus tôt que Smalltalk. – starblue

+1

La première table de hachage qui pourrait être considérée comme faisant partie de la langue (et non implémentée par l'utilisateur) pourrait être la classe Dictionary de Smalltalk. – starblue

Questions connexes