web-dev-qa-db-fra.com

Qu'est-ce qu'un "vrai" langage de programmation?

Récemment, un enseignant a dit que "PHP n'est pas un vrai langage de programmation", mais n'a donné, à mon avis, qu'une faible justification:

  • Ce n'est pas compilé.
  • C'est scripté.
  • Il ne fonctionne pas sur toutes les plateformes.

PHP n'est-il pas considéré comme un "vrai" langage de programmation? Qu'est-ce qu'un "vrai" langage de programmation? Un langage doit-il être compilé pour être pris au sérieux?

Contexte

J'ai fait un cours d'initiation à ma classe de calcul de niveau A à l'école il y a deux jours - nous utilisons Java pour la première année du cours. Je ne connais pas Java mais a une assez bonne compréhension des principes généraux de programmation (variables, fonctions, orientation objet, boucles, etc.).

Notre première tâche, l'enseignant a couru ridiculement vite. Elle n'a pris la peine d'expliquer aucun des concepts, comment ils fonctionnent ou pourquoi vous les utiliseriez de manière réaliste, et semblait prendre un grand plaisir à regarder la plupart des étudiants (qui étaient, dans l'ensemble, nouveaux dans la programmation) se tortiller. dans leurs sièges de ne pas avoir la moindre idée de ce qu'elle faisait. Avec le recul, je pense qu'elle l'a traversé incroyablement rapidement pour voir qui pourrait vraiment "gérer" le calcul A-Level, car les étudiants ont encore la possibilité de changer de sujet avant le début de septembre.

La première et unique tâche consistait à écrire une application de ligne de commande Java pour convertir le binaire en déni (décimal). Nous avons eu une session de dégustation de deux heures pour ce faire, et après explication comment le binaire Nous devions commencer à travailler sur le système, même si, dans l’ensemble, personne n’avait vraiment l’idée la plus brumeuse par où commencer. Après une heure, certains étaient plus avancés que d’autres, mais personne n’avait vraiment accompli quelque chose de significatif. professeur d'à côté. Il est venu pour aider les gens et voir où aller ensuite.

Sans me vanter, j'ai probablement eu le plus d'expérience dans la classe et j'étais allé le plus loin dans l'exercice. Il m'a demandé si j'avais eu une expérience antérieure; J'ai dit oui, en particulier en PHP, et commenté en plaisantant que je pouvais écrire quelque chose pour convertir le binaire en déni en seulement quelques lignes de PHP, tandis que l'application Java Java se développait rapidement en plusieurs écrans de code) .

Il a répondu: "PHP n'est pas un vrai langage de programmation!" ...! Après quelques discussions, il a donné les trois raisons ci-dessus. Cependant, j'ai souligné que vous pouvez exécuter PHP sur n'importe quelle plate-forme qui exécute Apache, mais je ne pense pas qu'il sache vraiment ce qu'est Apache et qu'il n'y avait rien de tout cela!

68
Jack

Nous devons d'abord savoir ce qu'est un langage de programmation. Au minimum, un langage de programmation est quelque chose qui est lu par l'ordinateur et lui demande d'effectuer certaines opérations. Beaucoup de gens s'attendraient également à ce qu'un langage de programmation à usage général soit Turing complet . Cependant, il pourrait y avoir des situations où un langage spécifique au domaine n'est pas Turing complet mais est toujours un langage de programmation utile pour ce domaine spécifique. Les langages de programmation peuvent être compilés ou interprétés, et ils peuvent s'exécuter sur de nombreuses plates-formes ou une seule en particulier. Des besoins différents nécessitent des langages de programmation différents. Clairement PHP est un langage de programmation.

Ma définition du "vrai" langage de programmation serait tout langage de programmation qui a au moins un usage pratique dans le monde réel. Ceci est opposé à un langage de programmation ésotérique qui n'a généralement pas d'utilisation pratique. Puisque PHP est largement utilisé pour résoudre de vrais problèmes, il répond facilement à cette exigence d'être un vrai langage de programmation, bien qu'il ne soit sans doute pas un langage particulièrement beau.

PHP est un langage pragmatique. Il a été créé par un besoin spécifique de pouvoir créer rapidement des pages Web (le nom signifiait à l'origine les pages d'accueil personnelles) et la langue a été étendue selon les besoins. Puisqu'il n'y avait pas de fond théorique ou de principes de conception solides qui ont conduit à sa création (il n'y a même pas de spécification formelle du langage), il est moins propre que de nombreux autres langages plus modernes. Des fonctionnalités telles que la gestion correcte des caractères étrangers/caractères unicode sont évidemment ajoutées par la suite et ne sont pas proprement intégrées au reste de la langue. Ce désordre et ce manque de rigueur théorique font que beaucoup de gens (en particulier les universitaires) n'aiment pas la langue et cela peut être une des raisons pour lesquelles votre professeur ne considère pas PHP comme une "vraie" langue).

Cependant PHP est bon pour ce à quoi il a été conçu et de nombreux sites l'utilisent, même de très grands sites comme Facebook, Yahoo! Et Wikipedia.

101
Mark Byers

Ce n'est pas compilé

PHP peut être compilé (par exemple via HHVM ).

C'est scripté

C'est juste une autre façon de dire que PHP n'est pas compilé.

Il ne fonctionne pas sur toutes les plateformes

Java non plus.

On dirait que vous avez un très mauvais professeur là-bas.

59
Quentin

Bien sûr PHP est un langage de programmation. Il voulait probablement dire que ce n'est pas un "vrai" langage de programmation dans le même sens que "vrais" hommes ne mangez pas de quiche.

34
Dipstick

définir: langage de programmation

Il semble, selon cela, que PHP est un langage de programmation. Que ce soit un vrai langage de programmation est entièrement subjectif . Que ce soit un bon langage est également subjectif. Certes, il n'est généralement pas utilisé comme application langage de programmation, mais il peut être utilisé pour développer des applications Shell via CLI . Je n'ai jamais fait cela, donc ma compréhension est sommaire, mais c'est possible.

Maintenant, est PHP "scripté" (je suppose que cela signifie un langage de script), et fonctionne-t-il sur toutes les plateformes? Vous jugez:

PHP: Hypertext Preprocessor est un langage de script à usage général largement utilisé qui a été initialement conçu pour le développement Web afin de produire des pages Web dynamiques. À cet effet, PHP est incorporé dans le document source HTML et interprété par un serveur Web avec un module processeur PHP, qui génère le document de page Web). En tant que langage de programmation à usage général, PHP est traité par une application d'interprétation en mode ligne de commande effectuant les opérations du système d'exploitation souhaitées et produisant une sortie de programme sur son canal de sortie standard. Il peut également fonctionner comme une application graphique. PHP est disponible en tant que processeur pour la plupart des serveurs Web modernes et en tant qu'interprète autonome sur la plupart des systèmes d'exploitation et des plates-formes informatiques.

Source: http://en.wikipedia.org/wiki/PHP

Java fonctionne-t-il même sur toutes les plates-formes? Non. Seules celles pour lesquelles il existe une JVM.

Enfin, un langage doit-il être compilé? Beaucoup ne le sont pas. Même Java n'est pas compilé de la même manière que C ou C++. Et puis vous devriez également jeter un œil à Perl, Python, etc.

Personnellement, je pense que PHP est un vrai langage de programmation. J'ai commencé par là et je suis facilement passé à C/C++ et Java. Je ne l'utiliserais pas dans le même but que Java, et sa conception est différent de Java, mais cela ne veut pas dire grand-chose. C'était plus facile à apprendre que Java pour moi.

21
TNi

Tout d'abord, le fait de ne pas être compilé et interprété (ce qu'il entendait sûrement par script, qui est quelque peu vague et utilisé de toute façon à des fins différentes) sont les deux faces d'une même médaille, et donc vraiment la même raison.

La dernière raison, qui ne fonctionne pas sur toutes les plateformes, est tout simplement déroutante. On dirait qu'il essaie de vanter la portabilité de Java et PHP n'est tout simplement pas Java. Cependant, Java fonctionne sur une plateforme très spécifique: la JVM. Cette plateforme à son tour, fonctionne sur de nombreuses autres plates-formes, et donne ainsi Java sa portabilité, mais ce n'est pas tout à fait la même chose que l'utilisation traditionnelle de "portable". Par exemple, C est portable et fonctionne sur tout, de un PDP-11 aux derniers appareils embarqués.

Cependant, C le fait en spécifiant les règles de sa propre plate-forme abstraite, et les compilateurs transforment le code C en Assembly selon ces règles. C'est ainsi que la portabilité de Java est similaire à celle de C: ils définissent tous deux des règles qui sont traduites en instructions pour une machine concrète spécifique (processeur); la différence est quand cela se produit.

Tous les problèmes en informatique peuvent être résolus avec un autre niveau d'indirection.
- David Wheeler

En réalité, même Assembly ou "code machine" est interprété par le processeur dans ses actions natives. (Je n'ai pas une bonne source à portée de main pour cela, mais je me souviens qu'il est légèrement couvert par Un cours intensif en matériel moderne , ce qui est une bonne présentation de toute façon.) Alors que les vitesses du processeur s'accélèrent, nous remarquons à peine sur nos boîtes sous-utilisées si un programme donné est en asm ou exécuté par un interprète, mais c'est là que la définition de "vrai langage de programmation" entre en jeu.

La seule façon sensée de définir un "vrai langage de programmation" est comme "un langage pour faire du vrai travail", mais cela marque vraiment la définition du "vrai" aussi. (Il établit cependant une distinction avec langages de programmation ésotériques , car personne ne fait de vrai travail, par exemple, en Malbolge , pour toute définition de "réel" que vous pourriez obtenir dix personnes sur lesquelles s'entendre.) Et, par rapport à aujourd'hui, vos choix de langage de programmation étaient beaucoup plus limités par leur stratégie de mise en œuvre et leurs frais généraux (par exemple, un interpréteur d'exécution) dans le passé. Cependant, même aujourd'hui, certaines langues sont plus "réelles" que d'autres pour certaines applications et les charges attendues, tout dépend de vos besoins.

Il semble que votre professeur n'ait expérimenté que PHP via des applications Web jouets (et peut-être que l'utilisation de "application" est un étirement pour ce qu'il a vu). Les programmes jouets ne sont pas un vrai travail. PHP a certainement beaucoup de problèmes, mais je ne pourrais pas dire que ce n'est pas un vrai langage de programmation, sauf pour plaisanter.

Le débogage est prévu avec dégoût, effectué avec réticence et vanté pour toujours.
- Dan Kaminsky

Il y a une certaine association entre "réel" et "difficile à faire" (lié au "vrai travail") et votre professeur a peut-être exprimé ce sentiment. Cela m'a toujours apparu comme une forme de bikeshedding (il y a un meilleur terme pour cela exactement, mais je ne m'en souviens pas), où l'estimation de la valeur d'une chose est liée à l'effort il fallait y mettre (par exemple un bikeshed est plus important quand j'ai fourni des informations sur la couleur du toit et si elle devrait avoir un signe). Nous apprécions intrinsèquement notre propre effort plus que celui des autres - simplement parce que nous le connaissons, si pour aucune autre raison - même lorsque cela n'a pas de sens de le faire. PHP, malgré ses défauts, rend certaines choses faciles, et lui et les programmes qui y sont écrits peuvent par conséquent être perçus comme valant moins.

10
Roger Pate

Facebook, Digg, Wikipedia, Yahoo. Je suppose que ce ne sont pas de vrais sites Web.

9
Daniel

À l'époque où j'apprenais PHP, je ne pensais pas non plus que PHP était un langage de programmation.

Je ne sais pas où j'ai repris l'idée, mais j'ai appris quelque part qu'un langage de script n'est pas un langage de programmation. J'ai donc appliqué cette réflexion à d'autres langages, tels que JavaScript et SQL.

Depuis lors, j'ai changé d'avis et je comprends maintenant qu'il existe un éventail de langages allant du haut niveau (par exemple PHP, Javascript) au bas niveau (par exemple c, assembleur) avec des choses comme C # et Java quelque part entre.

5
Matt Ellen

Tu as raison. Ces raisons sont trop faibles. En fait, vous n'avez même pas besoin d'Apache pour exécuter PHP.
Et les deux premières raisons se répètent, car ce n'est qu'une seule raison en fait. Donc, on peut dire 'PHP n'est pas un langage compilé' mais cela ne signifie pas que ce n'est pas un vrai langage de programmation. Java ne se compilent pas trop dans les codes machine - eh bien, ce n'est pas un vrai langage aussi. Q.e.d.

3
Your Common Sense

Désolé pour l'OT, mais il y a tellement de choses qui ne vont pas avec cette photo! J'espère juste que vous sortirez de cette classe, de ce département et de cette école aussi rapidement que possible. Je vous promets que vous n'aurez rien à voir avec un semestre de connaissances lorsque février arrivera. Et, si vous êtes comme moi, vous passerez vos heures de classe dans la frustration, le ressentiment et la rage au moment où votre professeur gaspille pour vous.

Cette femme n'est pas une enseignante! Décimal en binaire comme introduction au codage? Horrible!

Est-ce l'Université (ha!) De Phoenix?

3
Pete Wilson

Il n'y a pas de vrai langage de programmation, de vrai homme ou de monde réel. Vous êtes programmeur si vous pouvez programmer en PHP.

1
BobTurbo

MISE À JOUR: lisez attentivement avant de voter, ce n'est pas mon approche de PHP/Java, j'essaie de voir comment son professeur voit la chose PHP/Java. Merci.

Ce que je pense que votre professeur a pensé: PHP est un langage qui est verrouillé à l'intérieur d'un serveur Web, principalement utilisé pour générer des pages Web.

Java, d'autre part, est un langage à usage général également utilisé pour les pages Web mais utilisé dans d'autres industries comme les micro-ondes et les voitures, vous pouvez écrire une application de bureau en Java = etc.

Dans cet esprit, il est compréhensible que votre professeur ait dit "PHP n'est pas un vrai langage de programmation!"

Je ne suis pas biaisé, je n'aime pas les deux, Java & PHP :) ... mais je dois les utiliser tous les deux

1
dwich

"Donc, dans la 'définition d'un langage de programmation', qu'est-ce qui fait que PHP n'est pas un" bon "?"

La vraie raison est le fait que la plupart des gens ne l'utilisent pas comme langage de programmation d'application à usage général.

C'est parce qu'il y a toujours eu des langages mieux adaptés (à une exception près: pour quoi PHP a été créé pour, programmation web). PHP est "encore un autre") pas même avec de meilleures fonctionnalités de conception par rapport aux langues existantes ". Voici quelques exemples de problèmes lors de la comparaison avec d'autres langues: manque de boîtes à outils GUI stables et portables (au moins sur Windows/MacOS), manque de thread, manque de vitesse, etc. sur.

En fin de compte, les gens qui vont écrire des applications générales en PHP sont principalement des gens qui ne connaissent que bien PHP comme langage de programmation. Parce qu'il n'y a aucune raison d'écrire une nouvelle application à partir de zéro en PHP: vous constaterez que la plupart des programmeurs expérimentés ou talentueux n'envisageraient jamais de le faire.

0
Cerpheus

Certes, PHP est un langage de programmation. C'est même un langage complet de Turing, ce qui signifie essentiellement que sa "puissance" est égale à la "puissance" des autres langages de programmation. Il est "réel" à la fois au sens strict (ça existe vraiment) et au sens métaphorique (il y a des gens qui gagnent leur vie en utilisant PHP). Il semble donc que votre professeur soit en quelque sorte biaisé.

Cependant, je vois un certain point dans votre attitude d'enseignant. PHP et Java proviennent d'horizons radicalement différents. Malgré son utilité, PHP est très chaotique. Comparez la bibliothèque de classes standard dans Java avec la bibliothèque standard de PHP - ce dernier ressemble à un ensemble énorme d'outils non liés. De plus, il y a beaucoup de PHP tutoriels sur le Web qui sont, poliment parlant, de qualité médiocre. Parce que vous apprenez à programmer, il est préférable d'apprendre en utilisant de bons outils, et Java est un bien meilleur outil pour apprendre la programmation que PHP.

PS. Google pour "PHP craint" pour obtenir des tonnes d'informations pourquoi PHP n'est pas le meilleur outil au monde.

0
el.pescado