Primero, intentemos comprender por qué quiere elegir una tecnología específica. Todas las tecnologías prosperan en la comunidad, herramientas, bibliotecas y aplicaciones. Como propietario de un negocio, es posible que desee una tecnología que durará muchos años más allá del inicio del proyecto. Como desarrollador, desea una tecnología que se mantendrá el tiempo suficiente para que pueda obtener un retorno de la inversión. Los propietarios o desarrolladores de negocios a menudo basarán sus decisiones en sus colegas y en la comunidad, dependiendo de qué tecnologías sean altamente recomendadas. En este artículo repasaremos los pros y contras de PHP y Ruby on Rails. Veremos cómo PHP y Ruby on Rails se pueden comparar con temas comunes como escalabilidad, mantenimiento, rendimiento, costos y soporte.
Manzanas VS Naranjas
Comparar PHP con Ruby on Rails no es justo. PHP es mucho más popular que Ruby on Rails, solo porque Ruby on Rails es un framework web, no un lenguaje de programación. Ruby es el lenguaje detrás del framework Ruby on Rails, y PHP es el lenguaje utilizado para escribir aplicaciones. Ruby on Rails es comparable a Zend Framework, Codeigniter, Laravel, Symfony2, CakePHP y muchos otros frameworks web basados en PHP. Entonces, para entender por qué hay tanta popularidad entre Ruby on Rails, es mejor visualizar primero las búsquedas de las personas.
Este gráfico de tendencia de Google muestra que todos los marcos de web PHP aún no suman la cantidad de búsquedas realizadas para Ruby on Rails (en azul). De hecho, el único marco web que está creciendo en el mundo PHP es Laravel. Entonces, ¿por qué Ruby on Rails es tan popular?
Bueno, una gran parte de la creación de una aplicación web es decidir qué bibliotecas usarás, cómo organizar tu aplicación y muchos otros factores. Hasta la fecha, muchos proyectos de PHP aún no usan un marco web maduro y probado. Muchos desarrolladores de PHP preferirían crear un nuevo framework PHP, en lugar de utilizar los populares frameworks como Zend Framework, Symfony2, etc. debido a la complejidad de una aplicación, como con cualquier framework pasarás mucho tiempo aprendiendo a usar eso. Por lo tanto, Ruby on Rails intenta simplificar el proceso de aprendizaje de su marco mediante el uso de convenciones sobre la configuración; en otras palabras, usted (el desarrollador o propietario del negocio) tiene poco que decidir a la hora de ejecutar, organizar o incluso hospedar la aplicación.
¿Cuál es la mejor práctica para mantener un humidificador?
¿Cuáles son las causas de la celulitis estomacal?
¿Cuánto consenso científico existe sobre los efectos de la meditación?
¿Las dietas de ADN son realmente efectivas o solo es un mito?
Esto puede parecer algo bueno, y en su mayor parte, realmente lo es, razón por la cual Ruby on Rails es tan popular. Sin embargo, desde entonces, muchos frameworks web PHP lo han reconocido y están siguiendo los pasos de desarrollo de Ruby on Rails. Esta podría ser la razón por la cual el crecimiento de la comunidad de Ruby on Rails se ha estancado en los últimos años. Ahora, mientras que los otros marcos web se muestran como un pequeño porcentaje, aún deberá tener en cuenta que PHP está enfocado en la web. Entonces, casi todo lo que escribes en PHP se ejecutará en la web, mientras que en Ruby, no tendrás muchas opciones sobre qué código puedes escribir para desarrollar una aplicación web.
I. Escalabilidad y facilidad de mantenimiento
Ya sea PHP o Ruby on Rails, ambos tienen la capacidad de escalar. Sin embargo, debido a la cantidad de recursos que utiliza Ruby en comparación con PHP, los problemas de escalabilidad surgirán mucho antes en el ciclo de vida de su aplicación. Escalar una aplicación en Ruby on Rails versus PHP abordará problemas muy comunes. Por lo tanto, la escala se basará en cómo se diseñó la aplicación. También hay servicios en línea para ayudar a resolver problemas de escalado como el uso de Amazon Elastic Beanstalk o Rackspace Cloud Sites. La situación se vuelve muy diferente cuando pasas de querer escalar a necesitar escalar. Cuando un desarrollador no tiene la experiencia para escalar una aplicación, la ruta más común es encontrar artículos en línea, tutoriales y otros recursos para aprender. Entonces, cuando se trata de escalar un sitio web, hay muchos recursos escritos para desarrolladores de PHP, mientras que Ruby on Rails tiene un grupo de información mucho más pequeño.
En cuanto a la facilidad de mantenimiento, esto depende de la organización de la aplicación. Siempre que el desarrollador esté usando un marco web, entonces el mantenimiento general será más fácil. PHP ofrece una selección masiva de marcos web, todos diseñados para objetivos específicos, mientras que Ruby tiene una selección mucho más limitada (aparte de Ruby on Rails).
II. Rendimiento y velocidad
Dado que PHP es un lenguaje, y Ruby on Rails es un framework web, tendrías que tomar el rendimiento con un grano de sal. El objetivo de utilizar un marco web completo es ganar productividad a expensas de la velocidad. Así que vamos a poner un poco de perspectiva sobre esto.
Aquí hay una tabla de una aplicación muy simple de “hello world”. A continuación puede ver cuán rápido es puro PHP cuando se trata de solicitudes: recuerde, es un lenguaje diseñado para la web. Sin embargo, una vez que comienzas a introducir los populares frameworks web de pila completa, el rendimiento disminuye, y las solicitudes por segundo se acercan al número de Ruby on Rails. De hecho, un popular web framework Laravel tiene un desempeño peor que Ruby on Rails. Como resultado, la mayoría de los puntos de referencia son inútiles, porque hay mucho más en el rendimiento y la velocidad de una aplicación que el lenguaje o el marco web. Por ejemplo, el sistema de base de datos, los mecanismos de almacenamiento en caché y las demoras de red pueden agregar una ralentización de 10x a 100x. Entonces, cómo es el diseño de la aplicación es mucho más importante que el lenguaje o el marco web detrás de él.
En general, Ruby y PHP son algunos de los idiomas más lentos para elegir, pero Ruby toma más recursos que PHP. Con los problemas de rendimiento dados, ambos idiomas han tomado medidas para ayudar a reducir la lentitud que surgen en las aplicaciones cotidianas. Ambos lenguajes tienen varios tiempos de ejecución, sus tiempos de ejecución centrales, como MRI para Ruby y Zend Engine para PHP. Usar esos tiempos de ejecución es bastante lento comparado con otros lenguajes. Ha habido varios intentos de resolver estos problemas. Ha habido trabajo para ejecutar ambos lenguajes en la JVM, que es lo que Java usa como su tiempo de ejecución. El motivo para ejecutar JVM no es solo la velocidad, sino también todo lo que Java tiene para ofrecer. Sin embargo, solo porque se ejecutan en JVM no garantiza una aplicación más rápida. Hay cosas en la JVM que se ejecutan más despacio. Entonces, si necesita que su aplicación se ejecute lo más rápido posible, también está Rubinius para Ruby y HHVM para PHP, que están diseñados para ejecutar sus aplicaciones más rápido, a expensas de la compatibilidad limitada con la plataforma. Por ejemplo, Rubinius y HHVM no son compatibles con Windows. No son compatibles con todo lo que ofrecen los tiempos de ejecución del núcleo, por lo que tendrá que cambiar ciertas partes de su aplicación para garantizar que pueda ejecutarse en estos tiempos de ejecución de alto rendimiento.
III. Costo
La escasez es un concepto fundamental de la economía. Entonces, si tiene diez desarrolladores de PHP por cada desarrollador de Ruby, y la función del proyecto depende del idioma, habrá un claro ganador en los costos. PHP, debido a su fuerte competencia, tiene precios más bajos. Como propietario de un negocio, si su motivo se basa en los costos, este debería ser un incentivo muy útil. Existe el dicho “Obtienes lo que pagas”, pero eso no significa que tengas que pagar la misma cantidad por la experiencia disponible. PHP tiene una curva de aprendizaje muy fácil. Además de eso, muchos desarrolladores de PHP son nuevos en la programación en general y en la programación de aplicaciones web en particular.
Por otro lado, Ruby es un idioma más difícil de aprender, por lo que las personas que eligen ese idioma ya saben cómo programar. Es muy natural que un desarrollador de PHP se mueva a Ruby on Rails y su experiencia en la transferencia mundial de PHP a Ruby. De hecho, muchos desarrolladores de Ruby fueron desarrolladores de PHP. Entonces, ¿por qué los desarrolladores saltan a Ruby on Rails? Bueno, esta respuesta sería la misma para casi cualquier otro lenguaje de programación que no sea PHP. En cualquier otro idioma (excepto PHP), el idioma lo limitará en el código que puede escribir, así como en lo que está disponible para usar. Por lo tanto, se convierte en un método común para crear aplicaciones web en ese idioma. Por ejemplo, C # tiene el sitio oficial Microsoft ASP.NET, Python tiene Django, Node.js tiene Express, Lua tiene Orbit, y la lista continúa. Por lo tanto, para poner esto en perspectiva, digamos que tuvo la opción de interactuar con una audiencia masiva, o estar entre profesionales seleccionados que comparten los mismos objetivos. Tendría sentido que las aplicaciones más reconocidas se construyan en los idiomas que tienen la mayor audiencia, por lo tanto, PHP es el idioma de destino. Aplicaciones como WordPress, Drupal, Magento, Facebook, son solo una pequeña fracción de las muchas aplicaciones disponibles, que están escritas en PHP.
Cuando se trata de alojar sus aplicaciones de Ruby on Rails, los costos pueden subir muy rápidamente. Te resultará más difícil encontrar un alojamiento que admita una aplicación Ruby on Rails, y las grandes marcas no son baratas. Comienzan en $ 40 y rápidamente saltan a $ 500 o más. Incluso hay algunas compañías que ofrecen alojamiento gratuito, pero cobrarán una gran cantidad de tarifas cuando necesiten ampliar sus necesidades de alojamiento. Casi todas las empresas de hosting que ofrecen alojamiento de Ruby on Rails también proporcionarán alojamiento PHP. Algunos de los proveedores de alojamiento más baratos ofrecen versiones antiguas y desactualizadas de Ruby (el idioma), lo que te limita a versiones anteriores de Ruby on Rails. También ejecutan su aplicación Ruby on Rails como CGI, que es la forma más lenta de ejecutar su aplicación web.
IV. Soporte y recursos
PHP tiene un grupo muy grande de desarrolladores y recursos en línea. Ruby on Rails también ofrece muchos recursos en línea, pero hay muchos más recursos disponibles para PHP. Sin embargo, muchos recursos que encontrará tanto para PHP como para Ruby on Rails, a menudo están desactualizados o son incorrectos. Esta es la naturaleza de confiar en Internet para obtener recursos. Ha habido iniciativas en ambas comunidades para crear guías definitivas. Por ejemplo, PHP tiene PHP: The Right Way, que ayudará a los recién llegados a evitar trampas comunes, como seguridad, instalación, prácticas de codificación multilingüe, pruebas, etc. Mientras que Ruby tiene una gran selección de podcasts y contenido de video profesional.
También hay sitios web como Stack Overflow que proporcionan recursos más actualizados. En Stack Overflow, para cada pregunta de Ruby on Rails, hay cinco preguntas de PHP. La pregunta más votada tiene 480 votos para Ruby on Rails, mientras que la pregunta más votada de PHP tiene 2660 votos. Un aspecto extraño es que parece que hay muchas más preguntas sobre Ruby on Rails y luego sobre el lenguaje de Ruby. También hay extrañas revelaciones en Ruby on Rails, ya que se trata más del movimiento que del idioma o el código.
De hecho, su rareza ha ganado tanta fuerza, que Ruby on Rails tiene comunidades de nicho especiales como Rails Girls, que es un sitio web diseñado para ayudar a las mujeres a crear aplicaciones en línea. Van por todo el mundo alentando a las mujeres a involucrarse en la tecnología. En el lado de PHP también está http://phpwoman.com, que ha existido por más de 7 años, pero carecen de la tracción viral que produce Rails Girls. Y eso es lo que hay que recordar, gran parte de la fama de Ruby on Rails proviene de la comunidad, al comenzar con individuos muy dedicados, ha creado algo que tiene un valor de mercado tan fuerte. No importa si es lento o si hay soluciones que son mejores, las personas ven y desean formar parte de la comunidad.
V. Tiempo para implementar
Ambos lenguajes presentan tiempos de desarrollo rápidos, debido a que son un lenguaje interpretado. Para Ruby on Rails, apareció el famoso video “Crear un blog en 15 minutos”, que atrajo a muchos desarrolladores web de todos los idiomas. Ese video estableció el estándar de lo que un marco web debe hacer para crear rápidamente aplicaciones. Desde entonces, los videos posteriores se han producido en otros lenguajes y marcos, como crear un blog en 20 minutos con PHP CodeIgniter. Otra cosa que Ruby on Rails es conocida es el andamiaje. El andamiaje es el proceso de generar código basado en algunos parámetros conocidos. El andamiaje es una herramienta muy poderosa para ayudarlo a llevar su aplicación al mercado. FuelPHP proporciona muchas funciones similares que ofrece el andamio de Ruby on Rails.
VI. Editores y herramientas
Esta es un área donde PHP supera a Ruby on Rails. PHP ofrece una gran variedad de editores y herramientas. Cuando se trata de evaluación comparativa, creación de perfiles y depuración, PHP tiene éxito al tener más opciones. Es incorrecto suponer que hay algo que Ruby on Rails puede hacer, que PHP no puede hacer. Sin embargo, hay cosas que a ambos les va bien, y a ambas no les va tan bien, o pueden no lograrse tan fácilmente.
La mayor parte de la preocupación sobre los límites de PHP está relacionada con los costos de alojamiento. Por ejemplo, para hacer ciertas cosas en PHP necesita una extensión, llamada pecl. Muchos hosts compartidos tendrán un puñado de estos instalados, pero no puede instalar el suyo propio. Por lo tanto, si desea instalar el suyo, deberá confiar en un servidor privado virtual, un servidor en la nube o un servidor dedicado, que son tan caros como el alojamiento de Ruby on Rails, ya que necesita los mismos requisitos. Por lo tanto, la mayoría del software PHP que proviene de la comunidad PHP debe confiar en las características del lenguaje antiguo y en la funcionalidad paralizada, ya que están diseñadas para ejecutarse en entornos de alojamiento compartido.
VI.I TAREAS DE ANTECEDENTES
Una tarea en segundo plano es algo que muchas aplicaciones querrán realizar para preservar la experiencia del usuario al proporcionar un tiempo de respuesta rápido. Son ciertas cosas que pueden tomar mucho tiempo en completarse. Por ejemplo, si su usuario intentó eliminar una gran cantidad de datos, es posible que la aplicación lo ejecute como una tarea en segundo plano, y de esta manera el usuario no necesita esperar a que se complete esa acción. También hay diferentes formas de ejecutar una tarea en segundo plano. Tiene hilos, lo que puede o no ser una buena idea, ya que podría bloquear su aplicación completa. También hay tareas asíncronas, que se ejecutan pero se retrasan o pueden ejecutar pequeñas partes de la operación a la vez. Las otras soluciones incluyen ejecutar una tarea en un proceso diferente, servidor o grupos de servidores.
Para Ruby on Rails, tiene Threads fuera de la caja, pero hay una gran cantidad de Gems (bibliotecas) para considerar que están diseñadas para trabajar con Ruby on Rails. Workling, Starling, Resque y muchos otros le ayudarán a diseñar su aplicación para que pueda ejecutar un proceso largo, decir algo como un correo electrónico, cálculo o incluso una tarea programada.
Sin embargo, para PHP, la imagen es muy diferente. Hay una extensión llamada pthread, pero no está diseñada para un tipo de tarea de “disparar y olvidarse”, como un correo electrónico. En cambio, te obligan a tomar algunas decisiones, lo que también puedes hacer en Ruby on Rails. Lo primero es diseñar su aplicación correctamente para que funcione junto con un sistema de administración de tareas. Por ejemplo, Gearman es un marco independiente del idioma para procesar trabajos. Se conecta a todos los idiomas y lo único que tiene que hacer la aplicación es comunicarse con él con una carga de trabajo, como un correo electrónico.
Por lo tanto, aunque las tareas en segundo plano pueden ser realmente sencillas en Ruby on Rails, generalmente conducen a un mal rendimiento o a aplicaciones que no pueden escalar. La solución final que muchos desarrolladores eligen es algo así como Gearman (que también se puede usar en Ruby on Rails). Esto solo lleva al punto de lo fácil que es retrasar una parte complicada de su aplicación en una etapa posterior, cuando se convierte en un problema. La otra opción en PHP es seguir lanzando una solicitud al servidor web, y esa solicitud verificará que una tarea lo haga. Esto normalmente lo ejecuta un programador de tareas basado en el tiempo, como cron, chronos, launchd, cronie, etc. Los programadores de trabajos basados en el tiempo son los que más se utilizan cuando se trata de aplicaciones PHP.
VI.II MOTORES DE PLANTILLA
Un motor de plantillas es una forma de crear y reutilizar interfaces de usuario basadas en información dinámica impulsada por datos. Hay más de 50 motores de plantillas en PHP, sin incluir el hecho de que puede usar PHP como motor de plantillas. Por otro lado, Ruby solo tiene varios motores de plantillas útiles. En el contexto de Ruby on Rails, solo hay 2-3 motores de plantillas que funcionarían bien con ese marco.
VII cierre
Entonces, recuerde que hay mucho que considerar al crear una aplicación y si realmente hay algo que quitar de este artículo, no es que sea una solución pobre, es solo que el idioma es la menor de sus preocupaciones. Aquí hay un resumen rápido de los elementos a los que puede hacer referencia:
PHP
- Gran grupo de desarrolladores
- Soluciones asequibles
- Amplio conocimiento
- Diversa selección de herramientas
- Fácil de aprender
Ruby on Rails
- Rápido de comercializar
- Más fácil de encontrar trabajadores calificados
- Comunidad apasionada
- Siempre cambiando