Pourquoi se précipiter pour trouver un remplaçant à Python ?

王林
Libérer: 2023-04-11 21:10:09
avant
957 Les gens l'ont consulté

​Traducteur | Liu Tao

Critique | Sun Shujuan

L'intelligence artificielle (IA) et l'apprentissage automatique (ML) sont nos compagnons quotidiens. Il est difficile d'imaginer à quoi ressemblerait la vie sans algorithmes et modèles statistiques. Chaque fois que nous entendons le mot apprentissage automatique, la première chose qui nous vient à l’esprit est Python. Python étant depuis longtemps la voix de l’apprentissage automatique, il a joué un rôle important dans la mise en œuvre des aspects techniques de l’apprentissage automatique.

Python est probablement le plus beau langage d'apprentissage automatique, utilisé par 48,24% des développeurs. Étant donné que Python dispose de packages de bas niveau puissants et pratiques et d'interfaces API de haut niveau, il présente des avantages inégalés dans tous les domaines du calcul scientifique, mais il présente également certains inconvénients lorsqu'il est utilisé pour des tâches spécifiques. Par conséquent, le besoin de langages alternatifs à Python devient de plus en plus courant.

Actuellement, de nombreux langages émergents sont comparables voire meilleurs que Python en termes de performances. Ce n’est donc plus la seule option pour l’apprentissage automatique. Scala, Julia, MQL5 et d'autres langages qui ne sont pas un sur-ensemble de Python peuvent être utilisés pour développer et fournir des applications d'apprentissage automatique. L’apprentissage automatique ne se limite donc plus à Python.

Cet article explorera l'émergence de nouveaux langages d'apprentissage automatique, comment ils érodent la part de marché de Python et comment l'apprentissage automatique va changer à l'avenir.

1. Inconvénients de Python

Discutons de certains des inconvénients de Python auxquels les développeurs et les data scientists sont souvent confrontés.

Performance et rapidité

Le développement Python est rapide, mais le calcul est très lent. Il utilise un interpréteur plutôt qu'un compilateur. Il est plus lent que les autres langages de programmation de science des données en raison de l'exécution de code séquentiel. Python est plus lent que C car C possède de nombreux outils et bibliothèques utiles. À moins de maîtriser le code vectoriel, vous remarquerez à quel point il est lent.

Cython est un sur-ensemble de Python. Il compile le code source Python en code du langage C. La chose la plus importante est de fournir une vitesse de calcul au niveau du langage C sans ressources informatiques supplémentaires. De nombreux programmeurs utilisent Cython pour écrire du code Python qui s'exécute aussi rapidement que le langage C, mais qui est plus simple et plus facile à lire.

Limites de conception

Python présente d'énormes défauts dans sa conception, causés par son typage dynamique. Généralement, les variables typées dynamiquement dans les langages de programmation ne nécessitent pas de déclaration spéciale. Python utilise le typage duck, ce qui peut prêter à confusion. Dans le typage canard, la classe ou les propriétés d'un objet sont moins importantes que sa fonctionnalité. La saisie par canard ne nécessite pas de vérification de type. Vous pouvez également vérifier des processus ou des propriétés.

Consommation de mémoire inefficace

Python occupe beaucoup de mémoire en raison de sa structure énorme. De plus, les types de données Python sont flexibles en termes de consommation de mémoire. Il ne convient pas aux tâches gourmandes en mémoire. Ses types de données flexibles entraînent également une consommation de mémoire. Par conséquent, la gestion de la mémoire dans Python devient un défi lorsque vous créez des systèmes Python volumineux et de longue durée.

Pas assez de threads

Python est moins efficace en termes de threads que d'autres langages. Bien que Python soit multithread, un seul thread peut s'exécuter à la fois. Par conséquent, Python multithread offre une efficacité de traitement monothread. Python dispose d'un verrou d'interpréteur global (GIL) qui permet à un seul thread de l'utiliser à la fois. Plusieurs threads ne peuvent être exécutés simultanément que si Python utilise des bibliothèques natives. De plus, Jython, un sur-ensemble de Python, peut implémenter le multithreading, contrairement à Python.

2. Pourquoi les data scientists devraient-ils rechercher des alternatives à Python ?

Python est vraiment génial. Mais il ne peut pas s'agir à la fois de The Flash et de L'Incroyable Hulk ! Quelqu'un pourrait avoir besoin de The Flash, quelqu'un pourrait avoir besoin de The Hulk. Les besoins des utilisateurs sont divers. De même, Python n’est pas conçu pour les applications mathématiques et scientifiques des données. Cela nécessite une bibliothèque tierce comme NumPy ou Tensorflow, spécialisée dans les algorithmes de deep learning. Par conséquent, les langages de programmation spécifiques aux données présentent des avantages par rapport à Python.

Par exemple, dans le monde de l'entreprise, l'apprentissage automatique nécessite rapidité et évolutivité pour réduire le temps d'exécution. Vous ne pouvez pas faire attendre les clients trop longtemps. Vous avez donc besoin de langages ML (General Purpose Functional Programming Languages) plus rapides pour fonctionner. Plus c'est rapide, mieux c'est.

Maintenant, Python est rapide, mais quoi d'autre peut être plus rapide que Python ? Oui, c'est Julia, ou Scala !

Dans ce cas, les data scientists préfèrent utiliser un langage de programmation différent de Python.

3. Alternatives Python pour la science des données

Il existe plusieurs alternatives Python qui fonctionnent aussi bien, voire mieux, que Python dans divers environnements d'application. Voici quelques alternatives à la science des données Python :

(1) Julia

Julia est un nouveau langage de programmation dynamique de haut niveau, innovant, rapide et confortable. C'est un langage polyvalent capable d'écrire une variété d'applications. Il convient de mentionner qu’une grande partie de son écosystème de packages et de ses fonctionnalités est orientée vers le calcul numérique avancé, ce qui le rend idéal pour l’apprentissage automatique.

Julia est construite sur plusieurs langages, dont le langage C et des langages de classes dynamiques de haut niveau tels que Python, R et MATLAB. Julia s'appuie sur les types facultatifs, la syntaxe et les fonctionnalités de ces langages car l'objectif de Julia est de combiner leurs forces et d'éliminer leurs faiblesses.

Pourquoi se précipiter pour trouver un remplaçant à Python ?

Les créateurs de Julia voulaient développer un langage capable de gérer le calcul scientifique, l'apprentissage automatique, l'exploration de données, l'algèbre linéaire à grande échelle, le calcul distribué et parallèle aussi rapidement que le C. Cependant, ils ont finalement développé un langage plus rapide. Même si Python devient plus rapide, Julia le surpasse toujours.

Julia simplifie de nombreuses notations mathématiques pour l'apprentissage automatique. Il fournit divers packages de programmation GPU tels que ArrayFire, qui permet au GPU d'exécuter du code à usage général. Chaque package a son propre modèle de programmation, par exemple, NVIDIA a CUDA Jl, AMD a AMDGPU jl et oneAPI.

Les ingénieurs en machine learning peuvent déployer rapidement Julia dans de grands clusters, en bénéficiant de ses outils puissants tels que MLBase.jl, Flux.jl (deep learning), MLJ.j (machine learning général) et Knet.jl (deep learning). Flux est une bibliothèque d'apprentissage automatique profond à grande vitesse qui est préchargée avec des outils supplémentaires pour maximiser les capacités de Julia. De même, ScikitLearn.jl, TensorFlow.jl et MXNet.jl pour les applications ML sont inclus.

Julia est douée pour résoudre des problèmes informatiques complexes. Par conséquent, de nombreuses universités célèbres, notamment l’Université de Stanford et l’Université métropolitaine de Tokyo, proposent des cours Julia. Ses performances sont également très solides par rapport à Python.

(2) Scala

De nombreux dirigeants de l'industrie comme Logan Kilpatrick pensent que Julia est l'avenir de l'apprentissage automatique et de la science des données.

Principales fonctionnalités de Julia :

  • Certaines fonctionnalités de base de Julia permettent des calculs efficaces en science des données :
  • Julia est rapide. Il est 2 à 20 fois plus rapide que Python ;
  • Fonctions de bibliothèque flexibles et riches ;
  • Gestionnaire de packages intégré ;
  • Les packages PyCall et CCall appellent directement Python ; Fournir du parallèle et développé pour l'informatique distribuée ;
  • Générer automatiquement du code efficace pour différents types de paramètres ;
  • Logiciel gratuit et open source avec licence MIT ;
  • Scala est un langage de programmation de haut niveau qui prend en charge les techniques de programmation orientées objet et fonctionnelles. Martin Odersky l'a créé et l'a officiellement lancé en juin 2004. Scala gagne en popularité parmi les développeurs et dépasse la technologie actuelle.
  • Scala est un langage de machine virtuelle Java (JVM) compatible avec les applications et bibliothèques Java. Parce qu’il lui manque le concept de données de base, il est souvent considéré comme un langage statique. Son architecture multi-paradigmes et multicœurs est complexe.

ApacheSpark est un outil de streaming et de traitement de données en temps réel puissant et rapide. Scala Spark facilite les tâches complexes de cartographie, d'ETL et de traitement de données volumineuses. Scala permet aux utilisateurs d'implémenter de nouvelles fonctionnalités Spark en comprenant le code. La compatibilité de Scala avec Java permet aux programmeurs de maîtriser rapidement les concepts orientés objet.

SparkMLlib contient des algorithmes de haute qualité et d'excellentes performances dans Spark, ce qui en fait une bibliothèque d'apprentissage automatique évolutive. La classification, la régression, le clustering, le filtrage collaboratif et la réduction de dimensionnalité sont tous inclus dans la bibliothèque d'apprentissage automatique MLlib de Spark. De plus, Breeze, Spire, Saddle et Scalalab sont d'autres bibliothèques ML qui aident à créer de puissantes applications de traitement de données.

Apache Kafka est une plateforme de streaming d'événements distribués open source Avec la popularité de Python, Spark est également devenu populaire. Tout ce qui s'exécute lentement dans Scala Spark est voué à planter dans PySpark. De plus, vous pouvez utiliser la bibliothèque TensorFlow Scala pour créer un système de service adaptable et hautes performances pour les modèles d'apprentissage automatique.

Le typage statique de Scala est utile dans les applications complexes. Son environnement d'exécution JVM et JavaScript permet aux systèmes hautes performances d'accéder facilement aux bibliothèques. De plus, ses performances sont meilleures que celles de Python. Il se démarque également par rapport à Python.

Principales fonctionnalités de Scala

Certaines fonctionnalités de base de Scala permettent des calculs efficaces en science des données :

Scala est 10 fois plus rapide que Python

possède un mécanisme d'inférence de type avancé
  • case class (case) class) ; correspondance de modèles ;
  • Possède une syntaxe expressive concise mais lisible ;
  • Fournit des fonctions d'ordre supérieur ;
  • Utilise des objets Singleton au lieu de variables statiques ;
  • Utilise du code POO, FP ou de style mixte ; dans un fichier ".class", qui est exécuté sur la JVM.
  • (3) MQL5
  • MQL5 est un langage de programmation orienté objet avancé qui fournit des fonctions avancées d'analyse de données et d'apprentissage automatique. Il est basé sur le langage de programmation largement utilisé et bien connu C++ et est connu pour sa rapidité et sa polyvalence.
  • MQL5 n'est pas un langage ML de tous les jours comme Python, Julia ou Scala. Il a été créé spécifiquement pour que les marchés financiers surveillent les instruments financiers. À la base, le langage est similaire à d’autres langages mais possède des caractéristiques uniques. MQL5 prend en charge les entiers, les booléens, les littéraux, les chaînes, les dates, les heures et les énumérations. Il définit les structures et les classes comme des types de données complexes.

La documentation du langage MQL5 répertorie les fonctions, les opérations, les mots réservés, etc. De plus, il fournit des types de données tels que entier, booléen, littéral, chaîne, date et heure. Il a des structures et des classes complexes. De plus, la documentation comprend des définitions de classes de bibliothèque standard pour les stratégies de trading, les panneaux de contrôle, les effets visuels personnalisés, l'accès aux fichiers, etc.

De plus, MQL5 dispose de plus de 1 500 bibliothèques de codes sources pour le développement de nouvelles applications. Vous pouvez utiliser la bibliothèque ALGLIB qui contient un grand nombre de fonctions d'analyse numérique. De même, il existe la bibliothèque TimeSeries pour le traitement des séries chronologiques et la bibliothèque Fuzzy pour développer des modèles flous et diverses autres bibliothèques.

MQL5 est un langage de programmation puissant qui peut vous aider à créer des systèmes en temps réel et à fournir une aide visuelle à la prise de décision. MQL5 prend en charge les énumérations, les structures, les classes et les événements. En augmentant le nombre de fonctions principales embarquées, les programmes MQL5 peuvent communiquer avec les DLL.

MQL5 a une syntaxe similaire à celle du C++, ce qui facilite la conversion de programmes écrits dans différents langages de programmation en programmes MQL5. Par conséquent, vous pouvez obtenir la même efficacité que le C++ lorsque vous utilisez l’analyse de données, l’intelligence artificielle ou des outils financiers comme robot de trading.

Principales fonctionnalités de MQL5

Certaines fonctionnalités de base de MQL5 permettent des calculs efficaces de science des données :

  • MQL5 est basé sur C++. Par conséquent, il est aussi rapide que C++ et plus rapide que Python ;
  • Créé spécifiquement pour les outils et l'analyse des marchés financiers ;
  • Entièrement piloté par les événements ;
  • Plus de 1 500 bibliothèques de codes sources ; L'architecture de service stocke les informations ;
  • Modifiez les schémas de couleurs, créez des panneaux de contrôle, ajoutez des symboles personnalisés et exportez des graphiques de prix à partir des programmes MQL5 ;
  • 12 nouveaux styles de dessin, 512 tampons et indexation directe du passé vers le futur Calcul de la valeur ; Conseiller expert en graphiques et testeur multi-devises
  • 4.
  • Quelle alternative Python ML devriez-vous choisir ?

Le langage de programmation, c'est comme conduire une voiture de course. Une voiture adaptée est essentielle, sans parler d'un conducteur. De même, en tant que data scientist, vous êtes le conducteur de ces voitures de sport uniques. Chaque data scientist ou développeur a ses propres exigences et spécifications pour des technologies spécifiques. Le meilleur choix technologique dépend de l’angle de vue et des fonctionnalités dont vous avez besoin. Il est donc difficile de faire un choix final.

Si vous souhaitez mettre en œuvre du calcul multi-processus et avez besoin d'une vitesse de calcul très élevée, vous pouvez choisir Julia. C'est le plus rapide des trois. D'un autre côté, si vous travaillez sur un grand projet, Scala devrait être un meilleur choix car il fait le travail. Si vous êtes intéressé par les instruments financiers, MQL5 est le meilleur choix.

De même, chaque langage de programmation a ses propres caractéristiques et domaines d'expertise. Il est donc préférable de choisir une langue qui répond à vos exigences et spécifications.

5.

Résumé

L'apprentissage automatique est un processus continu et évolutif. Au fil du temps, il a émergé avec le langage Standardized ML (SML) et est devenu populaire en Python. Aujourd’hui, il existe des développements diversifiés dans les langages d’apprentissage automatique avec des besoins différents. En bref, Python est un excellent langage d'apprentissage automatique. Mais Python n'est pas un langage spécifique à la science des données, et il existe des langages de programmation plus modernes qui peuvent effectuer des tâches spécifiques plus efficacement.

Ainsi, les langages de programmation émergents gagnent des parts de marché et se développent dans le domaine de l'apprentissage automatique. Espérons qu’ils deviendront eux aussi plus courants dans les prochaines années.

Lien original : https://hackernoon.com/not-only-python-problems-errors-and-alternatives

Présentation du traducteur

Liu Tao, rédacteur de la communauté 51CTO, personne en charge de la détection et du contrôle en ligne des un grand système d'entreprise central, dont les principales responsabilités sont d'examiner strictement l'acceptation en ligne du système des analyses manquées, des tests d'intrusion, des vérifications de base et d'autres travaux de détection. Il possède de nombreuses années d'expérience en gestion de la sécurité des réseaux, de nombreuses années de développement et de défense PHP et Web. expérience, expérience d'utilisation et de gestion de Linux, et possède une riche expérience dans l'audit de code, les tests de sécurité des réseaux et l'exploration des menaces. Maîtrise de l'audit SQL, de la détection automatisée SQLMAP, de l'audit XSS, de l'audit Metasploit, de l'audit CSRF, de l'audit WebShell, de l'audit Maltego et d'autres technologies sous Kali.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:51cto.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal