entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

3votos

dudas acerca del desarrollo web

quisiera que me aclaracen los conceptos del desarrollo web porque hay muchas cosas que no logro entender bien, la questiones que voy a plantear quizas no sea una cosa dificil pero les pido que sean los mas claros y especificos posible.

mucho se habla de la tecnologia de nodejs famoso y apreciado por muchos desarrolladores web. la duda que me surge es la siguiente, cual es la diferencia entre programar con php y frameworks php si con nodejs puedes hacer lo mismo, si no es asi que cosa marca la diferencia al momento de desarrollar apliicaiones web, osea cual seria el mas conveniente para un developer principiante

segundo cual es la gracia de programar un sitio desde cero cuando se puede utilizar un gestor de contenidos CMS como drupal,jomla y wordpress, osea esto hace casi todo el trabajo, no entiendo que motivo hay de aprender tecnologias frontend si hay generadores de layouts bien hechos.

tercerco es tecnicamente posible combinar varias tecnologias como las que apena mencione, frameworks y cms? para mi punto de vista creo que es una eleccion que puede variar segun el proyecto. ademas creo que cuando se utiliza un cms no se puede subir ficheros html , js y css porque no hay una opcion que permita modificar

cuarto no entiendo que de util tienen los frameworks de javascript para desarrollar apliaciones, que marca la diferencia entre una aplicacion web basada en distintas tecnologias.

2 Respuestas

3votos

magarzon Puntos18700

Seguramente para esas preguntas tienes una respuesta por cada programador que te conteste, así que te voy a contestar lo que yo pienso, desde mi experiencia como programador (más de 20 años), utilizando múltiples lenguajes (C++, Java, PHP, Javascript, Objective C, ...) y frameworks (Symfony, AngularJS, ...)

A la primera pregunta, la diferencia entre un lenguaje de programación y otro está fundamentalmente en el sistema que quieres construir. Así, si tu sistema requiere solucionar problemas de concurrencia, un lenguaje como Go es ideal. Si necesitas realizar muchas operaciones de entrada/salida (accesos a bases de datos, ficheros, ...), nodeJS es muy fuerte (por su estilo asíncrono). PHP es un lenguaje que lleva mucho más tiempo entre nosotros, por lo que hereda algunas deficiencias (que se han ido solucionando más o menos), pero por otra parte puede resultar mucho más fácil de aprender que otros (además también es más fácil de encontrar buenos programadores con experiencia, por lo que si eres un gestor de proyectos, puede ser también importantes en términos económicos). También hay que tener en cuenta que, al tener cada lenguaje sus peculiaridades, no vas a pensar de la misma forma al diseñar una solución por ejemplo con javascript/nodeJS, que es asíncrono, que con por ejemplo PHP, que es síncrono. Por último, en cuanto a rendimiento, como decía al principio cada lenguaje tiene sus puntos fuertes, pero en términos generales es posible configurar un sistema en cualquier lenguaje para que tenga el mismo rendimiento que otro (eso sí, puede que cueste más en términos de hardware o en tiempo de diseño). Para terminar de contestar a esta pregunta, PHP y javascript son fáciles de aprender, pero son lenguajes antiguos que pueden hacer que un programador principiante adopte ciertos "defectos". Aunque cueste más, yo empezaría con un lenguaje como Java, mucho más completo y con unas reglas más definidas.

Segunda pregunta. Programar algo desde cero tiene dos ventajas inmediatas: aprendes muchísimo más (sobre todo de tus errores) y te produce mucha más satisfacción. Además, hay sistemas/webs que son imposibles de crear con CMS, y otros que no podrían explotar todas sus posibilidades encorsetados dentro de las restricciones de un CMS. Por ejemplo, le doy un premio al que me haga una web de apuestas con Wordpress. Eso sí, tampoco hay que reinventar la rueda, y una vez que ya hayas hecho tu proyecto de prueba/educación desde cero, yo utilizaría un framework, que me dé las cosas básicas ya hechas.

Tercera: es tan posible, que de hecho Drupal fue rediseñado para utilizar componentes del framework Symfony. Y es bastante común añadir funcionalidades que el CMS no te da utilizando frameworks, tanto de servidor como de cliente.

Cuarta: los frameworks javascript permiten por un lado, por su característica de framework, no repetir cosas que ya alguien ha hecho y están suficientemente probadas, y por otro hacer tu código más modular y mantenible (hasta cierto punto evita el llamado "código espagueti"). Además, suelen estar preparados para funcionar en diferentes navegadores y versiones de los mismos, algo (como muchas otras cosas más) que si lo programas tú "a pelo", te vas a tener que pelear con ello. De todas formas, también está el problema de que con los framework tipo AngularJS la gente piensa que todas las aplicaciones webs son SPA (Single Page Application), y acaban desarrollando webs muy malas en usabilidad y código. Hay aplicaciones web que son claramente SPA (por ejemplo, una web de gestión de facturación), y otras en los que será posible utilizar un framework dado para parte de la funcionalidad, pero no para toda. Afortunadamente también parece que la dirección que están siguiendo estos frameworks, orientándose más a componentes reutilizables (por ejemplo la versión 2 de AngularJS o React), los alejan más del modelo SPA y se acercan más a una programación/diseño parecida a los framework de servidor.

Espero que más o menos te haya aclarado algo, si tienes dudas o quieres ampliar información sobre algo, comenta aquí.

Saludos.

steven comentado Sep 19, 2016

muchisimas gracias por responder lo aprecio mucho, estaba convencido que nadie iba a darle interes a mi pregunta. bueno en fin plantee la pregunta porque tengo algunas ideas y me gustaria poderlo llevarlas a cabo, lo que quiero es crear un micro portal de apuestas online de prueba similar a un juego pero sin recurrir a los frameworks pesados, creo que lo unico necesario son javascript para las interacciones y dinamismo, php y msql, por ahi he escuchado que seria mejor utilizar nosql por varias razones, en suma tambien me gustaria a medida del tiempo poder gestionar el contenido sin necesidad de entrar directamente al codigo como por ejemplo seria anadir mas contenido, he intentado instalar drupal en mi servidor local pero por causas anonimas este no funciona, he provado con dos versiones la 7y8, me aparece un error en la pagina, en cambio si instalo otro cms como wordpress no tengo problemas. regresando al tema principal
quisiera saber tu opinion al respecto, cuentame segun tu experiencia cuanto es factible esta idea.

magarzon comentado Sep 19, 2016

Si la web va a ser de pruebas, y nada serio, solo para aprender, lo puedes desarrollar con lo que quieras.

Si ya quieres llegar a algo más serio, Drupal no es la herramienta. Si apuestas por PHP, yo utilizaría Symfony. Pero, si tu página va a tener mucha interactividad cliente (AngularJS por ejemplo), la verdad es que en el backend no te hace falta ni un framework (como servidor web, para otras cosas puede que si te haga falta, como te comentaré más tarde).

En cuanto a la base de datos, pasa lo mismo que lo que te comentaba de los lenguajes en mi respuesta: todo depende de cómo la utilices y para qué la quieres exactamente. De hecho, incluso hay muchos sistemas mixtos que utilizan una base de datos mysql para tema de usuarios y una nosql para datos más temporales o grandes cantidades de datos (como pueden ser los datos de los partidos).

Porque como te decía antes, un sistema de este tipo se compone de dos partes: la parte de gestión de los datos, que estaría compuesto por una fuente de datos (de dónde proceden los partidos sobre los que se apuesta) y un backoffice o herramienta de administración para esos datos, y luego por otra la web desde la que se consumen esos datos y los usuarios pueden apostar.

La primera puede ser un Symfony o un NodeJS obteniendo los datos de una fuente, insertándolos en una base de datos MongoDB, por ejemplo, y haciendo algún tratamiento de los datos (no sé, filtrados, por ejemplo) y que exponga esos datos a través de un API.

La segunda te vale con una aplicación AngularJS o React o similar que llame a ese API de datos.

Y no te puedo dar mucho más detalle, porque justamente a eso es a lo que me dedico ahora mismo y no quiero incumplir ninguna norma de confidencialidad de mi empresa ;)

3votos

Leonardo-Tadei Puntos211100

Hola @stevenpro97,

Tal vez hubiera sido mejor plantear cada tema como una pregunta aparte, así podíamos profundizar más en cada aspecto, pero así, en general:

1) a priori no hay diferencias en el sentido de que ambas formas de trabajar permiten hacer lo mismo. Claro que cada lenguaje está más optimizado para ciertas tareas, por lo que hacer algunas cosas puede dar más trabajo en uno, pero habrá otras cosas que te darán más trabajo en otros.
NodeJS implica programar en JavaScript del lado del servidor, por lo que tiene un espectro de aplicación menor porque no toda plataforma de hosting lo soporta.
Luego, si es para aprender, para mi gusto la forma en que JavaScript maneja el ámbito de variables y funciones es demasiado laxo para desarrollar buenas prácticas de programación. No es que PHP sea un lenguaje fuertemente tipado, que es lo ideal para aprender, pero al menos los ámbitos son más riguros.

2) no tiene ninguna gracia programar algo cuando puede usarse un CMS ya hecho... la cuestión es que no todo software es un CMS, y habrá que buscar otro software específico o desarrollar uno.
Luego está la cuestión de que si usás un CMS en realidad no estás programando nada: sos un usuario avanzado del software que escriben otros y le instalás plugins o personalizás el CSS y nada más. Esto implica conocer bien las funcinalidades del CMS y hacer buena ingeniería de requerimientos para ver qué se necesita, y luego detetrminar su un CMS con X plugins resuleve el problema o si será necesaria desarrollar software.

3) No, o a lo sumo ni. Cuando hablás de un CMS, estás hablando de un software ya hecho del que serás usuario (un usuario avanzado si se requieren adaptaciones o personalizanoes, pero un usuario al fin). Un framework en cambio es una pieza de código que resuleve u problema específico y alrededor de la cual se organizará tu aplicación: usar un framework es tarea de programadores.
Ahora bien, si el CMS está escrito usando un framework debajo, será extremadamente difícil ampliarlo usando otro framework. CMS = Aplicación vs Framework = Bibliotecas de software o clases.

4) Actualmente yo tampoco... Volvamos al concepto de que un framework es una pieza de código extensible que resuelve un problema:

  • por ejemplo JQuery se creó para resolver los problemas de interoperabilidad entre las diferentes implementaciones de JavaScript. Ahora que los navegadores implementan mejor el standard y hace HTML+CSS3, no hay problemas de interoperatibilidad, así que no tiene razón de ser. Lo que hay es mucha gente que le agarró la mano a JQuery y que desconoce como hacer las mismas cosas en JavScript puro y duro.
  • NodeJS o AngularJS se crearon como frameworks para desarrollar aplicaciones en JavaScript del lado del servidor. Si querés que tu aplicación sea JavaScript end-to-end, porque por ejemplo tu equipo de desarrolladores maneja bien ese lenguajo o vos no querés aprender otro, es una exelente opción.
    Pero en este punto tenemos que distinguir claramente el usar JavaScript del lado del cliente o usarlo del lado del servidor, porque son dos escenarios de uso completamente diferentes.

Otro factor más a tener en cuenta, es que hay tecnologías que se ponen de moda. Entonces las empresas que las usan consiguen trabajo y clientes que leen revistas técnicas, con lo que necesitan programadores para usar esas tecnologías. Luego, como aprender una tecnología tiene una curva de aprendizaje pronunciada, los programadores la siguen usando y no aprenden otras nuevas, creando fenómenos extraños, como las páginas con Flash 7 u 8 años después de demostrado que era una tecnología horrible, insegura y cara de mantener, por citar solo un ejemplo.

No hay un lenguaje mejor que otro: insisto en que los programadores no somos estúpidos, y si hubiera algo superior a todo lo demás, lo estaríamos usando masivamente.

Después de todo "hay dos clases de lenguaje d programación: los que nadie usa y los de que todo el mundo se queja".

Saludos cordiales!

PD: que no te de pereza plantear alguna de estas cosas como una pregunta independiente, así podemos profundizar la discusión.

Por favor, accede o regístrate para responder a esta pregunta.

¿Conoces alguien que puede responder?
¡Comparte esta pregunta!


Actividad Reciente

¿Eres Usuario Apple?

...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta