Contacts

Différentes langages de programmation et leur portée. Conférence dans Yandex. Extension des langages de programmation existants Langues de programmation étendues

Zalina 13 janvier 2016 à 15h42

Différentes langages de programmation et leur portée. Conférence dans Yandex

  • Yandex Blog
  • Développement de site Web,
  • Programmation
  • Programmation industrielle

Notre premier message cette année, nous avons décidé de consacrer un sujet très fondamental, une conférence sur laquelle a été lu dans un petit calendrier. Ils sont engagés dans des études secondaires qui sont des technologies intéressantes, de la spécificité de la présentation - la conférence sera particulièrement intéressante pour ceux qui commencent à programmer et à réfléchir à la manière de se développer. Pour eux, Yandex a un cours "Introduction à la programmation (C ++)", qui peut être transmise sur la plate-forme Stepic.org.

Le conférencier Mikhail Gustokashin est un curateur des programmes académiques de Yandex, directeur du Centre des Jeux olympiques d'étudiants de la Faculté des Sciences informatiques HSE. Mikhail a préparé des dizaines de gagnants et de médaillées de compétitions de programmation en russe.

Dans le cadre de la conférence, il est décrit sur les langues de programmation qu'ils diffèrent comme elles apparaissent et lesquelles d'entre elles sont meilleures et que sont pires. Au début, nous parlerons un peu de l'histoire des langues - comment ils ont comparu comment les gens ont commencé à programmer comment tout s'est développé, ce qui se passe maintenant. Dans la deuxième partie, il sera affecté par quelles tâches quelle langue est adaptée, comment "choisir votre langue préférée et profiter de la vie". Le conférencier racontera également un peu comment, à son avis, d'apprendre tout à cela, puis d'obtenir un emploi.

Comme toujours, sous le décodage détaillé des conférences afin de pouvoir naviguer dans son contenu.

Historique des langages de programmation

Commençons dès le début. Au tout début, les ordinateurs n'ont même pas eu de clavier! C'est-à-dire que tout était très mauvais - ils n'avaient pas de clavier ni de l'écran, il y avait des cartes (ce sont des trucs de trous ou avec le manque de trous). En conséquence, les épingles ont été posées là-bas, que la lumière brillait là-bas. S'il y a un trou (ou vice versa n'est pas) - cela signifiait un Nolik ou un. Et les programmes à cette époque écrivaient à l'aide de codes de machine - chaque opération de l'ordinateur (addition, soustraction, certaines opérations plus complexes) était une sorte de code de machine. Les personnes elles-mêmes ont choisi ce code sur la table, toutes sortes d'adresses en mémoire, tout cela a été assommé avec leurs mains et la mettre dans le lecteur - et c'était considéré comme tout. Bien sûr, le travail du programmeur était probablement, alors pas particulièrement intéressant - faire des trous - et avec le développement de la science et de la technologie, bien sûr, a commencé à inventer toutes sortes de pièces "intéressantes". Par exemple, AssSembler (assembleur), qui a déjà facilité quelques points de vie.

Comment a-t-il fait la vie? Au lieu de mémoriser qu'il existe une sorte de code "magique" de l'équipe, toutes sortes de mots ont été utilisés, similaires à "Human" anglais - certains ajout ou mov -, puis les registres ou les registres de mémoire, les variables avec lesquelles ces opérations opérations. Mais il est clair que cela en général, a également exigé une tension assez importante de l'esprit de garder dans ma tête, dans laquelle le registre que nous avons, où les variables et ce qui se passe du tout. Pourquoi est-ce arrivé? Parce que les ordinateurs étaient "stupides" et ne pouvaient rien comprendre plus "intelligent". En fait, et collectez le code de la machine à partir de l'assembleur prend également du temps, de la mémoire (pour les fois c'était certainement peu).

Peu à peu, il est devenu évident qu'il était très difficile de développer de nombreux programmes complexes. La performance du programmeur de ces équipes était extrêmement faible - c'est-à-dire qu'il a écrit plusieurs lignes par jour (significatives) et chaque ligne n'a rien fait - une simple action arithmétique. Et les gens voulaient faire des langues beaucoup plus comme une langue humaine, en anglais, en particulier pour écrire des programmes étaient plus faciles et plus pratiques. Et est allé!

Langues anciennes et mortes

L'une des premières langues était Fortran. En passant, il a également été encore assommé sur les chapelles - il y avait des chapelles spéciales pour assommer des programmes sur Fortran. Mais si vous prenez ce Fortran maintenant - à mon avis, c'est même quelque part entre 50 et 60 ans. Il est apparu - et vous essayez d'écrire quelque chose dessus, alors vous serez très désagréable, je vous garantissons! Fortran moderne est toujours en vie, mais est déjà très différent de ce qui était auparavant.

Autres langues - Maintenant, je vais écrire une chose à propos de laquelle vous avez probablement été entendue, alors dans tous les événements, où la programmation est racontée sur l'histoire est Cobol. C'était une langue pour écrire des applications métier. Qu'est-ce qu'une application d'entreprise? Quelques transactions dans les banques, autre chose a écrit tout cela sur un COBOL. Nous sommes compréhensibles, n'est pas très populaire. Je pense qu'un programmeur sur un Cobol, à Moscou, vous trouverez avec beaucoup de difficulté. Et quelque part à Moscou - avec encore plus de difficulté. Mais, qui est surprenant, il y a 10 ans plus de la moitié de l'ensemble du code écrit par l'humanité, il a été écrit sur un Cobol. Et jusqu'à présent, une partie importante de toutes les transactions bancaires est en cours avec les programmes rédigés à ce sujet (COBOL), et les gens toujours écrivent quelque chose dessus.

Il y a aussi une langue «drôle», il s'appelait Algol (68e version, qui caractérise l'année de sa création). Ceci est une langue algorithmique. En général, ils ont pu mourir là-bas, mais nous ne sommes maintenant pas très intéressés par ce qu'ils savent. Et à ce sujet, notre excursion dans l'antiquité et dans des langues relativement inutilisées peut être terminée et procéder au fait qu'il reste encore vivre (et vit activement).

Vieux, mais des langues vivantes

Algol a été inventé en Europe et Fortran utilisé principalement dans les États-Unis - il n'y a pas de grandes différences. Quelle est la tendance notable? Au début, tout était difficile et d'écrire qu'il était nécessaire d'être presque ingénieur, d'ingénierie électrique, de comprendre où les contacts sont fermés et quelque chose d'autre pour la programmation. Ensuite, il devait également s'asseoir avec des feuilles et compter la mémoire, la regarder. Et progressivement, tout est devenu plus facile, plus facile, plus facile et encore plus facile pour le programmeur - le moins possible de penser qu'une personne autant que possible puisse être faite automatiquement. Vers la fin de cette période (le conférencier indique Algol et Cobol), les langues commencent à apparaître, ce qui, dans certains sens, "vécu" à nos jours.

De base. Peut-être encore certaines personnes écrivent-elles quelque chose, au moins j'ai vu que dans certaines institutions, elle est enseignée sur Qbasic 'E - une fenêtre bleue, où "1989" est écrit. En général, "puissante" vit! Il a été inventé comme une langue pour les non-programmeurs. À cette époque, le programmeur était une profession très spécialisée. Et voici ici, ils vous disent: "Nous avons un langage cool de base, et une personne raisonnable prendra et écrira un programme à ce sujet - facile." Encore une fois, la Beysik et la Beysik moderne sont une énorme différence. Toutes sortes de ces lignes avec la numérotation après 10, toutes sortes de goto et d'autres horreur - elles n'ont aucune relation avec le Basik moderne et même à la base de la 89e année, ils ont une petite relation.

Une autre histoire amusante est Pascal, largement connue dans les milieux universitaires, principalement en Russie et dans les pays de l'ex-Union soviétique. Il a été utilisé et continue d'être étonnamment comme une langue de formation. Inout le reste du monde, il est sommagionné, mais vit et vivent également. Il y a un tel homme WIRTH - ici il est un scientifique, théoricien. Il a participé à la discussion de l'Algola, il n'aimait pas ce qui s'est passé et il a trouvé sa langue - Pascal. Et puis la société Borland (et avant que de nombreuses autres entreprises - Apple, en particulier), ils ont tout pris et ont tout gâché. Il avait une belle théorie, mince - "Tout ira bien" et ils ont pris et emportaient le fait que les gens ont besoin de travailler. Eh bien, et il s'est avéré pas si beau qu'il voulait.

Et enfin. SI inventé ingénieurs. Si Pascal a eu lieu avec un scientifique, SI a inventé Kernigan et Ritchi, ils ont travaillé comme ingénieurs à Bell. Comment est-ce arrivé? À cette époque dans ces langues (le conférencier indique Fortran, Cobol, Algol), rien systémique a écrit. Quel est le "système"? Par exemple, un système d'exploitation, certains pilotes, autre chose. Ces langues étaient destinées aux calculs mathématiques, pour les calculs commerciaux, pour tous. Et tout le reste écrit sur l'assembleur. Il y avait des langues, ils sont maintenant morts, c'est-à-dire que la langue XI n'est apparue pas immédiatement de l'assembleur, mais à travers certaines choses intermédiaires.

L'essence de quoi? Kernigan et Ritchi ont adoré jouer aux astéroïdes jouet - une mouche de vaisseau spatial, et il y a des astéroïdes, il les tire, et ils tombent en morceaux. Ils avaient un serveur sur lequel ils ont joué, mais il y avait beaucoup de gens et le jouet a ralenti. Et ils ont découvert quelque part dans le bureau qu'ils ont une sorte d'ordinateur que personne n'utilise. Mais il y avait un problème - il était une autre architecture et le jeu a été écrit sur l'assembleur.

Ils le réécrit, bien sûr, ont même sculpté les caractéristiques d'une sorte de jeu de jeu. Mais cela leur a amené à l'idée qu'il n'est pas très intelligent de réécrire à chaque fois une nouvelle architecture. Et ils ont décidé d'écrire une telle langue haut niveauCe qui conviendra à la programmation système, c'est-à-dire dans lequel vous pouvez gérer la mémoire dans laquelle vous pouvez comprendre où-se passe-t-il et comment contacter ces morceaux de mémoire. Et donc la langue Si est apparue, ce qui a eu un impact énorme sur tous. Ils sont tous (le conférencier affiche Algol, plus loin et d'autres langues mentionnées) avait une grande influence, mais ici SI - droit oui ...

En conséquence, c'était la langue principale du système d'exploitation UNIX, qui était encore plus populaire que maintenant. Et sur les années 80, la situation était une sorte d'une telle situation (le conférencier affiche sur les langues de base, c et autres langues mentionnées). Supposons que tout cela soit déjà mort lentement (le conférencier efface les références à l'assembleur, à la forteresse et à l'algaole) ... et dans les années 80, les ordinateurs sont devenus moins, plus intelligents, moins chers et des personnes voulaient que toutes sortes de bizarreries vivent encore mieux vivent est devenu plus amusant.

Langues des années 80

L'une des premières bizarités était C ++. Language C a un grand nombre de lacunes (bien, juste énormément) - tout peut être fait sur elle en général, y compris pour vous tirer dessus, vous tirer dessus de fiction, à une autre jambe, tirer un pied à une autre jambe, en général - quoi fais-le. Mais dans le même temps, certaines choses architecturales sont réalisées très difficiles - à nouveau, comme dans l'assembleur, nous devons suivre tout le temps, où nous et quelle mémoire est allouée; Elle est là que tout le temps "coule" quelque part cette mémoire - c'est-à-dire que nous avons alloué, oublié de le supprimer, ils ne l'ont pas supprimé, sont sortis de mémoire, en général - j'ai regardé un tas de problèmes.

C ++ a été créé d'abord en tant qu'ensemble d'ajouts à C, qui facilitera la mise au point. À cette époque, la programmation orientée vers l'objet à la mode et les gens ont décidé que tout pourrait être décrit sous la forme d'une hiérarchie, c'est-à-dire que vous avez eu une balle (abstrait), vous héritez une balle de football, une balle de volleyball, une autre balle abstraite. Ensuite, c'était à la mode que "nous écrivons maintenant tout sous la forme de la hiérarchie, et tout ira bien, la vie va travailler, tout va devenir belle et c'est tout". C ++ En quelque sorte, cette approche d'objet a été mise en œuvre - ce n'était pas la première langue de la programmation orientée objet, mais elle est devenue assez populaire et toutes sortes de fonctionnalités ont commencé à apparaître. Dans le même temps, C ++ a conservé une compatibilité presque complète (à cette époque) avec le langage C, le programme écrit sur C 99% des cas a été réussi comme C ++ - Naya et même travaillé également. Il était destiné à la rendre facilement à C ++.

En plus de l'approche objet (en C ++), il est rapidement apparu bibliothèque standard Modèles (STL). Je pense qu'à l'école, ceux qui enseignaient encore Pascal ont découvert que vous l'avez, d'une part, il n'y a pas de tri intégré (dans l'ancien bleu Borland Pascal, il est désormais déjà dans des versions modernes) - Il existe un exemple (source ) Tri, il peut être copié et collé. Mais si vous voulez trier des chiffres entiers ici, vous voulez ici des chiffres réels, et ici les lignes pouvant être comparées entre elles-mêmes, vous deviez écrire trois tri différents qui rendent absolument la même chose, ils ont simplement différents types de données. Ce n'est pas très bon et des modèles qui ne figuraient pas immédiatement dans C ++, ce problème a été grandement soulagé. C'est-à-dire que vous avez eu un programme abstrait, ce qui peut être comparé entre eux, triés avec succès.

Langues de script de 90-x

Mais le temps n'est pas en place, dans les années 80, il y avait encore beaucoup de choses intéressantes. Mais quelque part au tournant des années 80 et 90, les ordinateurs sont devenus si bons qu'il était déjà possible de faire des choses très étranges et très inefficaces. En particulier, celles-ci ont été des langues scriptées qui n'ont pas été compilées dans le code de la machine, mais ont été interprétées. Beysik, aussi, a été interprétée depuis un certain temps, mais ces langues scriptées étaient principalement destinées à traiter les textes - ceci, par exemple, Perl, Python (ce n'était pas très célèbre alors), php, rubis - ce sont les langues scriptées Qu'en un ou il reste un diplôme différent (ils ont tous le temps de comparaître jusqu'à 2000, encore beaucoup plus tôt).

Allons-y un peu sur eux, car ce sont des choses spécifiques et maintenant beaucoup sont utilisées. L'idée est quoi? Si nous ne compilons pas, vous pouvez vous permettre beaucoup la plupart. Par exemple, le programme peut regarder votre code et l'utiliser en quelque sorte; Elle sait ce qui se passe et en raison de cela, vous pouvez faire beaucoup de choses intéressantes.

Perl a été conçu pour gérer les textes - à ces jours déjà, la mémoire est devenue tellement importante dans des ordinateurs qu'il y avait du texte à pousser là-bas et avec ce texte utile à faire (par exemple, considérer des mots, une sorte de recherche). Mais, à mon avis, il a été conçu par des personnes qui n'étaient un peu pas en elles-mêmes, car il y a une telle blague à son sujet: "Tout ensemble de caractères écrits est le programme correct de la perle." À mon avis, vous ne pouvez écrire que dessus, il est impossible de le lire. Quand je regarde le code sur perle et essaye de comprendre quelque chose, je ne comprends rien. Peut-être que si je le connaissais mieux, je comprendrais quelque chose, mais comme j'ai entendu parler de ces personnes qui savent encore comment, ils disent qu'il est plus facile de réécrire à nouveau. C'est-à-dire que le programme fonctionne est court et il est vraiment plus facile de réécrire à nouveau que de traiter ce qui y est et de le réparer.

A environ l'heure, au milieu des années 90, Internet est apparu. Au début, ceux-ci ont été envoyés par courrier, des gardiennes avec HTML statique, mais les gens voulaient ajouter une sorte de dynamique là-bas afin que tout se soit arrivé à nous de dynamiquement, certains moules pourraient être remplis, les livres d'hôtes pour faire autre chose. En conséquence, cela nécessitait une certaine interaction, proposé un protocole, car il interagit et, surtout, la génération de ces pages statiques (conditionnelles) qui seront "tendues" par l'utilisateur en réponse à sa demande.

En général, rien que la perle à ce moment-là ne correspondait pas. Écrivez sur Pure SI ou C ++ Handler était une mauvaise idée. Et de l'absence du meilleur à cette époque (et assez longue) Pearl était populaire pour le développement Web. Bien sûr, la balance ne se comparera pas à ce qui se passe maintenant.

PHP est apparu comme ... par hasard. Une personne a rapidement arrêté de faire cela - sa page a-t-elle une sorte, il avait une sorte de livre d'or, d'une manière ou d'une autre, certaines choses. Et il a écrit un ensemble de macros de certaines pour une perle, qui ressemblait à SI, parce qu'il savait comment SI, simplement parce qu'il était si confortable. Et appelé sa page d'accueil personnelle. Elle a partagé et dit: "Les gens, voyez quel genre de chose j'ai écrit, tout est beaucoup plus clair ici que sur la perle et peut être édité." Et les gens l'ont aimé.

Puis il a jeté cette chose. En général, à la fin, ce PHP a commencé à vivre et a commencé avec du temps beaucoup plus populaire que Perl. Mais c'est sa "blessure générique" (idée en tant que jeu de macros pour la perle) avec lui a joué une blague plutôt diabolique. La langue s'est avérée étrange. C'est-à-dire qu'il s'est développé seul, personne ne l'a conçu, personne n'a géré le processus de développement (ni l'entreprise ni une personne), et il y avait beaucoup de groupe, chacun vu ce qu'ils aiment. En conséquence, les fonctions sont appelées différemment, même il n'y a pas de style, tout est à travers l'accent, en général, comme il est tombé, les paramètres se trouvent ici et là et comment tout cela fonctionnera pas très clairement. Mais vous pouvez vous asseoir et écrire en deux heures à PHP, car il le pensait.

Python et Ruby: Ruby est maintenant moins populaire, Python est une meilleure meilleure "partage", en parlons. Il est clair que, à cette époque, c'était (le conférencier indique que Perl, Python, Ruby, PHP) des langues fortement spécialisées à des fins hautement spécialisées. En général, aucune programmation système, aucune logique commerciale n'a écrit à cette époque et ne le fait pas vraiment.

Langues compilées des années 90

Nous irons à peu près les mêmes heures, mais dans l'autre sens. À ce moment-là, C ++ a été utilisé presque pour tout ce qu'il était nécessaire d'écrire non pour le Web, pas pour le traitement de texte, mais pour des applications simples, pour les systèmes d'exploitation, pour les jouets - en général, pour quoi que ce soit. Mais C ++ est un langage terrible en fait. Pourquoi? Parce que, d'abord, il hérité en raison de la compatibilité arrieuse, tous les problèmes SI. Il pourrait toujours être tué un million en différentes manièresLa même chose qui était en C (naturellement, de nouvelles méthodes en C ++ ont été ajoutées. Dans le même temps, si vous écrivez bien bien et correctement, comme cela a été conçu par les auteurs de C ++, il était donc impossible de tuer avec de vieilles manières de Sishy, \u200b\u200bet cela semble être plus petit que celles-ci. Néanmoins, il avait un modèle d'objet très étrange particulier. La scission du programme sur les modules, sur une sorte de morceaux du tout sorties de Si (si vous inclut vous pouvez écrire sur Si ou sur C ++ - en fait, il était utile de simplement insérer le texte de la bibliothèque dans votre programme, par conséquent, lorsque vous écrivez un tas d'inclusions, vous avez tout - si «primitivement», comme il se trouvait au tout début - tout est inséré dans un seul fichier, puis tout cela est terriblement compilé pendant une longue période, car il Donne plusieurs fois. Le même Pascal, Wirth, a été beaucoup réfléchi dans ce plan, les versions ultérieures sont devenues encore meilleures.

En général, C ++ a beaucoup de défauts. La qualification du programmeur aurait dû être élevée à écrire sur C ++ et coûter des programmeurs coûteux (et une préparation, et autre chose, c'est-à-dire que la recherche des programmeurs sur le marché est difficile, ils doivent payer beaucoup, et en général. n'est pas ...). Et nos ordinateurs sont plus rapides et plus rapides et plus rapides deviennent plus chers, les gens achetent de nouveaux ordinateurs et souhaitent plus d'applications, plus de jouets pour le téléphone, en général - plus de joie.

Alors Java est apparu (Java). Il y a aussi une histoire plutôt amusante, car le nom est apparu de cette langue. Il y a des programmeurs, ils boivent du café tout le temps et à cette époque étaient à la mode pour boire du café, qui sur l'île de Java Ros. La langue a été conçue comme une langue pour les appareils embarqués, en particulier pour une machine à café. Donc, il s'est avéré le nom ...
Qu'est-ce qui a commencé avec tout, ce qui était bon en elle et pourquoi a-t-elle gagné plus de popularité? Tout d'abord, ils se sont débarrassés du patrimoine d'un bleu, complètement. Aucun pointeurs, beaucoup moins de façons de vous tirer une partie du corps et de tout briser. Deuxièmement, ils ont mis en œuvre des idées beaucoup plus récentes en termes de modèle d'objet - c'est-à-dire que C ++ est apparu beaucoup plus tôt que Java et utilisé plus d'objets de modèle «sauvage» plus archaïque. Eh bien, ici (le conférencier pointe vers Java), elle était déjà plus réfléchie, et dans la théorie, les gens pensaient, et dans la pratique, ils utilisaient et ont tout fait beaucoup plus froid.

Enfin, le troisième. Nous avons un programme sur Java non réuni dans un code de machine, mais dans le code d'une machine virtuelle. C'est-à-dire que vous avez vécu machine virtuelle (VM) JVM - Javovskaya. Vos programmes allaient à une représentation intermédiaire, puis, avec l'aide de ces voitures, étaient déjà effectuées. Qu'est-ce que cela a donné? Tout d'abord, il a ralenti, deuxièmement, il a éclaté la mémoire avec une force terrible, dans la troisième, elle a été transférée n'importe où (théoriquement) - au moins à la cafetière, même sur la meuleuse au café, au moins sur l'ordinateur, au moins sur l'ordinateur le téléphone mobile. Ceci, d'une part, bien, c'est-à-dire que vous venez de rédiger la mise en œuvre de la machine virtuelle, alors vous exécutez vos programmes Javov partout. Mais, d'autre part, il est mauvais que sur le même téléphone, il y avait peu de mémoire, il y avait une faible performance et tout cela a été commencé à se fondre et à ralentir.

Mais même ce n'est pas la principale chose, pour laquelle en général la langue a été inventée. La langue de Java a été invité à réduire les exigences relatives aux qualifications des programmeurs. C'est-à-dire que des programmeurs plus mauvais peuvent écrire de bons programmes sur Java, car il ne vous permet pas d'écrire de mauvais programmes - il n'y a aucun moyen d'écrire des programmes mal. Là, vous pouvez écrire seulement des programmes. Eh bien, pour comprendre les créateurs de la langue.

C'est-à-dire que si sur C ++, sur Python, sur ce qui plaît, nous pouvons vous reproduire de votre projet une terrible ordures, une sorte d'où tout se passe là-bas, va pendant des heures et il y a autre chose. En Java, les ordures peuvent également être diluées, mais pour cela, vous devez déjà faire un effort. C'est-à-dire que, par défaut, il n'y a pas de "ordures", il y a d'autres problèmes qu'il y a quelque chose qu'il y a quelque chose, ils prétendaient - en général, une chaîne significative n'est pas très significative. Mais peut-être une si qualification secondaire, un programmeur rédige un code de qualité équitablement.
Nous avons presque pris fin. Nous, ce qui suit, qui est apparu, c'est. Il. Il (dotnet), eh bien, en particulier, nous sommes intéressés par C # (presque le même conférencier indique Java], c'est-à-dire qu'il existe des différences dans les détails si vous choisissez entre les détails. -ils - voir où l'argent paie plus).

Et une autre chose - JavaScript. N'a rien à voir avec la langue de Java, est apparu la même année - la Parole était à la mode, ils ont une licence marque déposéeUtiliser.

Quoi, surtout, vous devez faire attention? (Le conférencier dessine les flèches de C ++ à Java, .NET, C #, JavaScript et PHP). Pour écrire un programme simple sur l'une de ces langues, et sur beaucoup d'autres - si vous connaissez C ++, vous n'avez besoin de rien d'autre chose - vous prenez et écrivez sur C ++, puis ajoutez des dollars au début, Quelque chose d'autre fait les petites choses et vous avez commencé à travailler sur n'importe quoi (le conférencier affiche les langues auxquelles les flèches de C ++ étaient réservées). C'est-à-dire qu'ils sont extrêmement similaires dans certaines choses simples. Si vous décidez des défis scolaires, tâches, quelque chose d'autre (ne concevez pas un gros projet - vous avez un fichier qui lit les numéros, affiche des numéros dans la console, quelque chose d'autre fait quelque chose), alors il n'y a presque aucune différence entre ces langues. Il est clair que JavaScript et PHP sont spécialisés, ils sont tous un peu différents. Mais ici (le conférencier indique Java et C #) généralement beaucoup plus de différence.

Depuis lors, toutes sortes de choses intéressantes apparaissent, mais ce n'est pas clair - ils vivront ou mourront avec succès. Qu'est-ce qui est maintenant, pour quelles tâches utilisez-vous?

Sélectionnez la langue en fonction de la tâche

Supposons que vous ayez une tâche pour écrire un pilote pour une carte vidéo. Quelle langue utiliserez-vous aujourd'hui? (Pleurant du hall: Java!) Et quoi ... Java est excellent, mais ce qui n'est pas sur Ruby ou PHP? (Le conférencier parle avec sarcasme.)

Programmation de bas niveau

Si vous écrivez quelque chose de bas niveau, le meilleur choix est SI, mais j'en ai entendu quelque chose (mais je n'ai pas vu) que C ++ est utilisé pour cela. Mais je crois faiblement en cela, car dans Si vous pouvez être clairement contrôlé - puisque vous avez donné tellement d'octets de la mémoire, cela signifie tellement. Et en C ++ (STL) Comment la ligne est-elle mise en œuvre? Eh bien, en quelque sorte mis en œuvre. Et à la fin, nous ne savons pas comment et ce qui se passe là-bas, peut-être que notre mémoire se terminera sur notre carte vidéo ou autre chose va se passer. Par conséquent, Si SI vit toujours et ne meure pas, de telles tâches de programmation système sont toujours là - écrivez un système d'exploitation, écrivez des conducteurs, écrivez quelque chose d'autre - SI Génial pour cela. En outre, toutes sortes d'appareils apparaissent maintenant, Internet de choses promettent qu'il est sur le point de venir) qui vivent de la batterie (et, naturellement, il y aura des millions d'entre eux, tout sera engagé dans cet internet de choses), Ils doivent être très peu coûteux et très peu de consommation d'électricité. En conséquence, il y aura 2 Ko de mémoire, le processeur est de 5 kHz, bien, il est clair que vous ne transformerez pas une machine virtuelle ni le langage de script dans un proche avenir - cela signifie que vous devez écrire quelque chose sur SI. Oui, et maintenant, par exemple, des calculs sur la carte vidéo (OPENCL ou toute autre technologie) - il n'y a pas de nouvelle langue afin d'écrire des programmes pour eux - ils font de SI avec de grandes limites. Ce n'est pas parce que les gens savent déjà apprendre quelque chose de nouveau? Formellement, c'est probablement aussi, dans un certain sens de SI.

programmation web

Supposons que vous souhaitiez écrire un nouveau Facebook (réseau social). Qu'allez-vous écrire à cela? (De la salle, ils parlent de HTML et CSS.) HTML, CSS est une conception et nous souhaitons ajouter des photos là-bas, amis, commentaires à partir.

Pour la partie de script, c'est-à-dire ce qui se passera du côté du client est JavaScript. De plus, parfois JavaScript est généré dans une autre langue et est envoyé (il se produit que le script est généré ... car il est donc aussi facile de gérer certaines modifications de la logique).

Étonnamment, il est écrit dans PHP - et Facebook, et de nombreux autres grands projets. Bien sûr, il était nécessaire d'écrire mes propres choses qu'elle travaillait toujours bien et non comme "Trep-Lyap" a été faite, mais ils ont fait face. En principe, plus ou moins, sur ce que vous allez écrire, mais je ne conseille pas Perl. Ici et maintenant, un cas clair, personne n'écrit rien à partir de zéro pour le Web. Tout le monde écrit un cadre ou autre chose. Boutique en ligne? J'ai téléchargé le cadre pour la boutique en ligne - Eh bien, tous, écrivaient une boutique en ligne.

Programmation pour les entreprises

Ensuite, vous voulez écrire une application ennuyeuse pour la banque. Ou, par exemple, avez-vous quelqu'un qui vend des SIMS? Peut-être que vous avez déjà acheté un téléphone ou quelque chose d'autre, ils vous ont dit: "Voici le système suspendu, nous ne pouvons rien faire." Qu'allez-vous écrire une telle application? (Pleurant de la salle Python) sur Python, il est impossible d'écrire, qu'est-ce que tu es ?! Rien pour les entreprises ne devrait pas écrire sur Python. Pourquoi? Parce que lorsque vous écrivez quelque chose sur Python, vous ne pouvez pas détecter une quantité significativement de bugs dans le processus d'écriture. Python est de toutes les manières dactylographiées de manière dynamique et, en général, il peut également y avoir caché le bogue que cela émergera dans une telle situation que vous ne pouvez même pas comprendre ce que ces utilisateurs de croisières ont fait ici que tout a éclaté. C'est-à-dire qu'il est préférable d'écrire sur Python pour vous-même, de petits scripts - vous comprenez ce qui se passe là-bas et ce qui est fait. Eh bien, ou quelque chose qui n'est pas dommage de jeter: vous voulez déployer quelque chose avant de concurrencer, de sorte que cela se brise en temps. Vous avez écrit sur Python et tout - vous avez capturé le marché. Et si vous écrivez quelque chose depuis longtemps, par exemple, une application bancaire est une sorte (afin qu'elle ait approuvé les prêts, autre chose) - vous l'écrivez sur Java. Parce qu'il y a un sérieux, du papier, de l'argent, des documents, autre chose, mais il y est impossible, que tout se casse, sinon les gens seront offensés - ils n'ont pas d'argent à gauche et n'ont pas atteint nulle part, parce que vous en avez gentil le moment de la chaîne est devenu un nombre ou vice versa. Donc, cela signifie que nous prenons une méthode sur java et écrivez, écrivez ... Eh bien, ou sur .NET, aussi de telles situations, en principe, il y en a. Bien sûr, vous pouvez également rencontrer des problèmes, mais la probabilité de cela est un peu plus faible.

Programmation pour l'armée, industrie aérospatiale

Et maintenant, imaginez que vous avez décidé de vous envoyer à la lune sur la fusée. Que préféreriez-vous écrire un code qui contrôle les moteurs de fusée? Voyons voir. C'est probablement (le conférencier affiche sur Perl, Python, PHP, Ruby), il ne vaut pas la peine - il ralentit, quelque chose d'autre se passe, bien, en général, je n'accepterais pas de voler sur une telle fusée. Sur c ++? Je voudrais également, honnêtement, n'a pas confié, car sur C ++ trop de façons de tuer. Quand vous y êtes quelque part dans l'espace, ce n'est pas très bon.

Peut-être sur Java? Il semble qu'il y ait assez de manière fiable et l'architecture est bonne, aucun type sauvage, pas de sorties au-delà des limites de la mémoire inutile. Supposons que le moment le plus responsable est venu, et notre Java a décidé de collecter des ordures pour nous. Nous devons atterrir, ralentir, et c'est comme suit: "Non, les ordures vont." En général, pas beaucoup.

Honnêtement, je préférerais que le Pascal a écrit ce programme. Bien sûr, je n'aime pas vraiment Pascal, mais en quelque sorte dans de telles questions, ce serait très bien.

Utiliser immédiatement plusieurs langues pour développer

Eh bien, ce que vous devez dire sur les langues modernes. Maintenant, de nombreux projets ne vivent pas dans une seule langue, c'est-à-dire qu'ils vivent dans une langue, une autre partie, une autre partie est à la troisième. Par exemple, si vous avez une application Web qui traite des quantités sauvages d'informations, accéder à des disques (pas même aux bases de données, ils sont si énormes qu'il existe même une base de données qui n'a pas encore écrit) est probablement écrite sur tout ce type de bas niveau écrire sauvagement sur le disque et tout ça. Naturellement, l'écriture de l'ensemble du projet sur SI n'en vaut pas la peine. Peut-être qu'il y a une sorte de logique intermédiaire écrite en Java, qui fait référence aux fonctions bleues pour des appels rapides. Eh bien, le frontendien (alors ce que l'utilisateur regarde), bien sûr, déjà écrit sur quelque chose, sur certains scripts, sur ce qui est directement exécuté par le navigateur (JavaScript). Et tout cela vit ensemble et interracte avec succès.

Dans le développement de certaines applications, même grandes, parfois les gens font quoi? Ils prennent et écrivent un prototype sur Python (comme cela fonctionnera tout), ils jettent une sorte d'architecture à la fois. En écrivant vraiment très rapidement - ils ont jeté le prototype, expérimentés avec lui et ont dit: "In! C'est à quel point c'est cool! " Et complètement réécrit. Il semblerait qu'ils ont fait le travail deux fois, à partir de cela deux fois, il restait (bien, dans une heure et demie). Mais non! Il s'avère souvent qu'un tel moyen n'est pas mauvais, car si vous écrivez immédiatement sur quelque chose, par exemple, sur Java, puis décidez: «Non, refactons, refactons, changez complètement l'architecture et tout cela», passons ensuite 10 fois plus temps. Ces choses existent et vivent aussi.

Conditions de réussite de tout langage de programmation

Parlons maintenant de la raison pour laquelle certaines bonnes langues n'ont pas survécu, bien ou vivent dans un espace très limité. Lorsque WIRTH a vu que les mauvaises entreprises Apple, Borland, et tout cela, et tout cela, il est venu avec une langue encore meilleure - Oberon. Il était juste très minimaliste - c'est-à-dire qu'il y avait très peu d'équipes (lignes? Pourquoi avons-nous besoin de chaînes? Nous ferons une gamme de personnages!). Eh bien, quelque chose ne s'est pas allé avec lui, dans la mesure où cela pourrait aller.

Autre chose. L'armée américaine leur a demandé de développer une langue raide sur laquelle tout fonctionne et tout peut être écrit. Le résultat était une langue plutôt monstrueuse ADA, sur laquelle, cependant, écrit encore quelque chose, mais encore - pour l'armée seulement.

Quel est le problème? Pourquoi certaines langues comme Python, qui ne l'ont pas soutenu au début, ont capturé le marché. PHP, qui est également mal conçu, s'est également pris et capturé le marché (le plus). Et toutes les milliards de dollars sont intégrées (le conférencier affiche sur l'ADA) et ne sont pas passés nulle part, rien ne s'est passé. Qu'est-ce qu'il est connecté? Cela est dû au fait qu'il n'y a pas d'infrastructure autour de ces langues. C'est-à-dire que la langue peut être excellente, mais il n'y a pas de documentation tant qu'il n'y a pas de communauté capable de répondre aux questions (sur le débordement de la pile) et, enfin, la chose la plus importante n'est pas le grand nombre de bibliothèques, la langue ne fait pas tirer. C'est-à-dire que vous vouliez écrire un site Web sur Oberone. Et qu'en est-il, pourquoi pas? Et le Moroka commence ... Vous ne pouvez pas augmenter votre serveur Web sur l'Oberone pour tester légèrement, toutes les bibliothèques que vous ne pouvez pas vous connecter, car il n'y a pas d'autre sur l'Obouron. Et tout cela à travers certaines béquilles est fait, les forces disparaissent et vous crachez et écrivez sur le site Clean SI au lieu de l'Obouron. Et ces langues qui savent utiliser les bibliothèques d'autres langues vivent bien. Le même python dans ces endroits où il ralentit. En général, toutes sortes de choses standard telles que le tri et quelque chose d'autre écrit sur C, et il (Python) peut interagir avec eux.

Java a également une interface native Java. C'est essentiellement Si, c'est-à-dire là (à mon avis, tout le temps qu'ils veulent interdire, mais cela ne semble pas encore interdit) ces langues peuvent interagir avec les bibliothèques existantes (principalement bleu). Et au détriment de cette prise et travaille. Il est entendu par l'idée que j'essaie de vous transmettre, non? N'écrivez pas dans ces langues qui ne savent pas comment connecter une bibliothèque bleue. Eh bien, si vous voulez utiliser quelque chose de cool. Eh bien, et progressivement ils (langues) transforment leur propre infrastructure. Et ils vivent bien bien.

Langage de programmation et orientation professionnelle

Parlons maintenant de savoir comment comprendre ce que vous voulez dans la vie. Qu'advient-il de choses drôles? Vous pouvez vous engager dans une sorte de programmation système, non? Vous êtes cool de considérer ces octets là-bas, vous voulez courir quadricopters, certaines caméras, autre chose à faire. Ensuite, probablement, c est votre choix.

Si vous voulez écrire, peut-être pas le plus intéressant de la vie de l'application, mais vous êtes cool de les concevoir, réfléchissez-y à tous et de gagner beaucoup d'argent, de s'asseoir et de manquer la plupart du temps (car vous avez besoin de Pour payer, si vous manquez qualitativement), ici ils sont - Java, .NET. Vous allez au travail dans une banque, écrivez, allez à neuf pour travailler dans une chemise blanche, obtenez un bon salaire et écrivez selon les recommandations du meilleur java-water, .net moutons et tout ce que ...

Si vous souhaitez écrire des applications, une sorte de navigateur, des jouets, autre chose, puis c ++ est génial. Si vous voulez écrire des gardes, alors ce sont ici, ils sont des langues de votre choix (le conférencier affiche sur Perl, Python, PHP, Ruby), il n'y a pas de grande différence. La seule chose - PHP mourra plus tôt que Python, donc si vous êtes paresseux d'en apprendre un nouveau, puis apprenez Piton. Je ne remarquerai pas une grande différence, mais vous mourrez plus longtemps.

Ce qui arrive à Ruby est également incompréhensible. Eh bien, vous pouvez et php, s'ils ont déjà appris, ils sont si simples qu'il n'y a pas si longtemps.

Et enfin, il existe un autre domaine d'application des langages de programmation - c'est quand ils n'utilisent pas le programmeur. Supposons que vous soyez un mathématicien, un physicien, une chimiste, un analyste, n'importe qui, et vous devez compter quelque chose rapidement, analyser toutes les données (biologistes, par exemple, combien d'escaliers vivent sur les îles Commander). Vous pouvez signer tout cela dans Excel dans Excel ou analyser quoi que ce soit. De plus, Python est bon à approcher cela, avec le texte que vous pouvez travailler et que les bibliothèques sont pleines de toutes sortes de statistiques et de toutes. Si vous souhaitez effectuer une machine d'apprentissage de la machine, certaines données à traiter, prédisent, puis sur Python, il est maintenant fait plus rapidement. Certes, il convient de noter que les tâches sont très différentes. Par exemple, si vous souhaitez échanger sur la bourse instantanément dans des conditions lorsque les citations changent tout le temps, alors quelle que soit votre machine d'apprentissage écrit sur Python, les personnes qui sont écrites sur quelque chose seront plus rapides, auront le temps d'acheter tout avant Tout vient, même s'ils ont aggravé les algorithmes. Par conséquent, même ces tâches d'apprentissage de la machine (certaines d'entre elles) nécessitent une productivité élevée (et extrêmement élevée) et respectivement, d'autres langues.

Le seul moyen de comprendre ce que vous voulez, c'est d'essayer tout. Maintenant, je dirai comme l'une des visions de la façon dont vous pouvez tout essayer. Comment devenir programmeur et heureux? Donc. Des feuilles pures commencent. Vous étudiez ici à l'école avec vos mathématiques, votre langue russe et d'autres sujets optimaux et facultatifs, et vos connaissances dans le domaine de la programmation se reflètent sur la Commission (le conférencier affiche sur un tableau vide) sur ce moment. Et vous voulez devenir une personne heureuse, faire un être cher, gagner beaucoup d'argent et ne pas me nier et me réjouir.

Une façon d'y parvenir. Il y a bien sûr toutes sortes d'histoires inspirantes sur les personnes qui ne se sont pas allées dans des universités du tout ou les ont jetés et sont devenues milliardaires, propriétaires d'entreprises, etc. Mais il convient de noter que la plupart des personnes qui peuvent ne pas être milliardaires, mais aussi bien vivent bien, après toute l'université à un moment donné.

Quelle est notre situation avec l'admission à l'université (étudiez-vous à l'école)? Pendant que vous étudiez à l'école, vous devez comprendre quoi l'étape suivante - Inscrivez-vous et prenez soin de cela. Passer l'examen ou gagner les Jeux olympiques. À l'examen, vous pouvez utiliser Pascal, C ++ (y compris Pure SI), Python (je ne les mentionnerai plus). Aux Jeux olympiques - le même Pascal, le même C ++, le même Python (nous parlerons de ses problèmes maintenant) et, le plus souvent, il y a Java. Il reste encore tout, selon les Jeux olympiques, mais pas l'essence.

Qu'est-ce que le programme de distribution ressemble à l'Olympiade Toute Russie sur l'informatique? Les personnes qui participent au russe, la plus escarpée olympiade, qu'est-ce qu'ils écrivent? Il ressemble à ceci (ici cela signifie pascal, et ici environ 2000, et voici environ zéro, ici C ++ et ici 2015).

En 2000, C ++ Presque personne n'a écrit. Il a fallu 15 ans et presque personne n'écrit sur Pascal, malgré le fait que Pascal est moderne. C'est une langue qui peut presque tous les mêmes. Juste quelque chose à tout le monde est devenu trop paresseux pour apprendre cela, chaque nouvelle tendance, et tout continue à écrire sur Borland Pascal, ce qui ne peut bien sûr rien. Sur C ++, les gens écrivent des courties d'algorithmes (STL) - parfaitement écrit un tri () et c'est tout. Sur le Pascal, sur l'habituel, sur l'ancien est un problème. Ils ont écrit un ensemble (nécessaire) - parfaitement, sur C ++, ils ont écrit, sur Pascal, à nouveau, le tourment solide. Sur les nouveaux Pascals, vous pouvez le faire, vous pouvez le faire, mais ils coûtent de l'argent en fait. Peut-être que vous n'aviez pas remarqué cela, mais c'est.

Il y a encore Java, mais en Java, il y a beaucoup de lettres. C'est pour les grands projets et pour les petits programmes jetables, il s'avère assez mauvais, car beaucoup de lettres supplémentaires. Mais aussi certaines personnes écrivent, vous pouvez apprendre à y écrire. Mais il n'y a personne sur son examen et l'examen devra toujours se prendre pour la plupart.

Quel est le meilleur pour l'examen? Pour le meilleur de l'examen (si vous ne connaissez rien et à l'école, vous n'êtes pas enseigné) d'apprendre Python. Certaines tâches d'examen sont parfaitement résolues dessus. Aux Jeux olympiques, en général, il s'avère que (utilisé) C ++, car Python est très lent, tout n'est pas résolu sur elle.

Ainsi, vous avez étudié un petit sous-ensemble de la langue et de certains algorithmes (éventuellement) et de nombreuses tâches formées afin d'obtenir un diplôme de nos Jeux olympiques et d'entrer dans l'université pour recevoir des études supérieures.

Je vous dirai sur la manière dont nous construisons un cours dans la tour, dans quelle langue les langues vont les langues, comme étudiant les mathématiques appliquées et l'informatique de la faculté des sciences appliquées, que nous faisons avec Yandex. Au premier semestre - Python (pas intégralement, environ comment vous devriez apprendre à l'école) et C ++ (plus large, beaucoup plus large que celui qu'il est habituellement enseigné dans les écoles). Disons maintenant que vous n'avez pas peur si vous voulez soudainement faire, disons: «Quoi, je sais déjà tout, pourquoi je vais-je apprendre quelque part? Mieux je vais aller à un autre endroit. " Pour ceux qui savent déjà comment programmer bien, il y a une opportunité d'aller immédiatement à l'étude des algorithmes et dans une formation plutôt théorique. Nous ne les regardons pas maintenant, cela (spectacles sur le tableau) pour ceux qui programment sont moyens ou de quelque manière que ce soit.

Le premier semestre étudie les fondements de Python, juste que les gens ont appris à programmer et que personne ne déçoit vraiment. Python est petit là où ils enseignent dans les écoles, principalement des gens sont livrés avec la connaissance de Pascal ou de C ++. Surtout même pascal, s'il s'agit d'une école de masse. Eh bien, pour que personne ne déçoit, tout le monde a enseigné une nouvelle langue (comme si dans les conditions égales). Et C ++ est simplement parce que de C ++, vous pouvez aller n'importe où.

Ensuite, il y a un cours "algorithmes" et un projet à terme distinct. Algorithmes classiques avec la mise en œuvre. Pas que dans la théorie, nous avons pris quelque chose, considéré comme une complexité. Nous avons pris à la conférence, considéré comme la complexité, au séminaire qu'ils ont pris, ont mis en œuvre l'algorithme. Le projet est que les étudiants font quelque chose de complet. Par exemple, l'un des projets était le suivant: Calculer ... Supposons que vous ayez beaucoup d'appartements à Moscou et que vous comprenez: «Oh, j'ai beaucoup de superflu, je vais le louer. Et ils ont mis un peu de prix et personne ne veut que quelque chose tire votre appartement - probablement trop cher. Ou définissez un peu de prix, vous avez immédiatement supprimé et vous pensez: "Oh, j'ai probablement passé le bon marché" - et aussi contrarié. C'est-à-dire qu'il était nécessaire de calculer à quel point un appartement est situé? Vous conduisez des données - il vous est évalué. Un tel Sittik qui consistait en plusieurs choses: prendre une offre, versé, appliquer une sorte d'algorithme d'apprentissage de la machine (probablement) simple et constitue une belle face Web, dans laquelle vous pouvez choisir quelque chose, conduire quelque chose, quelques mètres, un certain nombre de chambres, Le nombre de saunas, le nombre de jacuzzi dans votre appartement et évaluez grossièrement le coût. C'est-à-dire une sorte de chose complète, pas très difficile. Cela signifie ici (le conférencier affiche un cours sur des algorithmes) tels que C ++ C ++, avec une console introduction. Eh bien, ici (le conférencier affiche l'inscription "Projet") quelque chose sous la direction du mentor, éventuellement avec des bases de données, éventuellement avec l'analyse de textes et avec autre chose.
Ensuite, le troisième semestre va - ceci est un cours appelé "Systèmes informatiques". Il y a un très peu d'assembleur associé à la compréhension (très peu), puis quelque chose de similaire à la Clean SI et à l'interaction avec les systèmes d'exploitation, la programmation systémique est essentiellement. Et le projet au séminaire est également quelque chose sur toutes sortes d'interactions réseau, suffisamment bas niveau: développez certains utilitaires, tels que RSYNC (synchronisation, peut-être que vous connaissez. À Clean SI, moins, écrivez un analogue de RSYNC, que vous allez avoir les dossiers de synchronisation de réseau avec tous les fichiers aux fichiers, etc.).

Et enfin, le quatrième. Je ne sais même pas comment l'appeler, ce sont des technologies de vinaigrette nécessaires au développement réel, par exemple pour le développement Web. C'est-à-dire que c'est l'application pratique des bases de données, encore une fois quelque chose de similaire à celui effectué dans le projet (le conférencier affiche le 2ème projet de cours) mais déjà plus approfondi. C'est déjà ou moins de choses concrètes, programmation pratique. Parallèlement à cela, chaque théorie va, eh bien, et ici la science est toujours engagée.

Et après deux cours, les gens divergent pour s'engager là où ils sont intéressés, car cette chose couvre assez largement les bases de la programmation et les personnes à ce stade comprennent déjà qu'ils ne veulent pas faire systèmes informatiques En aucun cas (la programmation du système, par exemple, n'aimait pas), mais ils veulent s'engager dans certains algorithmes théoriques, la difficulté à considérer, inventer de nouvelles choses, distribuées ou autre chose. Ou, au contraire, ils pensent qu'ils ne sont pas très ( le conférencier indique une ligne de première année avec Python et C ++) est allé, alors ( le conférencier indique une chaîne troisième cours avec la programmation système) - Comment ne pas aimer, compter au revoir et mettre toutes sortes de restrictions à la lecture et à l'enregistrement, à faire des ruisseaux, des arbres et autre chose. Et conformément à cela, les gens choisissent une sorte de direction et apprennent. C'est-à-dire en principe que vous ne développez pas "Syndrome de Utanki" - vous avez été le premier à voir mon pascal et dire maintenant "Pascal - Power"; Ou plus avancé - vous avez vu C ++ et commencé à parler de tout le monde que C ++ force, et tout le reste n'est pas très là.

Vous devez le regarder (le conférencier affiche la liste des cours sur le tableau) est plus large - c'est l'une des façons choisies, notamment dans la tour (a récemment paru, de sorte qu'il est assez moderne). Il y a d'autres moyens de rencontrer. Dans d'autres bonnes universités, il y a un peu dans un ordre différent et d'autres accents sont arrangés. Mais essayez aussi des personnes avec tout le monde à introduire ce qu'ils ont.

En tant que programmeur cherche un travail

Vous êtes ceci ( le conférencier montre une liste de cours) Ils ont tout fait, appris à l'université et quelque chose pendant deux ans travailla plus de manière productive et vous devez aller au travail. Comment choisir quelque chose à travailler? Tout d'abord, vous avez rencontré tout le monde, ils ont approfondi quelque part et vous savez que vous aimez. Il est nécessaire de choisir ce que vous aimez naturellement. Parce que si vous voulez, vous allez investir, vous aurez la motivation et tout ira bien. Parce qu'il y a une question non seulement dans l'argent, le but est que vous êtes intéressé et agréable. Eh bien, et vous voulez entrer dans cool Company, avoir un travail. Quelle personne je voudrais personnellement voir? Il me vient à moi, disons, cent étudiants - je dois prendre deux au travail ou un. Que viennent-ils, je ne comprends pas qui ils sont, que sont-ils, comment sont-ils? Au mieux, ils me montreront un diplôme qui a eu lieu à l'université et je dirai: "In! C'est un diplôme frais et ce n'est pas si cool! " Et je peux faire une erreur, au fait. Peut-être qu'une personne avait beaucoup de temps libre et il a beaucoup appris.

Qu'est-ce qui serait bien? Premièrement, un projet open source, que vous avez écrit du début à la fin. Il est souhaitable que je fais des infrastructures afin que les données soient rapidement considérées, autre chose, alors, bien sûr, je serais intéressé à m'écrire quelque chose qui s'ouvre. Pas un Saytyik en quelque sorte n'a fait, mais quelque chose sur le sujet. Pourquoi est-ce intéressant pour moi? Je peux regarder votre code, je peux voir à quelle fréquence vous avez commis, je peux voir comment vous avez réagi aux insectes des utilisateurs, des bugs des développeurs utilisés - tout est écrit, je fais tout et pense: "Dans, voici, le bug est Ils ne sont plus fermés, vous avez une réponse impolitive à l'utilisateur, il y a autre chose - je ne prends pas. " C'est-à-dire que c'est votre projet personnel.

Ensuite, qu'est-ce que ce serait cool? J'aimerais voir comment vous avez fait travailler le commandement. C'est-à-dire que vous venez à moi pour une interview et dites: «Nous et les gars de l'UNI ont lavé une sorte d'appareil. J'ai fait une base de données là-bas, ils ont fait une application mobile là-bas et nous avons toujours un garçon là-bas, une fille de designer, un garçon sur support technique. Nous étions cinq personnes et nous avons fait un projet cool. " Eh bien, je vois ce qui est vraiment votre projet, dis-je: "Quel est le vôtre?" Je regarde à nouveau le code et je comprends que vous pouvez travailler dans une équipe avec des gens.

Le programmeur n'est pas celui qui siège un (indie tel) dans le garage, quelque part avec la lumière, il ne parle pas avec personne, devient une barbe et écrit. Quoi qu'il en soit, il y a une interaction avec les gens. Avec le patron, par exemple, qui, peut-être, jure parfois (chefs, ils ne sont pas toujours gentils). Et je vois que vous pouvez travailler avec des gens et cela me rend heureux si vous avez une bonne équipe. Même si ce n'est pas bon, c'est mieux que son absence.

Qu'est-ce que j'aimerais aimer personnellement? Si vous vous aviez montré dans de grands projets. Par exemple, quelque chose dans le noyau Linux a été acheté, si vous êtes engagé dans la programmation système, j'ai corrigé un bug. C'est-à-dire qu'ils ont montré que vous savez comment lire le code de quelqu'un d'autre et savoir comment apporter des modifications. Je regarde: "Oh, vraiment, vous avez compris quelque chose de difficile et certains bugs corrigés!" Et je commence à me réjouir de cela. Parce que j'ai ... Eh bien, je ne sais pas ... c'est mon programmeur cessé, car les concurrents lui ont offert plus de salaire, et j'ai besoin de suspendre de toute urgence quelqu'un pour cacher sa place - vous. Je vois une telle chose que vous venez d'écrire à partir de zéro et que le code de quelqu'un d'autre ne sait pas comment lire et éditer, et contrarié.

Enfin, en fonction du poste spécifique, il existe différentes autres choses. Si vous conviendrez à un analyste, j'aimerais que vous fassiez Kaggle d'avoir une analyse d'analyse de données. Si vous conviendrez à des choses algorithmiques, je voudrais être dans la programmation sportive certains algorithmes ont été effectués. Enfin, si vous vous demandiez à propos de la profession, lisez comme une passe d'entretien », ils ont rencontré qu'il y a des gens là-bas, il y a un grand mécontentement:« Je suis venu, et je me demande quel est mon passe-temps. Je suis assis comme un hibou et je ne réponds pas, parce que je n'ai pas de passe-temps »et je pense que les ressources humaines le font. En fait, ils essaient de comprendre à quel point vous êtes bienveillant, vous êtes également adéquat. Si vous êtes hostile et inadéquat, tout ce que vous êtes là un génie et de l'ouvrier, un spécialiste escarpé avec une bonne connaissance, l'équipe sera difficile à travailler avec vous et que vous ne tirez pas le projet. De plus, même si vous tirez, vous pouvez imaginer quelle charge pour l'entreprise. Et que venez-vous demain et dites-moi: "Accrochez-moi un salaire 10 fois, sinon je te quitte." Souvent, les entreprises ne veulent pas entrer dans une telle situation. Par conséquent, l'éducation en soi l'adéquation et la bonne volonté est aussi importante (au moins) comme le développement de certaines compétences professionnelles.

Résumer, que puis-je dire? Quelles langues sont bonnes et quelle mauvaise? Eh bien, à l'intérieur d'un groupe de langues, par exemple, entre Ruby, Python et PHP, que choisir? Bien sûr, la bonne réponse est Python, mais en fait la différence entre eux dans le nombre de bugs autorisés, dans la quantité de quelque chose d'autre - 5%, bien, peut-être 10%. C'est-à-dire que si vous avez déjà un projet prêt à PHP, personne ne dira dans le bon esprit: "Réécrit tout sur Python". On dira: "embauchons d'autres développeurs PHP et continuerons à écrire sur PHP." Génial, c'est un bon choix. Il est clair que si vous écrivez soudainement pour écrire une sorte de projet, alors il est raisonnable de choisir Python maintenant. Bien que cela dépend aussi. Peut-être que vous avez un groupe de développeurs PHP bon marché sur le marché et de Python cher, et vous pensez: "Oui, la technologie est plus cool, mais je vais économiser de l'argent sur des développeurs prêts à l'emploi." Et tout, excellent, vous venez déjà travailler là-bas.
Comment choisir entre Java et C ++? Oui, la même chose se passe. Je pense qu'au moment où vous déciderez de la langue que vous créez un nouveau grand projet, vous gagnerez des connaissances dans votre domaine professionnel et pourra faire le bon choix. Maintenant, vous n'avez pas encore besoin de faire un tel choix, et donc je vous conseille de faire ce que j'aime.

Comme je l'ai dit, les bases de la programmation (qu'est-ce qui est une fonction, que, pour les massives, quelque chose d'autre), quelque chose d'autre) peut être appris plus ou moins dans n'importe quelle langue. Par exemple, C ++, car il y a beaucoup de choses à ce sujet, et les détails de celui-ci (à un niveau aussi) le moins et les becs d'écriture inutile le moins. Et puis, lorsque vous apprendrez des choses architecturales complexes, apprenez et inquiétez-vous fort à ce sujet. C'est-à-dire que, surtout, essayez, cherchez ce que vous aimez et quand vous comprenez maintenant à 4 heures du matin, et vous êtes prêt à vous asseyez-vous et écrivez, car vous l'aimez - probablement, à ce moment-là qu'il est clair que vous avez trouvé le vôtre.

Pour résoudre les tâches informatiques, les processeurs graphiques sont de plus en plus utilisés maintenant, mais la question est toujours ouverte: comment écrire programmes efficaces Sous les configurations appropriées?

06/15/2011 Andrei Adinets

Pour résoudre des tâches informatiques, les processeurs graphiques sont de plus en plus utilisés maintenant, mais la question est toujours ouverte: comment écrire des programmes efficaces pour les configurations pertinentes? Solution standard - un tas de Cuda ou opencl - vous permet de mettre relativement rapidement l'algorithme, mais il est difficile de créer une configuration spécifique avec leur aide. Nécessite des outils pour programmer des processeurs graphiques de haut niveau pouvant être créés, par exemple, à l'aide de langues extensibles.

Il y a trois ans, les équipements de processeur graphique (unité de traitement graphique, GPU) ont été considérés uniquement comme des cartes vidéo pour un PC, l'attitude envers eux a changé - il y avait des modèles de serveur GPU spéciaux axés sur la résolution des tâches de calcul, la performance sur les calculs de double précision augmentait. , Systemes record de performance, qui occupe des lignes supérieures dans le TOP500. Comment écrire des programmes efficaces pour de telles machines? Réponse standard - Bouquet de Cuda ou Opencl pour la programmation GPU et MPI au niveau du cluster. Ces outils sont disponibles, sont activement pris en charge par les fabricants d'équipements, de nombreux programmes ont déjà été écrits pour eux, mais il y a aussi des inconvénients.

Cuda et Opencl - extensions du langage SI, ils ne sont pas difficiles à étudier, bien qu'ils soient des outils suffisamment de niveau de bas niveau. Avec leur aide, vous pouvez relativement rapidement l'algorithme GPU, mais la version optimisée pour une application spécifique et la configuration est beaucoup plus compliquée. Toutes les optimisations seront effectuées manuellement, ce qui entraînera une augmentation de la taille du code et de la détérioration de sa lisibilité. Et bien que les programmes créés à l'aide de OPENCL soient transférés entre une large gamme d'architectures, les performances avec un tel transfert ne seront pas enregistrées. Outils recherchés pour la programmation des niveaux supérieurs de GPU.

Créer de tels outils peut être créé de différentes manières: entrez un nouveau langage de programmation; Ajouter des directives à une langue existante, comme c'est réalisé dans le modèle d'accélérateur PGI ou de CAPS HMPP; Profitez des langues extensibles. Langues extensibles- Les langages de programmation, la syntaxe et la sémantique ne sont pas fixes et peuvent être modifiés en fonction des besoins du programmeur. Par rapport aux langues extensibles traditionnelles, plusieurs avantages sont plus faciles d'ajouter de nouvelles fonctionnalités; Ils sont ouverts; L'étude des nouveaux modèles de programmation sur la base de telles langues est plus facile, car il est nécessaire d'étudier uniquement relativement petit en termes d'expansion; Avec l'aide de telles langues, il est plus facile d'effectuer une configuration fine et une optimisation des programmes.

Langues extensibles

Pour que la langue soit extensible, il est nécessaire d'y être présent:

  • le mécanisme d'expansion sans modification du compilateur est également pris en charge par tous les compilateurs, ce qui signifie notamment la présence d'une interface standard d'interaction avec des compilateurs;
  • conceptions d'expansion et de manipulation avec un code de code, telles que les macros ou la quasiquement, pour élargir la langue;
  • des moyens puissants des extensions d'écriture, par exemple, la langue extensible elle-même et l'autre langue, dont la puissance suggère que le code de poste peut faire la même chose que tout programme dans cette langue.

Il s'avère que les langues qui répondent à ces exigences sont relativement peu nombreuses: Lisp, Nemerle, Seed7, XOC et Stratego. Dans le même temps, XOC, qui est destiné à étendre la langue SI, utilise une langue zêcha séparée pour écrire des extensions, et Stratego est la langue du domaine pour créer les convertisseurs de code source. Nemerle est une langue extensible utilisant mercredi. RAPPORTER.

Toutes les mécanismes de soutien des langues expansibles pour travailler avec un programme de programmes, et surtout cette conception de la quasiciation - la spécification d'objet représentant l'arborescence du programme, en utilisant le code le plus source.

Dans la langue Nemerle, une conception est utilisée pour cela, par exemple, elle crée un arbre constitué d'une déclaration de variable I avec une valeur initiale de 0. La quasiquement est similaire à la création d'objets à chaîne avec des constantes de cordes. En figue. 1 montre un exemple de quasiquement. La conception d'interpolation vous permet de substituer les valeurs des variables dans un motif fixe à l'intérieur de la quasiciation. À Nemerle, il utilise des conceptions $ (...) pour cela si vous souhaitez substituer une liste, par exemple. Également dans les langues extensibles, il existe des conceptions pour l'analyse de l'arbre de programme. Dans la langue Nemerle, l'opérateur correspond à (...) (...) est utilisé, un analogue de l'interrupteur du langage Si, dont les branches sont utilisées par les conceptions de quasiquement. Dans ce cas, l'interpolation est traitée sous forme de nouvelles variables publicitaires, qui, en cas de comparaison réussie, recevez des valeurs des sous-arbres correspondants. Par exemple, pour la correspondance de l'opérateur correspondant (E) (| \u003d\u003e ...), si E contient un arbre, dans une variable A tombera, et dans la variable b.

Les outils de travail avec un arbre de programmes sont utilisés dans les modèles d'expansion de la langue. À Nerlele, ce sont des macros - fonctions spécialesEffectué au stade de la compilation et renvoyant un fragment d'un arbre d'un programme qui est substitué à l'emplacement de leur appel. Dans le même temps, la macro prend des fragments du programme en tant que paramètres et peut les transformer. En principe, la macro peut être causée de la même manière que caractéristique conventionnelle; Mais l'opportunité la plus intéressante consiste à lier l'appel de la macro à une syntaxe spéciale. Cela vous permet d'entrer de nouvelles constructions de syntaxe dans la langue Nerlele et d'élargir ainsi la langue.

En figue. 2 montre un exemple de macro avec une extension syntaxique, ce qui vous permet de déclarer un cycle multidimensionnel avec des variables et le nombre d'itérations pour chaque mesure, et sur la Fig. 3 Il s'agit d'un exemple de conversion de programme qui fait cette macro. Notez que la macro qui exerce une telle extension prend moins de 30 lignes du code source et comprend dans ce cas plusieurs contrôles d'erreur. Avec une approche traditionnelle, la mise en œuvre d'une telle extension nécessiterait un nombre de code significativement plus important et nécessiterait, en outre, l'étude du dispositif de compilateur interne.

Historiquement, le mécanisme de macro de Lisp est apparu en premier, le programme dans lequel il ressemble à une liste régulière et ne nécessite pas de conceptions spéciales pour travailler avec l'arbre de programme. C'est donc dans cette langue que la programmation extensible est devenue la plus grande distribution. Les macros à Nemerle sont similaires dans Lisp. Dans le système XOC, le mécanisme d'extension est mis en œuvre par l'expansion de la grammaire et l'analyse d'attributs d'arborescence. Toute extension définit nécessairement deux attributs: type de syntaxe et expression sur langage de basedans lequel il est converti.

Pour les langages extensibles, la mise en œuvre de nombreuses structures standard est caractérisée par des macros. Dans la langue de Nemerle, tous les cycles et opérateurs conditionnelsEn plus de correspondre, mis en œuvre via des macros et dans les macros LISPY sont des cycles standard et des caractéristiques des fonctions.

Comment utiliser des langues?

Pour un langage de programmation extensible, vous pouvez écrire des structures qui permettent le moyen le plus pratique de programmer des processeurs graphiques, qui a été effectué dans le cadre du projet NUDA (architecture de périphérique unifiée Nemerle), dont le but est de créer les extensions de langue Nemerle pour GPU programmation. Opencl est utilisé comme interface d'interaction avec le GPU et la langue cible pour représenter le programme.

Pour commencer, il est nécessaire de mettre en œuvre l'exécution sur le code de sous-ensemble GPU dans la langue Nemerle. Cela doit être pris en charge par les opérateurs de langue habituels, tels que les cycles et les branches, ainsi que de travailler avec des types de données simples, des structures et des tableaux. Le code de la GPU est soumis à des fonctions individuelles ou dans le noyau Nuda. Chaque noyau est marqué par une macro Nukernel, qui est généré par le code sur le code OPENCL et la méthode de la prise pour appeler le noyau du côté hôte. Avant de générer le code, la divulgation de toutes les macros est effectuée, à l'exception des cycles et des macros de branche. Si l'intérieur du noyau doit appeler une fonction, cette fonction doit être marquée par la macro Nucode, qui générera du code pour cette fonction dans OpenCL. L'appel principal est effectué à l'aide d'une macro Nucall; Outre les paramètres du noyau, il est également transmis à la configuration de la grille de flux avec laquelle elle commence.

Le plus souvent, le corps du cycle est utilisé comme noyau pour GPU, alors je voudrais donc transférer immédiatement le cycle vers le GPU. À Nerlele, cela peut être mis en œuvre - la macro correspondante de Nuda s'appelle NuWork. Selon les paramètres requis, il faut la taille du bloc de flux et sur la base du contexte actuel et de l'analyse du code corporel du cycle détermine l'ensemble de variables qui doivent être transférées sur le noyau comme paramètres. Le corps du noyau est généré à partir du corps du cycle, calculant les indices de cycle par le biais du numéro de débit global, ainsi que les conditions qui vous permettent d'exécuter correctement le cycle, même si la taille de la grille globale n'est pas divisée en taille de la taille du groupe de flux. Une macro Nucall appelle à l'emplacement du cycle, qui appelle le noyau généré.

En principe, vous pouvez autoriser l'utilisation des tableaux de langue Nemerle dans les programmes GPU, mais cela conduit à des frais généraux élevés - le tableau est nécessaire pour copier la mémoire GPU chaque fois que le noyau est appelé, puis le copier. Par conséquent, des types spéciaux de tableaux sont utilisés dans les programmes GPU avec une synchronisation paresseuse entre GPU et CPU. Cela permet, d'une part, de ne pas embrayer le texte du programme en copiant des commandes de données et sur l'autre - pour éviter les frais généraux de copier des données. Pour de telles tableaux, comme pour les tableaux ordinaires à Nerlele, la gestion de la mémoire est utilisée à l'aide de la collecte des ordures. Pour mettre en surbrillance la mémoire pour de tels tableaux, il existe une macro Nunew, qui doit être appliquée à l'opérateur d'allocation de mémoire habituelle.

En figue. 4 À gauche est un programme de tableaux conventionnels et à droite - un programme similaire, mais effectuant des calculs sur le GPU. Obtenir des programmes GPU de l'ordinaire Tout simplement - appliquez uniquement des macros aux cycles et aux opérations d'allocation de mémoire, et la quantité de code n'est pratiquement pas modifiée. Le programme écrit à l'aide de Nuda prend moins de 20 lignes de code. Programme similaireMais dans la langue propre, SI et Opencl prend plus de 100 lignes.

Outre les macros, faciliter les travaux avec le GPU, le système d'extension NUDA inclut également des annotations pour la conversion de cycles. Les annotations sont essentiellement des macros spéciales. Par exemple, le résumé en ligne est utilisé pour un cycle avec un nombre fixe d'itérations et effectue sa balayage complète. Dmine Abstract effectue un scan de cycle profond. "Scan profonde" signifie que la création de plusieurs copies du corps du cycle et de l'agitation est effectuée non seulement pour le cycle le plus convertible, mais également pour les cycles imbriqués, si indépendant.

Effet

Pourquoi le programmeur devrait-il avoir besoin d'apprendre une nouvelle langue et de développer de nouvelles bibliothèques de langues extensibles? La réponse principale est la productivité. Ayant un algorithme de cycles parallèles fonctionnant avec des tableaux et enregistrés dans la langue Nemerle, il suffit d'ajouter plusieurs annotations pour obtenir un programme pour le GPU. Dans le même temps, le programme sera exécuté sur n'importe quel appareil de support OPENCL, y compris graphique. processeurs NVIDIA et AMD, ainsi que des processeurs X86. Pour atteindre les mêmes technologies Opencl ou Cuda, il sera nécessaire de dépenser beaucoup plus de ressources qui auront lieu non seulement à écrire le code source, mais également à déboguer l'interaction entre l'hôte et le GPU.

Une autre raison est la performance du code créé. Sur Cuda ou Opencl, la conversion des cycles sera effectuée manuellement et séparément pour chaque architecture. Il s'agit d'un processus d'erreur long et emballé et le code résultant est difficile et gênant pour accompagnement. Avec Nuda, ce travail peut être fait avec l'aide d'annotations. Par exemple, pour plusieurs cœurs, vous pouvez optimiser la convolution d'images ou de multiplication des matrices avec les annotations en ligne et dmine. Sans augmenter la taille du code source, il est possible d'atteindre une augmentation de la productivité en deux ou cinq fois. Dans le même temps, si les mêmes transformations ont été effectuées manuellement, cela entraînerait une augmentation du code, et parfois un ordre de grandeur, sans oublier le temps passé au temps de débogage et de sélection de paramètres de balayage optimaux. Par exemple, un programme annoté universel de sept rangées dans la multiplication de Nuda d'une matrice transposée sur une matrice de double précision est effectuée sur la NVIDIA TESLA C2050 seulement 40% plus tard la bonne chose au moment de la mise en œuvre (CublaS 3.2). Un programme similaire écrit à la main occuperait 70 lignes de code. Naturellement, pour des tâches standard, vous pouvez écrire manuellement le code une fois pour augmenter la productivité, mais pour des tâches spécifiques, la réduction des coûts de main-d'œuvre et de la productivité sera très utile. Enfin, l'augmentation de la productivité comprend également la création d'extensions elles-mêmes: pour les créer à l'aide de langues expansibles est plus facile que d'utiliser des outils traditionnels. L'ensemble du système nuda, malgré sa fonctionnalité, ne prend que 12 000 lignes de code, et non les tests de comptage. Ceci est relativement peu élevé, par exemple, le compilateur de langue Nemerle (Assemblée 9025) prend environ 130 000 lignes.

La langue expansion est un outil puissant et son utilisation dans des calculs parallèles est toujours dans l'état le plus initial. Il existe de nombreuses tâches intéressantes dans le développement de langages de programmation parallèles, et l'une d'entre elles peut être résolue à l'aide d'une combinaison d'extensions et de bibliothèques. Vous pouvez ajouter aux blocs asynchrones de la langue du code et des cycles parallèles, vous pouvez créer designs confortables Pour la programmation systèmes de grappes, tels que des tableaux distribués. Enfin, il est possible d'utiliser des extensions pour créer un langage de programmation parallèle à part entière, tels que la chapelle ou le X10.

Andrey Adinets([Email protégé]) - M.N.S. Nivz Moscow State University (Moscou).



L'écriture de la plupart des programmes informatiques modernes est effectuée lors de l'utilisation de langages de haut niveau. Il convient de noter que beaucoup d'entre eux ont été développés dans les années 60 et 70, mais sont toujours pertinents. Quels autres faits sur les langues de haut niveau pouvons-nous célébrer? Quelles sont les variétés les plus courantes des solutions pertinentes?

Essence de programmes de haut niveau pour les programmes d'écriture

Langage de programmation de haut niveau - Outil relatif à la catégorie indépendante de la machine. Qu'est-ce que ça veut dire? Le fait est que les langages de programmation sont divisés en plusieurs catégories.

Il existe un code de machine: un ensemble d'algorithmes conçus pour gérer directement l'utilisateur par des éléments matériels de l'ordinateur. Leur entité dépendra entièrement de la machine: seuls certains algorithmes conviennent à des types spécifiques de PC.

Il y a des assembleurs de langues. En fait, ils constituent une superstructure sur ceux conçus pour le contrôle de bas niveau des composants matériels PC au moyen d'un code de machine. Mais dans de nombreux signes, les langages de l'assembleur sont également acceptés pour être liés à la personne à charge de la machine. En règle générale, ils sont adaptés à une variété spécifique de composant matériel PC. Leur tâche principale est de simplifier la gestion de l'utilisateur de l'ordinateur grâce à des communications de bas niveau appropriées.

À son tour, le langage de programmation de haut niveau permet à l'utilisateur d'interagir avec le PC, quel que soit lequel des équipements particuliers sont installés sur l'ordinateur. Par conséquent, il devrait être attribué à la machine indépendante de la machine. Lorsque vous écrivez des systèmes d'exploitation, le langage de programmation de haut niveau est le plus souvent impliqué. Mais il y a un système d'exploitation qui est écrit sur l'assembleur. Les niveaux bas et élevés peuvent être utilisés simultanément. Une personne, donnant des équipes de haut niveau PC, de toute façon, de les transmettre à des composants matériels spécifiques, et cette fonction peut être mise en œuvre lors de l'utilisation simultanément sur les langages de l'assembleur avec de haut niveau, qui est impliqué dans la structure du fonctionnement. système.

Traducteur

Les éléments les plus importants dans les langages de programmation de haut niveau sont des traducteurs. Leur fonction peut être différente. Parmi les principaux domaines d'application des traducteurs - "Traduction" des commandes générées dans le langage de programmation de haut niveau, dans le code de la machine, compréhensible à un composant matériel spécifique du PC, par exemple le processeur. Les traducteurs qui effectuent cette fonction sont également appelés compilateurs. Il existe une autre variété de composants pertinents - interprètes. Ils sont destinés, à leur tour, pour la "traduction" d'équipes de haut niveau chez celles qui sont compréhensibles au système d'exploitation ou à tout programme.

Classification des langues de haut niveau

Les langages de programmation de haut niveau peuvent être classés pour différentes bases. Un schéma pour lequel ils sont divisés en variétés principales suivantes sont courantes:

Orienté vers le haut (fonctionner comme un outil lors du traitement des informations à n'importe quel stade des calculs);

Axé sur les problèmes (utilisés comme moyen de résoudre l'industrie et des tâches appliquées formées en élargissant les applications de PC);

Orienté objet (peut être des cas particuliers de langues des deux premiers types, cependant, s'adapter à l'utilisation d'un large éventail de développeurs avec différents niveaux Préparation, par exemple, sous la forme d'une solution avec une interface visuelle).

Considérons maintenant certaines langages de programmation de haut niveau historique et moderne, qui correspondent à cette classification.

Langues orientées procédurales

Telle peut être attribuée à Fortran. Il est considéré comme le premier langage de programmation de haut niveau créé pour une utilisation généralisée. Il est caractérisé par une structure simple. Les langues orientées procédurales appartiennent également à Beysik. Il est considéré comme l'une des programmations les plus fréquemment utilisées. Un exemple d'une autre langue orientée procédurale - SI. Initialement, il a été créé pour UNIX OS. Sur sa base, la langue C ++ a ensuite été créée, complétée par des outils de programmation orientés objet. Une autre langue appartenant à la catégorie à l'étude est Pascal. Souvent également impliqué dans la programmation de la formation. Les possibilités de cette langue permettent d'être utilisées comme un outil très puissant pour développer des espèces de logiciels professionnels.

Langues axées sur les problèmes

Ceux-ci incluent Lisp, prologue. La première langue a été développée en 1962 - quelques années après la création de Fortran. Il est considéré, d'une manière comme la seconde de l'histoire. Activement impliqué comme un outil pour le travail des programmeurs avec des chaînes de caractères. En pratique, LISP a été utilisé dans des systèmes classés comme expert, ainsi que ceux destinés aux calculs analytiques. Le prologue a été largement utilisé dans le domaine de la programmation logique. En pratique, le plus souvent impliqué dans la gestion des algorithmes d'intelligence artificielle dans les systèmes respectifs.

Langues orientées objet

Nous étudions maintenant les exemples de langages de programmation de haut niveau qui font référence à la catégorie des objets orientés objet. Parmi ceux-ci - Visual Basic, Delphi, Visual Fortran, noté ci-dessus C ++, ainsi que Prolog ++. En fait, tous sont basés sur des langues orientées vers la procédure. Cependant, il est supposé être un ajout important aux éléments visuels de la gestion afin de développer ultérieurement les algorithmes nécessaires par les développeurs habitués à d'autres outils. Ainsi, le premier langage de programmation de haut niveau - Fortran - peut être étudié par des experts informatiques à travers les possibilités de Visual Fortran. Une méthode similaire peut être rapidement maîtrisée d'une base ou d'un prologue.

Il est effectué, à son tour, lors de l'utilisation de la programmation DELPHI dans la langue de l'objet de haut niveau Pascal. Il existe un grand nombre d'autres environnements de développement logiciel, classés comme une langue orientée objet. Ce domaine des technologies de développement se développe activement.

Fortran et Lisp - les première et seconde langues de haut niveau

Nous étudierons davantage, car le premier langage de programmation de haut niveau est apparu - Fortran, ainsi que le LISP, considéré comme le second. En 1954, les développeurs d'IBM, dirigés par John Bacus, ont créé une langue par laquelle les programmeurs ont pu atténuer de manière significative l'interaction avec le PC, que jusqu'à ce que le moment ait été effectué via des commandes ou un assembleur de la machine. Il s'appelait Fortran et est vite devenu connu dans l'URSS sous un article russified. Fortran est devenu un outil populaire pour l'informatique scientifique.

Le principal élément révolutionnaire proposé par les spécialistes IBM, est devenu le même compilateur, conçu pour être une alternative à l'assembleur. Au cours des premières années de la pratique des programmes d'écriture lors de l'utilisation de Fortran, de nombreux développeurs ont considéré que le compilateur n'est pas une solution à succès, tout d'abord, en termes de coûts de main-d'œuvre. De nombreux codes de machine étaient bien préparés plus facilement que lorsque le traducteur est impliqué. Toutefois, comme une augmentation rapide des performances de l'ordinateur, les programmeurs ont commencé à se rendre compte que sans utiliser le compilateur, un logiciel efficace qui utilisera pleinement la puissance informatique du PC, afin de créer extrêmement problématique. Ainsi, les débuts des développeurs d'IBM ont été développés. Les principales structures syntaxiques du langage de programmation de haut niveau de Fortran dans de nombreux cas ont commencé à utiliser comme base lors de la création de nouvelles solutions.

Un exemple de réalisation de résultats concrets dans le développement de concepts énoncés dans Fortran peut être considéré comme la création de LISP. Cette langue a été développée en 1958, cependant, a acquis une large gloire quelque peu plus tard - dans les années 1960. Lisp a été développé par John McCarthy et publié dans l'un des magazines populaires pour les spécialistes informatiques. L'objectif principal de la langue considérée est de traiter des listes. LISP est devenu populaire dans l'environnement de développement des systèmes d'intelligence artificielle. Sur sa base, des langues telles que le planificateur, le régime, ainsi que les LISP communes, ont été créées. Il a également également donné un impact significatif sur de nombreux outils modernes de développement de logiciels. La structure de langages de programmation de haut niveau, populaire aujourd'hui, est largement basée sur les algorithmes de Fortran et Lisp.

Il sera toutefois intéressant de considérer d'autres approches de la classification des outils examinés des outils de développement logiciel.

Langues universelles de haut niveau

Ainsi, les experts modernes allouent des langues universelles de haut niveau. Celles-ci incluent en particulier celles qui ont été développées dans les années 60. Principales caractéristiques:

Orientation sur une large gamme de tâches (tout d'abord liées au calcul);

Un grand nombre de structures de langue et d'algorithmes;

Signification non seulement pour son temps, mais aussi pour le stade moderne de développement des équipements informatiques;

Soutien dans les langues concernées de la méthodologie impérative.

Les langues universelles sont fondamentales dans l'industrie de développement informatique concernée. On peut noter que jusqu'à présent, ils n'ont pas d'analogues directs de la structure interne. En fait, cela explique en grande partie la pertinence de l'utilisation des langues pertinentes dans des interfaces modernes orientées objet. Également en général dans les langues marquées - Type de données. Ce facteur prédéfinit largement leur polyvalence. Parmi les propriétés les plus remarquables des langues appartenant à la catégorie de la continuité universelle. Ainsi, les langues historiques sont généralement basées sur les concepts de prédécesseurs.

Langues uniques

Certains experts IT allouent dans une catégorie indépendante "langages uniques". Parmi ceux: APL, Cobol, Setl, ainsi que CLU. Quelle est leur spécificité?

L'aspect le plus important de l'APL est l'implication des tableaux (vecteurs et matrices) en tant que type structural clé. Les spécificités de la langue Cobol - dans l'orientation sur la sphère commerciale. Ainsi, il est conseillé de l'utiliser lors de la résolution des problèmes associés à un format normalisé de représentation des résultats. La langue de début est caractérisée par l'utilisation d'enregistrements de logiciels postfix, ainsi que de notation élégante. Dans la langue SETL, les ensembles de valeurs sont utilisés comme l'un des principaux types de données. Le langage de programmation de haut niveau est également CLU. Sa principale caractéristique consiste à utiliser le concept de travail avec des types de données abstraits. De nombreux spécialistes informatiques considèrent l'émergence logique de nouvelles solutions basées sur des langues uniques, telles que, par exemple, Cobol orienté objet.

Equipements Programmation parallèle

Cette catégorie peut inclure un grand nombre de solutions. À son tour, les langages de programmation parallèles peuvent avoir un grand nombre de motifs de classification. Par exemple, la méthode d'organisation des processus. Cette base implique la classification des moyens de programmation parallèle en fonction de la présence:

Sopogrammes;

Branches;

Les associations;

Crochets parallèles;

Algorithmes de travail avec des processus.

Une autre base pour la classification des langues du type à l'étude est des méthodes de synchronisation des processus. Les solutions correspondantes peuvent donc inclure:

Sémaphores;

Moniteurs;

- "randevu";

Sections critiques;

Procédures de défi à distance;

Transactions liées à la catégorie atomique.

Les langues du type de type incluent Modula-2, Bliss, Concurrent Pascal, DP, Argus.

Famille de langue C.

Au-dessus, nous avons considéré comme un exemple de langage de programmation de haut niveau, une telle solution que C. en fait, elle forme une famille entière. Les langues appartenant à ce prix sont des structures privées C. Donc, son ajout à divers composants orientés objet ont conduit au développement de C ++. Après un filtrage substantiel d'une rangée de constructions C, Java est apparu. On peut noter que Java a été créé à bien des égards sous l'influence des concepts du projet Oberon, qui est géré par Niklaus Wirth, le créateur de la langue Pascal. Le JavaScript de haut niveau correspond-il à JavaScript de haut niveau? Bien sûr, oui, malgré l'étroitesse de la demande - comme outil de développement de pages Web. Mais les langages de programmation de haut niveau n'incluent pas, en particulier, HTML, XML et SGML. Ils sont classés comme outils de balisage hypertexte.

Famille de langue Pascal

Langues de programmation de haut niveau Pascal forment également une famille distincte. Sur la base de Pascal, il a été créé Oberon, classé comme une langue de type orientée objet. Caractéristique clé Oberon - dans la capacité d'assurer la sécurité des types. Ne comptez pas Oberon, les langues de la famille Pascal peuvent être attribuées à Modula-2, ainsi que composant Pascal.

Famille de langue ada

Le fondamental de la catégorie de langues concernée - ordonnée par le département américain de la défense ada. Il a été créé à la fin des années 70 - au début des années 80. Caractérisé grande quantité Fonctions, opportunités, polyvalence. La famille ADA comprend des solutions telles que le cèdre, la modulation 3.

Simula Language famille

La langue Simula est distribuée dans les succursales de programmation associées à la modélisation d'imitation. La spécificité des solutions appropriées - dans la participation d'un noyau spécifique. Son utilisation vous permet d'appliquer diverses extensions adaptées à l'une ou aux autres applications. Basé sur SIMULA, une langue de petite langue orientée objet a été créée, ainsi que la version bêta, caractérisée par la possibilité de combiner dans une seule abstraction d'algorithmes, reflétant les travaux avec des données, des procédures et des contrôles. Les objets bêta peuvent être pris en compte dans un contexte différent, par exemple, en tant que variables, fonctions ou systèmes parallèles.

Titre du rapport

Langues de programmation modernes et leur utilisation

L'auteur du projet

Structure de projet

● Schéma de classification de la langue de la programmation

● Classification des langues de programmation

● Vue d'ensemble des langages de programmation

● Ressources utiles

Schéma de classification Langues de programmation

Classification des langages de programmation

Programmation de procédure - Il y a un reflet du fond de l'architecture Nymanovsk de l'ordinateur. Le programme écrit dans la langue de procédure est une séquence de commandes qui déterminent l'algorithme de résolution de problèmes. L'idée principale de la programmation procédurale est l'utilisation de la mémoire pour le stockage de données. La commande principale est attribuée, qui est déterminée et la mémoire de l'ordinateur change. Le programme facilite la conversion de la teneur en mémoire en le modifiant de l'état source à la résultante.

Il existe des langages de programmation de procédure similaires:

La langue de Fortran a été créée au début des années 50 du XXe siècle pour la programmation des tâches scientifiques et techniques;

 COBOL - créé à la fin des années 60 du XXe siècle pour résoudre des problèmes de traitement de grandes quantités de données stockées sur divers supports de données;

 Algol (1960) est un langage de programmation avancé polyvalent. Pour la première fois, les concepts de la "structure de bloc du programme" et de "distribution de la mémoire dynamique" ont été introduits;

 Au milieu des années 60 du 20ème siècle, une langue de programmation spécialisée pour les débutants a été créée - base. Il est caractérisé par la simplicité de développement et la présence de moyens universels pour résoudre des tâches scientifiques, techniques et économiques, ainsi que des tâches, par exemple des jeux.

Toutes les langues énumérées ci-dessus étaient axées sur différentes classes de tâches, mais elles étaient d'une manière ou d'une autre ont été liées à une architecture informatique spécifique.

 En 1963-1966, une langue universelle polyvalente PL-1 a été créée. Cette langue est bien adaptée à la recherche et à la planification des processus informatiques, de la modélisation, de la résolution de tâches logiques, de développer des systèmes de support mathématiques.

 Langue Pascal (Pascal) (1968-1971GG) - Le langage de programmation procédural est le plus populaire pour PC, qui est actuellement appliqué avec succès. Le langage Pascal est basé sur une tâche commune à privée (plus simple et moins en volume). Les principes de base avec lesquels Posses de Pascal peuvent être: a) la programmation structurelle, qui repose sur l'utilisation de sous-routines et de structures de données indépendantes; b) Programmation "Top-Down" lorsque la tâche est divisée en tâches simples et résolues indépendamment. Ensuite, la solution du problème initial est complètement surmontée.

 À la procédure Les langages de programmation incluent la langue de l'enfer (1979 D), la langue porte le nom du premier programmeur des Dooms des Lavlayers du Bairon. Il présente la modularité des structures.

 SI Langue (début des années 70) concerne également les langages de programmation procédurale. Son option initiale était prévue comme langue pour la mise en œuvre du système d'exploitation UNIX au lieu de l'assembleur. L'une des caractéristiques de la langue SI est que les différences entre expressions et opérateurs sont lissées, ce qui les apporte aux langages de programmation fonctionnelle. En outre, il n'y a pas de concept de procédure dans le langage C et l'utilisation de sous-routines est basée sur le concept d'une fonction pouvant combiner les capacités de la procédure. D'une part, sur l'ensemble des structures de contrôle et des structures de données, il peut être attribué aux langues de haut niveau et, de l'autre, il dispose d'un ensemble de moyens d'accès direct aux nœuds fonctionnels informatiques, ce qui signifie qu'elle peut être utilisé comme langue de fonctionnement.

Programmation orientée objet (OOP) - Il s'agit d'une méthode de programmation, lorsque vous utilisez les principaux éléments des programmes sont des objets. Dans les langages de programmation, le concept d'un objet est mis en œuvre en tant qu'ensemble de propriétés (caractéristiques des structures de données de cet objet), méthodes de leur traitement (sous-routines de changement de leurs propriétés) et d'événements pour lesquels cet objet Cela peut réagir et, qui conduit, en règle générale, à un changement des propriétés de l'objet. La combinaison de données et le traitement des procédures de traitement d'un objet est appelée encapsulation et est l'un des principes les plus importants de l'OOP.

Un autre concept fondamental est la classe. La classe est un modèle sur la base duquel un objet de programme spécifique peut être créé, il décrit des propriétés et des méthodes qui déterminent le comportement des objets de cette classe. Chaque objet spécifique ayant la structure de cette classe s'appelle une instance de classe.

Les principes les plus importants de l'OOP sont l'héritage et le polymorphisme. L'héritage implique la création de nouvelles classes sur la base de l'existant et permet à l'enfant d'avoir un descendant d'avoir (hériter) toutes les propriétés de la classe mère.

Le polymorphisme signifie que les installations nées ont des informations sur les méthodes qu'ils devraient utiliser en fonction de laquelle les chaînes sont dans lesquelles elles sont.

Un autre principe majeur de l'OOP est la modularité - Les objets renferment la définition complète de leurs caractéristiques, aucune définition de méthodes et de propriétés ne doit être située à l'extérieur, elle fait copier gratuitement et l'introduction d'un objet à d'autres.

Les langages de programmation les plus avancés sont C ++ et Java. Depuis le milieu des années 90, de nombreuses langues orientées objet sont implémentées comme des systèmes de conception visuels dans lesquels la partie d'interface produit logiciel Créé en dialogue, pratiquement aucun opérateur de logiciels d'écriture. Les systèmes de conception visuelle orientés objet incluent Visual Basic, Delphi, C ++ Builder, Visual C ++. Langue VBA (Visual Basic for Demande) - Langue des applications Microsoft Office. (Excel, mot, point d'alimentation, etc.). VBA est conforme à la syntaxe principale des règles de langue et de programmation des dialectes de base, vous permet de créer des macros pour automatiser l'exécution de certaines opérations et interface graphique Intégration des utilisateurs entre divers logiciels.

Langues de programmation déclarative

Ceux-ci incluent fonctionnel et langues logiques Programmation. La programmation fonctionnelle est un moyen d'élaborer des programmes dans lesquels la seule action est un appel de fonction. La programmation fonctionnelle n'utilise pas la mémoire comme emplacement pour le stockage de données et, par conséquent, les variables intermédiaires, les opérateurs d'affectation et de cycles ne sont pas utilisés. Le concept clé dans les langues fonctionnelles est une expression. Le programme écrit dans la langue fonctionnelle est une séquence de décrivant des fonctions et des expressions. L'expression est calculée par le complexe d'informations à simple. Toutes les expressions sont enregistrées sous forme de listes. La première langue était LISP (LISP, traitement de la liste des listes) a été créée en 1959. Cette langue vous permet de traiter de grandes quantités d'informations textuelles. La programmation logique est la programmation en termes de logique. En 1973, la langue de l'intelligence artificielle Prolog (Prolog) a été créée (programmation en logique). Le programme de prologue est basé sur la séquence de faits et de règles, puis l'approbation que PRolog tente de prouver à l'aide des règles. La langue elle-même recherche une solution utilisant les méthodes de recherche et de comparaison qui y sont posées. Programmes logiques Aucune vitesse élevée ne diffère, car le processus de leur exécution est réduit à la construction de chaînes directes et inverses de raisonnement avec une variété de méthodes de recherche.

Vue d'ensemble des langages de programmation

Assembleur

Les langages de programmation informatique sont divisés en 2 groupes principaux:

1) langues de bas niveau;

2) langues de haut niveau.

Les langages de niveau bas comprennent les langages d'assembleur. Ils ont reçu leur nom au nom du programme système de l'assembleur, qui convertit les programmes source écrits dans des langues directement sur les codes de commandes de la machine. Les pièces ici sont des opérateurs et le résultat de l'assemblage de la séquence de commandes de la machine La langue d'assembleur allie les avantages de la langue des commandes de la machine et des caractéristiques de langages de haut niveau. L'assembleur offre la possibilité d'appliquer des noms symboliques dans le programme source et élimine le programmeur du travail fastidieux (inévitable lors de la programmation dans la langue des commandes de la machine) sur la distribution de la mémoire de l'ordinateur pour les commandes, les variables et les constantes.

L'assembleur vous permet d'utiliser de manière flexible et pleinement les capacités techniques de l'ordinateur, ainsi que la langue des commandes de la machine. Le traducteur source de l'assembleur est plus facile qu'un traducteur requis pour un langage de programmation de haut niveau. À l'assembleur, vous pouvez écrire comme efficace de taille et de temps pour exécuter le programme, ainsi que le programme dans la langue des commandes de la machine. Cette dignité est absente dans les langues de haut niveau. Cette langue est souvent utilisée pour programmer le système en temps réel. processus technologiques et équipement, assurant le fonctionnement des complexes d'information et de mesure. De tels systèmes ont généralement des exigences élevées pour le volume de la mémoire de la machine occupée. Souvent, la langue d'assembleur est complétée par le biais de la formation d'un macrocomand, chacune équivalente à un groupe complet de commandes de la machine. Une telle langue s'appelle la langue de la macroassmbler. L'utilisation de la "construction" de pavot bloque et apporte la langue de l'assembleur à la langue de haut niveau. La langue de l'assembleur dépendant de la machine, c'est-à-dire que cela reflète les caractéristiques de l'architecture d'un type particulier d'ordinateur

Pascal

Le langage de programmation Pascal a été élaboré par professeur du département de génie informatique de l'Institut fédéral suisse de la technologie Nikolas Virgin en 1968 comme alternative aux langages de programmation existants et compliqués, tels que PL / 1, Algol, Fortran. Le développement intensif de Pascal a conduit à l'apparition de sa norme en 1973 sous la forme d'un message révisé et le nombre de traducteurs de ce langage en 1979 a dépassé 80 ans. Au début des années 80, Pascal a encore plus renforcé sa position avec l'avènement de la SP -Pascal et Turbo Traducteurs -Pascal pour PEVM. À partir de ce moment-là, Pascal devient l'une des langues de programmation les plus importantes et largement utilisées. Il est essentiel que la langue dépasse longtemps la portée des intérêts professionnels académiques et étroits et est utilisé dans la plupart des universités de pays extrêmement développés non seulement en tant qu'outil utilisateur. La caractéristique la plus importante de Pascal est l'idée incarnée de la programmation structurelle. Une autre caractéristique essentielle est le concept de structure de données comme l'un des concepts fondamentaux.

Les principales raisons de la popularité de Pascal sont les suivantes:

Le langage facile vous permet de la maîtriser rapidement et de créer des programmes complexes algorithmiques.

Des outils développés pour la présentation des structures de données offrent une commodité des informations numériques et symboliques et bits

La présence de techniques spéciales pour créer des traducteurs de Pascal simplifiait leur développement et contribué à une langue généralisée

Optimiser les propriétés des traducteurs de Pascal vous permettent de créer des programmes efficaces. Cela a servi l'une des raisons d'utiliser Pascal comme langage de programmation linguistique.

Dans le langage Pascal, les idées de la programmation structurelle sont mises en œuvre, ce qui rend le programme visuel et donne de bonnes possibilités de développer et de déboguer.

Bell Labs Employé Denis Ritchci a créé le langage C en 1972 pendant la collaboration avec Ken Thompson, en tant qu'outil de mise en œuvre du système d'exploitation UNIX, toutefois, la popularité de cette langue a rapidement gagné le cadre d'un système d'exploitation particulier et tâches spécifiques Programmation du système. Actuellement, tout système instrumental et d'exploitation ne peut pas être considéré complet si sa composition n'inclut pas le compilateur de langue C. Ritchsee n'a pas inventé un SI simplement de la tête - le prototype était la langue de BI développée par Thompson. Le langage de programmation SI a été développé comme outil pour les praticiens. Conformément à cela, le but principal de son auteur était de créer une langue pratique et utile à tous égards.

Si est un système de programmeur système et vous permet de grimper profondément dans les mécanismes les plus subtils pour traiter des informations sur un ordinateur. Bien que la langue nécessite un programmeur de haute discipline, il n'est pas strict dans les revendications formelles et permet de brèves formulations.

C - Langue moderne. Il comprend ces conceptions de gestion recommandées par la théorie et la pratique de la programmation. Sa structure encourage le programmateur à utiliser la conception descendante, la programmation structurelle et les modules étape par étape.

C - Langue puissante et flexible. La majeure partie du système d'exploitation Unix, des compilateurs et des interprètes des langues de Fortran, Pascal, Lisp et Baisik sont écrites avec précision avec son aide.

C - Langue pratique. Il est suffisamment structuré de maintenir un bon style de programmation et à la fois non connecté à des restrictions serrées. En quelque sorte, la langue Si elle est la plus universelle, car Outre l'ensemble de moyens inhérents aux langages de programmation modernes de haut niveau (structurels, modularités, types de données spécifiques), il comprend un logiciel de programmation pratiquement au niveau de l'assembleur. Un grand ensemble d'opérateurs et de moyens nécessite une prudence, une précision et une bonne connaissance de la langue avec tous les avantages et inconvénients de l'OHI.

C ++ est apparu au début des années 80. Créé par Bieran Sturastrup avec le but initial de se sauver et de se sauver et de leurs amis de la programmation sur Assembleur, SI ou diverses autres langues de haut niveau.

Selon l'auteur de la langue, la différence entre l'idéologie des SI et C ++ est approximativement la suivante: le programme sur C reflète la "méthode de pensée" processeur, et C ++ est une méthode de réflexion programmeur. Répondre aux exigences de la programmation moderne, C ++ se concentre sur le développement de nouveaux types de données des concepts les plus pertinents de la zone choisie de la connaissance et des tâches de l'application. La classe est le concept clé de C ++. Une description de classe contient une description des données requises pour représenter des objets de ce type et un ensemble d'opérations pour travailler avec des objets similaires.

Contrairement aux structures traditionnelles C et Pascal, les membres de la classe sont non seulement des données, mais également des fonctions. Fonctions - Les membres de la classe ont un accès privilégié aux données dans les objets de cette classe et fournissent une interface entre ces objets et le reste du programme. Avec d'autres travaux, il n'est absolument pas nécessaire de se rappeler la structure interne de la classe et du mécanisme de fonctionnement des caractéristiques intégrées. En ce sens, la classe est similaire au mobilier électrique - peu de gens connaissent son appareil, mais tout le monde sait comment l'utiliser.

La langue C ++ est un outil programmation d'objetLes dernières méthodes de conception et de mise en œuvre de programmes, qui, dans la décennie actuelle, remplaceront probablement la programmation procédurale traditionnelle. L'objectif principal du créateur de la langue du Dr Biern Strastard était équipé des constructions C ++, permettant d'accroître la productivité des programmeurs et de faciliter le processus de maîtrise des grands logiciels.

L'abstraction, la mise en œuvre, l'héritage et le polymorphisme sont les propriétés nécessaires avec lesquelles le langage C ++ a, de sorte qu'il ne soit pas seulement universel, ainsi que le langage C, mais est la langue d'objet. Fortran Fortran est une langue largement distribuée, en particulier chez les utilisateurs qui sont engagés dans la modélisation numérique. Ceci est expliqué par plusieurs raisons:

L'existence d'énormes fonds pour les programmes appliqués sur la forteresse accumulée au fil des ans, ainsi que la présence de nombre énorme les programmeurs qui utilisent efficacement cette langue;

La présence de traducteurs morthrâtanes efficaces sur tous les types d'ordinateurs et la version de diverses machines est assez normalisée et le transfert de programmes de la machine à la machine n'est généralement pas grand;

Dans l'orientation initiale de Fortran sur les applications physiques et mathématiques et techniques; En particulier, il a manifesté que pendant longtemps, il restait la seule langue avec un type de variables intégré intégré et un ensemble important de fonctions intégrées pour fonctionner avec de telles variables.

Au cours de la période passée, une nouvelle méthodologie et une nouvelle philosophie de programmation a été formée. Depuis le début des années 70, Ford a été considérablement critiqué. En 1977, une nouvelle norme de Fortran-77 a été adoptée. Il a fallu beaucoup de temps pour créer une nouvelle norme, mais il est déjà possible de supposer que son développement est terminé et que la nouvelle norme FORTRAN-90 a commencé à entrer dans la pratique des utilisateurs d'UrHran. Seulement sur IBM PC Machines Il existe plusieurs traducteurs, WATFOR, LAP-FORTRAN, etc. mais la plus grande distribution sur les machines de ce type a reçu diverses versions du traducteur Fortran-77. Le traducteur MS-ForTran 5.0 est sorti en 1990, presque entièrement conforme à la norme FORTRAN-90. La plupart des grands programmes d'applications scientifiques et techniques sont rédigés sur Fortran car il a une tolérabilité et une stabilité, ainsi que de la présence de fonctions mathématiques et trigonométriques intégrées. Une partie intégrante de tout programme d'application en Fortran est une bibliothèque graphique étendue, qui permet d'utiliser diverses données et images graphiques.

La langue a été créée principalement en 1975 - 1980 à la suite d'un grand projet entrepris par le département américain de la Défense pour développer une seule langue de programmation pour les systèmes dites intégrés (c'est-à-dire des systèmes de contrôle des complexes automatisés fonctionnant en temps réel) . Tout d'abord, les systèmes de contrôle sur site pour la gestion des objets militaires (navires, avions, réservoirs, roquettes, coquilles, etc.) étaient signifiés. Par conséquent, les décisions prises par les auteurs ne considèrent pas universelles. Ils doivent être perçus dans le contexte des caractéristiques de la zone sélectionnée. Le langage d'admaillage découle à la suite d'une concurrence internationale de projets linguistiques détenus en 1978-1979. Les participants auraient dû être satisfaits assez difficiles, conçus sous les auspices du département de la défense des États-Unis avec les exigences. Fait intéressant, toutes les langues qui sont tombées au dernier tour de ce concours étaient basées sur Pascal. À cet égard, l'enfer peut être auparavant caractérisé comme Pascal, développé, en tenant compte des cinq exigences de base énumérées ci-dessus. Dans le même temps, les auteurs sont allés principalement sur la voie de l'expansion de Pascal avec de nouveaux éléments. En conséquence, il s'est avéré une langue significativement plus complexe.

Kobol.

Cobol est une langue relativement ancienne, conçue principalement pour la recherche dans la sphère économique. La langue vous permet de travailler efficacement avec un grand nombre de données, il est saturé de diverses capacités de recherche, tri et distribution. À propos des programmes COBOL Widescreen de langue anglaiseIls disent qu'ils sont compréhensibles même à ceux qui ne possèdent pas Cobol, car les textes de ce langage de programmation n'ont pas besoin de commentaires spéciaux. Ces programmes sont appelés auto-documentant. D'autres avantages de COBOL comprennent généralement sa structure. Les compilateurs assez puissants de cette langue sont conçus pour ordinateur personnel. Certains d'entre eux sont tellement efficaces que le programme débogué sur un ordinateur personnel est facile à transférer sur de grands ordinateurs.

Inscription Les minus ne doivent pas être rappelés que seuls les calculs algébriques les plus simples peuvent être programmés sur le COBOL. Pour les calculs d'ingénierie, cette langue ne convient pas. Une autre raison, qui limite dans une certaine mesure le développement de la langue, est la présence d'un comité de l'industrie spécialement créé aux États-Unis, qui produit des normes, conformément à la Commission du gouvernement. Comme cela se produit toujours dans de tels cas, les entreprises engagées dans le développement de logiciels ne se dépêchent pas de personnaliser leurs billettes aux exigences strictes de la Commission, il n'y a pas de concurrence de versions et perd éventuellement la diffusion de la langue.

PL / 1 a été développé en 1964-1965 par IBM. PL / 1 se réfère au nombre de langages universelles, c'est-à-dire qu'il vous permet de résoudre des problèmes de différentes zones: calculs numériques, traitement de texte, tâches économiques, etc. Par ses capacités, elle chevauche des langues telles que Fortran, Algol-60 ( Créé pour des calculs numériques), COBOL (pour les tâches économiques), bien que, en raison d'un certain nombre de raisons, ces langues du PL / 1 n'ont pas pu être supprimées.

PL / 1 contient toutes les conceptions de base caractéristiques des langages dits de haut niveau, ainsi que d'un certain nombre de moyens spécifiques, pratiques pour la programmation pratique. La langue ressemble à un concepteur avec un grand nombre de pièces - l'utilisateur suffit à maîtriser uniquement les parties de la langue qui lui sont pratiquement nécessaires. Ses opérateurs sont plutôt des chars, ce qui vous permet souvent d'obtenir un enregistrement du programme plus compact que dans d'autres langues. Un programmeur PL / 1 compétent disparaît toute autre langue de la même classe ou de la classe proche.

Dans le même temps, le PL / 1 comporte un certain nombre de lacunes qui entravent l'étude et l'utilisation de la langue. Les principaux sont tels. Premièrement, il existe de nombreux moyens en double difficiles à retenir, il n'est pas clair que, lors de l'application, il réduit à la fois la vitesse de diffusion et la vitesse de l'exécution du programme. Deuxièmement, les programmes ne sont pas entièrement indépendants de la machine.

Module

Nous pouvons supposer que l'histoire de la langue du module commence en 1980, lorsque Niklaus Wirth, l'une des spécialistes de la théorie de l'information exceptionnelle, connue pour la plupart des spécialistes de techniciens informatiques, principalement en tant que créateur de Pascal, a publié une description du nouveau langage de programmation appelé la module. Contrairement à Pascal, qui était sur le langage de renseignement pour l'apprentissage de la programmation, le module dès le début était une langue pour professionnels programmeurs systèmeEn poursuivant les meilleures traditions de son prédécesseur et en les enrichissant de nouvelles idées qui répondent à de telles exigences en matière de programmes de programmation comme structuralité, modularité et capacité à se développer. Comme beaucoup d'autres langages de programmation, le module a été soumis à l'évolution, au cours de laquelle son nom initial a été refait au nom du module-2. Simultanément avec le développement de la langue du module, de nouveaux compilateurs ont été créés pour lui. Cependant, aucun d'entre eux ne pourrait rivaliser avec la meilleure réalisation des langues Pascal et Si, par exemple, développée par Borland. Dans ce langage de module transitoire, la meilleure période a été considérée comme mise en œuvre par Logitech, qui, dans leurs caractéristiques, perdre Turbo Pascal et Turbo SI. Seulement en 1988, après l'apparition du système de vitesse maximale sur le marché américain, Module-2 a pris un lieu digne des langues procédurales destinées à la programmation système. L'inclusion de la popularité du système de vitesse maximale a contribué plusieurs facteurs: pratique et, de plus, l'environnement opérationnel est facilement modifiable à la demande des utilisateurs, le compilateur rapide et l'éditeur sélectif des connexions. Mais le plus important s'est avéré que programmes créés Différent à grande vitesse et occupé peu de place en mémoire.

Beysik

BASIC - Code d'instruction symbolique tout usage du débutant - "Code symbolique universel des instructions pour débutants"). Descendant direct de Fortran et toujours le langage de programmation le plus populaire pour les ordinateurs personnels. Becisik est apparu en 1963 (appelé l'auteur serait difficile, mais le principal mérite de son apparence appartient sans aucun doute aux Américains John Kemen et Thomas Kurtu). Comme tous les avantages, la simplicité de Beysik se retourna, en particulier dans les versions antérieures des difficultés structurantes; De plus, Baisik n'a pas permis la récursivité - une technique intéressante qui vous permet de faire efficacement et dans le même temps de courts programmes.

Un puissant compilateur de baseball a été développé, qui fournit non seulement un vocabulaire riche et une vitesse élevée, mais également la possibilité d'une programmation structurelle. Selon certains programmeurs, les versions les plus intéressantes sont Gwbasic, Turbo-basique et rapide de base.

À une époque, l'apparition de Quick Basic a marqué la naissance d'une deuxième génération de systèmes de programmation dans la langue Baysik. Il a fourni la possibilité d'une programmation modulaire et procédurale, de créer des bibliothèques, de la compilation de programmes prêts à l'emploi, etc., ce qui l'a porté au niveau de telles langues de programmation classiques, telles que SI, Pascal, Fortran, etc. En outre, en raison du manque de la norme officielle de la langue Baysik, sa mise en œuvre rapide de base est devenue une norme réelle. Les leaders inconditionnels parmi les différentes versions de Baysik étaient rapides de base 4.5 et PDS 7.1 de Microsoft, qui sont apparus à la fin des années 80.

Zézayer.

Le langage LISP a été proposé par J. McCarthy dans le travail en 1960 et axé sur l'élaboration de programmes de résolution des problèmes de nature non numérique. Le nom anglais de cette langue - LISP est l'abréviation de l'expression de traitement de la liste (le traitement des listes) et met l'accent sur la zone principale de son utilisation. Le concept de "liste" s'est avéré être très capacieux. Sous la forme de listes, il est pratique de représenter des expressions algébraïques, des graphiques, des éléments de groupes finis, des ensembles, des règles de sortie et de nombreux autres objets complexes. Les listes sont la forme la plus flexible de la présentation d'informations dans la mémoire des ordinateurs. Il n'est pas surprenant qu'il existe une langue pratique spécifiquement conçue pour gérer des listes, rapidement gagné de la popularité.

Après l'apparition de LISP, divers auteurs ont proposé un certain nombre de problèmes d'autres langues algorithmiques dans le domaine de l'intelligence artificielle, parmi lesquels le joueur peut être noté, snobol, reflux, prologue. Cependant, cela n'a pas empêché Lisp de rester la langue la plus populaire pour résoudre ces tâches. Au cours de la quasi-on de quarante ans d'histoire de son existence, un certain nombre de dialectes de cette langue sont apparus: Common Lisp, Mac Lisp, Inter Lisp, Lisp standard, etc. Les différences entre eux ne portent pas de nature fondamentale et sont principalement réduites à un peu de Différents ensemble de fonctions intégrées et une différence sous forme de programmes d'enregistrement. Par conséquent, un programmeur qui a appris à travailler sur l'un d'entre eux peut facilement maîtriser et tout autre. Le grand avantage de LISP est son orientation fonctionnelle, c'est-à-dire que la programmation est effectuée à l'aide de fonctions. De plus, la fonction est comprise en règle générale, comparant les éléments d'une classe, les éléments correspondants d'une autre classe. Le processus de comparaison elle-même n'affecte pas le fonctionnement du programme, seul son résultat est important - la valeur de la fonction. Cela vous permet d'écrire et de déboguer facilement des vastes complexes logiciels. Clarté des programmes, une distinction claire entre leurs fonctions, l'absence d'effets secondaires Caerz lorsqu'ils sont exécutés exigences obligatoires Programmer de telles tâches complexes logiquement complexes, qui sont des tâches d'intelligence artificielle. La discipline de programmation devient particulièrement importante lorsque la personne ne travaille pas sur le programme, mais tout un groupe de programmeurs.

Le langage de programmation LISP est destiné principalement à traiter. informations symboliques. Par conséquent, il est naturel que dans le monde de Lisp, le nombre est joué de loin d'un rôle majeur. Les principaux types de données dans le LISPY sont appelés "atom" et "paire de points".

Prologue

Le langage de programmation logique est destiné à la présentation et à l'utilisation des connaissances sur une certaine zone. Les programmes de cette langue consistent en un certain ensemble de relations et sa mise en œuvre est réduite à la conclusion d'une nouvelle relation basée sur les spécifiées. Le prologue implémente une approche déclarative, dans laquelle il suffit de décrire la tâche à l'aide de règles et de déclarations concernant les objets spécifiés. Si cette description est assez précise, l'ordinateur peut alors trouver de manière indépendante la solution souhaitée.

Objet d'objet

Objet PAL est un langage de programmation puissant. L'objet PAL est orienté objet, géré par des événements, un langage de programmation visuel. Au niveau initial de la fonctionnalité d'objet PAL, vous pouvez effectuer des opérations de données, créer des menus spéciaux, ainsi que la gestion de la session de saisie de données. Événements dans Object Pal générer des commandes qui simulent l'effet d'utilisation de paradoxe en mode interactif. Il est possible d'automatiser des tâches fréquemment effectuées, ainsi que sur les tableaux, formulaires et rapports d'action qui n'étaient pas disponibles dans des travaux interactifs. Objet PAL fournit également tous les moyens de langage de programmation complet dans environnement Windows. Vous pouvez utiliser l'objet PAL pour créer des systèmes terminés qui implémentent un système de menu spécial, système d'aide, ainsi que toutes sortes de contrôles de données. Dans Object Pal, vous pouvez enregistrer vos développements dans une bibliothèque de composants dynamiquement, l'accès à celui qui aura plusieurs formulaires. De plus, vous pouvez établir une communication avec d'autres bibliothèques dynamiques contenant le programme écrit dans des langues telles que SI, C ++ ou Pascal.

L'objet PAL peut être utilisé comme outil de création de programmes hors ligne. Vous pouvez écrire l'application Windows terminée et l'exécuter sous Paradox.

Object PAL prend en charge le mécanisme d'échange de données dynamique comme le client et le serveur. De plus, Object PAL prend en charge le mécanisme de travail avec des documents composites en tant que client. En plus de ce qui a été dit, il est possible d'inclure du multimédia dans votre application, en fournissant l'application effectuée par des effets de son et d'animation.

Créé par BBSE, la mise en œuvre de la langue DBEE est une orientation efficace de l'objet hybride et des méthodes de programmation traditionnelles. Il a permis de créer des systèmes utilisant des conceptions d'objet et d'utiliser des réceptions classiques pour le traitement des enregistrements. La grande réussite de la Société B Bohr était que les techniques de programmation d'objet et de procédure ont été très bien combinées. La première version pour Windows a donné à l'utilisateur l'outil objet le plus puissant du marché des logiciels de base de données. Il vous permet de créer de nouvelles classes d'objets possédant les propriétés de l'héritage, de l'encapsulation et du polymorphisme. Il vous permet également de programmer ces objets à l'aide de commandes dbase traditionnelles, idéalement adaptées à la gestion de bases de données de table simples. Tout cela donne un avantage indiscutable - sans trop de difficulté à transition vers des techniques de programmation d'objet, la transition est si complexe, par exemple, comme dans le SGBD paradoxe.

Le langage Java est originaire du projet de création de logiciels avancés (logiciels) pour divers appareils ménagers. La mise en œuvre du projet a été lancée en C ++, mais un certain nombre de problèmes sont nulés, le meilleur moyen de lutter contre l'outil lui-même - langage de programmation. Il est devenu évident qu'un langage de programmation indépendant de la plate-forme est nécessaire, ce qui vous permet de créer des programmes qui n'avaient pas à compiler séparément pour chaque architecture et que l'on pourrait utiliser sur divers processeurs sous divers systèmes d'exploitation. La langue Java était tenue de créer des produits interactifs pour Internet. En fait, la plupart des solutions architecturales adoptées lors de la création de Java ont été dictées par le désir de fournir une syntaxe similaire à C et C ++. Java utilise des accords presque identiques pour déclarer des variables, transmettre des paramètres, des opérateurs et pour contrôler le flux d'exécution du code. Java ajoute toutes les bonnes fonctionnalités C ++.

Trois éléments clés unis à la technologie Java

Java fournit une large utilisation de ses applets (applets) - petites applications actives actives, fiables, dynamiques et sans plate-forme intégrées à page Web. Les applets Java peuvent être configurés et distribués aux consommateurs de la même facilité que tous les documents HTML.

Java publie le pouvoir du développement d'applications orienté objet, combinant une syntaxe simple et familière avec un environnement de développement fiable et pratique. Cela permet à un large cercle de programmeurs de créer rapidement de nouveaux programmes et de nouveaux applets.

Java fournit un programmeur un ensemble riche de classes d'objets pour une abstraction claire de nombreuses fonctions système utilisées lors de l'utilisation de Windows, de réseau et d'E / S. Le trait clé de ces classes est qu'ils fournissent la création d'une plate-forme d'abstraction indépendante pour une large gamme d'interfaces système.

Langues de programmation pour réseaux informatiques

Les langages de programmation pour les réseaux informatiques sont interprétés. Les interprètes pour eux sont distribués gratuitement et les programmes eux-mêmes sont dans les textes source. Ces langues sont appelées script - langues.

Perl est une langue interprétée créée par le programmateur mural à bordure pour gérer de gros textes et fichiers et déchiffrés comme une extraction pratique et une langue de rapport (langue pour l'extraction pratique des données et les rapports). En utilisant Perl, par exemple, vous pouvez créer un script qui ouvre un ou plusieurs fichiers, traite des informations et enregistre les résultats.

Perl est une langue adaptée pour traiter les fichiers texte arbitraires, extraire les informations nécessaires de leur part et émettre des messages. Perl est également pratique pour écrire divers programmes système. Cette langue est facile à utiliser, efficace, mais il est difficile de dire à ce sujet qu'il est élégant et compact. La syntaxe des expressions Perl est proche de la syntaxe C. La récursion peut être une profondeur arbitraire. Bien que Perl soit adapté pour analyser les fichiers texte, il peut également traiter des données binaires. Perl vous permet d'utiliser des expressions régulières, de créer des objets, d'insérer un morceau de code dans un Perl au logiciel Si ou C ++, et permet également d'accéder aux bases de données, y compris Oracle.

Avec l'invention, World Wide Web, Perl s'est avéré être un excellent outil permettant d'interagir avec des serveurs Web via une interface de passerelle commune (CGI) - une interface d'interaction commune. Les commandes Perl peuvent facilement obtenir des données d'un formulaire HTML ou d'une autre source et d'effectuer toute action avec elles.

Langue Php. (1995-1997) a accès à l'accès à la base de données et est utilisé par les créateurs de sites dynamiques du monde entier.

Langue TCL / TK. (La fin des années 1980) se compose de commandes puissantes conçues pour fonctionner avec des objets abstraits sans type et vous permet de créer des programmes avec une interface graphique.

Langue Vrml (1994) Créé pour organiser des interfaces tridimensionnelles virtuelles sur Internet.

Langue XML. Depuis 1996, il travaille sur la création d'une langue universelle de la structure du document. Il peut devenir un substitut pour HTML.

Production

Ressources utiles

Avis Aizili

Où est le rapport?

Avis Ranitka.

Re: Où est le rapport?
Tout sera: -D

Commentaires Shamagulova Elite

Avis Mishina Alexander

Super rapport. J'ai beaucoup appris sur les langages de programmation.

Avis sur Morozova Alexander

Bien sûr, j'aimerais voir un rapport ou au moins une présentation sous quelque forme que ce soit.

Avant de vouloir étudier un langage de programmation, vous devez en savoir un peu sur leur histoire et où ils s'appliquent.

je t'imagine bref examen 25 langages de programmation bien connus. À partir du plus célèbre à moins populaire. L'article est conçu pour les nouveaux arrivants dans le domaine de la programmation. Vous pouvez lire sur chaque langue et choisir celui que vous aimerez plus à explorer.

Avant de commencer à apprendre des langages de programmation, je vous recommande d'explorer le cours du logiciel.

1. JavaScript.

Langage de programmation pittoresque axé sur les prototypes. JavaScript a été créé à l'origine afin de créer les pages Web "vivant". Dans le navigateur, ils sont connectés directement à HTML et, dès que la page est chargée - immédiatement exécutée.

Lorsque la langue JavaScript a été créée, il avait à l'origine un autre nom: "Livrescript". Mais ensuite, la langue Java était très populaire et les spécialistes du marketing ont décidé qu'un nom similaire rendrait une nouvelle langue plus populaire.

Il était prévu que JavaScript serait une sorte de java "frère cadet". Cependant, l'histoire a ordonné à sa manière, JavaScript a fortement augmenté, et c'est maintenant une langue totalement indépendante, avec sa spécification et Java n'a rien à voir.

2. Java.


Langage de programmation orienté vers l'objet strictement dactylographié. Les applications Java sont généralement diffusées sur un code d'octet spécial afin de pouvoir travailler sur n'importe quelle architecture informatique à l'aide d'une machine Java virtuelle.

L'avantage de cette méthode d'exécution des programmes est l'indépendance totale du code octet du système d'exploitation et de l'équipement, ce qui vous permet d'effectuer des applications Java sur n'importe quel appareil pour lequel il existe une machine virtuelle correspondante. Une autre caractéristique importante de la technologie Java est un système de sécurité flexible, dans lequel l'exécution du programme est entièrement surveillée par une machine virtuelle.

Initialement, la langue s'appelait Oak ("Oak") a été développée par James Gosling pour la programmation de ménage appareils électroniques. Par la suite, il a été renommé Java et a commencé à être utilisé pour écrire des applications client et des logiciels de serveur.

3. PHP.


Il s'agit d'une langue courante interprétée avec une source open source (langage de script). PHP a été créé spécifiquement pour le développement Web et le code sur celui-ci peut être mis en œuvre directement dans le code HTML. La syntaxe de la langue provient de C, Java et Perl, et est facile à explorer.

L'objectif principal de PHP est de fournir aux développeurs Web la possibilité de créer rapidement des pages Web générées de manière dynamique, cependant, le domaine de l'application PHP n'est pas limité à cela.

4. Python.

Le langage de programmation à usage général de haut niveau s'est concentré sur l'amélioration de la productivité du développeur, la lisibilité du code et le développement d'applications Web. La syntaxe du noyau Python est minimalisée. Le code de Python est organisé en fonctions et classes pouvant être combinées en modules.

5. C #


Langage de programmation orienté objet. Développé en 1998-2001 par un groupe d'ingénieurs sous la direction d'Anders Halesberg dans Microsoft comme langue pour développer des applications pour la plate-forme Microsoft .NET Framework. C # fait référence à la famille des langues avec une syntaxe C-similaire, dont sa syntaxe est la plus proche de C ++ et Java.

La langue a la dactylographie statique, prend en charge le polymorphisme, les opérateurs de surcharge, les délégués, les attributs, les événements, les propriétés, les types généralisés et les méthodes, les itérateurs, les fonctions anonymes avec fermetures de fermeture, Linq, exceptions, commentaires au format XML.

6. C ++.


Compilé, langage de programmation générale typée de manière statique. C'est l'une des langues les plus courantes du monde. Google Chrome., Mozilla Firefox, Winamp et Adobe Line ont été conçus avec C ++. De plus, certains systèmes de jeux et d'exploitation modernes ont été développés sur C ++ en raison de la transformation rapide et de la compilation.

7. Ruby


Langage de programmation simple et lisible axé sur le développement d'applications Web. Conçu par Yukihiro Matsumto en 1995. La langue a une indépendante du système d'exploitation par la mise en œuvre de multithreading, strict typratation dynamique, Éboueur.

L'objectif principal Ruby est la création de programmes simples et compréhensibles, où la vitesse du programme n'est pas importante, mais un petit temps de développement, plus clair et simplicité de la syntaxe. La langue suit le principe «surprise la plus basse»: le programme doit se comporter au fur et à mesure que le programmeur s'attend.

8. CSS.


Feuilles de style en cascade (tables de style en cascade) Description formelle Langue vue externe Un document écrit à l'aide de la langue de balisage.
Il est principalement utilisé comme outil de description, conception de l'apparition de pages Web écrits à l'aide de langages de balisage HTML et XHTML, mais peut également être appliqué à des documents XML.

9. C.


Compilation du langage de programmation générale typée de manière statique. Le langage C a été conçu par Dennis Ritchch en 1972 à Bell Labs. C'est le prédécesseur de telles langues de programmation tels que C ++, Java, C #, JavaScript et Perl. Pour cette raison, l'étude de cette langue conduit à la compréhension et à d'autres langues. La langue C est utilisée pour développer des applications de bas niveau, car elle est considérée comme la plus proche du matériel.

10. Objectif-c


Langage de programmation orienté objet compilé utilisé par Apple Corporation, construit sur la base de la langue et du paradigme de la petite taille. L'objectif-c langue est une soudaineté de la langue Si, de sorte que le code C est entièrement compris par le compilateur de l'objectif-C. La langue est principalement utilisée pour Mac OS X (cacao) et Gnustep - implémentations d'une interface OpenStep Occashed. En outre, la langue est utilisée pour iOS (Cocoa Touch).

11. Shell.

Ce n'est pas tellement une langue que l'interpréteur de commande (langue de commande). Ses scripts sont utilisés pour automatiser les mises à jour logicielles. Contient des conceptions standard pour les cycles, la ramification, les caractéristiques des fonctions. La famille de systèmes d'exploitation compatibles avec Unix OS, la langue de Shell est utilisée comme langue de gestion des tâches standard.

12. R.


Langage de programmation pour le traitement des données statistiques et le travail avec des graphiques, ainsi qu'un logiciel d'informatique open source dans le cadre du projet GNU. R est largement utilisé comme logiciel d'analyse de données statistiques et est devenu une norme pour les programmes statistiques. L'interface de ligne de commande est utilisée dans R.

13. Perl.


Langage de programmation général dynamique dynamique de haut niveau. Le nom de la langue est une abréviation qui est déchiffrée comme une extraction pratique et une langue de rapport - "Langue pratique pour extraire des données et élaborer des rapports". La principale caractéristique de la langue est ses riches opportunités pour travailler avec du texte, y compris le travail avec des expressions régulières, intégrées à la syntaxe. Pour le moment, il est utilisé pour effectuer une large gamme de tâches, y compris l'administration du système, le développement Web, programmation du réseau, jeux, bioinformatique, développement d'interfaces utilisateur graphiques.

14. Scala.


Langage de programmation multidigmal conçu par brief et de type-sûr pour créer un logiciel de composant facile et rapide, combinant une programmation fonctionnelle et orientée objet. Scala - Les programmes sont en grande partie similaires aux programmes Java et peuvent interagir librement avec le code Java.

15. aller.


Langage de programmation multi-threadé compilé développé par Google. La langue GO a été développée comme système de programmation système pour créer des programmes très efficaces opérant sur des systèmes distribués modernes et des processeurs multicœurs. Il peut être considéré comme une tentative de créer une substitution du langage SI. Lorsque vous développez une attention particulière, une attention particulière a été accordée pour assurer une compilation extrêmement efficace. Les programmes Go sont compilés dans le code d'objet et ne nécessitent pas de machine virtuelle à exécuter.

16. SQL

Langue des requêtes structurées. Langage de programmation non concentré formel utilisé pour créer, modifier et gérer des données dans une base de données relationnelle arbitraire, gérée par le système de gestion de base de données correspondant. SQL est principalement une langue logique des informations conçue pour décrire, modifier et extraire des données stockées dans des bases de données relationnelles. Chaque offre SQL est une demande de données de la base de données ou l'accès à la base de données, ce qui entraîne une modification des données dans la base de données.

17. Haskell.


Langue de programmation générale de la programmation générale normalisée. C'est l'une des langues de programmation les plus courantes avec les langages informatiques différés. Trait distinctif La langue est une attitude grave envers la frappe. Haskell Excellente langue d'apprentissage et d'expériences avec des types de données fonctionnels complexes.

18. Swift.


Langage de programmation à usage général compilé multiparadigmal. Créé par Apple principalement pour iOS et OS X. Swift Developers travaille avec Cacao et Cocao Touch Cadres et compatible avec le code Apple de base, écrit sur l'objectif-c. Swift pensait à quel point lire et résister aux erreurs du programmeur, plutôt que celles précédemment précédées d'objectifs-c. Swift a beaucoup emprunté de l'objectif-C, mais il n'est pas déterminé par les signes, mais les types de variables que le compilateur traite. Pour un principe similaire, de nombreuses langues de script fonctionnent.

19. MATLAB.


Langage de programmation interprétable de haut niveau, y compris les structures de données basées sur des matrices, une large gamme de fonctions, un environnement de développement intégré, des fonctionnalités orientées objet et des interfaces à des programmes écrits dans d'autres langages de programmation. Les programmes écrits sur MATLAB sont deux types - fonctions et scripts. Les fonctions ont des arguments d'entrée et de sortie, ainsi que leur propre espace de travail pour stocker les résultats intermédiaires des calculs et des variables. Les scripts utilisent également l'espace de travail global. Les scripts et les fonctions sont stockés sous forme de fichiers texte et compilés dans le code de la machine de manière dynamique.

20. Visual Basic


Langage de programmation, ainsi qu'un environnement de développement logiciel intégré développé par Microsoft. La langue de Visual Basic a hérité de l'esprit, du style et de la syntaxe de son ancêtre - langue de basequi a beaucoup de dialectes. Dans le même temps, Visual Basic allie des procédures et des éléments de langages de programmation orientés orientés objet et orientés vers les composants.

Visual Basic est aussi bon à un outil APPLICATIONS DE BASE DE BASE DE BASE DE BASE DE DÉVELOPPEMENT RAD FAST pour les systèmes d'exploitation Microsoft Windows. De nombreux composants prêts à l'emploi fournis avec le support sont conçus pour aider le programmateur à commencer immédiatement à développer la logique commerciale de l'application, sans distraire son attention pour écrire le code de démarrage du programme.

21. DELPHI.


Langue de programmation impérative, structurée et orientée objet avec variables de typage statiques strictes. Le domaine d'utilisation principal est l'écriture du logiciel appliqué.

Aujourd'hui, avec la prise en charge du logiciel Windows 32 et 64 bits, a mis en place la possibilité de créer des applications pour Apple Mac OS X, ainsi que pour Google Android (directement exécuté sur le processeur de bras).

22. Groovy.


Langage de programmation orienté objet, conçu pour la plate-forme Java, en complément de la langue Java avec des capacités Python, Ruby et SmallTalk. Groovy utilise une syntaxe de type Java avec une compilation dynamique dans le code octet JVM et fonctionne directement avec un autre code Java et des bibliothèques. La langue peut être utilisée dans n'importe quel projet Java ou en tant que langage de script.

23. Visual Basic .NET


Langage de programmation orienté objet, qui peut être considéré comme une autre partie d'évolution de Visual Basic, mise en œuvre sur plateforme Microsoft .RAPPORTER. Vb.net n'a pas de compatibilité en arrière avec plus première version (Visual Basic 6.0). Le développement de projets d'anciennes versions (*. .VBP) est possible uniquement après une conversion préliminaire au format VB.NET avec un maître spécial (assistant de migration); Cependant, après la conversion, le raffinement manuel essentiel des textes est requis.

24. D.

Langage de programmation compilé multidigmal créé par Walter Bright de Digital Mars. Initialement, D a été conçu comme une réingénierie C ++, malgré l'effet significatif de C ++, ce n'est pas son option. En outre, la langue a connu des concepts des langages de programmation Python, Ruby, C #, Java, Eiffel.

25. Assembleur.


Langue basse axée sur la machine avec des commandes, pas toujours des commandes de machine appropriées, qui peuvent fournir caractéristiques supplémentaires comme macrosman; Autocode, langages de programmation de haut niveau avancés, tels que les expressions, les macros, les moyens de fournir une modularité logicielle.

Langue Assembleur - Le système de désignation utilisé pour soumettre à la forme lisible de programmes enregistrés dans le code de la machine. Le langage Assembler permet au programmeur d'utiliser les codes mnémoniques alphabétiques des opérations, à sa discrétion, attribuer des noms symboliques avec des ordinateurs avec des ordinateurs et une mémoire, ainsi que de définir des schémas d'adressage conviviaux. De plus, il vous permet d'utiliser différents systèmes de numérotation pour représenter des constantes numériques et permet de marquer les chaînes du programme avec des étiquettes avec des noms symboliques afin que vous puissiez les contacter.

Je n'ai pas pris toutes les langues. Ils ne sont pas tant de la demande des programmeurs professionnels. Ma tâche est terminée, vous pouvez maintenant choisir une langue appropriée et la conquérir. Bonne chance à vous dans vos efforts.



Avez-vous aimé l'article? Partagez-le