Archivo de la categoría Programación

Lazarus



En pocas palabras, podríamos decir que Lazarus es un clon opensource de Delphi, pero usando la infraestructura también de código abierto de Freepascal.

En su última versión estable 0.9.30, Lazarus está disponible para diferentes plataformas: Windows x86, Windows x64, Linux x86, Linux x64, Mac OS Intel, Mac OS PowerPC, y UNIX en general.

Lo mejor esto, no es poder desarrollar en cualquier plataforma, y generar un ejecutable para ésta, sino sus capacidades de compilación cruzada (cross-compiling), es decir, desarrollar en una plataforma, y desde ella, compilar para otras.

La librería de componentes de Lazarus, LCL (Lazarus Component Library), ofrece más que lo básico, pero no llega a la altura de la de Delphi XE.…

Continuar leyendo...

Las aventuras de Turbo Man



Las aventuras de Turbo Man en el museo de Borland/Inprise/CodeGear/Embarcadero.

A principios y mediados de los años 80, Borland empezaba a hacerse un hueco en el mercado de las herramientas de desarrollo, con su linea de productos Turbo.

Los Turbo, eran conocidos por su alta velocidad de compilación, la velocidad de ejecución del código generado, y sobre todo, por contar con un potente y sencillo de utilizar IDE.

En la lucha con otros competidores como Microsoft, Zortech, etc, quizás Borland no generase un código tan compacto, y como todos sabemos, poco a poco se iría quedando atrás. No obstante, en sus años dorados, era tan sobresaliente, que hasta se permitieron el lujo de comunicar las bondades de sus productos con el cómic de Turbo-man.…

Continuar leyendo...

Lint para Javascript



Después de descubrir Google Closure Compiler Service en Sieve en Javascript (optimizado), hoy paso a comentaros otra rama de utilidades para el desarrollo Javascript: Lint.

Aunque Lint es el nombre genérico de las herramientas de análisis estático de código, muy populares en lenguaje C y C++, actualmente existen este tipo de herramientas para multitud de lenguajes, incluyendo Javascript. Los Linters, van a analizar nuestro código, para detectar construcciones potencialmente peligrosas, que puedan ser indicativas de algún error.

Tenemos disponibles las siguientes:
– JSLint: Implementado completamente en Javascript, es muy exhaustivo, quizás demasiado, reportando muchos falsos positivos, que aunque algunos de ellos pueden desactivarse, siguen siendo demasiados.…

Continuar leyendo...

Rendimiento Javascript vs VBScript (II)



Ya ni me acordaba que en 2004 en Rendimiento Javascript vs VBScript ocurrió el extraño resultado que demostraba que la ejecución de código VBScript resultaba ser más veloz que la de Javascript.

Mucho ha cambiado en estos 7 años en los navegadores web, que debido a la complejidad de aplicaciones client-side, han ido optimizando la ejecución de Javascript, con los ahora habituales JIT.

Obviamente Internet Explorer 9, ha seguido también este camino, al menos en su versión de 32 bits, por lo que no estaba de más verificar si esto seguía siendo así o no.

A priori, todo parecía indicar que las tornas habrían cambiado, y si bien con Internet Explorer 6, Microsoft apostaba por VBScript para sus aplicaciones empresariales que requerían un rendimiento extra, y manejar una complejidad mayor, no tendría mucho sentido que VBScript hubiera seguido los mismos pasos.…

Continuar leyendo...

TBClamAV



A nivel particular, sigo siendo un usuario fiel de The Bat! y como antivirus uso Avira Antivir en modo standalone o bajo demanda.

Es cierto que se puede integrar Antivir con The Bat! sin problemas, y es algo de lo que hablaré más adelante, sin embargo, el problema de estas soluciones, es que necesitan cargar y procesar el archivo de firmas, cada vez que se analiza un elemento. Esta carga adicional, frena bastante la recepción de emails, sobre todo, si en la cola hay más de uno.

Dicho lo cual, y aprovechando que el antivirus de código abierto ClamAV, tiene un módulo de tipo servicio/demonio llamado clamd, y que una vez cargado, clamscand, se conecta con él vía TCP para analizar contenidos, me he decidido por escribir desde cero, mi propio plugin, utilizando esta característica.…

Continuar leyendo...

Sieve en Java



Después de Sieve en BASIC, he decidido reemprender la saga, esta vez, implementando Sieve en Java.

Ejecutándolo con JRE 1.6.0 update 25, sobre Win64, ha requerido para 50.000 iteraciones, un tiempo de 41.049 ms, y lo mismo sobre Win32 de 40.231 ms.

Con estos resultados, tenemosa Java, superando aunque por poco, el rendimiento de VB.NET, que aunque no debería ser así, sorprende. Se demuestra de nuevo la menor madurez de la versión x64, que como ya hemos ido viendo en otras plataformas es levemente peor.

Este resultado, viene a indicar que la eficiencia de Java ha ido mejorando sustancialmente con el tiempo, al menos en lo que serefiere a cálculos puros, porque otra cosa es cuando se debe interactuar con los recursos nativos del sistema (memoria, archivos, etc).…

Continuar leyendo...

Lenguajes en peligro de extinción



Con el paso de los tiempos, han nacido muchos lenguajes de programación, que durante su ciclo de vida, se han reproducido, y en algunos casos han muerto.

El primero que me viene a la mente es Logo, que hasta mediados de los 90 iba a representar el gran salto evolutivo en la pedagogía de la programación.

En el entorno empresarial de los grandes sistemas, seguimos viendo COBOL, REXX y hasta RPG, promovidos y/o creados por el antiguo gigante azul (IBM).

Incluso con un nivel alto de adopción como lo fueran en diferentes épocas Pascal, BASIC, Fortran, Lingo, o xBase (dBase, Clipper, FoxPro), hoy sobreviven, pero lejos de ser lo que eran.…

Continuar leyendo...

Emular un PC en Javascript



A PC emulator in Javascript, es un proyecto del reputado Fabrice Bellard, que demuestra como es posible emular un PC en lenguaje Javascript.

Parte del código de QEMU, del que Fabrice ha creado también una gran parte, para conseguir una emulación equiparable a un 486SX, con un rendimiento meritorio, pero todavía lejos de la realidad.

Si quitamos la curiosidad tecnológica, probablemente la mayor utilidad en A PC emulator in Javascript, sea la de utilizarlo como benchmark de máquinas Javascript en diferentes navegadores, por lo que me he tomado la libertad de ejecutarlo en las últimas versiones de los navegadores web disponibles para Windows, anotando el tiempo que han tardado en arrancar:

– Firefox 7.0a1 2011-06-01 (x86): 4,096s
– Opera 11.50.1027: 4,349s
– Firefox 7.0a1 2011-06-01 (x64): 4,749s
– Internet Explorer 9.0.8112.16421 (x86): 6,021s
– Internet Explorer 10.0.1000.16394 (x86): 6,464s
– Chromium 13.0.781: 6,550s
– Safari 5.0.5.7533.21.1: 9,676s
– Internet Explorer 9.0.8112.16421 (x64): 34,767s

Los resultados me parecen curiosos, ya que se esperaba que Opera o Chrome fueran los vencedores, pero ha ganado Firefox, lo que me hace pensar que gran parte del desarrollo de las máquinas virtuales Javascript, es la optimización de casos comunes y particulares.…

Continuar leyendo...

El fin de Mono, y otros finales



Tras la adquisición de Novell por parte de Attachmate el pasado año, en los últimos días se ha tenido noticias del primer cambio sustancial, el despido del equipo de desarrollo encargado de Mono.

Independientemente de que Attachmate defienda los intereses de Microsoft, estamos en un periodo de intensa crisis económica, al menos en lo que se refiere a países desarrollados, y salvo que estrategicamente esté muy claro, no parece prudente invertir recursos en proyectos que tendrán un cuanto menos, complicado retorno de la inversión. En su día, en decadencia de MySQL, os hablaba de algo similar, en aquel caso, relacionando MySQL, con la compra de Sun por parte de Oracle.…

Continuar leyendo...

Powerbasic



Como muchos de vosotros, comencé programando en lenguaje BASIC. Por aquellos días era no estructurado (con números de linea), e interpretados. Además en mi caso, sobre un hardware de 8 bits.

Bastante tiempo después, con Turbo Basic, llegué a la compilación, que como ahora es conocido por todos, permitía transformar el código fuente, en este caso en código ejecutable nativo. Además Turbo Basic implementaba un dialecto de BASIC estructurado, que permitía evitar el código espagueti.

Turbo Basic 1.0 escrito por Bob Zale, y vendido a Borland, apareció en 1986, llegando a la revisión 1.1 de 1987.…

Continuar leyendo...