¿Rails y Django abstraen demasiado para los principiantes? ¿Comenzar con webapp2 (utilizado en el curso Udacity CS253) sentaría una mejor base que saltar directamente a algo como Rails o Django?

Bien, ¿quieres empezar desde cero? Muy bien, veamos cómo va.

Supongamos que tiene un ‘marco web micro’: el idioma no importa. Solo que puede interpretar solicitudes HTTP y llamar a un método apropiado de un objeto que hace ‘algo’ y devuelve algún resultado (no necesariamente y página HTML por ahora, sino solo algo)

Ejemplo:
OBTENGA http://someurl.com/names
El servidor regresa: “Nupul, Jeremy, Michael, Lloyd” (Las 4 personas que actualmente han respondido esta pregunta ”

Tomemos una analogía de construir un automóvil. Digamos que quieres empezar desde cero. Aquí está todo lo que tiene y necesita saber cómo armarlo:


Aprender a armarlo es una GRAN hazaña por derecho propio. Entonces dice “umm … ¿puedo obtener al menos un chasis con eje y ruedas, motor y volante? Mejor si está conectado o con un ensamblaje mínimo para que al menos pueda comenzar” (juego de palabras).


Bien, entonces obtienes un “marco de micro web” que te permite al menos manejar el chasis (¿pero qué divertido es eso?)

Pero luego unes el resto: el cuerpo, los asientos, el interior, las ventanas (y otros chapados en oro como aire acondicionado, reproductor de música, etc.):

Bien, eso es MUCHO trabajo y para cuando termines, estarás bastante feliz y estarías extremadamente seguro de armar un auto desde cero (suponiendo que te den el chasis + motor + rueda + dirección combinación de ruedas

Entonces, si reúne las cosas desde cero para una aplicación web, esto es lo que aprenderá:

  • El marco web micro se integra
  • Un buen ORM para consultar la base de datos (por ejemplo, SQLAlchemy si se usa Python o Hibernate para Java) junto con SQL antiguo simple (suponiendo que lo haga)
  • Un lenguaje de plantillas para crear páginas HTML pobladas por los datos que obtiene de la base de datos y que deben devolverse al usuario
  • Toneladas de HTML / CSS / JavaScript para una aplicación web receptiva, más aún si se trata de una aplicación web de una sola página (puede usar marcos como Backbone.js o Ember.js, etc., para facilitar la vida)
  • Las mejores prácticas que puede aprender y tropezar con su curso de construcción del automóvil desde cero (er, aplicación web)

Ahora ESTO es MUY satisfactorio. Créeme. Una vez que haya terminado, mostrará su automóvil (aplicación) tanto como sea posible. Pero después de un tiempo alguien vendrá y dirá:

Some1: “Oye, ¿puedes construirme un auto como el tuyo?”
Estás seguro”
Some1: “¿Cuánto costaría?”
Usted: “Este me llevó $ 65,000 y unos 6 meses para construirlo”
Some1: “Encantado de conocerte”

Obtener la deriva? Cuesta tres veces más y lleva el doble de tiempo hacer todo usted mismo (solo una regla general). En una introspección adicional, te das cuenta de que aunque realmente disfrutaste construir el auto desde cero, no estás preparado para hacerlo de nuevo. ¿Solución? Desea algo que ya haya reunido las partes principales del automóvil para que pueda concentrarse en diseñar el automóvil en sí y no preocuparse por poner el motor, el volante, los asientos, etc., todos juntos.

Algo como esto:


Donde solo necesita conectar los diversos componentes y tener un automóvil casi listo en menos tiempo. Básicamente, implica que obtienes conectividad / consulta de bases de datos, plantillas y manejo de solicitudes HTTP y otras cosas buenas, todo incluido en el marco y todo lo que aprendes es el “cómo armar las cosas”. Si ha construido un automóvil desde cero, ya conoce los conceptos básicos y puede recoger estos “componentes listos para usar” y armar un automóvil con relativa rapidez. Pero si nunca antes has armado un auto, puedes conectar todo y rezar 😉

Lo que significa es que si lo está haciendo por primera vez, vaya con un marco de micro web. Le dará una inmensa comprensión y apreciación del desarrollo de aplicaciones web. Una vez que comprenda los aspectos internos, tendrá un mejor control sobre lo que los sistemas estándar tienen para ofrecer y cómo encadenarlos. Cuando encuentre un problema, podrá ‘adivinar’ la fuente dado su conocimiento de las partes internas del automóvil, mejor. Eso te ahorrará pesadillas a la larga.

Según su pregunta, parece que recién está entrando en el desarrollo de aplicaciones web. Mi sugerencia, vaya con un marco micro y un enfoque de bricolaje y sienta el dolor / placer. Luego, apreciará lo que estos marcos tienen para ofrecer, así como sus limitaciones. Puede cambiar lentamente varias partes del marco por implementaciones personalizadas u otras implementaciones populares para que pueda modificar su automóvil para tener partes que le gusten en lugar de lo que le dieron 🙂

¿Tiene sentido?

La mejor de las suertes.

Si su principal preocupación es hacer Desarrollo Web , comience con los simples Micro-frameworks y vea cómo le convienen ( Flask y Sinatra ), y sienta el calor.

Después de luchar durante algunas semanas para hacer las cosas y su enfoque para construir todo desde cero parece ser abrumador ahora debido a la complejidad y la curva de aprendizaje empinada de cualquier lenguaje ( Python o Ruby ), luego buscará en Google nuevamente para frameworks flame- guerras como

¿Cuál es mejor marco?
¿Cuáles son las diferencias entre Django o Rails, Flask o Sinatra, Django o Pyramid?

Después de leer varios blogs y SO y Quora Threads, decidirá apegarse a un marco y nuevamente tratará de aprender todos los fundamentos del marco, y a medida que pasen semanas y meses, incluida la fase de aprendizaje y experimentación, se dará cuenta de que todos los marcos funcionan el mismo trabajo y ha perdido mucho tiempo aprendiendo varios marcos que literalmente hace el mismo trabajo.

Probé todas estas cosas y finalmente decidí elegir Pyramid Framework y, a su debido tiempo, pude aprender todos los conceptos básicos y avanzados del Framework y decidí mantenerlo y ahora siento que mi elección fue buena y estoy bastante contento con mi elección y puedo sentir la flexibilidad que proporciona el Marco ya que he probado todos los marcos por un tiempo.

Entonces, lo que aprendí de mi experiencia es:

  • Pruebe ambos idiomas, aprenda la sintaxis básica y siga los simples tutoriales del blog e intente extenderlos ( NO DEMASIADO )
  • Elija el idioma que mejor se adapte a usted ( NO SUS NECESIDADES ).
  • Pruebe todos los marcos de ese idioma en particular y vea cómo le beneficia en lugar de escribir una aplicación desde cero.
    Por ejemplo: si desea una aplicación CRUD , entonces optar por Pyramid o Flask o Rails es tan tonto cuando sabe que Django puede hacer ese trabajo sin problemas y puede poner la aplicación en producción muy pronto.
    1. Si su elección es Python, vaya con Pyramid y SQLAlchemy si desea una gran flexibilidad y si es lo suficientemente bueno en Python Language y elija Django si desea crear un próximo Mashable (sin juego de palabras) o algún gran motor de blogs. No vaya demasiado lejos con Flask, de lo contrario terminará reinventando la rueda nuevamente, es adecuado para aplicaciones de una sola página.
    2. En mi experiencia personal, sentí que Ruby and Rails tiene demasiada magia y parece ayudarte, pero terminarás en el caos más tarde, ya que no recordarás qué método hace qué en tu aplicación, todo será mágico y simplemente funcionará, ajustando los rieles aplicación después de un mes será un dolor en el culo.

Intenté aprender PHP , Rails , Python y probé algunos tutoriales en los tres y también probé varios marcos en todos los lenguajes como CodeIgniter , Laravel , Flask , Pyramid , Django , Rails y Sinatra .

La mejor de las suertes !

Esto huele a “optimización” prematura. En realidad, la idea de que hay una sola respuesta generalmente “correcta” a esta pregunta es una maraña podrida de falacias lógicas.

Una forma de cortar ese nudo es considerar que las respuestas tienden a suponer que cada programador principiante aspira a convertirse en un programador de aplicaciones. Esas personas ciertamente existen, pero a menudo, los principiantes solo aspiran a convertirse en programadores de una aplicación específica. Quieren rascarse su propio picor. Una vez que lo hayan hecho, podrían detectar el error y comenzar a construir otro software.

Encuentro que las personas que he conocido saben que han estado haciendo software desde el comienzo de la era de las microcomputadoras son más propensas a reconocer la validez e importancia de las personas que quieren rascarse su propio picor, y proporcionan herramientas efectivas para permitirles cumplir esa aspiración

En mi experiencia, los proyectos se desvían rápidamente del camino bien transitado (al menos los interesantes) y pronto comienzas a pasar más tiempo luchando contra las restricciones existentes que dicta cada marco de lo que construirías solo lo que necesitas en primer lugar.

Sin embargo, construir todo desde cero tampoco es práctico. Como Nupul ya mencionó, incluso si lo llevas a cabo para el primer proyecto, rápidamente se volverá aburrido (y aún requerirá mucho tiempo) durante los siguientes.

Por lo tanto, mi enfoque preferido ahora es usar un micro-marco que no sea demasiado obstinado sobre aspectos particulares, pero que todavía proporcione un buen punto de partida con respecto a los complementos y las mejores prácticas.

Personalmente, me decidí por el Marco de desarrollo de aplicaciones web The Pyramid v1.3.4 y no me he arrepentido ni una sola vez en los últimos cuatro años; hasta ahora, ha sido el equilibrio perfecto entre comodidad y flexibilidad.

He probado muchos Frameworks (Java / Servlets, .Net, Symfony II, Django, Yii) después de intentar reinventar la rueda creando mi propia aplicación con mis propios componentes / con un microframework. Si bien hay muchas diferencias, tienen una cosa en común: si sabe lo que podría esperar de los marcos, es extremadamente simple agregar las cosas que desea a su proyecto.

Pero … creo que nunca aprendí el valor de un gran marco de trabajo que funcione tan rápido como lo hice ahora si nunca hago nada por mí mismo.

Mi experiencia con Rails fue que era casi demasiado “mágico”. Hizo tantas cosas por defecto que lo encontré engorroso. No me gusta repetir cosas que no tengo que hacer, pero el hecho de que la mayoría de las cosas se hicieran por mí, me complicaba la vida al tratar de entender cómo resolver situaciones específicas, ya que no sabía nada sobre lo que estaba sucediendo. en debajo. Para ser justos, esto fue en el momento en que comenzó el boom de Ruby on Rails y 47 Signals estaba de moda, así que estoy seguro de que las cosas cambiaron mucho desde entonces.

Un marco de Python muy fácil que recomiendo es Flask. Es extremadamente liviano y puede hacer lo básico para el manejo de solicitudes y el procesamiento de plantillas, literalmente, en muy poco tiempo. También puede echar un vistazo a Appier, un marco web en el que estoy involucrado que tiene como objetivo lograr un equilibrio entre el minimalismo excesivo de Flask y la sobreingeniería de Django.

Creo que hay cuatro pasos para aprender Ruby y Ruby on Rails. El tutorial de Michael Hartl te ayuda con los dos primeros.

1) Aprende Ruby básico (cubierto en su tutorial)
2) Aprenda los conceptos básicos de Ruby on Rails (cubierto en su tutorial)

Después de esto, si va a querer entrar en un desarrollo serio de Rails y un desarrollo serio de aplicaciones que pueda aprovechar todas las características que ofrece Rails, probablemente querrá poder entender un poco del código fuente de Rails, que es También es una excelente manera de mejorar tus habilidades de Ruby. Sin embargo, si va a comprender el código fuente de Rails (o el código de cualquier marco), necesita aprender más sobre Ruby, por ejemplo, sobre su modelo de objetos. Asi que,

3) Aprenda Ruby avanzado (patrones de diseño, modelo de objetos de Ruby, método perdido, etc.)
4) Aprende los rieles avanzados

Entonces, no, no creo que deba comenzar con un marco más simple.

Si quieres construir grandes edificios, ¡debes tener una base sólida!

Si eres un principiante absoluto, primero debes aprender conceptos básicos de Python y luego saltar al mundo de los frameworks web. Esto facilitará la curva de aprendizaje para usted y no se sentirá perdido.

Y sí, creo que comenzar el desarrollo web con micro frameworks siempre lo ayudará a largo plazo sin restricciones para escribir productos complejos.

No lo creo, creo que los marcos como Django funcionan bien porque obligan a los novatos a usar buenos hábitos y estándares.

Creo que los nuevos usuarios también deberían tratar de aprender el lenguaje básico, pero estos son excelentes comienzos.