Maintenant que la nouvelle ère du cloud computing arrive et que je vais apprendre à programmer, je ne sais pas quel langage de programmation les clouds supportent.
Je pense que le support Java, ASP.NET, PHP, Python, Ruby, Perl etc. et non les langages bas de gamme, comme C, C++ etc ... Ou je me trompe? Si tel est le cas, les éditeurs de logiciels devront redévelopper leurs logiciels. Est-ce le moment où vous pouvez démarrer un projet, et vous n'avez pas de grande entreprise de logiciels en tant que concurrent?
Je veux savoir quelle langue je dois me concentrer sur l'apprentissage, afin de pouvoir développer pour le cloud.
Le "cloud computing" est davantage un concept au niveau du système d'exploitation qu'un concept de langage.
Supposons que vous souhaitiez héberger une application sur service de cloud computing EC2 d'Amazon - vous pouvez la développer dans n'importe quelle langue que vous aimez, sur n'importe quel système d'exploitation pris en charge par EC2 (plusieurs versions de Linux, Solaris et Windows ), puis installez-le et exécutez-le "dans le cloud" sur une ou plusieurs machines virtuelles, comme vous le feriez sur un serveur physique dédié.
C'est une question très intéressante.
Lors de la conférence Lang.Next, il y a eu discussion très intéressante sur ce sujet, à laquelle participent des auteurs de plusieurs langages de programmation (Scala, Dart, C #). Il n'y a pas eu de consensus clair à la fin, mais de mon point de vue, il y a un message:
Le langage idéal pour cette "ère du cloud" doit être orienté objet (car c'est ainsi que nous comprenons et sommes capables de modéliser le monde) et embrasser également la programmation fonctionnelle.
Le code à "l'âge du cloud" est presque toujours distribué: il s'exécute sur plusieurs cœurs/machines (au centre du cloud) ou juste la séparation client/serveur. Et c'est aussi asynchrone. Nous ne bloquons pas le code en attendant la réponse WS. Les rappels arrivent à tout moment.
Lors de l'utilisation de langages de programmation impératifs standard, la gestion de l'asynchronie et de la distribution est vraiment compliquée. Vous devez toujours prendre soin de "l'état actuel" et lorsque les rappels arrivent, vous devez décider quoi faire, dans les dépendances de cet état.
La programmation fonctionnelle permet d'éliminer "l'état" et est bien mieux adaptée à cette nouvelle situation.
Je dirais donc: dans le cloud computing, le code est distribué, sans état, asynchrone. La programmation fonctionnelle peut vous y aider. L'orientation objet est presque indispensable pour pouvoir modéliser le monde.
J'ai écrit un blog à ce sujet , si vous êtes intéressé. J'aime C #, mais en fait, je dirais que Scala, Clojure, F # pourraient aller encore mieux.
D'un autre côté, le C++ sera toujours là, et ces derniers temps, il se modernise et reçoit plus d'attention.
En ce qui concerne les langages de programmation, tout langage basé sur un navigateur ou sur un serveur est susceptible d'être utilisé. Javascript, PHP, ASP, AJAX, Perl, Java, SQL.
Supposons que vous ayez besoin d'implémenter un nouveau langage de programmation et un BCL spécialement conçus pour fonctionner dans le cloud (il ne sera jamais utilisé sur les machines clientes). Il doit être optimisé pour le cloud computing; facile à apprendre, rapide, efficace, puissant, moderne.
La plus grande façon dont j'ai vu les produits d'hébergement cloud aider les développeurs est la possibilité de lancer et d'augmenter la taille d'un serveur, sans aucun retard. Les développeurs sont en mesure de créer l'application dans un environnement entièrement personnalisé, puis de l'étendre dans une machine de production avec des tracas importants. Si les choses ne fonctionnent pas comme elles le souhaitent, elles peuvent alors détruire cette machine avec une relative facilité.
La plupart des fournisseurs de cloud computing ont utilisé Java et C-Sharp, pour créer un serveur cloud.
Parmi les langages que vous mentionnez, Java, PHP, Python, Ruby, Perl sont certainement plus indépendants de la plateforme que C/C++ (et ASP.NET).
De nombreuses différences spécifiques à la plate-forme proviennent également des bibliothèques disponibles pour une plate-forme donnée.
Dans la pratique cependant, je pense que vous développerez toujours sur la plate-forme même ou au moins très similaire (version du système d'exploitation) que le système sur lequel votre code s'exécutera, c'est-à-dire que le cloud ne prendra pas le code source et ne compilera pas avant de l'exécuter.
Personnellement, je choisirais Java ou Python (probablement aussi Ruby) car ils ont un grand nombre de bibliothèques disponibles pour toutes sortes de tâches et sont très indépendants de la plate-forme) .
Cela dépend du "cloud" que vous souhaitez utiliser. S'il s'agit de Google App Engine, vous pouvez utiliser Java ou Python. Groovy est également pris en charge sur Google App Engine qui fonctionne sur jvm. Si vous utilisez Amazon, vous pouvez à peu près installer n'importe quel système d'exploitation (Amazon Machine Images) que vous souhaitez avec n'importe quel serveur d'applications et utiliser n'importe quelle langue en fonction de la prise en charge des serveurs d'applications pour la langue. Mais faire quelque chose comme cela signifierait beaucoup de compréhension technique des concepts d'évolutivité. Certains services peuvent être fournis hors l'étagère comme les services DB, le stockage, etc. J'ai entendu parler de Ruby et Heroku (une autre plate-forme d'application cloud). Mais je n'ai pas d'expérience avec cela.
Personnellement, je préfère Java/Groovy pour de telles choses en raison des vastes bibliothèques et outils disponibles.
C'est toujours fascinant. Je ne suis pas un développeur de cloud, mais d'après mes recherches, il n'y a rien de très différent de ce que beaucoup d'entre nous font de temps en temps depuis des décennies. Le serveur est spécifique à la plate-forme. Si vous souhaitez écrire du code indépendant de la plate-forme pour votre serveur, c'est bien, mais inutile en fonction de votre fournisseur de serveur cloud. Je pense que la plus grande différence que j'ai vue jusqu'à présent est le concept de fournir un large ensemble de services pour le client frontal à traiter. le front-end, je suppose que c'est principalement le développement d'applications web ou web. Comme la plupart des navigateurs peuvent gérer la pile LAMP vs Microsoft assez bien, vous êtes toujours de retour à votre goût du mois. La seule différence que je vois vraiment par rapport à ce que j'ai fait il y a 20 ans dans un environnement réseau hautement distribué est le protocole de niveau supérieur (HTTP vs TCP/UDP). Peut-être que je me trompe et que j'accueillerais l'éducation, mais là encore, je fais cela depuis longtemps et je n'ai toujours rien vu de révolutionnaire ou significativement différent, bien que des langages comme Java, C #, Python, Ruby, etc. soient significativement plus simple à programmer dans lequel se trouve un sac mixte car la barre est abaissée pour ceux qui ne sont pas familiers avec l'écriture de code optimisé. Le PAAS et le SAAS me semblent être quelques-unes des clés de la nouvelle technologie, mais je fais ça de temps en temps depuis 20 ans :)
Votre question est un peu vague sur ce que vous pensez réellement faire. Le "cloud computing" peut signifier presque n'importe quoi. Si vous recherchez des langages avec des avantages spécifiques au cloud computing, Java en a plusieurs car c'est un langage compilé qui se compile en code octet indépendant du système d'exploitation.
J'interviens également avec les autres sur le fait que C++ est un langage de bas niveau. Oui, ça l'est. Mais vous aurez toujours plus que le langage C++. Si vous séparez les deux Java et C++ des classes qui les accompagnent, Java et C++ sont extrêmement similaires. Vous devez adopter un critère rigide comme les "pointeurs"). = bas niveau, garbage collection = haut niveau "pour que la distinction reste fidèle. (Et, bien sûr, vous pouvez rendre les pointeurs intelligents et invisibles en C++ et vous pouvez également utiliser le garbage collection en C++ si vous le souhaitez.)
De toute évidence, il n'y a pas du tout de "meilleure" langue - ou plus valable à apprendre. La langue que vous utilisez n'est qu'une question de ce que vous aimez ET de ce que votre serveur prend en charge. Vous ne devriez pas apprendre une langue qui ne serait prise en charge par aucun serveur ou qui mourrait dans un avenir proche. D'un autre côté, il est également évident qu'il y aura des langues encore meilleures à l'avenir et que celles-ci seront plus utiles. Alors apprenez-en un qui est rapide, pratique et que vous aimez et où l'apprentissage ne serait pas un trop gros effort car, comme dit, vous risquez de changer en moins de 3 ans.
Personnellement, j'envisagerais une solution "open-source" (non propriétaire), car le Web est ouvert à tous et l'open-source est plus susceptible d'être pris en charge par tous. (Ce qui signifie PHP dans ce cas))