Maison > développement back-end > Problème PHP > Avez-vous appris PHP avant d'apprendre Java ou Python ?

Avez-vous appris PHP avant d'apprendre Java ou Python ?

王林
Libérer: 2023-02-23 19:20:02
original
4079 Les gens l'ont consulté

Avez-vous appris PHP avant d'apprendre Java ou Python ?

Avant d’envisager d’apprendre Java ou Python, parlons des domaines d’application des deux.

Les principales directions d'application de Python :

1.Calcul scientifique

Avec NumPy, SciPy, Matplotlib, Enthoughtlibrarys, etc. Avec le développement de nombreuses bibliothèques de programmes, Python est de plus en plus adapté aux calculs scientifiques et au dessin d'images 2D et 3D de haute qualité. Comparé à Matlab, le logiciel commercial le plus populaire dans le domaine du calcul scientifique, Python est un langage de programmation général. Il possède une gamme d'applications plus large que le langage de script utilisé par Matlab et est pris en charge par davantage de bibliothèques de programmes. Bien que de nombreuses fonctions avancées et boîtes à outils de Matlab soient encore irremplaçables, de nombreuses tâches de recherche et de développement scientifique quotidiennes peuvent encore être réalisées avec Python.

2. Les robots d'exploration Web

, également connus sous le nom d'araignées Web, sont les outils de base pour obtenir des données dans l'industrie du Big Data. Sans les robots d'exploration automatiques du Web, jour et nuit, et sans l'exploration hautement intelligente des données gratuites sur Internet, il y aurait probablement trois quarts de moins d'entreprises liées au Big Data. Il existe de nombreux langages de programmation qui peuvent être utilisés pour écrire des robots d'exploration Web, mais Python est certainement l'un des langages les plus répandus et son framework de robots d'exploration Scripy est largement utilisé.

3. Analyse des données

Basée sur une grande quantité de données, combinée au calcul scientifique, à l'apprentissage automatique et à d'autres technologies, les données sont nettoyées, dédupliquées, standardisées et L’analyse pertinente ciblée est la pierre angulaire de l’industrie du Big Data. Python est l'un des langages courants pour l'analyse de données.

4. Intelligence artificielle

Python est un langage de programmation courant dans l'apprentissage automatique, les réseaux de neurones, l'apprentissage profond, etc. dans le vaste domaine de l'intelligence artificielle et est largement support et applications utilisés.

Les principales directions d'application de Java :

1. Applications au niveau de l'entreprise

C'est actuellement la plus utilisée. Application Java Dans le domaine, elle est quasiment unique. Y compris diverses applications industrielles, l'informatisation d'entreprise et l'e-gouvernement, etc., les domaines comprennent : la bureautique OA, la gestion de la relation client CRM, les ressources humaines RH, la planification des ressources de l'entreprise (ERP), la gestion des connaissances KM, la gestion de la chaîne d'approvisionnement SCM, la gestion des équipements d'entreprise. système EAM, gestion du cycle de vie des produits PLM, architecture orientée services SOA, business intelligence BI, gestion de projet PM, gestion marketing, gestion des processus WorkFlow, gestion financière... et ainsi de suite, presque toutes les applications auxquelles vous pouvez penser.

2. Appareils intégrés et produits électroniques grand public

Y compris les appareils portables sans fil, les cartes à puce, les terminaux de communication, les équipements médicaux, les appareils d'information (tels que les téléviseurs numériques, les téléviseurs top cases, réfrigérateurs), équipements électroniques automobiles, etc. sont tous des domaines d'application Java populaires ces dernières années, en particulier les applications Java et les jeux Java sur téléphones mobiles, qui sont encore plus populaires.

Ensuite, comparons brièvement python et java :

Langage statique et langage dynamique :

Langage statique  :
java, c, c++, go, etc.
Un langage fortement typé (langage typé statiquement) fait référence à un langage qui nécessite une déclaration de type variable/objet et nécessite généralement une compilation et une exécution. Un langage fortement typé est un langage dans lequel une fois le type d’une variable déterminé, celle-ci ne peut plus être convertie.

Langages dynamiques :
python, javascript, php, ruby, etc.
Langage faiblement typé (langage typé dynamiquement) fait référence à un langage qui ne nécessite pas de variable /Déclaration de type d'objet, Généralement, la compilation n'est pas requise (mais il existe également des versions compilées). Les langages typés dynamiquement sont des langages dans lesquels les types de données sont déterminés au moment de l'exécution. Il n'est pas nécessaire d'effectuer une déclaration de type avant d'utiliser une variable. Généralement, le type de la variable est le type de la valeur à laquelle elle est affectée.
Au contraire, dans les langages faiblement typés, le type d'une variable est déterminé par son contexte d'application.

Avantages du langage statique :

En raison de la déclaration obligatoire des types, l'EDI a une forte connaissance du code. Par conséquent, lors de la mise en œuvre d'une logique métier complexe, In. le développement de systèmes et d'applications commerciaux à grande échelle avec de longs cycles de vie, s'appuyant sur des IDE peut assurer le développement du système
Les langages statiques étant relativement fermés, l'intrusion de kits de développement tiers dans le code peut être minimisée ;

Avantages du langage dynamique :

Certains concepts avancés en langage statique, tels que la réflexion en java et l'AOP basé sur la réflexion, ces concepts sont utiles pour les débutants en Java et pour Pour les personnes n'ayant qu'un ou deux ans d'expérience professionnelle, il est difficile de comprendre ces concepts, et encore moins de savoir comment les mettre en œuvre eux-mêmes. Si vous avez utilisé AOP, vous comprendrez qu'il est difficile de comprendre et d'utiliser ces concepts avec compétence, et que l'efficacité du développement sera relativement faible. Bien que les étudiants puissent dire « c'est en fait très simple à utiliser », c'est peut-être parce que vous le faites. Je n'ai jamais utilisé de décorateurs dans des langages dynamiques.

Dans les langages dynamiques, le concept d'AOP en Java peut être complété directement à l'aide de décorateurs et fait partie du langage python lui-même. Ce n'est pas comme Java qui nécessite l'introduction d'un tiers pour terminer.

Python peut accomplir cela facilement précisément parce que python est un langage dynamique. Les caractéristiques des langages dynamiques permettent à chacun de contrôler extrêmement simplement l'initialisation de la classe entière et de modifier dynamiquement les objets. facile pour les langages dynamiques La flexibilité dépasse de loin les langages statiques.

Langages interprétés et compilés

L'exécution de l'interprétation ici est relative à l'exécution de la compilation. Nous savons tous que les programmes écrits dans des langages compilés tels que C/C++ doivent être convertis des fichiers sources en langage machine utilisé par l'ordinateur, puis liés par un éditeur de liens pour former un fichier exécutable binaire. Lorsque vous exécutez ce programme, vous pouvez charger le programme binaire du disque dur en mémoire et l'exécuter.

Le processus d'exécution de python est similaire à Java :
L'interpréteur python convertit le code source en bytecode, puis l'interpréteur python exécute ces bytecodes.

Un processus d'exécution de programme python spécifique :

- Après avoir exécuté le programme python, l'interpréteur Python sera démarré, puis le programme python sera compilé en un bytecode objetPyCodeObject.

- Pendant l'exécution, le résultat de la compilation, qui est l'objet PyCodeObject, n'existera qu'en mémoire. Lorsque le code Python de ce module sera exécuté, le résultat de la compilation sera enregistré dans le fichier pyc afin que la prochaine fois. Il n’y a pas besoin de compiler, il est chargé directement en mémoire. Un fichier pyc est simplement une représentation d'un objet PyCodeObject sur le disque.

- Cet objet PyCodeObject contient des chaînes, des valeurs constantes​​dans le code source Python et des instructions de bytecode compilées et générées via l'analyse syntaxique. L'objet PyCodeObject stocke également la correspondance entre ces instructions de bytecode et le numéro de ligne de code d'origine, de sorte que lorsqu'une exception se produit, il puisse indiquer quelle ligne de code se trouve.

Java est également d'abord compilé en bytecode, puis exécuté par l'interpréteur
. Java est très spécial, mais il n'est pas directement compilé en langage machine, mais compilé en bytecode. Le bytecode est ensuite exécuté de manière interprétée sur la machine virtuelle Java. Python utilise également une méthode similaire. Python est d'abord compilé en bytecode python, puis un interpréteur de bytecode python spécialisé est responsable de l'interprétation et de l'exécution du bytecode.

GIL en Python

Le nom complet de GIL est Global Interpreter Lock (verrouillage global de l'interprète). La source est la considération au début de la conception de Python, et elle est prise en compte. est fait pour la sécurité des données.

Sous Python multi-threading, la méthode d'exécution de chaque thread :
1. Obtenir GIL
2 Exécuter le code jusqu'à ce qu'il soit mis en veille ou que la machine virtuelle python le suspende.
3. Libérer le GIL

On voit que si un thread veut s'exécuter, il doit d'abord récupérer le GIL On peut considérer le GIL comme un "pass", et dans un processus python. , il n'y a qu'un seul GIL. Les threads qui ne peuvent pas obtenir de passe ne sont pas autorisés à entrer dans le CPU pour exécution.
Chaque fois que le verrou GIL est libéré, les threads se disputent les verrous et changent de thread, ce qui consomme des ressources. Et à cause du verrou GIL, un processus en Python ne peut exécuter qu'un seul thread à la fois (le thread qui a obtenu le GIL peut s'exécuter). C'est pourquoi l'efficacité multithread de Python n'est pas élevée sur les processeurs multicœurs.
Chaque processus a son propre GIL indépendant et n'interfère pas les uns avec les autres, de sorte qu'il peut être exécuté en parallèle dans un vrai sens du terme. Par conséquent, en python, l'efficacité d'exécution du multi-processus est meilleure que celle du multi-processus. threading (uniquement pour les processeurs multicœurs).

En raison de l'existence de GIL, les performances multithread de Python sont très faibles et ne peuvent pas tirer parti des processeurs multicœurs, et les performances sont encore pires que celles du monothreading. Donc, si vous souhaitez utiliser un processeur multicœur, une suggestion consiste à utiliser multi-processus ou coroutine.

Python Garbage Collection

Quand on parle de garbage collection, le modèle de comptage de références est généralement utilisé, qui est la technologie de garbage collection la plus intuitive et la plus simple. Python utilise également le comptage de références, mais le comptage de références présente les inconvénients suivants :

1. La mise à jour fréquente du décompte de références réduira l'efficacité opérationnelle

2.

Basé sur le mécanisme de comptage de références, Python utilise deux technologies majeures de garbage collection : le mark-clearance et la collecte générationnelle.

Le contenu ci-dessus est à titre de référence uniquement !

Tutoriel vidéo Python recommandé :

Tutoriel vidéo Python

Tutoriel vidéo Java recommandé :

Tutoriel vidéo JAVA

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:php.cn
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