JavaRush /Blog Java /Random-FR /Choisir un langage de programmation

Choisir un langage de programmation

Publié dans le groupe Random-FR
J'ai découvert la programmation pour la première fois à l'école, dans les cours d'informatique. Il s’agissait là de quelques explications fastidieuses des principes des systèmes de nombres n-aires. Eh bien, à titre de test, j'ai dû écrire mon propre site Web. Ensuite, il m'a semblé qu'il n'y avait plus d'activité ennuyeuse au monde. Comme j'avais tort ! Malheureusement, le programme scolaire d'informatique ne donne pas une image complète du travail informatique et il n'est pas clair comment choisir un langage de programmation. Sélection d'un langage de programmation - 1Avant de se poser la question « Quel langage de programmation choisir pour apprendre », un débutant doit se familiariser avec quels langages existent et quelles sont leurs différences.

Seuil d'entrée : haut, bas, moyen

Parmi les programmeurs, on entend souvent parler du « seuil d'entrée » - un concept qui reflète la quantité d'efforts requis pour qu'un individu « junior » maîtrise un langage de programmation à un niveau suffisant pour écrire son premier programme sérieux et trouver un emploi. Le « seuil d’entrée » est constitué des connaissances :
  • caractéristiques de la syntaxe et nuances du langage ;
  • bibliothèques;
  • algorithmes et structures de données.
En fait, même travailler dans Excel peut être considéré comme une sorte de programmation. À propos, ce programme bureautique familier n'est pas aussi simple qu'il y paraît. Pour l'un, le seuil d'entrée sera la capacité de créer un tableau, pour un autre, la connaissance de formules et de macros complexes. Quoi qu’il en soit, ce seuil est faible. Viennent ensuite les quasi-langages : par exemple, la programmation 1C . Ensuite - les langages les plus faciles à apprendre : par exemple, PHP . Viennent ensuite les langages avec une syntaxe native (généralement dérivée de l'anglais) qui ne nécessitent pas d'interaction manuelle avec la mémoire : par exemple, Java , JS . Il existe ensuite des langages qui nécessitent une gestion extrêmement prudente de la mémoire, des structures de données et des algorithmes : par exemple C , C++ . Les jeunes langages multi-paradigmes ont peut-être la plus grande barrière à l'entrée, car pour les maîtriser, il faut manger plus d'un chien dans d'autres langages de programmation : par exemple, Scala . Mais avant tout, lorsque vous choisissez un langage, vous devez décider ce que vous souhaitez faire ensuite : développer des applications Web, d'entreprise, de bureau ou mobiles .

Web ou pas Web ?

la toile

Les programmeurs Web peuvent être divisés en développeurs Frontend et Backend . Il vaut la peine de comprendre ce que signifient ces termes. Les développeurs « Frontend » s'occupent du côté client, c'est-à-dire de ce que l'utilisateur verra. Le « backend » est la partie logicielle et matérielle du service – ce qui s'exécute sur le serveur. Pour un développeur Frontend qui décide quel langage de programmation choisir, le must est JavaScript et ses frameworks : Angular JS, React et autres. Les dialectes JS ne sont pas aussi populaires que leurs parents, mais peuvent aussi être utiles : CoffeeScript, TypeScript. Il existe également Flash AS, avant JScript et VBScript, mais seuls les dinosaures s'en souviennent =) De plus, vous devez comprendre HTML et CSS .
Sélection d'un langage de programmation - 2
De nombreux débutants pensent que JavaScript et Java sont presque la même chose ; il ne faut pas confondre ces langages. JS s'appelait autrefois « LiveScript » et doit son nom actuel précisément à la popularité du mot « Java ». PHP, Python, Ruby, Pearl, Java conviennent au backend Web . Ici, je voudrais attirer l'attention sur PHP - nous parlerons d'autres langages plus tard - l'un des langages les plus faciles à apprendre, qui a un seuil d'entrée bas. Ruby, à en juger par une enquête auprès de développeurs Web familiers, gagne lentement mais sûrement en popularité : il est apprécié pour sa brièveté et sa beauté.

Non Web (entreprise, ordinateur de bureau, mobile)

J'ai spécifiquement regroupé ces langages de programmation dans une catégorie au nom si étrange. La plupart d’entre eux peuvent être utilisés pour écrire des applications d’entreprise, de bureau et même mobiles. Python , un OOLP facile à comprendre, est devenu incroyablement populaire récemment grâce au développement du Machine Learning : ses adeptes utilisent largement Python. Le ML est un domaine informatique assez jeune, et bien que les premiers fruits aient déjà été reçus, je ne me précipiterais pas pour me lancer dans cette industrie lors du choix d'un langage de programmation. Tout d’abord, vous devez être TRÈS bon en mathématiques. Deuxièmement, la vague de popularité pourrait suivre le même chemin que celle de la « blockchain » ou de la « nanotechnologie ». De plus, comme vous vous en souvenez, Python est utilisé dans le développement web. C++ : classique, tout est construit sur la base des « plus ». Ce langage était l'ancêtre de tous les OOLP populaires, et un débutant devrait absolument y prêter attention. De nombreuses applications populaires sont basées sur celui-ci. Mais la forte probabilité de « se tirer une balle dans le pied » et la syntaxe difficile à comprendre annulent la probabilité qu'un débutant maîtrise ce mastodonte de la programmation. Kotlin - Java pour les hipsters - un mélange fou de POO et de programmation fonctionnelle. Récemment populaire en raison du fait qu'un développeur expérimenté qui passe de Java à Kotlin améliore considérablement sa productivité. Un développeur expérimenté s’habituera rapidement à ce langage. Soit dit en passant, il en va de même pour Scala, mais Kotlin est populaire sur Android. Java est facile à apprendre pour un débutant. Y compris, grâce à JavaRush : c'est ici que j'ai compris comment choisir un langage de programmation =) La syntaxe Java est claire, il y a une possibilité de se « tirer une balle dans le pied », mais pas critique.

POO ou POP ?

Approche procédurale

L'approche orientée procédure implique l'écriture d'un programme composé d'énoncés séquentiels qui peuvent être assemblés en un seul tout pour résoudre efficacement une gamme spécifique de problèmes. Ces langages incluent : C , PureBasic et Pascal . Les mêmes qui découragent les lycéens et les collégiens. Il existe également un GO relativement jeune . Cependant, la familiarité avec les langages procéduraux est très utile pour un développeur potentiel. Pour moi, l'immersion dans les langages procéduraux est associée au système Mathematica (Wolfram) et aux activités de recherche universitaire. Grâce aux bonnes approches algorithmiques et à des procédures simples, évoluant de manière linéaire du début à la fin du programme, j'ai pu calculer des valeurs​​pertinentes pour la physique théorique moderne. C'est grâce à ces langages « séquentiels » que l'on commence à comprendre qu'il est parfois plus facile d'écrire du code que de compter tout seul. L'étude du PPP offre une bonne formation algorithmique, qu'un employeur souhaite presque toujours voir chez un candidat lors de son embauche. Les fondements de tout et de chacun dans l’informatique reposent sur des langages procéduraux, alors ne les sous-estimez pas. D'ailleurs, les débutants qui décident quel langage de programmation choisir d'apprendre pensent souvent que le multithreading est l'apanage exclusif de la POO. C'est faux. Les langages de programmation procédurale permettent également d'effectuer des calculs parallèles.
Sélection d'un langage de programmation - 3

Approche orientée objet

Ceux qui ont débuté avec les langages procéduraux ont le plus souvent une bonne connaissance des mathématiques, des algorithmes et des structures de données (cela est dû à l'accent mis sur ces domaines de connaissances dans les universités techniques). Cependant, dans les réalités modernes, les programmeurs qui réussissent sont souvent ceux qui maîtrisent bien une autre approche de la programmation : celle orientée objet. L’idéologie de la POO permet de construire des systèmes véritablement mondiaux. La particularité de cette approche est sa similitude avec le monde réel :
  • divers objets interagissent les uns avec les autres et existent indépendamment les uns des autres.
  • les objets ont une hiérarchie et sont capables d'adopter ou de modifier le comportement de leurs ancêtres.
  • Vous pouvez opérer avec des concepts abstraits, mais seuls des objets réellement existants peuvent interagir.

Exemple

Les langages procéduraux sont des outils permettant de résoudre des problèmes spécifiques. Et si votre tâche a subi un changement, même mineur, vous devrez probablement consacrer du temps et des efforts à réécrire tous les algorithmes.

Представим программу, описывающую автосалон, который продает легковые и грузовые автомобor, How новые, так и подержанные. В proceduresном языке для каждого an object нужно описать функции, обрабатывающие ввод or вывод данных для нового легкового, нового грузового, б/у легкового и б/у грузового автомобилей. А что предлагает ООП? При an objectно-ориентированном подходе нужно просто описать базовый класс ТРАНСПОРТ, который будет хранить в себе характеристики, присущие и тому, и другому типу автомобилей:

  • Марка
  • Объем двигателя
  • Мощность
  • Год выпуска
  • Новый or б/у
  • Цена

И методы для ввода-вывода информации. Затем создадим an objectы, наследующие характеристики класса ТРАНСПОРТ: ЛЕГКОВУШКА и ГРУЗОВИК. Они содержат уточнённую информацию, присущую именно таким видам транспорта, а также методы ввода-вывода.

Внезапно руководство салона решило расширить ассортимент и продавать еще и мотоциклы. Процедурный подход предложит переписать всю логику для новых и б/у мотоциклов с самого начала, в то время How ООП-язык позволит просто создать новый an object МОТОЦИКЛ, наследующий все характеристики суперкласса ТРАНСПОРТ и содержащий уточнения.

А что будет, если добавлять разные транспортные средства? Процедурная реализация будет требовать больших трудозатрат, чем ООП. Причем чем больше ассортимент, тем меньше нужно будет делать манипуляций с an objectми.

Итак, ООП — это стиль программирования, позволяющий объединять данные и методы одной сущности и работать с ними How с цельным an objectом. Сущности могут выстраиваться в иерархии и взаимодействовать между собой, не вдаваясь в подробности внутренней реализации друг друга. Для себя я выделяю три причины, по которым ООП — более прогрессивный подход:
  1. ООП предполагает независимую разработку отдельных модулей, предоставляя программисту or команде выбирать способ и границы соприкосновений и обмена информацией.

  2. Разбиение на небольшие модули намного проще для восприятия, чем монолитные proceduresы. Благодаря этому сторонний разработчик быстро разберется в твоем codeе, а ты при необходимости войдешь в новый проект.

  3. Изменение одного an object может ниHow не отразиться на взаимодействии с другим, но способно повлиять на иерархию дочерних an objectов. Освоив такой подход, расширение и доработка программы становится тривиальной задачей.
Нужно помнить о том, что один подход не противоречит другому, но иерархически ООП всё же находится выше. Собственно, почему я рекомендую именно Java? Я бы выделил следующие причины:
  1. Кроссплатформенность.

    Java работает везде благодаря JVM —виртуальной машине Java. Один из главных плюсов этого языка — кроссплатформенность: не нужно думать о том, Howую библиотеку подключить, Howова архитектура у конкретного процессора. «Написано однажды —работает всегда».

  2. Документация.

    La base de documentation la plus large : documentation officielle Oracle, portails de formation, communauté en constante évolution. Les réponses à la plupart des questions qui se posent lors du développement peuvent être trouvées en quelques minutes, l'essentiel est de comprendre quoi taper dans le moteur de recherche =)

  3. Popularité.

    Java est le langage de programmation le plus populaire au monde : en plus des développeurs Android et Web mentionnés ci-dessus, presque tous les nouveaux développeurs d'entreprise écrivent en Java. Enterprise est un développement interne nécessaire aux besoins des grandes entreprises.

    Chaque année, les haineux prédisent la « mort de Java », ils disent : « Oracle cessera de le supporter, et en général vous faites des bêtises ». C'est faux! De nouvelles versions de Java devraient être publiées tous les six mois. Les innovations et fonctionnalités les plus importantes de la dernière version peuvent être lues ici .

    Pour moi, les lambdas en Java 8 ont été une révolution et une découverte, sans parler des nouvelles versions ! Maintenant, je travaille sur un projet « rétrograde », donc je ne m'attarde pas sur les innovations, mais le fait que Java perdure est un fait.

    Sélection d'un langage de programmation - 4
  4. Android.

    Android occupe avec confiance plus de 80 % du marché de la téléphonie mobile au cours des 4 dernières années ; les téléviseurs, les lecteurs multimédias et même les systèmes multimédias des voitures fonctionnent sous ce système d'exploitation. Et le développement de cet OS s'effectue principalement en Java. Imaginez quelles perspectives s’ouvrent. Lorsque j’ai décroché un emploi de développeur Android, je me suis intéressé : combien coûte le produit que je développe ? Il s'est avéré que le prix par an est d'environ 5 $. Une question raisonnable s'est posée : d'où venaient les fonds pour ce bureau, pour les salaires, les cookies, une table de ping-pong, des robots et d'autres « belles choses » ? C'est une question de quantité : notre application compte 20 millions d'utilisateurs.

  5. Les salaires.

    Et pour le dessert : le salaire d’un développeur Java est l’un des plus élevés du secteur. Vous allez apprendre la programmation dans un but précis : obtenir un bon travail.

Popularité d'un langage de programmation

Lorsque vous choisissez un langage de programmation, vous devez penser à l'objectif ultime de l'apprentissage : obtenir votre premier emploi. Pour évaluer la popularité de différentes langues, je me suis rendu sur un portail de recrutement populaire et j'ai commencé à examiner le nombre de postes vacants pour diverses demandes à Moscou. Vous pouvez voir les résultats ci-dessous.
Java: 277
python: 227
php : 188
c# : 147
c++ : 131
rubis: 40
échelle : 24
Kotlin : 20
Même le Python, récemment populaire, n'a pas pu devancer Java. Mais ce sont des données subjectives : une ville précise, un jour précis. Il existe des sources officielles, tournons-nous vers elles. Depuis octobre 2018, selon TIOBE, Java se classe au premier rang. Au classement PYPL , Java occupe la deuxième place, loin devant JS et rivalisant avec le Python « à la mode ».

RÉSULTATS

Voici ce à quoi un débutant doit prêter attention lors du choix d'un langage de programmation :
  • Popularité (Java occupe systématiquement une position de leader) ;
  • Seuil d'entrée (Pour Java - moyen : l'éventail de compétences requises par l'employeur est assez large) ;
  • Matériel disponible (il n'existe pas de portails similaires à JavaRush en russe, donc la palme revient à deviner qui =));
  • Domaines d'application : plus il y a de secteurs dans lesquels un langage de programmation peut être utilisé, plus le marché a besoin de spécialistes. J'ai déjà parlé de multiplateforme, mais je ne me lasserai pas de le répéter.
Bien sûr, il y a des pièges partout, mais celui qui marche maîtrisera le chemin : vous seul pouvez décider quel langage de programmation choisir . Bonne chance dans tes études!
Commentaires
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION