domingo, 27 de abril de 2008

Pascal Esencial

Aquí en México, y probablemente es lo mismo en otros países de Latinoamerica, ha existido un ENORME problema con el nivel de la educación en cuestiones de computación y programación (y en casi todo lo demás). Claro que esta no es noticia si tienes un rato en la industria o buscando empleo.

Uno de los comentarios mas comunes: "En la carrera universitaria solo me enseñaron a usar turbo pascal". ¡Esto se podría tomar como algo increíble cuando es todo lo que se les enseña a la próxima generación de programadores a estas alturas! ¿Que están tratando de hacer con nuestros países? ¿Mantenernos en el tercer mundo por siempre, acaso?

Es decir, esta Java, Delphi, C#, PHP, etc. que son referentes usados a nivel comercial y empresarial. Un graduado debería salir con un buen acervo, ya no uno, sino por lo menos dos lenguajes de diferentes estilos sin contar otros fundamentales como SQL y HTML, que les ayuden a salvar los muchos retos que se presenten (Bases de datos, Web, GUI, Modelado, tiempo real, etc.)

Delphi (siendo al fin y al cabo Pascal hiperevolucionado e hiperconstruido) es, en mi humilde opinión, uno de los mejores lenguajes, no solo para aprender a programar, también para crear cualquier tipo de aplicaciones y vencer incluso con excelencia casi cualquier reto profesional, pero para esto se debe comenzar por algo:

  1. aprender Pascal como fundamentos de programación,
  2. pasar a su evolución como Object Pascal para entender Programación Orientada a Objetos,
  3. seguir con el uso practico de las bibliotecas de funciones y objetos conocidas como frameworks: la VCL y el .NET,
  4. incluir en el momento adecuado el acceso a Base de Datos, y
  5. alternándolo con programación para Web (Stateless)

En diferentes momentos se debería apoyar el aprendizaje con SQL, HTML, JavaScript, XML, etc.

Hace tiempo que me ha llamado mucho la atención el bajísimo nivel al que llega la educación, limitándose a enseñar turbo pascal o java esencial y con solo eso lanzar al mundo a los nuevos "programadores", es como mandar a pelear a la tribu zulu de africa contra el ejercito norteamericano, por mas bravos que sean los zulus.

Por cierto Marco Cantu acaba de liberar su libro Essential Pascal para compra en lulu.com. Claro que el hecho que este en ingles no debería ser un obstáculo para ningún programador que se precie de serlo, pero por si las dudas, ¿Alguien que se anime a traducirlo?

lunes, 21 de abril de 2008

Ejemplos de la presentación de Multicapa con Delphi.Net

Ya están arriba (en CodeCentral ) los ejemplos de mi presentación de Developer Days 3 acerca del Desarrollo multicapa en Delphi.Net. Son tres ejemplos:

  • .Net Remoting
  • DataSet y DataTable a través de Web services ASP.NET
  • Cliente DataSnap de la VCL.Net

Pueden descargarlos de CodeGear CodeCentral:

http://cc.codegear.com/item/25545

Muchas gracias a todos los asistentes en Latinoamerica y España! y gracias a Andreano Lanusse y a CodeGear por invitarme a participar en el evento y ayudar a la comunidad.

Me imagino que muy pronto los tutoriales y presentaciones estaran en linea para quienes deseaban estar y no pudieron.

Developer Days en español 3 y algunas mejoras en el blog

Mil disculpas por todo este lapso de silencio! espero poder seguir el ritmo que tenia antes, ademas de un montón de trabajo muy interesante que he tenido este tiempo, pronto habrá un cambio radical en el blog con el que espero poder publicar mas contenido técnico y muchas cosas que ayuden mas. Es sorpresa, pero estoy seguro que valdrá la pena.

Y muy tarde para comentarlo, pero ya que estamos a medio evento en línea de la tercera edición de CodeGear Developer Days en español (21 y 22 de abril) acaba de terminar la presentación de Pablo Soligo donde hizo un carrito de compras con ECO y ASP.NET y fue excelente. Espero con interes la presentación de Juan Antonio Castillo (Jachguate) sobre aplicaciones Delphi multi-hilo que seguro será muy buena e igual la de Norberto Martinez sobre IBAdmin, y mientras ¡¡ tengo problemas con el Internet !!

Después de Jachguate seguirá una presentación de su servidor sobre Técnicas Multicapa con Delphi .Net incluyendo Remoting. Espero que les agrade y les sirva de verdad, si tienen cualquier comentario, por favor no duden en hacermelo llegar.

Si tienen duda con los horarios del evento (que están en tiempo de California), hace tiempo hice una tabla sobre las equivalencias para América Latina y la madre patria España.

Saludos de nuevo!

jueves, 28 de febrero de 2008

Delphi VCL es el ganador SG como mejor Librería/Framework

Alguna vez les he mencionado la maravilla que es la revista SG Software Guru. Desde mi punto de vista, la única publicación impresa (y web) de la industria del software en español que vale la pena leer de principio a fin trimestre tras trimestre (ahora es trimestral).

Esta revista mexicana, además de organizar un congreso sobre desarrollo de software cada año llamado SG conferencia y expo, ahora realiza una entrega de premios anuales a las mejores herramientas de desarrollo.

El premio se llama La Pila de Software Guru. Algunos de los ganadores este año:

Mejor herramienta de...

...GESTION DE REQUERIMIENTOS:  Rational RequisitePro
(seguida por Borland Caliber)

...IDE (Ambiente Integrado de Desarrollo): Visual Studio 2005
(seguido por Eclipse y seguido muy de cerca por Delphi 2007 para win32 en tercer lugar)

...CONTROL DE VERSIONES:   Rational ClearCase
(seguido por Borland StarTeam y despues Subversion en tercer lugar)

...LIBRERIA O FRAMEWORK:   Delphi VCL
(Seguido de Apache Commons)

...SISTEMA OPERATIVO:   Windows 2003
(los siguientes fueron RedHat Linux, Solaris, SUSE Linux y Debian) Al parecer sumando los votos de las tres plataformas Linux (RedHat, SUSE y Debian), Linux supero a Windows 2003.

...PORTAL PARA DESARROLLADORES:   MSDN
(y java.net)

...PORTAL PARA DESARROLLADORES EN ESPAÑOL:  Club Delphi


¡Felicidades a todos los ganadores!

En lo particular especialmente felicito al equipo de desarrollo de la VCL de Delphi en CodeGear y a toda la comunidad Club Delphi por recibir tal reconocimiento, ¡por cierto bien merecido!

En el sitio de la revista (www.sg.com.mx) Se puede leer la introducción a los premios y el resumen de los ganadores además de los premios para Gurus y premios para Libros y Mas en donde esta el de la comunidad.

Con los cambios que vivimos en la industria, Todo puede pasar para el próximo año.

martes, 19 de febrero de 2008

Dime en que programas... :P

Me he dado cuenta, como muchos antes de mi, que la herramienta se convierte en uno. Parece que en algún momento perdemos la capacidad de ver cual es nuestro negocio como desarrolladores: tener la capacidad de analizar, diseñar y programar un sistema nos envuelve y creemos que ese es nuestro negocio.

Nuestro negocio debería ser vender esos sistemas, aplicarlos en forma practica, buscar alternativas de mercado.

Pero, ¡peor aun! y ese es el punto: Nos convertimos en la herramienta que usamos.

No me malentiendan por favor, Delphi es la gran herramienta que me lleva a lograr mi trabajo con precisión, rapidez y poder y quien lea regularmente este blog sabe que me siento afortunado de no ser de los "desarrolladores" que se van con la primer luz que se les para enfrente.

Sin embargo, Delphi no deja de ser una herramienta. Un herramienta que sirve para desarrollar. Creo firmemente que nadie en sus cabales debe de atar su destino a un producto.

De repente hay quienes se han especializado tanto en una herramienta, una plataforma o un proyecto en particular, que terminan perdiendo el punto por completo. Si la herramienta pasa por un etapa de transición como lo hizo Delphi hace un par de años, entonces sienten pasos en la azotea: temen perder su poder para hacer lo que han venido haciendo.

Hay quienes huyen, hay quienes convierten en un culto, casi religioso, la veneración a su plataforma o herramienta. Esto no solo sucede en esta industria, si no en cualquier área del desarrollo humano, por ejemplo, hay médicos que defienden la alopatía o la homeopatía por ser la forma que conocen, no necesariamente la mejor, por que es el camino que escogieron y sienten que no hay vuelta atrás.

En lo particular uso Delphi por que me proporciona lo mejor de todos los mundos hasta ahora. El futuro lo dirá, Delphi actualmente como TODOS los demás lenguajes hasta donde se, están seriamente limitados en tres aspectos del futuro de la computación:

  • código de 64 bits
  • Aprovechamiento de los procesadores de mas de un núcleo (paralell processing si quieren verlo así)
  • Programación de dispositivos móviles

Y el mundo esta ahí o se dirige hacia allá con pasos firmes. CodeGear/Delphi esta haciendo su mejor esfuerzo y yo creo que lleva las de ganar al quedarse con la plataforma nativa, sin embargo todo esta por verse.

No perdamos el punto. Como me dijo mi buen amigo Ramiro Corona: "nosotros debemos estar mas allá del bien y el mal".

miércoles, 13 de febrero de 2008

Opinión sobre el futuro de Delphi

Si desarrollas en Delphi y te interesa lo que haces, cualquiera que sea tu opinión sobre el futuro del desarrollo, yo creo que es muy importante que se tome en cuenta tu punto de vista, tu situación actual, tus deseos y tus inquietudes, como parte de la comunidad Delphi en español.

La mejor oportunidad que tendremos para eso es dedicar un tiempo (a mi me tomó alrededor de una hora con pausas) para llenar con toda sinceridad la Encuesta Delphi 2008 de CodeGear. Es como votar, si no votamos mejor no nos quejamos :-$

Claro que hay una pregunta sobre el País en el que estas, e incluso hay una pregunta sobre el precio que me parece justo a pagar por la nueva versión/actualización de Delphi.

martes, 5 de febrero de 2008

70,000 PCs para Linux

Solo un pequeño comentario-paréntesis:

La policía francesa ha decidido migrar sus 70,000 computadoras para que usen ubuntu linux.

Ellos han usado OpenOffice en lugar de MS Office desde hace dos años y FireFox en lugar de IE desde hace un año.

Se puede leer la noticia en DiarioTI en:
http://www.diarioti.com/gate/n.php?id=16548

¿Será que esto es un pequeño paso para el policía francés, pero una tendencia para la industria del software?

P.D. Felicidades a CodeGear por el millón de licencias académicas de Delphi vendidas a Rusia. Eso es lo que llamamos "Fertilizar el mercado".

Tomen eso autoridades de educación latinoamericanas, ahora competiremos en serio con India, China, Brasil, Polonia, Irlanda y por si fuera poco, Rusia. Se me van poniendo las pilas, no quiero ni pienso redefinir el termino tercer mundo.

martes, 29 de enero de 2008

Nuevo en Delphi #2: Sobrecarga de operadores

Esta característica, aunque no añade funcionalidad, es simple pero poderosa en la legibilidad del código. La sobrecarga de operadores solo funciona en Records en Delphi win32 y para Records y Classes en Delphi.Net.

La sobrecarga de operadores consiste en poder definir un metodo de clase declarado como class operator, que se ejecuta cuando se utiliza dicho operador con ciertas clases como operandos, es decir que si definimos:

var
TTequila
= record
public
VolumenMiliLitros: integer;
GradoAlcohol: Single;
class operator Add(
TeqA, TeqB: TTequila): TTequila;
class operator GreaterThan(
TeqA, TeqB: TTequila): Boolean;
end;

class operator TTequila.Add(
TeqA, TeqB: TTequila): TTequila;
var
porcentAEnMezcla, porcentBEnMezcla: single;
begin
// Al mezclar (sumar) dos tequilas se obtiene
// la suma de su volumen liquido...
Result.VolumenMiliLitros :=
TeqA.VolumenMiliLitros
+TeqBVolumenMiliLitros;
// ...pero se promediaria su grado de alcohol
// en proporcion al volumen (en teoria)
porcentAEnMezcla :=
TeqA.VolumenMiliLitros
/Result.VolumenMiliLitros;
porcentBEnMezcla :
=
TeqB.VolumenMiliLitros
/Result.VolumenMiliLitros;
Result.GradoAlcohol :
=
(TeqA.GradoAlcohol
* porcentAEnMezcla) +
(TeqB.GradoAlcohol
* porcentBEnMezcla);
end;

class operator TTequila.GreaterThan(
TeqA, TeqB: TTequila): Boolean;
begin
if TeqA.GradoAlcohol > TeqB.GradoDeAlcohol then
Result :
= True
else
Result :
= False;
// Tambien podria ser:
// Result := (
// TeqA.GradoDeAlcohol > TeqB.GradoDeAlcohol);
end;


Entonces cuando tuvieramos algo como esto:


var
Jimador, Cazadores: TTequila;
MezclaChafa: TTequila;

begin
Jimador.VolumenMiliLitros :
= 750;
Jimador.GradoDeAlcohol :
= 30;

Cazadores.VolumenMiliLitros :
= 1000;
Cazadores.GradoDeAlcohol :
= 36;

if Cazadores > Jimador then
begin
MezclaChafa :
= Jimador + Cazadores
end
else
begin
MezclaChafa.VolumenMiliLitros :
= 0;
MezclaChafa.GradoDeAlcohol :
= 0;
end;

WriteLn(
'Mezclado ');
WriteLn(
'Volumen: ',
IntToStr(MezclaChafa.VolumenMiliLitros));
WriteLn(
'Grado De Alcohol: ',
FloatToStr(MezclaChafa.GradoDeAlcohol));
end;


El resultado seria:


Mezclado
Volumen: 1750
Grado De Alcohol: 33.4285


Ya que el operador Mayor Que > (GreaterThan) fue sobrecargado para que cuando se desea saber si un TTequila es mayor que otro TTequila (los dos parámetros del operator son TTequila) entonces devuelve Verdadero si el primer TTequila tiene un GradoAlcohol mayor que el otro.


De igual manera, el operador Adición, o Suma + (Add) fue sobrecargado para que cuando se "suman" dos TTequila, el resultado sea otro TTequila con la suma de los volumenes y el proporcional del grado de alcohol de cada uno según el volumen que aportan.


NOTA IMPORTANTE: Otra relativamente "reciente" característica de Delphi es precisamente que los tipos record pueden tener métodos como las clases, con la diferencia que los record son pasados por valor (una copia de ellos) y las clases por referencia (una copia del apuntador hacia la clase).

lunes, 14 de enero de 2008

Nuevo en Delphi #1: Datos de Clase

Primero, una disculpa por esperar tanto para comenzar con la serie de Lo nuevo en Delphi, esta semana pasada fueron días interesantes en los proyectos y el tiempo fue lo primero que se acaba.

Quiero empezar a mencionar las nuevas características de Delphi, abarcando 2006 y 2007, ya que muchas de estas se iniciaron en Delphi 2006 pero se consolidaron en Delphi 2007. El objetivo es analizarlas, saber que tan útiles podrían ser y en donde aplicarían.

Una de las que mas me llamo la atención de inicio son los datos de clase (o Class Data).

Tener datos de clase consiste en tener variables que existen desde que la clase existe (no por objeto o instancia de la clase). Hasta ahora Delphi contaba solo con Métodos de clase.

Los campos/datos/variables de clase pueden ser accesados por todos los objetos de esa clase y pueden ser declarados con los mismos restrictores de acceso (private, public, protected, etc.) de los datos de objeto.

Estos datos compartidos por todas las instancias de una clase son parte de la sintaxis de muchos otros lenguajes pero mas que nada es una técnica cercana de Programación orientada a objetos (POO). Puede usarse, por ejemplo, para controlar datos variables entre muchos threads de cierta clase o heredadas de la misma clase, semáforos, o conteo de instancias y muchas otras cosas.

Claro que podemos usar variables globales para eso desde siempre. Aun así, esta nueva forma del lenguaje hace el código mas legible y mejora la estructura ya que la variable tiene relación explicita directa con la clase. Al final, la ventajas de esta nueva característica es hacer el código Delphi win32 mas cercano al de Delphi.Net, además de acercarnos a una mejor estructura de POO.

La forma de declarar variables de clase es usando la sección opcional class var en loa declaración de la clase. Un ejemplo podría ser el siguiente:

TCualquierClase = class
private
FiDato: integer;
FsNombre: string;
class var
Control: integer;
//Dato de clase
OtroDato: TStringList; //Otro dato de clase
public
Nombre: string;
...
end;


En este caso, el valor de Control y OtroDato serán datos compartidos por todas las instancias de TCualquierClase mientras que FiDato, FsNombre y Nombre son datos particulares de cada instancia.



En un futuro (yo espero y ruego) mediante esta característica también seria mas fácil y claro implementar soporte multihilo (multithread-safe) en todo el lenguaje y la VCL, así como tiene actualmente Java en su respectiva, pero sin que sea necesario correr los programas dentro de un ambiente "controlado" y restringido como la máquina virtual.

jueves, 3 de enero de 2008

¡¡ Lo nuevo en Delphi 2007 !! ;)

CodeGear ha estado muy ocupado últimamente haciendo un gran hincapié en "las nuevas características de Delphi en Delphi 2007".

La comunidad internacional, y me refiero a Europa, EUA y quienes ya pudieron acceder a Delphi 2006 o 2007, han tenido diversas reacciones a estas características, en algunos casos tratando de englobarlas de dos maneras: Por un lado algunos opinan que "llevan a Delphi al nuevo siglo" o algo así, mientras que otros concluyen que "son características innecesarias que agregaron solo por que otros lenguajes las tienen y muchos las querían ver en Delphi para no sentirse atrasados". Cualquier polémica por mas ligera que sea, genera alguna opinión radical contrastante.

Voy a comentar algunas de esas características aquí en el blog en los siguientes días, sobre todo las adiciones al lenguaje que son las que mas me han llamado la atención, y de esa manera podemos hacernos una opinión mas concreta.