2010-09-18 32 views
27

Ahora que está llegando la nueva era de la computación en la nube, y voy a aprender a programar, no sé qué lenguaje de programación soportan las nubes.¿Qué lenguaje de programación para cloud computing?

Creo que el soporte de Java, ASP.NET, PHP, Python, Ruby, Perl, etc. y no los idiomas de gama baja, como C, C++, etc ... ¿O estoy equivocado? Si eso es así, las empresas de software tendrán que volver a desarrollar su software. ¿Es este el momento en que puedes comenzar un proyecto y no tienes una gran compañía de software como competidora?

Quiero saber en qué idioma debo enfocarme para aprender, para poder desarrollarme para la nube.

Respuesta

32

"Computación en la nube" es más un concepto de nivel de sistema operativo que un concepto de lenguaje.

Digamos que desea alojar una aplicación en Amazon's EC2 cloud computing service - se puede desarrollar en cualquier idioma que desee, en cualquier sistema operativo soportado por EC2 (varios sabores de Linux, Solaris y Windows), a continuación, instalar y ejecutar es "en la nube" en una o más máquinas virtuales, como lo haría en un servidor físico dedicado.

+0

Ok, siempre he pensado qué nubes solo usan "languages-for-the-web". Tan equivocado como puedo :) – Anomym

+1

"" Cloud computing "es más un concepto de nivel de sistema operativo que un concepto de lenguaje". No es cierto en mi humilde opinión. "La nube" es un término malo en general, pero dejando eso a un lado tienes servicios en la nube como Microsoft Azure, Google AppEngine y SalesForce AppForce con soporte para C#, VB.NET, Java, Python y Apex. Personalmente, elegiría entre C# si eres una persona inclinada a Windows o Java. Todo depende de las plataformas a las que se dirija para alojar su código o para qué objetivo se dirigen sus dispositivos finales. – CosmosKey

+2

@Jim Lewis: No necesariamente correcto. Usted está hablando de IAAS (infraestructura como servicio). IAAS no es el único tipo de nube. En PAAS (plataforma como servicio) el lenguaje definitivamente importa. Por ejemplo, necesita Java para Elastic Beanstalk, C# (u otros lenguajes .NET) para Azure y Ruby para Engine Yard. A veces, los proveedores de PAAS admiten varios idiomas, pero generalmente hay un idioma/marco/plataforma principal. – stepanian

9

De los idiomas que menciona Java, PHP, Python, Ruby, Perl son ciertamente más independientes de la plataforma que C/C++ (y ASP.NET).

Muchas de las diferencias específicas de plataforma también provienen de qué bibliotecas están disponibles para una plataforma determinada.

En la práctica, creo que siempre desarrollará en el misma plataforma o al menos muy similar (sistema operativo) como el sistema donde se ejecutará su código, es decir, la nube no tomará el código fuente y compilarlo para ti antes de ejecutarlo.

Personalmente, me gustaría ir a Java o Python (probablemente también Ruby), ya que tienen una gran cantidad de bibliotecas disponibles para todo tipo de tareas y son muy independientes de la plataforma.

3

Su pregunta es un poco vaga acerca de lo que realmente está pensando hacer. La "computación en la nube" puede significar casi cualquier cosa. Si está buscando idiomas con ventajas específicas de computación en la nube, Java tiene varios porque es un lenguaje compilado que se compila en código de bytes independiente del sistema operativo.

También cuento con los demás acerca de que C++ es un lenguaje de bajo nivel. Sí lo es. Pero siempre vas a tener algo más que el lenguaje C++. Si separa tanto Java como C++ de las clases que vienen con ellos, Java y C++ son extremadamente similares. Tienes que adoptar un criterio rígido como "punteros = bajo nivel, recolección de basura = alto nivel" para hacer que la distinción se quede. (Y, por supuesto, puede hacer que los punteros sean inteligentes e invisibles en C++ y también puede usar la recolección de elementos no utilizados en C++ si lo desea).

4

Depende de qué "nube" desee usar. Si es Google App Engine, puedes usar Java o Python. Groovy también es compatible con Google App Engine, que se ejecuta en jvm. Si va con Amazon, puede instalar prácticamente cualquier sistema operativo (Amazon Machine Images) que desee con cualquier servidor de aplicaciones y usar cualquier idioma dependiendo de la compatibilidad de los servidores de aplicaciones con el idioma. Pero hacer algo así significaría una gran comprensión técnica de los conceptos de escalabilidad. Algunos de los servicios podrían proporcionarse de forma gratuita como servicios de BD, almacenamiento, etc. Escuché sobre Ruby y Heroku (otra plataforma de aplicaciones en la nube). Pero no tienes experiencia con eso.

Personalmente prefiero Java/Groovy para tales cosas debido a las amplias bibliotecas y herramientas disponibles.

2

Obviamente, no existe un idioma "mejor" - o que valga más la pena aprenderlo -. El idioma que usa es solo una cuestión de lo que le gusta Y lo que su servidor admite. No debe aprender un idioma que no sea compatible con ningún servidor o se dice que está muriendo en el futuro cercano. Por otro lado, es obvio también que habrá idiomas aún mejores en el futuro y que esos serán más útiles. Así que aprende uno que sea rápido, conveniente y que te guste y donde aprenderlo no sea un esfuerzo demasiado grande porque, como dije, es probable que cambies en menos de 3 años.

Yo, personalmente, estaría considerando una de "código abierto" (no de propiedad), porque la web está abierta a todos y es más probable que la fuente abierta sea compatible con todos. (Lo que significa PHP en este caso)

4

Esto siempre es fascinante. No soy un desarrollador de la nube, pero en base a mi investigación no hay nada significativamente diferente de lo que muchos de nosotros hemos estado haciendo durante décadas. El servidor es específico de la plataforma. Si desea escribir un código de plataforma independiente para su servidor, eso está bien, pero no es necesario según el proveedor de su servidor de nube. Creo que la mayor diferencia que he visto hasta ahora es el concepto de proporcionar un gran conjunto de servicios para que el cliente front-end los procese. la parte delantera, supongo que es predominantemente el desarrollo de aplicaciones web o web. Como la mayoría de los navegadores pueden manejar LAMP vs Microsoft stack lo suficientemente bien, entonces todavía estás de vuelta a lo que sea tu sabor del mes. La única diferencia que realmente estoy viendo de lo que hice hace 20 años en un entorno de red altamente distribuido son los protocolos de nivel superior (HTTP vs. TCP/UDP). Tal vez estoy equivocado y me gustaría recibir la educación, pero nuevamente he estado haciendo esto por mucho tiempo y todavía no he visto nada que considere revolucionario o significativamente diferente, aunque los lenguajes como Java, C#, Python, Ruby, etc. son significativamente Más simple de programar en el cual es una bolsa mixta ya que la barra se baja para aquellos que no están familiarizados con la escritura de código optimizado. PAAS y SAAS para mí parecen ser algunas de las claves en la nueva tecnología, pero he estado haciendo algo de esto de forma intermitente durante 20 años :)

9

Esa es una pregunta muy interesante.

En la conferencia Lang.Next había un very interesting discussion about this topic, in which authors of several programming languages participate (Scala, Dart, C#). no había un consenso claro al final, pero desde mi punto de vista hay un mensaje:

El lenguaje ideal para esta "era de la nube" debe ser orientado a objetos (porque así es como comprendemos y somos capaces de modelar el mundo) y también adoptamos la programación funcional.

El código en "cloud age" casi siempre se distribuye: se ejecuta en varios núcleos/máquinas (en el centro de la nube) o solo en la separación cliente/servidor. Y también es asincrónico. No bloqueamos el código cuando esperamos la respuesta de WS. Las devoluciones de llamada llegan en cualquier momento.

Cuando se utilizan lenguajes de programación imperativos estándar, el manejo de la asincronía y la distribución es realmente complicado. Siempre debe cuidar el "estado actual" y cuando entran las devoluciones de llamada, debe decidir qué hacer, en dependencias de este estado.

La programación funcional ayuda a eliminar el "estado" y es mucho más adecuada para esta nueva situación.

Así que yo diría: en la computación en la nube el código se distribuye, sin estado, asíncrono. La programación funcional puede ayudarte con eso. Orientación a objetos es casi una necesidad para poder modelar el mundo.

He escrito blog post about it, si te interesa. Me gusta C#, pero en realidad diría que Scala, Clojure, F # podrían caber aún mejor.

Por otro lado C++ siempre estará allí, y últimamente se está modernizando y recibiendo más atención.

9

En cuanto a los lenguajes de programación, es probable que se utilice cualquier lenguaje basado en navegador o en servidor. Javascript, PHP, ASP, AJAX, Perl, Java, SQL.

Digamos que necesita implementar un nuevo lenguaje de programación y BCL diseñados específicamente para operar en la nube (no se usará nunca en máquinas cliente). Debe ser optimizado para computación en la nube; fácil de aprender, rápido, eficiente, poderoso, moderno.

La mejor manera en que he visto los productos de alojamiento en la nube ayudar a los desarrolladores es la capacidad de iniciar y aumentar el tamaño de un servidor, sin tener ningún tipo de retraso. Los desarrolladores pueden crear la aplicación en un entorno completamente personalizado y luego expandirla a una máquina de producción con una gran dificultad. Si las cosas no funcionan como se desea, pueden destruir esa máquina con relativa facilidad.

La mayoría de los Cloud Computing Providers utilizan JAVA y C-Sharp, para hacer servidor de nube.

+9

Bueno, AJAX no es un idioma ... –

Cuestiones relacionadas