Disponible material de la presentación sobre "El Estado del Arte y PHP5"

Hace unos minutos he dejado disponible el material usado para la presentación de la charla "El Estado del Arte y PHP5" efectuada en el evento Debian Day (organizado por el grupo Debian Uruguay).

Se puede consultar desde la web o bajarla directamente. El material fue complementado con un poco más de descripciones y conceptos, y todos los enlaces a las fuentes.

La charla se centró en tratar de transmitir cual es el estado actual de la Web, de donde venimos y hacia donde vamos, donde PHP es una herramienta más que nos puede servir para cumplir con nuestros objetivos. Para no ser menos, se usó una herramienta que se apoya en estándares web: S5 (basada en html y javascripts).

Detalle importante sobre la herramienta seleccionada: lo más destacable es que los buscadores podrán indexar el contenido de la presentación y ser encontrada fácilmente. Lo contrario a si fuera un documento pdf, word, powerpoint, o simplemente una web Flash.

Si bajan los fuentes podrán darse cuenta como es que trabaja con solo editar el index.html.

Cualquier duda, corrección o ampliación, con gusto contestaré los correos que me envíen o los comentarios que escriban al pié de este artículo ;-)

Próximamente estará disponible información relacionada con el evento Debian Day

He estado un poco complicado y estoy más lento que de costumbre para contestar los correos sobre el tema de la charla que ofrecí en el evento.

A su vez, se han generado varios intercambios de opiniones, tanto en el artículo de este blog sobre el evento como en blogs de personas que lo presenciaron (hay para todos los gustos, eso es bueno): ganimatux, mark3l, varrojo, Christian Serrón, etc.

Una de mis sugerencias hacia el grupo Debian Uruguay fue que no desaprovecharan la oportunidad para preservar los contenidos de las mismas, tanto para las personas que no pudieron ir, como para las personas que están fuera del país y que les interesa el tema, o directamente, como fuente de consulta futura.

Viviendo en un mundo cada vez más interconectado, donde tenemos en nuestras manos poderosas herramientas de comunicación con solo usar un poco de imaginación (grabar un audio en formato digital), sería un pecado perder todo lo que se ha hecho y la oportunidad de llegar a más personas.

Parece que el audio no ha quedado grabado, y que probablemente exista una grabación "analógica" de alguna charla. Si esto no se pudiera recuperar, veré de compensar a la gente que no pudo participar y grabar:
  • un podcast en solitario, tratando de volver a contar las ideas que quería transmitir, siguiendo la línea de la presentación proyectada.
  • un podcast en conjunto, tratando de discutir el tema y recordar los sucesos que se dieron en la charla (interrupciones, discusiones, opiniones encontradas, etc).
Lo primero es más probable que lo segundo, pero bueno, estoy viendo que me confirmen si realmente no quedó nada registrado (además, sería imposible reproducir todo lo que sucedió durante la misma ;-) ).

Con respecto al material de la presentación

No lo he dejado aún disponible porque quiero completar los datos que faltan (principalmente enlaces) para que sirva de guía y permita acceder a toda la información en "formato más digerible" sobre lo que presenté en la charla.

Creo que está de más decir que estoy a las órdenes para cualquier consulta, duda, o queja de la charla ;-), tanto en mis blogs como en mi correo personal.

Dentro de poco estaré agregando más material sobre la "polémica charla" que tuve el honor de dar.

Material disponible

Por lo pronto ya están las fotos que sacamos en el evento en mi cuenta de flickr.com con el tag debianday (en cada imagen coloqué comentarios, y ustedes pueden dejar los suyos) y mi lista de enlaces sugeridos sobre PHP y concretamente, sobre PHP5.

PD: que complicado es ser "disruptivo" en este país ;-)

Invitado a dar una charla sobre PHP5 en "Debian Day Uruguay"

Mi amigo Marcello Farias me invitó a dar una charla sobre PHP5 en el evento que está organizando con sus colegas: el Debian Day Uruguay .

A nivel mundial es costumbre festejar muchas fechas importantes para el mundo del Software Libre, generalmente, haciendo eventos y charlas sobre temas relacionados.

En este caso, el Debian Day Uruguay, festeja la creación de la distribución GNU/Linux por excelencia, la plataforma de los geeks y "talibanes del Software Libre", la más pura de las puras, donde ningún animal fue lastimado para su creación ni utilizado algún "código privativo" ni maligno.

Marcello ha hecho un clara introducción al tema en su blog, y la lista de los oradores y los temas es realmente interesante (y la mía desentona un poco, pero bueno, alguien tiene que desarrollar sobre la plataforma libre ;-).

Desde ya están todos invitados.

Curso en Universidad ORT: "Desarrollo de Sistemas Web con PHP 5" (4 meses)


La Universidad ORT está nuevamente publicitando en estos días (mailing, web, prensa) el curso que estaré dictando con el nombre de "Desarrollo de Sistemas Web con PHP 5" (aunque pueden encontrar referencias con otros nombres, como "Programación PHP5", "Programación de Páginas Web con PHP", etc), parte del grupo considerado de "Actualización Profesional".

Aclaración: Digo "nuevamente" porque a pesar que este curso ya lo he dictado directamente en empresas, en ORT el primer período de inscripción (24 de abril) lamentablemente no llenó el cúpo mínimo de alumnos, por lo cual esta es la segunda vez que se publicita. Esperamos que en esta oportunidad llegue con más tiempo y a más gente.

La temática del mismo y la metodología del dictado será completamente diferente a los cursos tradicionales que se pueden encontrar en la plaza local, que se basan exclusivamente en PHP4 (donde la prioridad es conocer exclusivamente el lenguaje y no superar la programación a nivel de scripting).

Para este curso me fijaré como meta formar "Desarrolladores de Sistemas Web", tratando de no caer en los "lugares comunes" de los cursos tradicionales sobre la materia:
  • Evitando el estereotipo clásico de "Programador PHP", orientado explícitamente al lenguaje de programación, donde solo se abordan recetas elaboradas con la experiencia del docente de turno y se termina desconociendo todo el proceso formal de desarrollo de software y las metodologías existentes.
  • Evitando el perfil de "Diseñador PHP", orientado al diseño gráfico con algo de programación, donde el común denominador es la ausencia completa de conceptos claros sobre diseño de sistemas o directamente de programación.
  • Erradicando el uso del "paradigma estructurado" que impide aprovechar los beneficios del "nuevo paradigma" (que ya tiene muchos años) que mejora ostensiblemente los tiempos de mantenimientos de sistemas y el reaprovechamiento de componentes ya desarrollados.
  • Erradicando la "programación estructurada con uso de objetos", que no es lo mismo que decir "Desarrollo 100% Orientado a Objetos", con uso y entendimiento de herramientas de nivel superior, como UML, Patrones de Diseño, Principios de Diseño, Refactoring, etc.
  • y por sobre todas las cosas, a Desarrollar Sistemas Web, verdaderos desarrollos de software, no código-scripting embebido a código HTML alojado en páginas web, aisladas entre sí.
La idea es fusionar conocimientos desde otras plataformas, como Java y .Net, en conjunto con experiencias profesionales trabajando en proyectos del Estado, empresas privadas y emprendimientos personales.

Desarrollar software en PHP5 no tiene nada que envidiarle a otras plataformas de desarrollo, y los conocimientos que se adquirirán en el curso podrán ser aplicados en cualquier tecnología basada en POO.

Considero que este curso transfiere en 4 meses conocimientos que requieren años recolectar, evaluar, depurar, y por sobre todas las cosas, experiencia real extraída del mercado laboral actual, tanto local como extranjero.

Daremos una recorrida al tan nombrado fenómeno de la Web2.0 y de las últimas tendencias, como el nuevo Zend Framework que se está desarrollando, donde iremos incorporando las últimas novedades que vayan surgiendo en el transcurso del curso.

Quiero hacer un curso que a mi me gustaría participar: quiero "enseñarte a pescar, no a comer de mi mano".

Comienzo: 5 de setiembre de 2006.

Horario: Martes y Jueves de 19:30 a 22:30.


Detalles del curso en la Universidad ORT

"Herencia múltiple en PHP5"

Este es un resumen de conclusiones que se vertieron en una discusión sobre el tema en Foros de Web, donde se plantea la duda de si PHP5 soporta herencia múltiple, lo que termina en una discusión filosófica sobre diseño Orientado a Objetos.

La herencia simple

Es la que tienen todos los lenguajes orientados a objetos: heredamos los atributos de una sola clase padre, lo cual nos permite reutilizar código. Si fuera herencia múltiple, podríamos heredar de más de un padre.

Ejemplo de como se codificaría

La herencia múltiple, si fuera implementada en PHP, se codificaría de la siguiente manera:


class C extends A,B{
// código
}


Donde la clase C hereda atributos y/o métodos de dos clases, A y B.

Por ejemplo, la clase "HombreLobo" puede heredar de la clase "Hombre" y de la clase "Lobo", pero el problema es que se pueden hacer tantas combinaciones que será difícil seguir y mantener un diseño de este tipo. Por eso muchos lenguajes no la implementan, no por un tema técnico, solo por un tema de salvaguardar la integridad del diseño.

¿Se puede hacer o no?

Por lo que he visto en varios lenguajes, la discusión legítima no es "si se puede hacer o no". En muchos casos no se implementa (como en Java, PHP, etc) porque habilitarla es un posible camino al desastre.

Verdaderamente no es problema técnico, o de evolución, es un problema de criterios de diseño "OO".

Herencia múltiple a través de interfaces

De todas formas siempre hay una puerta trasera: hacer herencia múltiple a través de interfaces; pero el sentido es distinto a hacerlo con clases. Las herencias de clases definen el "que son" y las interfaces agrupan clases que definen el "que hacen".

Las interfaces permiten pasar del estilo de diseño "orientado a la implementación" a uno "orientado a la interfaz", donde todas las clases acceden a servicios a través de interfaces que son implementadas por clases concretas. Y al no depender de clases concretas (solo de entidades abstractas) nuestro diseño será más reutilizable que el anterior.

El mayor problema

Los problemas más comunes que puede dar la implementación de herencias múltiples son las "colisiones de nombres" y la "herencia repetida".

Las colisiones se pueden dar cuando las clases empiezan a tener los mismos nombres en los métodos generando la duda de cual método debo usar de las dos clases y la herencia repetida es cuando nuestra clase hereda de dos clases que a sus vez son hijas del mismo padre, por lo cual estemos posiblemente heredando características repetidas.

¿Que sugieren las "Guias de Diseño OO"?

Y ya que estamos del tema "diseño", lo comento: las guías de diseño recomiendan que para una buena jerarquía de herencia:

- Se deben tener no más de 7 (+-2) niveles
- Las jerarquías "gordas y bajas" son síntoma de "poca especialización"
- Las jerarquías "altas y flacas" son síntoma de "excesiva especialización".

¿Si tantas recomendaciones existen para la herencia simple, que queda esperar para la herencia múltiple?

¿Y los grandes libros de Patrones de Diseño?

Hasta yo puedo crear un patrón y usar la herencia múltiple, pero eso no quiere decir que sea la mejor solución a un problema, ni que este pueda aplicarse en otros contextos (la esencia de los patrones).

Tomando como referencia un libro base reconocido mundialmente como es el GOF , donde ninguno de los patrones (de los 23) hacen uso de la herencia múltiple, y tampoco la sugieren, y menos, se quejan de su falta.

Los patrones de diseño son considerados la mejor "receta de cocina" para resolver un problema recurrente, con el mejor diseño posible, donde puede ser aplicado en otros contextos (concepto de patrón: "elemento reutilizable de experiencia y conocimiento").

No he leído hasta el momento en ningún texto que documente principios, sugerencias, guías o buenas prácticas de diseño la recomendación de usar la herencia múltiple. Es más, lo que he visto es todo lo contrario, hacen mucho hincapié en controlar el uso de la herencia simple, llegando a desaconsejar hasta la sobreescritura de los métodos por el hecho de "¿para que heredas si luego sobreescribes el comportamiento?".

Tampoco he leido que exista una discusión importante sobre el tema ni que hubiera una campaña para su uso. Creo que no se discute mucho el hecho de la "no conveniencia" del uso de la herencia múltiple.

Resumen Final

El tema va más allá del lenguaje, el problema no es si un lenguaje lo soporta o no, el problema es si se debe usar o no, y los efectos que pueden causar sobre nuestro diseño y su posterior mantenimiento.

Si observamos la evolución de los lenguajes podremos ver que cada vez se orientan más a seguir las pautas que se dictan en la esfera del diseño, y esto no es para extrañarse, la programación es solo una parte de todo el proceso de desarrollo de software.

Nota al margen: con respecto a mis conclusiones sobre la herencia múltiple, no son de mi exclusiva invención ni se me ocurrieron meditando bajo un manzano... luego de leer muchas opiniones al respecto que apuntaban a tratar el tema como si fuera solo una "evolución", o la visión completamente opuesta, que los nuevos lenguajes "la carecen" (como si estuviéramos hablando de una debilidad) fue que me puse a investigar y a tratar de discernir entre lo subjetivo y lo objetivo.

Y como se concluye en la discusión del foro, los lenguajes son herramientas que se deben ajustar a los criterios de un diseño.

Al final de cuentas, todo es una discusión de diseño OO, aprender a usar una herramienta y a no abusar de las posibilidades de la misma, lo que puede volverla en contra nuestra.

Artículo basado en una discusión originada en Foros del Web

Artículo relacionado

Entradas populares