Tag Archives: pascal

Eligiendo lenguaje desktop

Tengo varios proyectos dando vueltas hechos en Lazarus, y la verdad que, mitad por inquieto, mitad porque pienso que seguir programando en Pascal es como programar en Cobol, estuve tratando de buscar una alternativa. Mi primer opción fue Ruby, ya que vengo bastante acelerado con este lenguaje, pero le dí vueltas al asunto y todavía quiero que la aplicación sea desktop (digan lo que digan), así que Ruby tuvo que ser descartado. PHP quedó descartado de entrada por lo mismo. La moneda tenía que volar entre Python y C++. Personalmente estoy muy contento con la idea de tener un lenguaje interpretado al que las actualizaciones fueran casi transparentes para el usuario y para mí, y por otro lado la multiplataforma no dependa de mí sino del intérprete, pero aca choqué con algunas cuestiones que en su momento me gustaron mucho y que en sí me hicieron decantar por C++ para el núcleo del programa (tengo pensado implementar algunas funcionalidades con Python, por simplicidad).

Por qué elegí C++:

  • La aplicación es desktop, así que el abanico de lenguajes se redujo bastante
  • Intérprete vs compilador? Me gusta el compilador para un producto final. Trabaja como otro programador haciendo XP en mi caso. Quizás cuando domine TDD pueda pensar distinto.
  • El grueso de las librerías que he visto/usado en otros lenguajes, están hechas en C++, y si la duda es C++ o cualquier otro, esto es un minipunto para C++
  • Hay muchísimos compiladores para muchísimas plataformas, no dependo de una sola empresa/organización. Esto suena a pavada, es así
  • Justo la semana pasada me crucé con esta nota sobre tipado estático vs tipado dinámico y me gustó bastante 🙂
  • Me encantan los programas autocontenibles, sin instalaciones complejas. Con Lazarus y un poco de trabajo lo conseguí y con un programa compilado esto es mucho más simple de lograr.
  • Poner la antigüedad y trayectoria del lenguaje como ventaja, si bien da otro minipunto, no tendría sentido de no haber visto las evoluciones del lenguaje que se están haciendo actualmente

Como mi idea es ir migrando de a poco de Lazarus a C++ (los más jóvenes no olvidamos a Netscape y su idea de reprogramar todo desde cero), recién a mediados del año que viene veremos qué tal resulta el proceso y a fin de año si todo salió bien, con el programa funcionando durante un tiempo en los clientes ya voy a tener todo el panorama para saber si fue o no una buena idea (tanto por el desarrollo, como por el soporte requerido).

Charlas Embarcadero 2013

embarcadero_logo

El jueves 14 de este mes estuve en un evento organizado por la gente de Embarcadero (los actuales desarrolladores de Delphi), donde presentaron RAD Studio XE5, con su principal capacidad de generar código nativo para Android y para iOS. Lo cual no es poca cosa.

Creando un proyecto ‘mobile’, podemos decidir la plataforma destino (pueden ser varias); el tipo de dispositivo, esto es más que nada para poder fijar la gama de eventos y a los que tendremos acceso, esto es pensando en cámaras, acelerómetros, etc (no es lo mismo un celular, una tablet o un SmartTV ); y la orientación de la pantalla (vertical o apaisada). Lo bonito del código nativo generado es que cada aplicación se comporta tal cual espera el usuario que lo haga en su dispositivo. De esta manera, un comboBox en una PC tiene la flechita a la derecha, en Android es una ventana de dialogo con las distintas opciiones y en iOS es esa simulación de rueda. Y todo con el mismo código Delphi.

Otro anuncio es el tema de los bindings. Anteriormente en Delphi estaban los componentes DB y el acceso a los datos se hacía con ClientDataSets. Ahora (muy a lo .NET, se ve que Delphi no puede dejar a Anders Hejlsberg tranquilo), cualquier componente puede ser ‘vinculado’ a una consulta o tabla y con la ayuda de un ‘Diseñador visual’, enlazar las propiedades del componente con los campos de la consulta…y voilá. Ya tenemos los datos en pantalla.

La propuesta de bases de datos locales en dispositivos móviles viene de la mano de Sqlite e Interbase (tanto la versión lite como la ‘ToGo’) sin grandes modificaciones. Lo que dejaron entreveer fue el desplazamiento (no es que dejen de dar soporte, sino que lo van a ir suplantando a lo largo de las versiones futuras) es el uso de DbExpress por su nueva maravilla que se llama FireDAC.

Después de la presentación de todas las novedades, tuvimos las presentaciones de tres casos de éxito, que si bien todos hablaron muy bien del producto (son empresas que tienen muchos años en el ruedo con los mismos productos), los laureles se las llevaron más las versiones clásicas (con más de 10 años de antigûedad, en la época dorada de Delphi), pero lo que si es innegable es que ha sido un producto que, por lo menos en la era Win32, fue excelente.

Semana #768

Como quien no quiere la cosa, otra semana llega a su fin y me toca hacer el resumen. 🙂

En la lista de desarrollos, terminé un entregable y pude hacer la primer ronda de interacción con un sistema un tanto particular de inscripción de alumnos. Normalmente prefiero refinar bastante antes de un entregable tan funcional, mitad para evitar conflictos con los usuarios (beta, prototipo y “programa que no hace todo lo que necesito” muchas veces son sinónimos con algunos clientes), mitad para evitar trabajar de más (por más herramientas RAD que use, los presupuestos estan muy acotados en tiempo y costo como para poder dedicar tiempo a desarrollo+reunión+repensar desarrollo). En este caso, tengo hasta principio del año próximo para probar la metodología sin poner en peligro la fecha de entrega. El resultado de esta primer semana es ambiguo. No se si no llamó la atención por lo espartano del desarrollo (mucha funcionalidad con una interfaz básica) o si es que todavía no se sienten tan partícipes del proyecto como para tomarle un poco de afecto, ya que volví con una planilla de correcciones, sugerencias y exigencias que parecía el relevamiento inicial. Como ya dije, veremos cómo evoluciona esto (tanto de mi parte como desde el punto de vista del cliente).

También me hice un rato para registrar el .com de la (espero) próxima aventura en la web. Un proyecto que por ahora va a salir 100% en PHP aunque no descarto un poco de RoR en el futuro si le tomo cariño hacia fin de año (voy ver si le encuentro “esa belleza” de la que tanto se habla). A medida que el proyecto vaya tomando forma voy a poder ir dando detalles.

Entre las cosas no tan públicas, para un proyecto compatible con Delphi, tuve que cambiar para el manejo de las conexiones a internet a las famosas Indy por otra librería que francamente desconocía llamada Synapse. Con las Indy tuve bastantes problemas y francamente la documentación no ayuda. Con Synapse aparte de una muy buena y completa documentación, me encontré con clases (y funciones 🙂 ) claras y que hasta ahora funcionaron sin muchos problemas al hacer las pruebas.

Para terminar, del cajón de los programas que me asombran que funcionasen, resurgió uno que hice hace un par de años para acreditación a un congreso. Lo que me asombró del funcionamiento es que el programa aparte de imprimir la etiqueta, imprimía un certificado de asistencia y uno por cada poster o trabajo presentado. El problema es que en su momento la oficina que inscribió los trabajos/posters no fue la misma que cobró las inscripciones y a nadie se le ocurrió cargar los documentos, por lo que 24hrs antes del congreso, tenía dos padrones con gente duplicada que no se podía vincular. Por suerte los datos se cargaron, el programa se modificó para que trajera todos los datos y hubo final feliz. El problema es que salió tan bien que ahora quieren volver a usar el programa para otro congreso. 😀 Así que toca revisar las “modificaciones hechas en el fragor de la lucha” (me prometieron que esta vez se está cargando todo como corresponde). Esto en cuanto revise que no es un engendro peor de lo que pienso y ya lo encaro para que funcione bien este año, lo subo a GitHub.

A nivel personal, terminé de leer El juego de Ender, y la verdad me encantó. Por suerte ya tengo el segundo libro de la tetralogía “La voz de los muertos” así que en breve toca leerlo (ahora estoy leyendo “El legado de Tesla”, y le cuesta arrancar).