Apprendre quoi après PHP? Scala ou Clojure?
J'ai un lourd web dev arrière-plan avec PHP. Mes raisons pour l'apprentissage de la programmation fonctionnelle des langues sont:
- à améliorer mes compétences en programmation. Il a été fortement suggéré que l'apprentissage d'une FPL aide. c'est une priorité parce que je veux être de mieux en mieux.
- apprendre un langage de programmation pour résoudre les tâches telles que le script (OS de script, manipulation de texte, etc..)
- pour être utilisé comme une alternative pour PHP développement web.
Aussi qui a le meilleur soutien de la communauté, des tutoriels, des livres et de la meilleure web application framework?
N'hésitez pas à suggérer d'autres langues.
Vous devez vous connecter pour publier un commentaire.
Pour les langages fonctionnels, apprendre les deux Scala et Clojure. Vous apprendrez de nouvelles façons de penser des deux à la fois. Allez apprendre quelques Erea et Erlang tandis que votre à elle aussi.
Au sérieux, plus le nombre de langues que vous avez sous votre ceinture, mieux vous serez en tant que programmeur quelle que soit la langue que vous utilisez en fin de compte.
Coup de gueule: "Quelle langue dois-je apprendre?", questions deviennent lassant. Les réponses doivent être les mêmes à chaque fois, pourtant, personne ne donne la bonne sages conseils. Au lieu de cela, tout le monde se propage FUD et suggère que le langage qu'ils arrivent à utiliser pour leur travail de jour est celui que vous devez apprendre. Poppycock.
J'ai essayé les deux Scala et Clojure récemment, basé sur des motivations similaires. Voici ce que j'ai trouvé:
Scala est extrêmement puissant et polyvalent; Scala vous permet de définir des types avec une grande précision et il permet de définir des Dsl qui sont laconiques et propre. Scala a beaucoup de fraîcheur, des constructions que l'on souhaite Java avait, y compris un groupe d'extensions fonctionnelles. Mais quand il est venu à elle, j'ai fini le codage impératif de Java, dans le Scala langue, parce que la complexité de tous ces trucs cool s'est emparé de moi.
J'ai fait un peu de Lisp de retour à l'Université, et qui a toujours eu un penchant pour revenir à nouveau. Certains vraiment cool de pointe truc est fait par des gens très intelligents en Lisp, et en très peu de lignes. Je voulais être un de ces gens intelligents, ou au moins essayer d'être comme eux. Mais je n'ai jamais vraiment compris le Schéma, et j'ai raté mon "infini d'approvisionnement des bibliothèques" de Java. Je ne me voyais pas écrire une interface graphique dans le Schéma, et avait du mal à envisager une application Web.
Puis j'ai essayé de Clojure et il semblait que tout a cliqué en place. Clojure a été intentionnellement fait plus d'outsider de l'environnement: Il y a une tentative de couper vers le bas sur les parenthèses et d'utiliser différents entre parenthèses, ponctuation pour des situations différentes. Traiter les choses comme des tableaux, du texte et XML comme des séquences, combiné avec un puissant ensemble de la séquence de fonctions, fait beaucoup de problèmes assez simples, comme le support pour les tableaux et hashmaps. C'est (volontairement) comme fonctionnel Java. La fonctionnelle mindeset prend un peu de temps pour s'y habituer, mais nulle part je n'ai pu trouver comme accessible ou de la plus agréable en Clojure. Mon code n'est guère besoin de boucles, mais il est plus clair sur l'endroit où ça en boucle/séquençage, et plus concis. Je peux faire mutable état si j'ai vraiment besoin, mais j'ai besoin d'être explicite à ce sujet; en échange, que l'état est protégé par Clojure de simultanéité de mécanismes. La concurrence, alors, devient presque une évidence, parfois, mon code s'exécute en toute sécurité en parallèle, sans effort conscient de mon propre.
Ne vient pas de Java, ce ne sera pas sembler très utile pour vous, mais Clojure peut faire tout ce que Java peut, y compris pleinement compatible .les fichiers de classe. Plus important encore, il peut s'interfacer avec toutes les bibliothèques Java, et que l'aptitude à lui seul faire PHP sembler comme un jouet langue.
Ma suggestion est d'apprendre le JavaScript.
Je veux dire, vraiment l'apprendre.
Voici ce qu'est un auto-proclamé Clojure avocat a à dire à propos de la Scala. Faire votre propre avis, bien sûr, mais vous pouvez trouver de son point de vue utile.
Vous pourriez également être intéressé par ce qu'il a à dire à propos de PHP vs Clojure.
C'est très difficile d'appel. Personnellement, je pense que Scala est plus utile en tant que langue générale pour les développeurs web. Il existe de nombreux frameworks web, ou adaptés. Sur le très rapide&côté sale, par exemple, il y a Jouer. Sur le à part entière avec une excellente Comète de soutien côté, il y a Ascenseur.
Mais vous avez parlé de l'apprentissage de la programmation dans un style fonctionnel. À cet égard, il n'existe aucun moyen Scala peut rivaliser avec Clojure. Scala peut être utilisé dans un style fonctionnel, mais il fait en sorte que vous n'avez pas à. Avec Clojure, d'autre part, rien faire, mais fonctionnelle style est douloureux.
Donc, si vous voulez une alternative à PHP, je serais prêt à parier sur Scala. Si vous voulez vraiment apprendre la programmation fonctionnelle, Clojure.
Enfin, permettez-moi de dire que je ne pense pas que Clojure n'est pas un langage de programmation généraliste, ou qu'il ne peut pas être utilisé pour le développement web. Je pense juste que Scala est plus sur ces deux plans.
Obtenir un sac de ciment, durcir et Apprendre Vous un Haskell, pour le Grand Bien!
Saut formulaire PHP à la Scala ou Clojure va être un énorme choc culturel. PHP est très axée sur rapide/sale à faire des choses (ou 90% propre avec les derniers 10% sale (-:), tandis que les langages de programmation fonctionnelle force une certaine exactitude et l'abstraction sur votre façon de penser. Avant d'arriver à la Scala ou Clojure, vous allez avoir quelque chose entre les deux. Si c'était moi, j'avais
Choisir mon objectif final que Clojure, car (comme je le comprends), vous obtenez l'ensemble de la Java standard de la bibliothèque avec Clojure, le rendant immédiatement plus utile que quelque chose de pur, comme Scala
J'aimerais passer un peu de temps à construire quelque chose en Java, juste pour obtenir un sentir pour une fortement typé langage OO. J'ai choisi Java, C# (ou même ZendFramework style PHP) car il sera utile une fois que vous arrivez à Clojure. Google Outils Web pourrait être un bon endroit pour commencer avec ce. C'est une sorte de développement web, mais très très Java comme et pas du tout en PHP/HTML comme.
Passer un peu de temps à regarder les entrailles de jQuery, et de développer votre propre jQuery module ou d'ajouter une fonction de noyau. Cela vous obtiendrez utilisé pour le fonctionnel manière de penser, tout en l'appliquant à un problème que vous êtes familier avec.
Final peu de conseils: Essayez d'embrasser les méthodes usuelles de la langue/plate-forme que vous avez choisie. N'essayez pas d'apporter votre style de code PHP à l'une ou l'autre langue. Bien qu'il semble plus facile au premier abord et vous permettent d'obtenir une sorte de résultats, vous allez manquer le point de l'exercice, qui est de penser différemment et de façon plus générale sur les problèmes.
Bonne chance!
Si vous cherchez une bonne alternative pour PHP, je vous suggère de Python et Ruby. Si vous avez besoin d'un langage Fonctionnel avec un bon soutien pour le développement de web - apprendre Erlang. Voici quelques projets/cadres qui vont vous aider à créer des applications web évolutives en Erlang:
C'est aussi l'une des rares langues qui est spécifiquement conçu pour la construction de tolérance de pannes, la distribution de logiciels.
Alors qu'il devient de moins en moins la presse que Clojure et Scala, j'aimerais vraiment vous recommandons de prendre un coup d'oeil à Fantom: http://fantom.org/
C'est comme le meilleur des deux mondes et ne devrait vraiment méritent plus d'attention.
Je suis un nouveau converti à Clojure. C'est me faire élargir mon esprit, mais c'est assez accessible pour être amusant et productif. Je suis un client heureux.
Mais
PHP et Clojure vivent dans des univers différents. J'ai eu quelques introduction à barboter dans FP langues, et quelques faux départs dans d'autres Lisps avant d'embrasser Clojure. Pour moins d'un développeur expérimenté en provenance directe du PHP, Clojure peut-être trop d'un choc de culture.
Comme un compromis raisonnable entre les deux, et un langage de scripts assez pour que vous vous approchez de la PF sur une pente plutôt que de plonger, je recommande Ruby. Ruby est moderne, propre et élégant. Dans son JRuby incarnation, c'est même rapide. L'apprentissage de Ruby et de jouer avec des Rails est agréable et instructif.
Bien que Scala est ma langue préférée pour l'instant, je pense que c'est pas le meilleur choix pour apprendre FP. C'est principalement OOPL avec un bon soutien de la PF. Je suggère de commencer à partir de Haskell rapidement plonger dans FP. Vous apprendrez les concepts suivants de la FP de travail (qui ne sont pas seulement pris en charge, mais appliquée et omniprésent en Haskell):
1) puissant système de type statique avec l'inférence de type
2) l'évaluation différée
3) sans effets secondaires de l'informatique
Après dynamiquement typé "pragmatique" de PHP et fonctionnels purs "académique", Haskell, vous aurez plein de photo de langages de programmation paysage.
Mon $.02 est de vérifier Perl. Je peut sonner comme un aigri, mais gardez à l'esprit que Perl a CPAN (http://cpan.org) et beaucoup de très, très utile à des ressources en ligne.
clean programmig
en perl trop, mais propre à la programmation elle-même n'a pas d'aide à résoudre les problèmes de la vie quotidienne. Et pour la FPL, en recommandant à lire un vieux mais toujours bon livre: Haut de Commande Perl (hop.perl.plover.com)Ruby est probablement le plus "fonctionnelle" de langue dominante qui est également bon pour l'écriture de scripts. Python est une seconde près, mais ruby habitude implicite de retourner le résultat de la dernière expression d'une fonction/est le bloc de bris d'égalité pour moi.
Les deux ont une excellente frameworks web (Rails et Django, respectivement), et les deux seront certainement élargir vos horizons après la programmation PHP. Dans le même temps, ils se permettent beaucoup de possibilités pour l'apprentissage incrémental.
Aucun d'entre eux utilisent des S-expressions et permettent à la fois de programmation impératif, il n'y aura donc pas être quelque chose pour vous forcer à abandonner l'impératif de style dinde froide.
Enfin le très regretté TCL est fondamentalement Régime de scripts et de l'extension de la langue. Je ne sais pas où c'est à ces jours, mais la ArsDigita Système Communautaire a été écrite en TCL.
Développement Web repose ENTIÈREMENT sur: tout d'Abord, la qualité de la web-cadre et les outils pour le développement. Je ne sais pas pourquoi vous voulez déplacer aux langages fonctionnels pour la programmation d'applications web.
Python permet à certaines constructions fonctionnelles pour la programmation et il a des cadres et des outils. Lua permet au même niveau de la programmation fonctionnelle, et il n'a pas non plus de haute qualité des cadres pour le développement web ou outils, cependant sa simplicité/primal de la nature de son élégance.
Maintenant comme un puritain, je dirais de regarder haskell, mais c'est contre-productif :D,. Toi, mon ami sont à la recherche pour Python. Je n'ai pas évalué le Rubis, mais elle pourrait avoir des constructions fonctionnelles.
Peut ne pas apparaître tellement envie, mais je vous suggère fortement de JavaScript.
Beaucoup d'années, j'ai été forte au développement de PHP, mais alors basculé à l'Java, C#, C, Objective-C. au Cours de mon Java temps, j'ai pénétré profondément en JavaScript et fait de jolies choses cool avec elle. Quelqu'un que je connais a développé un ensemble temporaires côté client léger SGBD. Juste un coup d'oeil Ext.js ce qu'ils font avec JavaScript. C'est donc sous-estimé, mais ne le mérite pas. Je vous suggère de google pour "Douglas Crockford Vidéo". Chez Yahoo, il a créé plusieurs excellentes présentations à propos de JavaScript, aussi je vous suggère de trouver le livre "Javascript - Les Bonnes Parties" de Douglas Crockford, et "JavaScript - The Definitive Guide". Les deux meilleurs JavaScript livres à disposition. Et vous serez étonné de voir ce qui est possible et ce qu'est une belle langue, il est fait. En fait, vous pouvez faire de l'intelligence artificielle, il a Lambda, il y a en fait rien de vraiment plus "cool" que ça! Quel dommage, il n'est utilisé que pour de script côté client. Peu de gens savent JavaScript peut être utilisé pour serverside de programmation en tant que bien, mais c'est vraiment rare /n'est pas bien documentée.
Et grâce à Adobe Air, vous pouvez apporter le JavaScript pour le Bureau.
Il serait optimal en plus de vos connaissances PHP. Il est toujours bon de faire les choses liées. Vous pouvez être le meilleur Développeur Web, ou le meilleur Logiciel de Bureau Architekt. Mais nos cerveaux sont trop lents à saisir toutes les proffession besoin aujourd'hui d'être le Gourou dans de multiples directions. Beeing le Gourou est essentiel pour le succès, je pense. Certains de mes amis de faire juste une chose: Être le Gourou. Ils étudient toute leur vie un petit sujet et sont extrêmement réussie. Ils gagnent 5 fois plus que tout je-peux-faire-ça-tout-mais-sais-tout-5%-dans-ce-sujet-Développeur dans un quart d'heure seulement.
Donc je propose également: Écrire un 600 pages PHP livre avant vous oubliez votre PHP connaissances tout en faisant quelque chose de totalement différent.
Je ne oublier presque tout ce que je savais à propos de PHP et de JavaScript, mais dans les premiers jours, j'ai certainement été l'un des experts les gars qui ont montré d'autres beaucoup de choses. Maintenant, c'est une douleur, je vous demande donc de nombreuses bases de rappeler encore dans mon petit cerveau. Par l'écriture de votre livre, vous vous souvenez de votre PHP expertise très rapide, même après quelques années de faire quelque chose de différent, parce que c'est votre livre, mise en place de votre cerveau, de votre cerveau. Et vous ne serez pas perdre votre PHP-statut d'expert, même après plusieurs années de faire quelque chose d'autre.
Bonne chance.
J'ai essayé de la Scala et l'a trouvé un peu beaucoup (énorme quantité d'opérateurs que vous devez vous rappeler comment l'utiliser). Mais qui pourrait tout simplement être moi. J'ai entendu dire que Clojure est plus fonctionnel pur et plus proche de Lisp, mais je n'ai pas vérifié.
F# est Microsoft de prendre sur les langages fonctionnels, vous pouvez vérifier. J'entends qu'il a été utilisé pour plusieurs projets dans l'industrie.
Je suggère d'apprentissage des langues qui ont des cadres au-delà de la web front-end comme Java EE (Java EE[JSP/JSF] + Java) ou .NET (ASP.NET + C#, etc.). Qui vous donnerait un peu plus de marge de manœuvre avec votre choix de carrière, et vous serez en mesure de connecter les composants du serveur à un serveur web frontal avec la (relative) facilité.