Je pense que j'apprends Java comme deuxième langue (je suis développeur Perl). Mais juste en lisant un peu des tutoriels en ligne, je ne trouve vraiment aucune similitude entre les deux. Que vais-je comprendre facilement lors de l'apprentissage de Java?
14
Réponses:
Perl est un langage de programmation dynamique, interprété et polyvalent de haut niveau. Java est un langage de programmation de haut niveau, à usage général, principalement à paradigme unique, de type statique.
Donc, les deux sont de haut niveau :
et à usage général :
Essentiellement, cela signifie que tout ce que vous pouvez faire avec Perl, vous pouvez également le faire avec Java. Et comme @KyleHodgson le mentionne , leurs syntaxes dérivent de C et C ++ et la syntaxe des trucs simples comme les
for
boucles et lesif
instructions est essentiellement la même - et comme le note @DipanMehta , les deux sont des ordures ménagères . Et bien sûr, les deux sont extrêmement populaires et ont des communautés dynamiques.Mais c'est là que s'arrêtent les similitudes. Perl est multi-paradigme, prenant en charge un large éventail de paradigmes de programmation:
Perl n'encourage pas un seul paradigme, ils sont essentiellement égaux et vous êtes libre de choisir celui qui vous semble le mieux adapté à ce que vous construisez, sans bien sûr vous limiter à un seul paradigme, vous pouvez mélanger et assortir. D'un autre côté, Java est principalement un langage orienté objet basé sur une classe. Il existe un support pour la programmation générique, mais en tant que débutant, vous devriez considérer Java comme strictement un langage orienté objet basé sur une classe.
Perl permet donc plus d'une façon de structurer votre code 1 , alors que Java une seule. Ce n'est pas une mauvaise chose (ou une bonne chose), c'est juste différent. Si vous n'avez écrit aucun code Perl orienté objet, Java peut sembler un peu étranger au premier abord. Ne vous découragez pas, l'orientation objet est quelque chose que vous devrez éventuellement apprendre, si vous envisagez une carrière dans le développement de logiciels, et l'apprentissage de Java est un bon moyen d'apprendre les concepts de base de l'orientation objet - pas un moyen parfait, mais définitivement un bon moyen.
Et comme vous le savez, Perl est interprété, alors que Java est ... enfin ... une bête complètement différente . En Java, vous écrivez votre code comme vous le feriez en Perl, puis vous le compilez . Le résultat n'est pas un exécutable, mais un bytecode Java . Ce format d'intermédiation est exécuté (enfin!) Dans la machine virtuelle Java , qui est quelque peu analogue à l'interpréteur Perl. Une machine virtuelle Java doit être installée au préalable pour qu'un programme Java s'exécute, de manière similaire à la façon dont vous devez installer un interpréteur Perl pour exécuter un script Perl 2 .
Venant d'un arrière-plan Perl, la chose la plus importante à retenir est l'étape de compilation en bytecode: chaque fois que vous modifiez un fichier source Java, vous devez le recompiler. Cela peut sembler fou au début, mais la compilation a une très bonne conséquence: votre code est vérifié pour une variété d'erreurs à ce stade, et le compilateur refuse de terminer le processus s'il y en a, et parfois vous aidera à localiser les erreurs avec messages utiles (Il y a toujours des messages, mais seulement parfois ils sont utiles).
Ce qui nous amène à la dernière différence majeure:
Perl est dynamique 3 :
et tapé dynamiquement 4 :
et Java est typé statiquement :
Ce qui, pour le dire le plus simplement possible, signifie qu'en Java, vous devez déclarer le type de vos variables et méthodes avant de les utiliser. Il y a d'autres différences, mais je ne voudrais pas gâcher le plaisir de les découvrir par vous-même :)
Et, enfin, il y a une différence très importante: Java est le langage chéri du monde universitaire 5 et du monde de l'entreprise, alors que vous rencontrerez rarement Perl dans un cadre universitaire (où je l'ai rencontrée pour la première fois), et ses perspectives de carrière se réduisent (encore pas mal d'emplois, mais loin d'être aussi nombreux que Java, les langages .Net ou PHP). Je ne commenterai pas les raisons, je ne fais qu'énoncer les (tristes) faits. Puisque vous êtes encore très jeune, en apprenant Java, vous serez un peu mieux préparé pour un diplôme en informatique, si vous choisissez de suivre cette voie.
N'abandonnez pas Perl, bien sûr, mais explorez Java. Le fait qu'ils soient plus différents que similaires signifie également que vous apprendrez des approches et des mentalités de programmation assez différentes, c'est un chemin difficile mais qui finira par faire de vous un meilleur programmeur.
1 "Tim Toady"
2 La communauté Perl explore activement la possibilité d'une machine virtuelle Perl, via Parrot .
3 Dynamique ne signifie pas toujours typé dynamiquement.
4 Perl est typé dynamiquement pour les types définis par l'utilisateur, typé statiquement en ce qui concerne les tableaux, les hachages, les scalaires et les sous-routines, et fortement typé via
use strict
, c'est donc essentiellement un langage système de type variable, mais pour garder un certain sens, appelons-le dynamiquement tapé.5 Au point d'abuser, comme l'écrit Joel Spolsky dans The Perils of JavaSchools .
la source
Eh bien, ils utilisent tous les deux une syntaxe de type C - les points-virgules, les accolades et autres. Personnellement, lorsque j'ai essayé de passer de Perl à Java il y a quelques années - la plus grande chose qui m'a fait trébucher a été la programmation orientée objet. J'avais développé quelques objets en Perl, mais ça me faisait mal à la tête d'essayer d'imaginer la vie dans le Royaume des Noms.
la source
Essayer une réponse alternative car celle actuellement sélectionnée semble se concentrer sur les différences entre les deux (vraiment il n'y a pas beaucoup de similitudes entre Perl et Java).
Similitudes
Si votre code Perl est très rigoureux et orthogonal (bien testé, bien documenté, utilise Moose ou une orientation d'objet stricte), alors ces concepts se porteront très bien dans Java, car Java est extrêmement orthogonal et pas aussi expressif.
la source