Je parle assez bien le C / C ++ et je peux me familiariser avec les différents langages de script (awk / sed / perl). J'ai commencé à utiliser beaucoup plus python, car il combine certains aspects astucieux du C ++ avec les fonctionnalités de script de awk / sed / perl.
Mais pourquoi y a-t-il tant de langages de programmation différents? Je suppose que tous ces langages peuvent faire la même chose, alors pourquoi ne pas s'en tenir à un seul langage et l'utiliser pour programmer des ordinateurs? En particulier, y a-t-il une raison pour laquelle je devrais connaître un langage fonctionnel en tant que programmeur informatique?
Quelques lectures liées:
programming-languages
Suresh
la source
la source
Réponses:
Les langages de programmation évoluent et s’améliorent avec le temps (innovation).
Les gens prennent des idées de différentes langues et les combinent dans de nouvelles langues. Certaines fonctionnalités ont été améliorées (mécanismes d'héritage, systèmes de types), d'autres ajoutées (nettoyage de la mémoire, gestion des exceptions), d'autres supprimées (
goto
instructions, manipulations de pointeur de bas niveau).Les programmeurs commencent à utiliser un langage d'une manière particulière qui n'est prise en charge par aucune construction de langage. Les concepteurs de langage identifient ces modèles d'utilisation et introduisent de nouvelles constructions d'abstractions / langage pour prendre en charge de tels modèles d'utilisation. Il n'y avait aucune procédure en langage assembleur. Pas de classes en C. Pas de gestion des exceptions en (début) C ++. Pas de moyen sûr de charger de nouveaux modules dans les premières langues (facile en Java). Pas de threads intégrés (easy-peasy en Java).
Les chercheurs réfléchissent à des moyens alternatifs d’exprimer des calculs. Cela a conduit Lisp et la branche de langue fonctionnelle de l’arbre de langue, Prolog et la branche de programmation logique, Erlang et d’autres modèles de programmation basés sur des acteurs, entre autres.
Au fil du temps, les concepteurs / chercheurs en langage en viennent à mieux comprendre l'ensemble de ces concepts et leur interaction, et à concevoir des langages comprenant de nombreux concepts courants, tous conçus pour fonctionner de manière transparente. Cela aboutit à de merveilleux langages tels que Scala, qui contient des objets et des classes (exprimés par des traits au lieu d'un héritage unique ou multiple), des fonctionnalités de programmation fonctionnelles, des types de données algébriques bien intégrés au système de classes et à la correspondance de modèles, et une concurrence basée sur l'acteur.
Les chercheurs qui croient aux systèmes de types statiques s’efforcent d’améliorer leur expressivité, en autorisant des classes génériques typées en Java (et toutes les choses merveilleuses en Haskell), de sorte qu’un programmeur reçoive davantage de garanties avant d’exécuter un programme inattendu. se tromper. Les systèmes de types statiques imposent souvent un lourd fardeau au programmeur (saisie des types), aussi la recherche a-t-elle été prise en compte pour alléger ce fardeau. Des langages tels que Haskell et ML permettent au programmeur d’omettre toutes les annotations de type (à moins qu’ils ne fassent quelque chose de délicat). Scala permet au programmeur d'omettre les types dans le corps des méthodes, afin de simplifier le travail du programmeur. Le compilateur déduit tous les types manquants et informe le programmeur des erreurs possibles.
Enfin, certaines langues sont conçues pour prendre en charge des domaines particuliers. Les exemples incluent SQL, R, Makefiles, le langage de saisie Graphviz, Mathmatica, LaTeX. Intégrer (directement) les fonctionnalités de ces langages dans des langages d'usage général serait assez fastidieux. Ces langages sont basés sur des abstractions spécifiques à leur domaine particulier.
Sans évolution dans la conception des langages de programmation, nous utiliserions toujours le langage assembleur ou C ++.
Quant à savoir un langage de programmation fonctionnelle : les langages fonctionnels vous permettent d'exprimer différemment les calculs, souvent de façon plus concise que d' utiliser d' autres langages de programmation. Réfléchissez à la différence entre C ++ et Python et multipliez-la par 4. Plus sérieusement, comme déjà mentionné dans une autre réponse, la programmation fonctionnelle vous donne une manière différente de penser les problèmes. Ceci s’applique à tous les autres paradigmes; certains sont mieux adaptés à certains problèmes, et d'autres non. C'est pourquoi les langages multi-paradigmes deviennent de plus en plus populaires: vous pouvez utiliser des constructions d'un paradigme différent si vous en avez besoin, sans changer de langue, et, plus difficile, vous pouvez mélanger des paradigmes dans un seul logiciel.
la source
tldr: Il n’existe pas de solution miracle.
J'espère qu'ils ne me poursuivront pas en justice, mais voici une photo d'une des présentations de Stanford.
Lorsque vous décidez de choisir une langue, vous ne pouvez choisir que 2 de ces 3 fonctionnalités .
Et c’est la raison pour laquelle les gens sont tristes et veulent inventer un super-langage qui les couvrira tous les trois.
En fait, la liste des exigences est énorme (certaines d’entre elles sont visibles dans d’autres réponses), mais elles ne font qu’ajouter des détails aux fonctionnalités essentielles. De plus, il existe des raisons historiques et politiques de préférer une langue à une autre.
La combinaison de tels facteurs produit un nouveau langage.
( Et j'ai entendu dire que chaque bon programmeur devrait créer son propre nouveau langage;) )
la source
Le monde regorge de choses qui présentent de nombreuses variantes: traitement de texte, voitures, conceptions résidentielles, boissons, bonbons, stylos, pelles, etc. Nous pouvons en résumer autant de raisons que quelques principes:
Rendez-vous dans n’importe quel magasin de fournitures de bureau et examinez la section «instruments d’écriture»: il existe des centaines de variétés de stylos. Ils font tous à peu près la même chose: distribuer de l’encre sur une surface d’écriture. Mais chaque stylo que vous voyez en vente est présent pour l'une des trois raisons ci-dessus.
L'évolution des stylos se poursuivra car aucun produit ne répond aux besoins de chaque utilisateur. Certains stylos sont bon marché et jetables, d'autres sont chers et construits avec des matériaux de haute qualité. certains utilisent des gels, certains utilisent de l'encre, d'autres des pigments; certains ont des casquettes détournées, d'autres pas du tout; fûts larges, fûts étroits, fûts ronds, fûts carrés; court long; rouge, blanc, noir, bleu. Etc.
Mais assez de stylos.
Notre myriade de langages de programmation actuels remonte aux tout premiers: les codes de la machine numérique pour les premiers ordinateurs des années 1940. Primitif, difficile à utiliser et laborieux pour entrer dans l'ordinateur, mais ils ont fait le travail. Peu de temps après, les programmeurs attribuaient aux codes de la machine des mots mnémoniques (tels que ADD, CALL, LOAD), donnant ainsi naissance à la classe de langages appelée "langages d'assemblage".
Différentes architectures de processeurs nécessitaient différents codes mnémoniques, en fonction des caractéristiques spécifiques des machines sous-jacentes. Prendre en compte ces différences impliquait d'inventer différents langages d'assemblage.
(Peut-être que maintenant vous pouvez voir où cela va ...)
Les programmeurs ont examiné leurs programmes en langage assembleur et leurs schémas: les mêmes séquences d'instructions seraient utilisées pour former des boucles, des conditions, des affectations de variables, des appels de fonction, etc. Ainsi, les langages de programmation procéduraux sont nés. Ces langages encapsulaient des groupes d'instructions sous des termes génériques tels que "if", "while", "let", etc.
Les langages fonctionnels sont issus d'une analyse mathématique de la programmation informatique - une toute nouvelle façon de considérer le calcul. Pas mieux, pas pire, juste différent.
Et puis, il y a orienté objet, typé statiquement, dynamiquement, liaison tardive, liaison anticipée, utilisation réduite de la mémoire, utilisation intensive de la mémoire, parallélisabilité, langages pour des utilisations spécifiques, et ainsi de suite.
En fin de compte, nous avons différents langages de programmation parce que nous voulons différents langages de programmation. Chaque concepteur de langage a ses propres idées sur l'apparence et le fonctionnement de son langage "de rêve". La diversité est une bonne chose.
la source
Les langages de programmation fonctionnels sont généralement basés sur le modèle de calcul différent (mais équivalent en puissance): lambda-calcul . Il existe certains langages non typés (typés Python) tels que LISP, Scheme (utilisé dans un livre / cours largement reconnaissable de Structure et interprétation de programmes informatiques ) et des langages statiques tels que Haskell, ML, F #.
Le SICP est ce qui m'a amené à la programmation fonctionnelle, mais d'autres personnes recommandent ce document de John Hughes et cet entretien avec lui.
La programmation fonctionnelle est maintenant poussée par Microsoft, par exemple, qui a inclus F # (son langage fonctionnel pour .NET) dans VS2010 et 11; ils emploient également des développeurs Haskell dans MSR, IIRC.
Notez qu'il existe également des langages de programmation fonctionnels autres que le lambda-calcul, tels que Refal , basé sur la recherche de motifs et la réécriture.
Comme le niveau d'abstraction dans les langages fonctionnels est différent, votre attitude face à la résolution de problèmes change lorsque vous utilisez des techniques de programmation fonctionnelle. Certains disent que cela peut faire de vous un meilleur programmeur en général.
la source
Oui. Parce que haskell a changé ma façon de penser. Cela pourrait changer votre façon de penser aussi.
Histoire: Je pensais pouvoir apprendre n'importe quel langage de programmation en une journée. Un jour j'ai commencé Haskell. J'ai terminé tout ce qui est arrivé avant les monades en une demi-journée. Maintenant, cela fait un an depuis ce jour et je suis toujours désespérément coincé à Monads.
Lis:
Langues et wiki de pensée
La notation comme outil de réflexion par Kenneth E. Iversion, conférence du prix Turing
La notation est un outil de réflexion. Nous avons besoin de différentes notations sur mesure pour pouvoir gérer confortablement des pensées différentes. Nous créons donc de nouvelles langues.
Aussi, lisez . ;-)
la source
Il était difficile de trouver un programmeur qui, à un moment donné, ne soit pas devenu frustré par les contraintes du langage qu’il utilisait et ait décidé de se gratter. Ainsi naît une nouvelle langue - ou dialecte d’une langue existante.
Abadi et Cardelli dans "Une théorie des objets" développent toute une famille de langages de programmation à partir de bases orientées objet. Ils prouvent que la programmation fonctionnelle est un cas particulier d’OO mais pas l’inverse.
Inventer quelque chose de nouveau est amusant, c'est pourquoi les gens sont plus susceptibles de créer une autre langue que de contribuer à améliorer une langue existante. Bien sûr, il y a des gardiens de langues qui n'apprécient pas les changements de vision. Le meilleur exemple est le gouffre entre les partisans de Common Lisp et de Scheme.
la source
Puisque d’autres ont déjà donné de bonnes réponses à cette question, je citerai simplement Alan Perlis.
Aussi, http://weblog.raganwald.com/2004/10/beware-of-turing-tar-pit.html , est une bonne lecture.
la source
Pourquoi y a-t-il tant de pays dans le monde? Cela ne serait-il pas plus facile si nous n'avions que 5 ou 6 superpuissances, voire un seul royaume universel de la Terre? Il est facile de dire pourquoi cela ne serait pas mieux - pour commencer, la concurrence de différents pays peut conduire à des progrès, et du point de vue de la démocratie, des droits de l'homme, etc., de nombreux pays peuvent être meilleurs qu'un - - mais cela n'explique pas pourquoi nous avons beaucoup de pays. Cela explique seulement pourquoi beaucoup de pays seraient meilleurs .
De même, vous pouvez demander pourquoi tant de langues humaines différentes? Polonais, arabe, mandarin ... Ne serait-il pas plus facile s'il n'y avait qu'une seule langue? Vous pouvez argumenter d'une manière ou d'une autre, mais ce sont là les raisons pour lesquelles il serait préférable que la vie soit dans un sens ou dans l'autre. Cela n'expliquerait pas les causes de tant de langues humaines différentes.
Le problème, c’est qu’il ya beaucoup de monde sur la planète, et nous faisons tous notre travail, nous avons tous nos opinions, nous voulons tous être responsables et avoir notre propre pays ou langage de programmation, et nous pensons souvent que nous savons mieux que les autres, ou du moins, ne prenez pas la peine de comprendre ce que les autres ont à offrir.
Lisez cet article de blog très instructif, Pourquoi autant de frameworks Web Python? Apparemment, il existe environ 50 frameworks Web en Python. C'est juste ridicule. il n'y a absolument aucune raison rationnelle raisonnable pour cela. Mais l'auteur de l'article répond: il y a tellement de frameworks Web Python parce qu'il est si facile d'en créer un . Vous n'avez pas besoin d'une raison rationnelle pour avoir plus de frameworks web python ou plus de langages de programmation. Les gens vont en créer de nouveaux parce qu'ils ne savent pas ce qui est déjà disponible, ou parce qu'ils espèrent gagner de l'argent, ou simplement parce que créer de nouvelles choses est amusant!
Permettez-moi de décrire un exemple personnel. Il y a environ 10 ans, j'écrivais du code C ++ pour une société finlandaise. Vous savez, en Finlande, ils disposent de ces énormes camions qui voyagent sur de longues distances et transportent beaucoup de marchandises d'un endroit à l'autre. Je suis sûr qu’il existe également de tels camions en Amérique. Donc, un problème typique est de s’assurer que tous les 24 pneus vont bien. Bien sûr, il existe une technologie éprouvée: la pression et la température peuvent être surveillées, et des changements radicaux indiqueraient que quelque chose s'est mal passé. Bien sûr, toute cette technologie est exclusive, brevetée, avec toutes les implications. (N'oubliez pas que les brevets sont supposés promouvoir l'innovation!) Cette entreprise finlandaise a donc voulu détecter l'état des pneus par ... bon son. L'idée était d'installer des microphones pour écouter le son provenant de tous les pneus et de faire une sorte de traitement magique du signal sur ces sons afin de voir si l'un des pneus avait un problème quelconque, et je faisais un prototype. de cette folie. (Ils avaient même un laboratoire dédié pour enregistrer des échantillons de sons; une fois, ils m'ont envoyé un enregistrement vidéo impressionnant d'une occasion particulière où ils ont réussi à faire exploser un échantillon de pneu après l'avoir soumis à une pression de 5 ou 10 tonnes et l'avoir chauffé à une température ridicule. .) Clairement, encore une fois, il n’y avait pas de raison rationnelle particulière à ce développement, sauf que c’était amusant et que certaines personnes voulaient gagner de l’argent. Alors, comprenez aussi qu’il ya tellement de raisons pour lesquelles on commencerait à développer un nouveau langage de programmation. Il n'est ni nécessaire ni même possible de les apprendre tous. (Ils avaient même un laboratoire dédié pour enregistrer des échantillons de sons; une fois, ils m'ont envoyé un enregistrement vidéo impressionnant d'une occasion particulière où ils ont réussi à faire exploser un échantillon de pneu après l'avoir soumis à une pression de 5 ou 10 tonnes et l'avoir chauffé à une température ridicule. .) Clairement, encore une fois, il n’y avait pas de raison rationnelle particulière à ce développement, sauf que c’était amusant et que certaines personnes voulaient gagner de l’argent. Alors, comprenez aussi qu’il ya tellement de raisons pour lesquelles on commencerait à développer un nouveau langage de programmation. Il n'est ni nécessaire ni même possible de les apprendre tous. (Ils avaient même un laboratoire dédié pour enregistrer des échantillons de sons; une fois, ils m'ont envoyé un enregistrement vidéo impressionnant d'une occasion particulière où ils ont réussi à faire exploser un échantillon de pneu après l'avoir soumis à une pression de 5 ou 10 tonnes et l'avoir chauffé à une température ridicule. .) Clairement, encore une fois, il n’y avait pas de raison rationnelle particulière à ce développement, sauf que c’était amusant et que certaines personnes voulaient gagner de l’argent. Alors, comprenez aussi qu’il ya tellement de raisons pour lesquelles on commencerait à développer un nouveau langage de programmation. Il n'est ni nécessaire ni même possible de les apprendre tous. une fois qu’ils m’ont envoyé un impressionnant enregistrement vidéo d’une occasion particulière lorsqu’ils ont réussi à faire exploser un échantillon de pneu après l’avoir soumis à une pression de 5 ou 10 tonnes et à le faire chauffer à une température ridicule.) raison de ce développement, sauf que c’était amusant et que certaines personnes voulaient gagner de l’argent. Alors, comprenez aussi qu’il ya tellement de raisons pour lesquelles on commencerait à développer un nouveau langage de programmation. Il n'est ni nécessaire ni même possible de les apprendre tous. une fois qu’ils m’ont envoyé un impressionnant enregistrement vidéo d’une occasion particulière lorsqu’ils ont réussi à faire exploser un échantillon de pneu après l’avoir soumis à une pression de 5 ou 10 tonnes et à le faire chauffer à une température ridicule.) raison de ce développement, sauf que c’était amusant et que certaines personnes voulaient gagner de l’argent. Alors, comprenez aussi qu’il ya tellement de raisons pour lesquelles on commencerait à développer un nouveau langage de programmation. Il n'est ni nécessaire ni même possible de les apprendre tous.
Bien sûr, tout cela ne s'applique que si vous croyez en l'évolution. Si vous croyez en une forme de conception intelligente, que Dieu a également créé tous les langages de programmation, vous devrez alors trouver un but derrière cette multitude. Peut-être que Dieu voulait promouvoir la concurrence entre différents langages de programmation afin que l'art du développement de logiciels atteigne son état le plus élevé possible.
En conclusion, il y a beaucoup de gens, beaucoup de pays, beaucoup de langages de programmation. C'est juste la nature de la vie! Soyons reconnaissants pour cela: cela signifie simplement que le domaine de la programmation / informatique est très vivant et florissant.
la source
Pourquoi existe-t-il tant de langages de programmation différents?
Parce qu'il y a des choix à faire:
Heureusement, les deux dernières sont des dichotomies inessentielles, c'est-à-dire que l'on pourrait regrouper les deux choix dans un seul langage de programmation. Mais les trois premières dichotomies donnent lieu à 8 combinaisons. Ainsi, même dans un monde idéal, il y aurait au moins 8 langages de programmation. Lorsque vous explorez en profondeur, il existe des choix de conception plus nuancés au sein de paradigmes particuliers. Par exemple, si on décide de faire un langage typé statiquement basé sur la classe, il existe différentes façons de concevoir le système de types. Il n'y a pas encore de manière canonique de le faire. Si l'on décide de faire un langage de programmation simultané, il existe différentes manières de représenter la concurrence: sémaphores, régions critiques conditionnelles, moniteurs, transmission de messages (synchrone ou asynchrone). Dans la transmission de messages synchrone,
Une partie de nos recherches en théorie du langage de programmation est consacrée à la résolution de ces dichotomies. Par exemple, j'ai travaillé sur la résolution de la dichotomie entre la programmation impérative et fonctionnelle dans un document intitulé " Assignments for language applicative " et notre méthode a maintenant été adoptée par Haskell, ce qui en fait un langage à la fois fonctionnel et impératif. Cela ne signifie pas que la dichotomie est complètement résolue. Un programmeur Haskell est toujours confronté au choix de résoudre son problème de manière fonctionnelle ou impérative. Luca Cardelli a travaillé à la résolution de la dichotomie statique et dynamique. Paul Levy a travaillé à la résolution de la dichotomie appel par valeur et appel par nom . Tous ces résultats n'ont pas encore été mis en œuvre dans des langages de programmation réels.
Si toutes ces langues peuvent faire la même chose, pourquoi ne pas s'en tenir à une langue et l'utiliser pour programmer des ordinateurs?
Parce que pour un programmeur dans le monde réel, il ne suffit pas de faire quelque chose. Il importe également de savoir comment cela se fait. Lorsque cela est fait correctement, le domaine du problème est représenté fidèlement dans le programme, la modularité du problème est conservée et les programmes deviennent faciles à comprendre, à modifier et à maintenir. Tous ces facteurs ont une incidence sur les coûts de développement et de maintenance du programme. Ils affectent également la fiabilité et la sécurité du logiciel.
Par exemple, beaucoup de gens utilisent un programme appelé " Quicken " pour les comptes financiers. Le programme original a été développé dans une version interne de Visual Basic et il était plutôt bon. Cependant, il a été difficile de l'étendre et de le maintenir. Au fil des années, alors que l'entreprise tentait de l'étendre à de nouvelles fonctionnalités, le programme devenait de plus en plus complexe avec des millions de clients insatisfaits partout. Ils bénéficieront probablement d’une nouvelle ingénierie du logiciel dans un langage de programmation orienté objet fortement typé.
En particulier, y a-t-il une raison pour laquelle je devrais connaître un langage fonctionnel en tant que programmeur informatique?
Historiquement, la "programmation fonctionnelle" a été inventée par Godel, Kleene et Church selon la pratique mathématique standard, et la "programmation impérative" par Turing pour définir la notion de calcul mécanique. Avant Turing, rien n'indique que les mathématiques aient jamais analysé des idées de programmation impératives. (Bien que tous les algorithmes mathématiques traditionnels aient été exprimés dans un "style impératif", leur contenu essentiel était toujours fonctionnel.) La programmation impérative est donc très nouvelle pour la civilisation humaine et ses mathématiques ne sont pas encore bien comprises. La raison numéro un pour laquelle tout le monde devrait connaître une programmation fonctionnelle est de comprendre comment la programmation peut être mathématique. (Je ne reconnais pas que la programmation impérative n’est pas mathématique, c'est ce que les programmeurs fonctionnels voudraient vous faire croire. Mais je conviens qu'avec l'état actuel des connaissances, nous ne savons pas encore programmer mathématiquement de manière impérative. Beaucoup d’entre nous travaillent précisément sur ce problème.)
la source
Vous pourriez regarder comme une évolution.
Au début, les ordinateurs étaient programmés uniquement avec des codes binaires. Après cela, les mnémoniques et les langages d'assemblage ont été introduits, dépendant principalement du processeur utilisé.
Après l’introduction de ces langages de niveau supérieur (3e niveau) (Pascal, C, ADA, Cobol), certains très génériques (comme le C), d’autres plus adaptés au traitement des données (Cobol), d’autres aux calculs (Fortran).
Après cela, les langages de 4ème niveau sont apparus, comme les langages logiques (comme Prolog). Les langues les plus génériques sont les successeurs des langues de troisième niveau; certains d'entre eux sont Java, C #.
Nous voyons également des langues spécifiques à Internet / Web, comme ASP.NET, PHP.
Et des langues pour un domaine spécifique (DSL), qui fonctionnent généralement avec un langage générique.
Ensuite, il existe des langues pour que les enfants puissent apprendre la programmation, comme LOGO.
Également des langages pour écrire rapidement du code, comme Python, Ruby, etc., des langages pour manipuler XML (XSLT).
Et j'ai probablement oublié beaucoup de langues et même des catégories de langues.
la source
d'autres réponses sont bonnes, ajouteront quelques nouveaux angles. comme DC écrit les langues évoluent comme de vraies langues humaines! et ils empruntent à nouveau leurs concepts et leur syntaxe comme de vrais langages humains. autrement dit, il existe également une étude assez réelle de l' étymologie des langages informatiques.
Cela signifie également qu'il y a eu une longue histoire et une chronologie qui a principalement commencé vers les années 1930 avec le calcul lambda .
il existe une forte interaction / synergie / symbiose entre la théorie et l’application avec les langages de programmation. de nouvelles applications sont inventées qui mènent à de nouvelles théories et vice versa. un langage de programmation est à bien des égards un pont entre théorie et application .
Fortran est une étude de cas intéressante de l'histoire. il est mal connu, mais les versions antérieures de Fortran (surtout avant Fortran77) avaient une grammaire ambiguë . cela signifie que la même commande peut être légitimement "interprétée" / compilée de différentes manières par le compilateur car il y avait plusieurs "interprétations" valides (ce n'est pas le même sens technique des langages "interprétés").
la théorie sur les grammaires formelles était donc développée à peu près au moment de l’invention de Fortran, et la découverte de la question de l’ambiguïté linguistique était une petite crise. La syntaxe de Fortan a été reformulée pour éviter cette ambiguïté et les langages ultérieurs ont été plus sensibles à l'ambiguïté grammaticale dans leur conception. OOP est également un exemple très important / avant tout d'un concept / avance théorique dans les langages de programmation qui "impacte" ou "ondule" dans de nombreux langages existants, en les transformant.
d'autres études de cas sont l'invention de nouvelles technologies. Par exemple, l'invention de la base de données relationnelle a eu un impact considérable sur les langages informatiques, par exemple avec SQL et ses interfaces en langage informatique (par exemple en Java, "JDBC"). De même, le Web avec un impact encore plus massif. il semblait y avoir une explosion de langages juste au moment du boom de la bulle Internet, qui coïncidait en grande partie avec la croissance initiale du WWW et pouvait être comparée à des explosions évolutives .
il semble également y avoir une longue tendance à la hausse dans les nouveaux langages de programmation, en même temps que la puissance de traitement de la loi de Moores, qui augmente de manière exponentielle, et dont certains pensent qu'elle pourrait ralentir.
Les tendances actuelles à long terme dans les langages de programmation semblent aller vers le Big Data et la parallélisation, par exemple avec MapReduce . il y a aussi un intérêt actuel pour les fermetures .
Un autre aspect essentiel des langues est qu'elles représentent des niveaux d'abstraction croissants . ils s'appuient sur des abstractions de niveau inférieur pour créer des abstractions de niveau supérieur (similaires à une pyramide). De cette manière, les progrès de l’évolution du langage informatique sont probablement sans fin et nous pouvons être relativement certains que d’autres importants continueront d’être inventés dans le futur. cela est probablement analogue à un concept similaire en psychologie appelé « découpage en morceaux» - a indiqué de manière approfondie, construisant des concepts mentaux de niveau supérieur à partir de blocs de construction de niveau inférieur.
quiconque a étudié de nombreux langages informatiques doit admettre qu'il est possible d'observer une mentalité de groupe, certains de leurs aspects se révélant être des modes sur-typés, c'est-à-dire moins critiques que ceux recommandés, ou même mourir (utilisés) au fil du temps! certaines des idées ou des changements fondamentaux demeurent, mais le (trop) battage médiatique s'estompe. En ce sens, les langages de programmation sont également à la mode . À mon avis, deux cas survenus au cours des cinq dernières années sont certes utiles mais ont été surexaminés:
On constate de plus en plus une auto-similarité dans de nombreux langages majeurs, de sorte qu'ils convergent tous vers la mise en œuvre de nombreuses fonctionnalités similaires à leur manière, c'est-à-dire comme avec les tableaux de comparaison de produits qui "cochent" de nombreuses fonctionnalités dans une grille.
la source
Ils ne l'étaient pas, ce n'est qu'un gadget marketing - si vous donnez à la langue une apparence un peu "C", alors cela réduit l'apparente barrière à l'entrée.
Quelques-uns qui n’ont aucune influence du C: SQL, Pascal, Delphi, FORTRAN, COBOL, Ada, PowerBuilder, HyperTalk, Lisp, Simula, FOCAL, BASIC, PL / I, Algol, Algol-68, SNOBOL, Modula, Visual BASIC, Tuteur, logo, Forth, DIBOL, Helix, AppleScript, Python, Erlang, Ruby, Choix, anglais, RPG, PL / SQL, ASP, Prolog, SmallTalk, Perl, bash, Wand BASIC, REXX, langage de traitement par lots DOS.
Ceux qui ressemblent un peu au C, mais qui ont très peu en commun avec lui: JavaScript, Java, C #, (sans doute) Objective-C.
Tout est en marketing, Java, C ++ et JavaScript ressemblent un peu au C, mais pourraient difficilement être plus différents sous les couvertures.
la source