Vous cherchez un nouveau langage de programmation pour le développement Web? [fermé]

14

Je me demande s'il y a des moins biaisées des ressources qui donnent bonne, des aperçus spécifiques des langues et de leurs objectifs de programmation destinés. Je voudrais apprendre une nouvelle langue, mais visiter les sites de chaque langue ne fonctionne pas. Chacun parle de sa grandeur sans trop mentionner ses faiblesses ou ses objectifs spécifiques .

Ruby est un langage de programmation open source dynamique axé sur la simplicité et la productivité.

Python est un langage de programmation qui vous permet de travailler plus rapidement et d'intégrer vos systèmes plus efficacement.

Après avoir été développeur PHP pendant des années, Vic Cherubini résume bien mon sort:

Je connaissais bien PHP, j'avais mon propre framework et je pouvais travailler rapidement pour que quelque chose soit opérationnel.

J'ai programmé comme ça tout au long de la révolution MVC. J'ai obtenu de meilleurs emplois (lire: mieux payer, meilleur titre) en tant que développeur PHP, mais tout au long du chemin, je me suis rendu compte que le code que j'avais écrit pendant mon temps était excellent et que le code avec lequel je travaillais au travail était horrible. Genre, pire qu'horrible. Atroce. Niveau de commerce OS mauvais. Avoir des projets parallèles m'a gardé sain d'esprit, car le code avec lequel je travaillais au travail me rendait misérable.

C'est pourquoi je me retire de PHP pour mes projets parallèles et mes nouvelles entreprises de programmation. Je suis passé avec PHP. Épuisé, si vous voulez. J'ai atteint un niveau où je pense que je suis au top avec comme langue et si je ne passe pas à une nouvelle langue bientôt, j'en aurai fini avec la programmation et je ne veux pas ça.

Les langues que j'ai examinées incluent JavaScript (pour node.js), Ruby, Python et Erlang. J'ai même pensé à Scala ou C ++.

Le problème est de savoir lesquels sont conçus pour répondre au mieux à mes besoins.

Alors, où puis-je aller pour sauter le battage médiatique et obtenir de vraies informations sur la maturité d'une plate-forme, la taille de la communauté et les forces et les faiblesses de cette langue. Si je les connais, choisir une langue pour continuer mon développement web devrait être facile.

Mise à jour

Je ne veux tout simplement pas avoir 4 mois sur la route avec un peu de langage et le trouver est nul parce que chaque thread a 4 Mo de surcharge, ou que les connexions simultanées maximales sont 999, il n'y a pas de package pour faire la fonctionnalité "X", ou le support est en cours de suppression pour une nouvelle branche linguistique.

Xeoncross
la source
14
Il est difficile de dire lequel répondra le mieux à vos besoins si vous ne spécifiez pas ces besoins.
vartec
3
C'est pourquoi je n'ai pas défini mes besoins - mes besoins personnels sont hors de propos . Je veux savoir où je peux chercher pour faire correspondre mes besoins à un certain langage de programmation. Parce que mes besoins peuvent changer et je devrai y retourner.
Xeoncross
Il convient de souligner qu'il y a aussi plus dans un programme que sa vitesse d'exécution . La vitesse de développement et la façon dont vous devez construire votre application (en raison de la langue) jouent un rôle important.
Xeoncross
4
cela concerne moins les langues et plus la maturité et la richesse des fonctionnalités des frameworks qui leur sont disponibles.
1
Je vous suggère de jeter un œil à cet excellent article d'Alex Martelli.
phant0m

Réponses:

3

Je n'allais pas poster ceci comme réponse, mais Xeoncross me l'a demandé, alors c'est parti:

(Sidenote: si quelqu'un pouvait résoudre le problème de démarque dans le petit exemple de code, je l'apprécierais.)

Publié par Alex Martelli sur comp.lang.python : Quoi de mieux à propos de Ruby que de Python? le 18 août 2003, 17h50

Erik Max Francis a écrit:

"Brandon J. Van Every" a écrit:

Quoi de mieux à propos de Ruby que de Python? Je suis sûr qu'il y a quelque chose. Qu'Est-ce que c'est? Ne serait-il pas beaucoup plus logique de demander cela aux personnes Ruby plutôt qu'aux personnes Python?

Peut ou non, selon ses objectifs - par exemple, si ses objectifs incluent une «étude sociologique» de la communauté Python, alors poser des questions à cette communauté est susceptible de se révéler plus révélateur d'informations à ce sujet que de les placer ailleurs :-). Personnellement, j'ai volontiers profité de l'occasion pour suivre le tutoriel Ruby d'une journée de Dave Thomas au dernier OSCON. Ci-dessous un mince placage de différences de syntaxe, je trouve Ruby et Python incroyablement similaires - si je calculais l'arbre minimal couvrant à peu près n'importe quel ensemble de langues, je suis presque sûr que Python et Ruby seraient les deux premières feuilles à fusionner en un nœud intermédiaire :-).

Bien sûr, je suis fatigué, en Ruby, de taper la "fin" idiote à la fin de chaque bloc (plutôt que de simplement indenter) - mais alors j'arrive à éviter de taper le tout aussi idiot : dont Python a besoin au début de chaque bloc, c'est donc presque un lavage :-). D'autres différences de syntaxe telles que @fooversus self.foo, ou la signification plus élevée de la casse dans Ruby vs Python, sont vraiment à peu près aussi hors de propos pour moi.

D'autres fondent sans aucun doute leur choix de langages de programmation sur de telles questions et génèrent les débats les plus chauds - mais pour moi, ce n'est qu'un exemple d'une des lois de Parkinson en action (le montant du débat sur une question est inversement proportionnel à celui de la question). importance réelle). Une différence de syntaxe que je trouve importante et en faveur de Python - mais d'autres personnes penseront sans doute juste l'inverse - est "comment appeler une fonction qui ne prend aucun paramètre". En Python (comme en C), pour appeler une fonction, vous appliquez toujours l '"opérateur d'appel" - parenthèses de fin juste après l'objet que vous appelez (à l'intérieur de ces parenthèses de fin, allez les arguments que vous passez dans l'appel - si vous ne passez aucun argument, alors les parenthèses sont vides). Cela laisse la simple mention de tout objet, sans opérateur impliqué, comme signifiant juste une référence à l'objet - dans n'importe quel contexte, sans cas particuliers, exceptions, règles ad hoc, etc. En Ruby (comme en Pascal), pour appeler une fonction AVEC des arguments, vous passez les arguments (normalement entre parenthèses, bien que ce ne soit pas toujours le cas) - MAIS si la fonction ne prend pas d'arguments, le simple fait de mentionner la fonction l'appelle implicitement. Cela peut répondre aux attentes de nombreuses personnes (du moins, sans aucun doute, celles dont la seule expérience antérieure de programmation était avec Pascal, ou d'autres langages avec des "appels implicites" similaires, comme Visual Basic) - mais pour moi, cela signifie que la simple mention d'un objet peut SOIT signifier une référence à l'objet, OU un appel à l'objet, en fonction du type d'objet - et dans les cas où je ne peux pas obtenir une référence à l'objet en le mentionnant simplement, je devrai utiliser une explicite "donnez-moi une référence à cela, ne l'appelez pas!" opérateurs qui ne sont pas nécessaires autrement. Je pense que cela a un impact sur la "première classe" des fonctions (ou méthodes, ou autres objets appelables) et la possibilité d'interchanger les objets en douceur. Par conséquent, pour moi, cette différence de syntaxe spécifique est une sérieuse marque noire contre Ruby - mais je comprends pourquoi les autres penseraient autrement, même si je ne peux guère être en désaccord avec plus de véhémence avec eux :-). En dessous de la syntaxe, nous entrons dans quelques différences importantes dans la sémantique élémentaire - par exemple, les chaînes en Ruby sont des objets mutables (comme en C ++), tandis qu'en Python, ils ne sont pas modifiables (comme en Java, ou je crois en C #). Encore une fois, les gens qui jugent principalement en fonction de ce qu'ils connaissent déjà peuvent penser que c'est un avantage pour Ruby (à moins qu'ils ne connaissent Java ou C #, bien sûr :-). Moi, je pense que les chaînes immuables sont une excellente idée (et je ne suis pas surpris que Java, indépendamment je pense, ait réinventé cette idée qui était déjà en Python), même si cela ne me dérangerait pas d'avoir un type de "tampon de chaîne mutable" (et idéalement avec une meilleure facilité d'utilisation que les propres "tampons de chaîne" de Java); et je ne donne pas ce jugement à cause de la familiarité - avant d'étudier Java, en dehors des langages de programmation fonctionnels où les gens qui jugent principalement par ce qu'ils connaissent déjà peuvent penser que c'est un plus pour Ruby (à moins qu'ils ne connaissent Java ou C #, bien sûr :-). Moi, je pense que les chaînes immuables sont une excellente idée (et je ne suis pas surpris que Java, indépendamment je pense, ait réinventé cette idée qui était déjà en Python), même si cela ne me dérangerait pas d'avoir un type de "tampon de chaîne mutable" (et idéalement avec une meilleure facilité d'utilisation que les propres "tampons de chaîne" de Java); et je ne donne pas ce jugement à cause de la familiarité - avant d'étudier Java, en dehors des langages de programmation fonctionnels où les gens qui jugent principalement par ce qu'ils connaissent déjà peuvent penser que c'est un plus pour Ruby (à moins qu'ils ne connaissent Java ou C #, bien sûr :-). Moi, je pense que les chaînes immuables sont une excellente idée (et je ne suis pas surpris que Java, indépendamment je pense, ait réinventé cette idée qui était déjà en Python), même si cela ne me dérangerait pas d'avoir un type de "tampon de chaîne mutable" (et idéalement avec une meilleure facilité d'utilisation que les propres "tampons de chaîne" de Java); et je ne donne pas ce jugement à cause de la familiarité - avant d'étudier Java, en dehors des langages de programmation fonctionnels où Je pense que les chaînes immuables sont une excellente idée (et je ne suis pas surpris que Java, indépendamment je pense, ait réinventé cette idée qui était déjà en Python), même si cela ne me dérangerait pas d'avoir un type de "tampon de chaîne mutable" (et idéalement un avec une meilleure facilité d'utilisation que les propres "tampons de chaîne" de Java); et je ne donne pas ce jugement à cause de la familiarité - avant d'étudier Java, en dehors des langages de programmation fonctionnels où Je pense que les chaînes immuables sont une excellente idée (et je ne suis pas surpris que Java, indépendamment je pense, ait réinventé cette idée qui était déjà en Python), même si cela ne me dérangerait pas d'avoir un type de "tampon de chaîne mutable" (et idéalement un avec une meilleure facilité d'utilisation que les propres "tampons de chaîne" de Java); et je ne donne pas ce jugement à cause de la familiarité - avant d'étudier Java, en dehors des langages de programmation fonctionnels oùtoutes les données sont immuables, tous les langages que je connaissais avaient des chaînes mutables - pourtant quand j'ai vu pour la première fois l'idée de chaîne immuable en Java (que j'ai apprise bien avant d'apprendre Python), cela m'a tout de suite semblé excellente, un très bon ajustement pour la sémantique de référence d'un langage de programmation de niveau supérieur (par opposition à la sémantique de valeur qui correspond le mieux aux langages plus proches de la machine et plus éloignés des applications, telles que C) avec des chaînes en tant que première classe, intégrées (et jolies crucial) type de données.

Ruby présente certains avantages en sémantique élémentaire - par exemple, la suppression de la distinction "listes vs tuples" de Python extrêmement subtile. Mais la plupart du temps (comme je le garde, avec simplicité un grand plus et des distinctions intelligentes subtiles un inconvénient notable) est contre Ruby (par exemple, ayant des intervalles fermés et semi-ouverts, avec les notations a..b et a .. .b [quelqu'un veut prétendre qu'il est évident qui est lequel? -)], est idiot - à mon humble avis , bien sûr!). Encore une fois, les gens qui envisagent d'avoir beaucoup de choses similaires mais subtilement différentes au cœur d'une langue, un PLUS, plutôt qu'un MOINS, les compteront bien sûr "à l'inverse" de la façon dont je les compte :-).

Ne vous laissez pas induire en erreur par ces comparaisons en pensant que les deux langues sont trèsdifférent, attention. Ils ne le sont pas. Mais si on me demande de comparer "capelli d'angelo" à "spaghettini", après avoir souligné que ces deux sortes de pâtes sont à peu près indiscernables pour tout le monde et interchangeables dans n'importe quel plat que vous pourriez vouloir préparer, j'aurais alors inévitablement pour passer à l'examen microscopique de la façon dont les longueurs et les diamètres diffèrent imperceptiblement, comment les extrémités des brins sont effilées dans un cas et non dans l'autre, et ainsi de suite - pour essayer d'expliquer pourquoi je préférerais personnellement avoir capelli d 'angelo comme pâtes dans tout type de bouillon, mais préféreraient les spaghettinis comme pastasciutta pour accompagner des sauces adaptées à de telles formes de pâtes longues et minces (huile d'olive, ail haché, poivrons rouges hachés et anchois finement moulus, par exemple - mais si vous coupez l'ail et les poivrons au lieu de les hacher, alors vous devriez choisir le corps plus sain des spaghettis plutôt que l'évanescence plus mince des spaghettinis, et il serait bien avisé de renoncer à l'achoview et d'ajouter à la place du basilic de printemps frais [ ou même - je suis hérétique ...! - feuilles de menthe claire [...] - au tout dernier moment avant de servir le plat). Oups, désolé, cela montre que je voyage à l'étranger et que je n'ai pas eu de pâtes depuis un certain temps, je suppose. Mais l'analogie est encore assez bonne! -) et il serait bien avisé de renoncer à l'achoview et d'ajouter à la place du basilic de printemps frais [ou même - je suis un hérétique ...! - feuilles de menthe claire [...] - au tout dernier moment avant de servir le plat). Oups, désolé, cela montre que je voyage à l'étranger et que je n'ai pas eu de pâtes depuis un certain temps, je suppose. Mais l'analogie est encore assez bonne! -) et il serait bien avisé de renoncer à l'achoview et d'ajouter à la place du basilic de printemps frais [ou même - je suis un hérétique ...! - feuilles de menthe claire [...] - au tout dernier moment avant de servir le plat). Oups, désolé, cela montre que je voyage à l'étranger et que je n'ai pas eu de pâtes depuis un certain temps, je suppose. Mais l'analogie est encore assez bonne! -)

Donc, revenons à Python et Ruby, nous arrivons aux deux gros trucs (en termes de langage proprement dit - laissant les bibliothèques et d'autres accessoires importants tels que les outils et les environnements, comment incorporer / étendre chaque langue, etc., etc., hors de pour l'instant - ils ne s'appliqueraient pas à toutes les MISES EN ŒUVRE de chaque langue, par exemple, Jython vs Classic Python étant deux implémentations du langage Python!):

  1. Les itérateurs et blocs de code de Ruby par rapport aux itérateurs et générateurs de Python;

  2. Ruby TOTAL, la "dynamicité" débridée, y compris la possibilité de "rouvrir" n'importe quelle classe existante, y compris toutes les classes intégrées, et de changer son comportement au moment de l'exécution - par rapport à la dynamicité vaste mais     limitée de Python, qui ne change jamais le comportement des classes existantes classes intégrées et leurs instances.

Personnellement, je considère 1 comme un lavage (les différences sont si profondes que je pouvais facilement voir des gens détester l'une ou l'autre et vénérer l'autre, mais sur MES échelles personnelles, les avantages et les inconvénients sont à peu près égaux); et [2] une question cruciale - qui rend Ruby beaucoup plus approprié pour le "bricolage", MAIS Python est également plus approprié pour une utilisation dans des applications de grande production. C'est drôle, d'une certaine manière, parce que les deux langues sont tellement beaucoup plus dynamiques que la plupart des autres, qu'à la fin la différence clé entre elles et mon POV devrait reposer sur cela - que Ruby "va à onze" à cet égard (la référence voici "Spinal Tap", bien sûr). En Ruby,JE PEUX FAIRE CELA ! C'est-à-dire que je peux modifier dynamiquement la classe de chaîne intégrée afin que

a = "Bonjour tout le monde" 
b = "bonjour le monde" 
si a == b 
    imprimer "égal! \ n" 
autre 
    imprimer "différent! \ n" 
fin
 

IMPRIMERA "égal". En python, je ne peux PAS faire ça. Aux fins de la métaprogrammation, de la mise en œuvre de cadres expérimentaux, etc., cette incroyable capacité dynamique de Ruby est extrêmement attirant. MAIS - si nous parlons de grandes applications, développées par de nombreuses personnes et maintenues par encore plus, y compris toutes sortes de bibliothèques de sources diverses, et devant être mises en production dans les sites clients ... eh bien, je ne VEUX PAS une langue assez dynamique, merci beaucoup. Je déteste l'idée même d'une bibliothèque qui casse involontairement d'autres bibliothèques non liées qui reposent sur la différence de ces chaînes - c'est le genre de "canal" profond et profondément caché, entre des morceaux de code qui semblent séparés et DEVRAIENT être séparés, qui annonce la mort dans programmation à grande échelle. En laissant n'importe quel module affecter le comportement de tout autre "secrètement",

Si je devais utiliser Ruby pour une application aussi grande, j'essaierais de me fier à des restrictions de style de codage, à de nombreux tests (à réexécuter chaque fois que TOUT CHANGE - même ce qui devrait être totalement indépendant ...), etc. pour interdire l'utilisation de cette fonction de langue. Mais ne pas avoir la fonctionnalité en premier lieu est encore mieux, à mon avis - tout comme Python lui-même serait un langage encore meilleur pour la programmation d'applications si un certain nombre de modules intégrés pouvaient être "cloués", donc je savais que , par exemple, len("ciao")est 4 (plutôt que d'avoir à se soucier de manière subliminale de savoir si quelqu'un a changé la liaison de nom lendans le __builtins__ module ...). J'espère que finalement Python "clouera" ses fonctions intégrées.

Mais le problème est mineur, car la reliure des éléments intégrés est assez obsolète ainsi qu'une pratique rare en Python. Dans Ruby, cela me semble majeur - tout comme les fonctionnalités macro trop puissantes d'autres langues (comme, par exemple, Dylan) présentent des risques similaires à mon avis (j'espère que Python n'obtiendra jamais un système macro aussi puissant, non importe l'attrait de «laisser les gens définir leurs propres langages spécifiques au domaine incorporés dans le langage lui-même» - cela, à mon humble avis, nuirait à la merveilleuse utilité de Python pour la programmation d'applications, en présentant une «nuisance attrayante» pour le bricoleur potentiel qui se cache dans le cœur de chaque programmeur ...).

Alex

phant0m
la source
J'ai attribué cela comme réponse, car il s'agit d'un excellent aperçu relativement neutre de Ruby et Python dans son ensemble. Expliquer comment les langues fonctionnent et ne fonctionnent pas .
Xeoncross
27

Bonne chance

Aucune des descriptions d'exemple fournies n'est objective ou testable. Ils sont tous du battage médiatique et de l'opinion.

... simplicité et productivité ... plus rapidement ... plus efficacement.

Essayez-le

Prenez un petit exemple de projet du type que vous êtes susceptible de faire et essayez-le avec toutes les langues qui vous intéressent. Ensuite, postez votre examen objectif, et nous le saurons tous.

Steven A. Lowe
la source
2
Ce n'est pas une mauvaise idée, mais cela ne fonctionnerait pas dans le monde réel. Sans passer du temps à comprendre pleinement chaque langue - je ne pourrais jamais prévoir le problème du modèle de conception complet et les avantages que chaque système pourrait offrir. Je suis sûr qu'il faudrait des mois de travail dans chaque langue pour parvenir à une compréhension de haut niveau de la langue elle-même. Je préfère entendre des experts en pneus que de passer des mois à concevoir chaque roue pour comprendre pourquoi ils l'ont construite comme ça. Pourtant, après avoir de bons candidats, je vais certainement le faire.
Xeoncross
1
@Xeoncross: avec chaque langue que vous essayez, vous augmenterez votre expérience et vous pourrez en tirer parti dans d'autres langues. 4 mois pour plonger dans une langue ne sont jamais perdus; et si la langue est vraiment merdique, vous avez besoin de moins de deux semaines pour le découvrir.
tdammers
C'est vrai, cela ne devrait prendre que quelques semaines pour construire quelque chose et je bénéficierais de l'expérience car les langues suivent généralement d'autres langues.
Xeoncross
3
Oui, vous devriez probablement essayer toutes ces langues pour trouver un bon ajustement. Mais le problème est que lorsque vous utilisez une nouvelle langue, vous ne l'utilisez pas comme vous êtes censé le faire initialement. Vous finissez par faire la même chose que vous faisiez avec le langage que vous savez déjà utiliser uniquement avec une syntaxe différente. Prend un peu de temps pour comprendre les points les plus fins de chaque langue et quels sont réellement les avantages.
radix07
3
Je serais surpris s'il y avait une différence significative entre les langues modernes à des fins générales. Là, je l'ai dit à haute voix. Et en italique . Que les flammes commencent!
Steven A. Lowe
8

Je pense qu'une partie du problème est que quiconque en sait assez pour commenter de manière significative une ou plusieurs langues aura un parti pris. En près de 4 décennies de programmation, j'ai travaillé dans plus de langues que je ne peux en compter. Je peux vous donner des opinions (certaines datées) sur bon nombre de ces langues, mais aucune de ces opinions ne sera impartiale.

Je prends l'approche d'utiliser la bonne langue pour le travail. Vous vous interrogez spécifiquement sur le développement Web , mais c'est toujours une catégorie assez large - un peu comme dire que vous êtes intéressé par la photographie. Micro? Astro? etc. Bien que je convienne que PHP n'est pas un langage émotionnellement satisfaisant pour travailler, pour de nombreux clients, c'est le bon langage basé sur un certain nombre de facteurs, dont le moindre n'est pas la capacité à long terme de trouver des programmeurs pour réparer le site après votre départ. et / ou se faire heurter par un bus.

Alors peut-être devriez-vous regarder les types de clients qui s'intéressent à des projets qui se prêtent à quelque chose de différent, puis travailler à vous rendre intéressant pour eux.

Peter Rowell
la source
Eh bien, puisque je suis si bon en PHP - je continuerai à travailler car je peux toujours bien gagner ma vie. Je pensais surtout à une nouvelle langue pour mes propres projets. Quelque chose pour aider à ajouter un peu de saveur à ma vie. Je travaille dans à peu près tous les domaines du développement Web auxquels vous pouvez penser, la PNL, l'analyse de texte, les CMS, les API, le stockage, etc. En outre, une personne ayant de l'expérience dans de nombreuses langues a beaucoup moins de biais que les personnes ayant un seul processus de conception.
Xeoncross
Ah. Ensuite, je donnerai ma réponse standard aux questions de type "meilleur langage": Python. Ignorant les "espaces blancs importants" (ce qu'il est possible de faire), c'est pour moi un langage parfait. De plus, il existe un nombre incroyable de bibliothèques de très haute qualité avec des API Python. Par exemple, le NLTK, Natural Language Toolkit ( nltk.org ).
Peter Rowell
Ah, mais qu'est-ce qui rend Python meilleur? La plupart des langues partagent toutes les mêmes boîtes à outils - c'est la conception du langage qui introduit des choses comme le filetage, la concurrence, les exigences de la machine virtuelle, la compilation / interprétation, la persistance, etc.
Xeoncross
Python est tout simplement amusant à programmer. C'est ce qui le rend "meilleur" pour moi. C'est assez simple pour que vous n'ayez pas besoin d'un gros IDE klaxonnant juste pour le coder. Mais il a aussi beaucoup de fonctionnalités intéressantes comme des objets, des capacités de programmation fonctionnelles, de nombreuses bibliothèques / frameworks / outils existants et une communauté prospère et enthousiaste avec beaucoup de documentation ouverte / gratuite pour vous aider à démarrer.
John Gaines Jr.
2
Vrai. L'explication la plus simple est que Python fonctionne un peu comme mon cerveau et cela me rend plus productif; Je ne me pose presque jamais la question: "Maintenant, comment pourrais-je faire cela en Python?" Bien que le GIL (Global Interpreter Lock) soit un peu un problème, il n'a pas tendance à m'affecter beaucoup car je traite plus souvent des situations multiprocessus (notamment les pipelines de traitement NL à plusieurs étapes) que multitâches . J'aime aussi la variété d'options d'interfaçage pour accéder à de nouvelles bibliothèques externes: ctypes, Boost, etc.
Peter Rowell
7

Python

Le but le plus universel et général de tous, mais aussi dans le cas de la programmation Web, offre un choix plus large de produits. Une interface WSGI standardisée garantit une grande interopérabilité entre le framework et les serveurs. Certains des produits Web Python notables:

  • Django - framework de haut niveau à part entière et mature avec ORM avancé, système de modèles, gestion des formulaires, etc.
  • Twisted - cadre pour la programmation réseau événementielle (asynchrone), il peut être utilisé pour les chats, les serveurs de socket, les services Web, vous l'appelez.
  • Tornado - également un framework piloté par les événements, mais celui-ci est conçu pour les services Web asynchrones.

Rubis

Le rubis est également un langage assez universel. Mais de loin son produit le plus notable est Ruby on Rails. Son design a été une source d'inspiration pour beaucoup (y compris Django mentionné ci-dessus).

Javascript

Actuellement, le seul choix côté serveur pour JS est node.js. Il est très similaire à Tornado et Twisted (dont il a été inspiré). Cependant, il manque toujours un cadre à part entière similaire à Django ou RoR construit par-dessus.

Scala

En tant que langage fonctionnel, il est idéal pour le calcul massivement parallèle, en ce qui concerne la programmation Web à usage général, il existe Lift - framework Web inspiré de RoR, utilisé par exemple par FourSquare.

vartec
la source
Il convient de souligner que des éléments tels que les réponses non bloquantes, l'utilisation de la mémoire, la concurrence et d'autres facteurs sont énormes sur le marché pour une nouvelle langue qui alimentera une application Web.
Xeoncross
+1 pour Django. Cela m'a époustouflé quand je l'ai appris ... ça, ou j'étais dans une stupeur stupéfaite parce que je l'ai appris en même temps que Python. Quoi qu'il en soit, une excellente technologie que je voudrais revisiter mon "temps libre" toujours insaisissable.
zourtney
1
"... il manque toujours un cadre à part entière" Découvrez Express pour Node - expressjs.com
T. Stone
@T: oui, j'ai regardé Express. L'un des points forts de Django et RoR est ORM. Express ne semble pas l'avoir.
vartec
3

Dans mon dernier projet Web, j'ai commencé avec PHP parce que je l'avais déjà utilisé pour un projet Web (démarrage rapide), mais j'ai eu beaucoup de problèmes avec le langage, par exemple un mauvais support UTF-8 et une frappe dynamique. J'ai également une certaine expérience Java et j'aime vraiment la saisie statique et les bons outils de refactoring. Java a également de bonnes performances par rapport à PHP. Mais j'aime aussi l'expressivité de la programmation fonctionnelle.

Scala and Play Framework

Avec l'expérience ci-dessus, j'aime vraiment le langage de programmation Scala, il est typé statiquement, prend en charge la programmation orientée objet et fonctionnelle et il a de bonnes performances par rapport aux autres langages utilisés pour le développement Web. Mais je n'aimais pas les frameworks Web pour Java et les servlets, et j'ai trouvé Play Framework qui prend en charge Scala et Java et qui a un cycle de développement très rapide - enregistrez le fichier et mettez à jour votre page Web. J'ai été très satisfait de Scala & Play Framework le mois dernier. Mais le support Scala dans Play Framework n'est pas encore très mature, ni le support d'outillage.

En bref, je recommande Scala comme langage de programmation et Play Framework comme framework web.

Jonas
la source
Le jeu a l'air cool, je n'ai pas vraiment eu la chance de ( vraiment ) Testdrive cependant. Venant d'un arrière-plan php similaire, j'ai trouvé que Lift était assez facile à comprendre. Il semble également être un peu plus mature que Play, mais je suis trop nouveau pour Scala, pour être concluant.
yannis
3

En fait, vous envisagez probablement trois types de ressources:

  • Celui qui explique les bases du langage et pourquoi voulez-vous l'utiliser,
  • Celui qui compare plusieurs langues.
  • Celui qui critique un aspect d'une langue.

Ces deux ressources seraient biaisées.

  • Lorsque vous expliquez quelque chose sur une langue, vous essayez la plupart du temps de convaincre le lecteur de l'utiliser. Vous diriez donc rarement que la langue est nulle.
  • Lorsque vous comparez plusieurs langues, vous avez toujours une préférence personnelle pour l'une d'entre elles.
  • Lorsque vous critiquez quelque chose, eh bien, il n'est guère possible d'être neutre.

Vous pouvez avoir une chance de trouver une comparaison neutre, mais il est très difficile d'en écrire une. Personnellement, je ne pourrais jamais écrire une comparaison entre un vrai langage et PHP sans critiquer tout le temps PHP. Et je suis sûr que je ne suis pas le seul à ne pas être suffisamment neutre.


Si vous voulez avoir un aperçu des différentes langues, vous devez les apprendre vous-même - et lire beaucoup . Par apprentissage, je veux dire connaître les bases de la langue, mais pouvoir avoir sa propre opinion . Ce n'est pas parce que vous avez lu un manuel Ruby que vous êtes en mesure d'expliquer ce qui est bon et ce qui est mauvais dans cette langue.

Cela signifie que vous devez soit passer du temps (des mois, voire des années) à pratiquer. Ou, vous pouvez lire beaucoup. Mais essayez de lire des choses contradictoires . Si une personne écrit qu'il déteste PHP et PHP est l'un des pires langages de tous les temps, en particulier par rapport à de vrais langages comme Ruby, C # ou Java, essayez également de trouver une personne qui dit que PHP est merveilleux et qu'il est plus facile à utiliser que C #, beaucoup plus rapide que Java, et beaucoup ... (je ne sais vraiment pas quoi) que Ruby.

Rappelez-vous une chose: si vous connaissez déjà bien une langue, vous serez très critique au début lors de l'apprentissage d'une autre , estimant que la langue que vous connaissez déjà est meilleure et beaucoup plus facile à utiliser. C'est comme les utilisateurs de Linux qui détestent Windows et les utilisateurs de Windows qui détestent Linux: en fait, aucun OS n'est meilleur; c'est juste qu'un utilisateur Linux ne sait pas comment utiliser Windows, et vice versa. Ce n'est qu'après avoir acquis suffisamment d'expérience dans les deux que vous pourrez décider correctement lequel vous convient le mieux.


Dernière chose, souvent oubliée: il est également très important de pouvoir évaluer "l'environnement" d'une langue:

  • Quelle est la qualité du cadre (ou des cadres les plus utilisés)?
  • Est-il facile de trouver un service d'hébergement? Vous appréciez l'IDE?
  • Existe-t-il de nombreuses bibliothèques tierces bien écrites?
  • La communauté est-elle composée de développeurs hautement professionnels, ou principalement de débutants qui ne connaissent rien ni à la programmation en général, ni au langage lui-même?
  • La documentation est-elle suffisamment verbeuse et facile à rechercher et à comprendre?
  • Le langage et les frameworks sont-ils mis à jour fréquemment?
  • etc.
Arseni Mourzenko
la source
Je suis entièrement d'accord. Ce sont ces questions pour lesquelles je cherche une réponse. Vous mentionnez beaucoup de lecture - et c'est ce que j'essaie de faire - j'ai besoin de beaucoup de ressources pour lire sur les langues que je veux étudier. Bien qu'il ne soit pas possible d'avoir un examen non biaisé, certains sont beaucoup plus équilibrés et c'est tout ce que je voulais.
Xeoncross
2

Eh bien, comme l'un de vos critères semble être "c'est amusant de travailler avec", je pense que vous voudriez trouver des informations biaisées. Si l'auteur de quelque chose est passionné par la langue de son choix, il y a de fortes chances qu'il donne une évaluation biaisée.

Vous devriez peut-être l'aborder dans l'autre sens. Puisque vous semblez parler de faire évoluer une carrière plutôt qu'un passe-temps, vous devriez peut-être sonder certaines offres d'emploi, trouver des technologies / langages intéressants et les examiner.

Quant aux langues ayant des objectifs spécifiques, de nombreuses langues n'en ont pas. La plupart des langues que vous avez répertoriées sont assez générales. Par exemple, le langage Ruby est un langage assez polyvalent adapté à de nombreuses tâches. Une fois que vous y ajoutez un framework, comme Rails , cela a un objectif assez spécifique.

John Gaines Jr.
la source
1

Ce n'est pas exactement ce que vous demandiez, mais si je cherchais quelque chose pour me sortir d'une ornière professionnelle de développement Web, tout en tirant parti de cette expérience et de ces contacts, j'entrerais dans l'écriture d'applications Android et iPhone. Être en mesure de vendre une application qui complète le site Web d'un client pourrait vraiment vous démarquer en développant un Internet de plus en plus accessible via des appareils mobiles.

Karl Bielefeldt
la source
Ce n'est vraiment pas une mauvaise idée. Je pensais également à passer plus de temps dans l'illustrateur et Photoshop à travailler sur mes créations. Néanmoins, j'aimerais en savoir plus sur les options d'application Web disponibles.
Xeoncross
0

Avez-vous vraiment atteint la limite de PHP, ou simplement les limites de PHP telles que vous les connaissez?

Avez-vous regardé Drupal ? Il s'agit d'un CMS et d'un cadre de programmation basés sur PHP qui encouragent fortement les bonnes normes et pratiques de codage. (Ayant dû travailler avec OSCommerce dans des emplois précédents, je ressens votre douleur là-bas.) Bien que basé sur PHP, il est suffisamment différent pour que souvent la "bonne" façon de faire quelque chose en PHP pur ne soit pas la bonne façon de le faire dans Drupal, et vous allez avoir une bonne courbe d'apprentissage à grimper pour vraiment le maîtriser. Cependant, cela peut changer vos perspectives sur les capacités de PHP en tant que langage et le développement Web dans son ensemble.

Garrett Albright
la source
La dernière fois que j'ai regardé Drupal (4 et 5), c'était plutôt mauvais. Peut-être que leurs nouvelles versions utilisent maintenant les normes appropriées. Pourtant, aussi lent soit-il, je préférerais de loin les superbes frameworks.
Xeoncross