php - tipos - ¿Existe un lenguaje de alto nivel para la web?
que es la programacion web y para que sirve (19)
Preámbulo
Para construir sitios web dinámicos, tenemos que dominar al menos cuatro idiomas:
- HTML para la estructura de las páginas web.
- CSS para maquetación y diseño.
- JavaScript para la interactividad
- Un lenguaje para reglas de negocio o datos dinámicos.
Además, hay SQL para almacenamiento persistente, Memcache para sesiones y almacenamiento en caché, API para los diferentes sistemas de administración de contenido. También deberíamos considerar interactuar con OpenID, Facebook, Twitter, OpenSocial en la construcción de una aplicación web, para que sea interesante.
En definitiva, ¡es un completo desastre!
Si tienes en cuenta dos objetivos:
- Enseñando desarrollo web a niños.
- Mantenerse productivo como equipo
Pregunta
¿Qué sistemas de alto nivel existen que unifican HTML + CSS + Javascript + ( Insertar lenguaje de alto nivel aquí , se prefiere PHP)?
Fondo
- Soy un ingeniero de software con más de 15 años de experiencia como líder de proyectos y desarrollador con tecnologías como Broadvision, Autonomy, Enterprise Java y Oracle.
Durante los últimos años, me he centrado en el desarrollo de sitios web de la comunidad, utilizando marcos de trabajo de Drupal o PHP como CakePHP. Me gusta el desarrollo web y disfruto del desajuste de impedancia entre las tecnologías involucradas. Aún así, la conclusión inevitable a la que llego es que debe haber una mejor manera .
- Soy padre de dos hijos (13 y 9), y aunque no quiero que se conviertan en programadores, me gustaría que comprendan las computadoras como algo más que máquinas de juego. Me gusta motivarlos a jugar un poco con el desarrollo web para expresarse.
Cada vez que les muestro partes y piezas, me encantaría tener un conjunto de herramientas que les permita crear resultados "interesantes" en una o dos horas los domingos por la tarde.
¿Cómo se supone que uno debe enseñar desarrollo web a los niños?
Un ejército de niños en desarrollo web es lo que ha degradado nuestra profesión, ya que casi todos se llaman programadores, mientras que cada vez nos cuesta más distanciarnos de ellos y obtener un salario decente.
¿Muchos lenguajes y tecnologías para dominar? Es algo bueno. Que haya alguna barrera de entrada para unirse a las filas de los desarrolladores.
AGREGADO: Al seguir los comentarios puedo ver que no me he dejado totalmente claro. No digo nada sobre la edad, ya sean 10, 30, 50 u 80. Se trata de actitud. Si una persona entiende y acepta el hecho de que hay mucho más en la profesión que mover los controles con un mouse en algún diseñador o CMS. Se puede obtener mucho conocimiento, incluidos los conceptos básicos de CS, algoritmos, estructuras de datos, bases de datos, arquitectura, extensibilidad, mantenimiento, rendimiento, escalabilidad, usabilidad, marketing y mucho más que pertenecen al taller de un desarrollador de software profesional. Yo, una persona que ignora eso y no hace un movimiento para educarse y esforzarse por ser más y más competentes, no pertenece a la profesión. Y que esta opinión sea sesgada.
" Links es un nuevo lenguaje de programación diseñado para facilitar la programación web ... Los enlaces facilitan el problema de desajuste de impedancia al proporcionar un lenguaje único para los tres niveles. El sistema genera código para cada nivel; por ejemplo, la traducción de un código a Javascript para el navegador, algunos en un bytecode para el servidor, y algunos en SQL para la base de datos ".
Al principio no iba a publicar esto, ya que es un proyecto de investigación, no un sistema de producción; pero todas estas respuestas que dicen "así es como es, lidiar con eso" pidieron un contraejemplo.
¿Cómo se supone que debes enseñar desarrollo web a los niños? Wow, eso es espinoso. ¿Cómo se hace para enseñarles cirugía, ley de propiedad intelectual o ingeniería civil? ¿O para el caso la mecánica automotriz, la plomería o la contratación general?
¿Has pensado en aparecer en una cinta de Sesame Street?
A Elmo no le gusta cuando trivializa su profesión.
Creo que el problema con el desarrollo web es que no fue diseñado originalmente para su uso actual. Creamos aplicaciones de cliente enriquecidas dentro de un navegador con HTML + CSS + JavaScript y cualquier tecnología de servidor que la genere. Sí, funciona, pero es un dolor, especialmente con esas incompatibilidades molestas del navegador. La existencia de Flash y Silverlight lo demuestra. Te permiten construir tu aplicación con una sola tecnología, aún dentro del navegador. Sin embargo, las desventajas de necesitar un complemento para tu contenido son obvias.
Creo que tu enfoque podría necesitar ser repensado. Toma esto por lo que es, mi opinión, pero creo que este pedido podría funcionar mejor.
Principales prioridades: (sin orden particular)
- Desarrollar habilidades para resolver problemas
- Sé productivo como equipo
Siguiente:
- Habilidades básicas de programación (PHP, Python, etc.)
Después de que saben cómo resolver problemas como individuos y como equipo, pueden pasar a aspectos específicos como:
- Modelo cliente / servidor
- Marcado (HTML, XHTML, XML, etc.)
- Estilo (CSS)
- Scripting del lado del cliente (JavaScript / jQuery)
- Scripting del lado del servidor (PHP, Ruby, etc.)
Aumente su conocimiento de lo que está involucrado pieza a pieza en lugar de saltar al extremo profundo del bate: se sentirán abrumados rápidamente.
En este punto, puede comenzar a introducir cosas como E / S de archivos y bases de datos.
Esto les dará un conjunto de habilidades bastante completo. Desde aquí realmente pueden empezar a aprender.
Además, uno puede tener que lidiar con SQL para el almacenamiento persistente, Memcache para sesiones y almacenamiento en caché, API de sistemas de administración de contenido, OpenID, Facebook, Twitter, OpenSocial, etc. para construir algo interesante.
Estos son temas enteros en sí mismos, no se pueden morder todos de una sola vez. Especialmente si estás llevando a estas personas desde 0. Antes de que puedas construir algo interesante, tienes que aprender a construir algo mundano.
HTML5 probablemente estará más en la vena de lo que estás buscando en lugar de Flash o Silverlight, pero aún no está aquí ... Aunque el soporte se está construyendo.
Pequeños pasos, Olav: si esto fuera The Matrix , podrías descargar toda esa información de una sola vez, pero no estamos allí ... todavía ;-)
Por el momento, y el futuro próximo, el desarrollo web es la sinergia de muchas tecnologías diferentes que trabajan juntas para ofrecer una experiencia de usuario interesante.
Bueno, esos son mis 2 centavos.
Echa un vistazo a Opa: http://opalang.org/
Esta es una tecnología de desarrollo web prometedora. Parece bastante prometedor. He hecho un montón de desarrollo web en los últimos dos años y si tuviera que hacer una predicción sobre cuál sería el nuevo marco / lenguaje / tecnología, será la forma principal en que se desarrollan los sitios web en ~ 5-10 años, lo diría Será Opa.
La documentación es excelente, la comunidad es excelente, los tutoriales y la capacidad de respuesta a las preguntas del equipo que trabaja en el proyecto es excelente. En general, parecen tener una atención al detalle en lo que respecta al desarrollo de este nuevo marco que parece ser incomparable.
La industria del software está sufriendo por personas no calificadas que no hacen más que crear productos de baja calidad y al mismo tiempo alejar a esta profesión de convertirse en una verdadera disciplina de ingeniería. Esto no es algo para certificarse. Por el amor de Dios, no "enseñe" a nadie el desarrollo de software. Explíqueles que la creación de un gran software solo surge como resultado de años de experiencia y una gran cantidad de conocimiento de tecnologías pasadas y actuales. Lo peor que puede hacer es presentar a otro desarrollador a medio hacer que cree trabajo para otros que trabajan con ellos. Diles que se eduquen. Sé que esta no es la respuesta que probablemente quisiste escuchar, pero quería que se leyera esto.
La naturaleza multidisciplinaria del desarrollo web es una de las cosas que hace que sea un placer trabajar, especialmente en un entorno de equipo.
Para trabajar bien como equipo, naturalmente se reúne con un grupo de personas con una amplia experiencia, desde personas de UI / gráficos hasta administradores de administradores de bases de datos y administradores de sistemas. Incluso dentro de una sola capa del grupo (por ejemplo, programadores de back-end), cada persona generalmente se especializa en un conjunto diferente, por ejemplo, algunas personas pueden tener más experiencia con la interfaz de usuario, otras con los datos.
Tomaría esta variedad cualquier día, en comparación con trabajar en una sala de 10 programadores java, todos trabajando en alguna aplicación de middleware.
La programación (PHP / JS) y el formato de documento (HTML / CSS) son 2 cosas diferentes. Aprender a programar en PHP y JS al mismo tiempo también será difícil.
Debe centrarse en HTML y JS en el cliente al inicio. También puedes dejar que programen javascript en el servidor . Esto hará que sea solo un lenguaje de programación, y se centrará en HTML sobre CSS para empezar.
Una vez que hayan aprendido los conceptos básicos de JS y HTML, puede enseñarles un lenguaje de programación del lado del servidor más utilizado (como PHP, Ruby, etc.) y CSS.
Lo más cercano que creo que obtendrás es .NET. Hay muchos marcos para muchos idiomas, pero ninguno que conozca que maneje absolutamente todo. Además, no debe intentar convencer a los niños de que la programación es un paseo por el parque. Es una carrera difícil, que requiere mucho estudio y mantenimiento. Trabajamos con tecnologías que están aquí hoy, y se han ido mañana.
Si lo piensas bien, la programación no es diferente a la carpintería o la aeronáutica. Casi cualquier profesión que elijas requerirá que aprendas muchas cosas diferentes para ser mejor en lo que haces.
Los idiomas son la menor de tus preocupaciones. Es el dominio del problema con el que trabajan que es complejo. El uso de diferentes idiomas en realidad hace que las cosas sean más manejables porque a) Hace que los límites sean explícitos yb) los idiomas se pueden optimizar para el dominio.
Muchas tecnologías para dominar no es algo bueno. Necesitamos un Visual Basic para la web, sin importar lo que digan los elitistas.
Necesitas diferentes idiomas para diferentes propósitos. En la mayoría de las aplicaciones web, en realidad hay bastante, por lo que necesita los diferentes idiomas y soluciones.
Si el objetivo es unificar en un solo idioma, puede hacerlo. Puede usar Javascript en el servidor, y luego construir las páginas usando document.createElement()
y aplicarles estilos directamente a la propiedad de styles
. Y en el servidor, almacene sus datos directamente en archivos con Javascript.
Obviamente esto no funcionaría tan bien. HTML no es perfecto, pero hay una razón por la que es tan ubicuo: hace lo que hace de manera simple y bien. CSS es complicado y demasiado simplista, pero la idea subyacente de definir reglas que se pueden cambiar para expresar su diseño es acertada. Y el SQL puede ser difícil de comprender a veces, pero expresar las consultas de la base de datos de esta manera es expresivo y en realidad funciona bastante bien.
Dicho esto, no estoy diciendo que haya o deba haber una arquitectura. No debería haber. Cada proyecto debe utilizar una arquitectura acorde con sus requerimientos.
En su próximo proyecto, intente simplificar: ¿realmente necesita una base de datos? ¿Puede combinar las capas de vista para simplificar, ya sea utilizando algo como GWT, Applets, Flash o .NET? ¿Realmente necesita presentar su contenido en un navegador (que introduce las complejidades de CSS, HTML y Javascript), o puede simplemente escribir una aplicación?
Ruby on Rails va bastante hacia la unificación de todos ellos, pero para CSS te deja al margen (aunque probablemente haya algunos marcos para RoR que hacen que CSS sea obsoleto, pero creo que tienes otro lenguaje de marcado, creo). y aún necesitas Javascript (aunque sí escribe un montón de Javascript para ti, y todo el código DB).
Por otro lado, acerca de sus hijos: la programación es para programadores. En una tarde de domingo para armar algo en unas pocas horas, necesitaría conocer un marco y comprar algunos complementos, y hacer que todo se mueva sin mucho trabajo. Algo como Drupal o Joomla, donde venden plantillas (para Joomla puedes comprar paquetes de cientos) y complementos para hacer todo tipo de cosas. Y cuando eso falle, sus hijos probablemente deberían saber cómo usar ODesk y depositar $ 100 para hacer algo en su marco. Aprender a programar es bueno si quieres ser programador. De lo contrario, es mejor aprender lo que necesita para contratar buenos programadores o comprar buenos componentes de predone, y tener el dinero para hacerlo.
Último punto sobre los niños: déjalos jugar videojuegos. Esa es la mejor capacitación que pueden obtener para lo que depara el futuro en la computadora. Los videojuegos te permiten investigar, jugar y relajarte con la computadora. Una vez que tengas eso, aprender HTML, CSS, Javascript y alguna pila de aplicaciones es fácil.
Si simplemente quiere enseñarles a escribir sitios web dinámicos, configúrelos siguiendo el tutorial de HTML en w3schools.com y una vez que terminen, encuentre una hoja de estilo de aspecto decente que puedan incluir y configúrelos con PHP. Eso los pondrá en marcha como un hobby, y si quieren hacer más, pueden comenzar a juntar conocimientos adicionales, como CSS y JavaScript.
angularjs podría ser una opción. está adaptado para aplicaciones de una sola página y se ejecuta en un nodejs-stack y hace alguna "magia" de plantilla-javascript.
ejemplo (plantilla / código): vincula (a través de auto-generado-lado-cliente-js) el valor desde el campo de entrada hasta el encabezado (h1). Si escribe algo en el campo de entrada, el texto en el encabezado se actualiza. Y no tienes que escribir el frontend-js.
<input type="text" ng-model="yourName" placeholder="Enter a name here">
<h1>Hello {{yourName}}!</h1>
GWT va de alguna manera hacia ser un kit de herramientas de alto nivel, que le permite escribir Java para producir Javascript.
Django puede llevarte parte del camino a través de su limpieza. Se centra en la productividad. La enseñanza no es más fácil que cualquier otro lenguaje / marco, pero mírelo de esta manera: cuando se les enseña esta herramienta, sus estudiantes están bien equipados en su conocimiento de lo fácil que debería ser. Nunca aceptarán servelets de Java o pesadillas similares después de haber aprendido Django.
La programación web es un oficio inherentemente multidisciplinar.
La razón principal para esto se debe a la separación de inquietudes ... la razón por la que HTML, CSS, JavaScript, SQL, etc. no se combinan en un solo idioma es porque cada uno tiene objetivos, advertencias, dificultades y fortalezas separadas.
¿Te imaginas intentar depurar un sitio que tiene código SQL, CSS, JavaScript y PHP mezclados en los mismos archivos de origen? Puede que ya hayas tenido la desgracia de hacerlo. Lamentablemente, hay literalmente miles de sitios escritos de esta manera, y es una pesadilla completa tratar de depurar o agregar a tales amalgamas desordenadas de presentación, datos y estructura.
En definitiva, ¡un completo desastre! ¿Cómo se supone que uno debe enseñar desarrollo web a los niños?
Creo que lo más importante es enseñar los fundamentos de la programación y hacer que se mantengan. Variables, lógica, punteros , gestión de memoria, algoritmos, estructuras de datos, etc.
Cuando tiene los fundamentos de la programación, es fácil trabajar en varios lenguajes, seleccionar nuevos y cambiar con el tiempo. Esta es una habilidad invaluable para algo tan constantemente evolutivo y basado en tendencias como la programación web.
En mi opinión, las personas nuevas en la programación deberían iniciarse en lenguajes de nivel inferior, como C por ejemplo. Las personas deben tener en cuenta los conceptos intrínsecos y fundamentales de la programación y deben conocer lo que sucede detrás de la escena antes de que se le muestre un lenguaje de nivel superior como PHP o Python.
Creo que esta actitud hacia la enseñanza de la programación tendrá el efecto de crear mejores desarrolladores web, además de proporcionar una barrera de entrada que eliminará a las personas que no tienen interés o inteligencia. Creo que el resultado de este tipo de actitud serán mejores desarrolladores, mejor software y, en última instancia, lenguajes y herramientas más potentes.