Instalar QT en Visual Studio

Si has intentando instalar las últimas
versiones de QT en Visual Studio habrás visto que la cosa no funciona como debe
ya que la biblioteca no compila, fallando en la parte de la construcción de
WebKit, que viene a ser el componente para navegación Web de QT (Algo así como
el control OCX del IE, pero válido para cualquier plataforma soportada).

Pese a ello, puede resultar muy interesante
tener disponible esta plataforma en Visual C++, ya que, aunque la podemos instalar
con su IDE nativo, las funcionalidades de éste apenas le llegan a la suela de
los zapatos a las del de Microsoft, y no digamos ya las diferencias en cuanto a
rendimiento del compilador de Visual C++ frente al de GNU.

Para quien no lo sepa, QT es un Framework
escrito en C++ que es capaz de generar ejecutables para Windows, MAC y Linux a
partir de un mismo código fuente. Es algo que todavía no he probado a hacer,
pero seguro que dentro de poco publico algo por aquí. En un principio QT era un
producto de TrollTech, y su licencia era propietaria. Con el tiempo la empresa
fue bajando los requisitos y, gracias sobre todo a KDE –un escritorio Linux-,
al final salió con licencia doble. Es decir, podías usarlo para hacer programas
propietarios pagando una licencia a TrollTech o hacer programas libres sin
tener que pagar nada.

Luego TrollTech fue comprada por Nokia, y con
la versión 4.4 de la biblioteca, ésta pasó a ser LGPL, lo que quiere decir que
se puede hacer cualquier tipo de desarrollo con ella, paguemos o no. En cierta
medida es algo lógico ya que Nokia no se dedica a vender QT, sino que usa QT
para sus móviles, y una forma de fomentar el desarrollo con esta biblioteca es
la de ofrecerla completamente gratuita. De todos modos hay un requisito que
pone Nokia, y es que sólo se puede usar la versión de enlace dinámico (con QT
metido en varias DLLs) en lugar de enlace estático. Esto no está muy claro en
la licencia en sí, pero pregunté y fue la respuesta que me dieron. Además,
tampoco es que sea muy viable un ejecutable de 20 megas, por poner un ejemplo.

 

Obtener
QT
. El primer paso es bajarnos el SDK de QT, lo
que podemos hacer desde aquí: http://qt.nokia.com/downloads.
Debemos elegir la versión LGPL/Free y dentro de ella bajarnos el Qt SDK for Open Source C++
development on Windows
. Al hacer clic sobre el enlace citado se
iniciará automáticamente la descarga de la última versión del SDK.

Integración
con Visual Studio
. También debemos bajarnos el Visual Studio Add-in,
que se integrará en Visual Studio versión estándar o superior (no creo que funcione
en la versión Express).

 

Una vez instalados ambos elementos, tendremos
en la carpeta C:QT una nueva subcarpeta con la versión instalada, que en mi
caso es la 2009.03. Esa instalación está completa, es decir, podremos usar el
QtCreator para construir nuestros proyectos, y de hecho no hay que hacer nada
más si nos conformamos con las herramientas de que nos provee Nokia.

Cuando instalemos una nueva versión, esta
quedará en una nueva carpeta también colgando de C:QT, y parece ser que la
idea de Nokia es sacar cuatro versiones al año. Aparte de la fecha, también se
lleva un control de versiones. En el caso que nos ocupa, la versión es la
4.5.2.

De este modo podemos mantener diferentes
versiones del producto sin problemas, y de hecho incluso el Add-in de Visual
Studio entiende eso y podremos compilar para una o para otra según queramos.

Una
cosa a tener en cuenta es que la ruta de instalación no puede tener espacios en
blanco
, si no luego nos fallarán las herramientas, ya
sean de Visual Studio como del propio QtCreator.

 

El siguiente paso es copiar la carpeta
C:QT2009.03 en C:QT2009.03-vc. Yo he adoptado esa filosofía: la carpeta con
la coletilla “-vc” es la versión de Visual Studio. Evidementemente podemos
hacer esto directamente sobre la carpeta de instalación original, pero si
metemos la pata sólo nos quedará desinstalar, borrar la carpeta, y volver a
instalar (que tampoco es mala opción).

Si no fuera por los bugs que cito más abajo,
sería buena cosa borrar el contenido de las carpetas bin y lib de lo que hemos
copiado, aligerando así el espacio ocupado, pero debido a ello si lo hacemos no
seremos capaces de compilar QT para Visual Studio.

Este paso que viene ahora es opcional pero
recomendable. Yo me he creado un fichero .bat en C:QT que he llamado
“configure.bat” y que contiene lo siguiente:

 

cd %1qt
configure –shared
–debug-and-release
nmake

 

El proceso normal para recompilar QT es ir a
la carpeta C:QT<versión>qt y ejecutar el programa configure (en
Windows, en Linux configure es un script) con las opciones de comandos
adecuadas. En general no es necesaria ninguna excepto la última si queremos que
nos construya las versiones debug y release en lugar de sólo la debug.

Con el fichero .bat lo que hago es automatizar
este proceso, de modo que sólo tengo que irme a C:QT y picar “configure
<carpeta>” para reconstruir la versión que me interese.

 

Nos hayamos creado o no el fichero .bat, ahora
tenemos que abrir una ventana de comandos de Visual Studio, situada
generalmente en Inicio -> All programs -> Visual Studio 2008 -> Visual
Studio Tools -> Visual Studio 2008 Command Prompt.

Pero hay truco. Si queremos construir una
versión de 64 bits, debemos elegir la consola de 64 bits, y si queremos un
sistema de 32, la normal. Deciros que yo todavía no he construido nunca una
versión x64, pero por lo que dicen funciona igual de bien que la otra. Sólo con
el tipo de ventana el script de QT sabrá qué versión compilar.

Una vez que hemos abierto la ventana de
comandos, nos vamos a C:QT si tenemos el fichero .bat o a
C:QT<versión>qt si no lo tenemos.

En el primer caso picamos “configure
2009.03-vc”. En el segundo, “configure –shared –debug-and-release”. En ambos
casos nos preguntará qué versión queremos. Tecleamos ‘o’ de OpenSource, y luego
‘y’ para aceptar la licencia correspondiente. A partir de ahí podemos irnos a
comer, cenar o echar la siesta.

Si no hubiera bugs en el proceso de
compilación, en el primer caso el proceso se realizaría por completo, pero como
los hay nuestra compilación se interrumpirá miserablemente. En el segundo caso,
una vez que configure haya terminado, debemos teclear “nmake”, cosa que podemos
hacer sin que el proceso de configurar haya acabado, y así casi mimetizamos
ambos procesos.

 

Cuando se interrumpa la compilación, tendremos
un error del enlazador diciéndonos que faltan una serie de símbolos. Tenemos
entonces que irnos a la carpeta
C:QT<versión>qtsrc3rdpartywebkitWebCoretmpmoc. Ahí veremos dos
carpetas, release_shared y debug_shared. Entramos en la primera y borramos el
fichero “mocinclude.tmp”. Copiamos el fichero “moc_QnetworkReplyHandler.cpp” y
nos vamos a la otra carpeta, debug_shared, en donde volveremos a borrar
“mocinclude.tmp” y pegaremos el fichero. Si nos fijamos en esta carpeta hay ya
un fichero con ese nombre pero de tamaño cero.

Es conveniente, aunque no obligatorio, “tocar”
el fichero “moc_QnetworkReplyHandler.cpp” de debug_shared para que sea
posterior a la fecha de creación (yo lo que hago es abrirlo con el bloc de
notas, añado y quito un espacio en blanco y lo guardo, así se cambian las
fechas.

Ahora volvemos a nuestra consola y volvemos a
picar “nmake”. El proceso de compilación seguirá hasta el final, por lo que de
nuevo podemos volver a echarnos otra siesta, irnos de parranda o leernos un par
de libros. Compilar QT es una tarea larga, incluso en un Quad con 8 GB de
memoria.

 

Borrar “mocinclude.tmp” es necesario para
eliminar una caché que impide que el compilador vea los cambios que hemos
hecho, por lo que si sólo copiamos el fichero y seguimos con la ejecución del
proceso de compilación seguiremos teniendo el error.

El motivo de por qué el otro fichero tiene
tamaño cero es harina de otro costal. QT utiliza un metacompilador llamado
“moc” para unir los slots con las signals, por lo que el fichero fuente
que hemos creado y que contiene elementos de acceso a la UI no vale
directamente, primero hay que pasarlo por el programa “moc”, que creará un
nuevo fichero ya válido.

En el caso que nos ocupa, el fichero original
es “QnetworkReplyHandler.h”, pero por el motivo que sea (todo indica que es un
bug del programa “moc”), éste es incapaz de generar el equivalente .cpp
procesado para una build debug. Si se mocquea
a mano con todas las opciones adecuadas, dice que no encuentra una clase válida
y genera un fichero vacío. Hasta ahí he llegado yo.

Lo más curioso de todo es que si borramos los
ficheros .a (que son de linux), los lib, los exe y las dll, el proceso de
compilación se produce de forma diferente y no se nos crean los ficheros
adecuados en la carpeta tmpmoc, de modo que no tenemos forma de copiar de la
parte release a la parte debug… Ciertamente resulta algo extraño y mosqueante,
y quizás cuando tenga tiempo y ganas lo investigue más a fondo.

 

Ya hemos compilado QT. Ahora abrimos Visual
Studio y abrimos en la barra de menús QT -> QT Options, con lo que
obtendremos un cuadro de diálogo en el que añadiremos nuestra nueva versión.
Aquí la primera vez debe aparecer vacío, así que hacemos clic en el botón
“Add”. Se nos vuelve a abrir otro diálogo y hacemos clic en los puntos
suspensivos que hay a la derecha del campo “Path”. Ahora navegamos hasta
C:QT2009.03-vcqt y aceptamos. Ahora podemos darle un nombre a esta versión
en el campo “Version Name”, por ejemplo “qt-2009.03”. Aceptamos todo y listo,
ya tenemos lista la integración.

Si os habéis dado cuenta en el diálogo de
opciones, es posible mantener varias versiones de QT y seleccionar la que nos
interese por defecto. En principio puede parecer una chorrada, pero cuando tienes
aplicaciones legadas con versiones antiguas que no compilan en versiones nuevas
de QT es una gran cosa.

 

Con la integración con Visual Studio tenemos
hasta un asistente de proyecto. Si elegimos crear un proyecto nuevo desde la página
de inicio o desde el menú normal, veremos que ahora disponemos de un nuevo tipo
de proyecto llamado “QT4 Projects” y que nos permite elegir entre diferentes opciones.
La normal será “QT Application”, y dentro del asistente podremos elegir qué
modulos vamos a usar. Una vez creado un proyecto, si hacemos doble clic sobre
un fichero .ui, se nos abrirá el QT Creator, que es un editor visual de
formularios y con el que podremos crear nuestras interfaces gráficas igual que
se hace en C++Builder, C# o VB.

 

Me he comprado un iMAC (II)

Bueno, llevo
ya casi una semana manejando por las tardes mi cacharro y ciertamente tengo que
reconocer que mucha de la gente que comentó cosas en la entrada
anterior
tiene más razón que un santo.

Lo primero de
todo son los atajos globales de teclado, que tiene como un par de espuertas, y
encima las puedes modificar a tu gusto y creo que añadir nuevas. Cosas que
puedes asignar o que ya vienen asignadas a combinaciones de teclas son, por
ejemplo, lanzar Spotlight con
Alt-Espacio. También he vuelto a configurar el Dock para que esté oculto y a un
tamaño de pantalla decente, pero he asignado una combinación de teclas (Win-Expacio)
para abrirlo, así en el tiempo que tardo a bajar el ratón con la mano derecha
lo despliego con la izquierda, y si no tengo la mano en el ratón puedo
manejarlo por completo con el teclado.

He acelerado
el movimiento del ratón, porque de origen es muy lento para una pantalla de 24
pulgadas y se tarda mucho a llegar de una punta a otra, y con eso he ganado
bastante velocidad.

Si os fijáis
estoy refraseando algunas cosas que me habéis contado en los comentarios y en
los grupos de noticias de Lechado, y de hecho, como alguien ha dicho, con Spotlight quién necesita el Quicksilver o el Todo. La verdad es que pensaba que era un mero buscador, pero no,
no es nada de eso. Como también habéis dicho, ya quisiera el Windows Search de Microsoft llegarle a
la suela de los talones. La verdad es que con esa herramienta no es necesario
ningún menú de inicio de aplicaciones ni nada que se le parezca.

No
obstante hay cosas que siguen sin molarme: la peor de todas es la calidad de
las fuentes, que es, cuando menos, regular. El teclado original, el pequeño, es
un poco mierdosillo, y del ratón no tengo tampoco que retractarme nada, de
hecho ahora estoy usando mi antiguo Microsoft
Wireless Natural Multimedia.
Ese es el motivo de poner las teclas con los
nombres de Windows ya que las de MAC no me las sé. Aparte de eso, ahora tengo
tecla suprimir y borrar, y el teclado numérico. La verdad es que este teclado
está algo viejo, y el ratón ya no os digo, pero es el único USB que tengo.
Luego tengo que salir de compras, me daré una vuelta por algún lado y compraré
uno más o menos decente, porque en este las teclas están durísimas y se atascan
al bajar. No es que se queden enganchadas, no, es que al apretarlas bajan a
trompicones, y el ratón lleva una buena cantidad de reparaciones de la rueda,
ya que no es precisamente genial el sistema que lleva, y a veces se atasca.

 

Bueno,
independientemente de lo dicho, esto me gusta cada vez más, conforme le voy
cogiendo el tranquillo me va resultando más fácil y confortable, y la calidad
de la pantalla es acojonante.

Mi idea es
usar el MAC a la MAC, sin herencia de
Windows, aunque de momento me tengo que defender con aplicaciones comunes, como
el Opera, que estoy usando para el correo, las RSS y las news. Considero que el
Mail de MAC es suficiente para las dos primeras, pero lo cierto es que para MAC
no hay un cliente de noticias decente. He probado como diez, y todos apestan
mucho. No, el Thunderbird no lo he
usado ni lo voy a usar, aunque creo que, Opera mediante, sería el más adecuado.
Pero para usar ese ya tengo el Opera, del que encima conozco todos sus
tiquismiquis.

Por otro lado,
el OpenOffice, lo siento, aparte de que no me gusta, tiene una buena cantidad
de problemas, ya expuse un par de ellos en la entrada anterior. Por ello me he
pedido un Office 2008 para MAC, que me ha llegado hace un momento, y de hecho
esto lo estoy escribiendo con él mientras mi PC está comiendo números con las
cuatro CPU al 80%. No, no he pagado pasta por él, ser MVP tiene a veces sus
ventajas.

He
estado probando la versión con límite de tiempo que ofrecen para descarga, y la
verdad es que el Entourage y el Messenger son, diciéndolo suavemente, una
mierda. El Messenger (Versión 7.0.0.0) se cuelga a veces, no puedes cambiar la
imagen con la que apareces. El Entourage en principio no está mal, pero adolece
de alguna carencia que al menos para mi lo hacen prácticamente inservible, ya
que no hay modo de saltar al siguiente mensaje sin leer entre carpetas. Así que
ambos programas están descartados.

 

He he pedido
un Time Capsule de 1TB. La idea es
sustituir mi Router por dicho cacharro y aprovechar su disco duro para la Time Machine y las copias de seguridad
tanto de Windows como de MAC. Espero poder acceder simultáneamente desde ambos
sistemas operativos al disco a través de la red. Supongo que ese será el motivo
por el cual APPLE ha hecho un aparato así, ya que si no comprar un router y un
disco USB por separado resulta sensiblemente más barato, contando con que el
router ya lo tengo y no funciona mal del todo, consiguiendo transmisiones
ininterrumpidas de más de 800MB/s.

Y de paso,
aprovechando la oferta para
equipos comprados después de junio
, que pese al chivatazo del comentario de
la entrada anterior ya conocía, también he pedido un Snow Leopard.

Ambas cosas
salen el viernes para mi casa, ya os contaré, como también os contaré cómo me va con QT 4 para MAC.

 

Me he comprado un iMAC

 

Bueno,
mañana es mi primer día de trabajo tras las vacaciones, y durante
ellas me he comprado un iMAC de 24 pulgadas, ahí es nada. Aunque tan
sólo llevo un par de días con él, ya me encuentro bastante suelto
en su manejo, y eso sobre todo gracias a los consejos y
recomendaciones de la gente de las news de Lechado,
de hecho estoy escribiendo esto desde OpenOffice hasta que me llegue
el Office para MAC. Por cierto, no llevo un párrafo y ya le he
pillado un bug a la versión 3.1 del Writer: si asignas un link a la
última palabra del texto, sigues extendiéndolo conforme vuelves a
escribir. Empezamos bien. La verdad es que da mucho asquito… Y me
está costando encontrar la forma de eliminar el link del texto que
he ido escribiendo, de hecho todavía no lo he conseguido.

Bueno,
ahora sí, he tenido que quitar el enlace y volverlo a poner. Menudo
jaleo. Seguimos.

Mis
vacaciones no suelen ser las típicas, sino que más bien aprovecho
para hacer lo que me gusta, aunque como llevo ya varios años
trabajando en lo que me gusta, a veces resulta difícil distinguir si
estoy trabajando o no, aunque en este caso, y por primera vez, me he
marcado unos objetivos a cumplir:

  • Gandulear
    a más no poder, levantarme a la hora que me de la gana y hacer lo
    que me de la gana: conseguido.

  • No
    encender el ordenador en las tres semanas: no conseguido, aunque me
    marqué como mínimo no hacerlo durante la primera de ellas y
    tampoco lo pude cumplir. Lo que sí que no he hecho ha sido abrir documentos y el correo del curro (bueno, mientras no le llamaron por
    teléfono para que mirara esto o aquello).

  • Leerme los más de dos años de
    atraso que llevaba con la revista
    Analog Science Fiction
    and Fact
    : conseguido, y encima
    ha sido un placer.

  • Leerme varios libros sobre cómo
    escribir ciencia ficción, una espinita que tenía clavada en el
    corazón desde mi adolescencia: conseguido, gracias a mis Kindle y
    la facilidad para leer en inglés con ellos. De hecho me he leído
    cuatro libros sobre el tema.

  • Leer otros libros de divulgación,
    entre ellos el
    GEB:
    también conseguido, aunque no todos los que me hubiera gustado.

  • Terminar de leer la serie de Las
    máquinas de Dios
    de McDevitt y
    toda la saga completa de la Saga de la Commonwealth de Hamilton: no
    conseguido, me ha quedado el último de McDevitt y la saga completa,
    aunque tampoco era algo razonable de conseguir, dado lo extenso de
    ambas series.

Venga, otro bug más del Writer.
Después de salir de unas viñetas no es capaz de recuperar la
indentanción de primera línea del párrafo, aunque sí las marcas
de justificación y de separación de líneas.

Pues sí, me he comprado un iMAC.
Casi nada, ya lo tenía entre ceja y ceja desde hace mucho tiempo, y
el colmo llegó cuando me fui con mi hermana al
yosoymuytonto
y, con su labia característica, me convenció (o más bien hizo que
perdiera el único reparo que tenía para hacerlo). La verdad es que
es un cacharro estupendísimo, una gozada de máquina, y más la de
24 pulgadas. Apenas se oye, arranca en un peo (aunque a veces tarde
algo más) y funciona como una moto. Eso si, no es oro todo lo que
reluce.

Veamos.

Si no lo sabéis, los iMAC son un
monitor donde va todo dentro, un teclado y un ratón. La carcasa es
de aluminio, y el teclado también. Bueno, concretemos: la tapa de
arriba del teclado es de aluminio, como también lo es el pie y marco
lateral y frontal del monitor. Lo demás es plástico. Y se pone
tibio -el aluminio, me refiero-. Aunque eso es lo de menos, y mola
mucho porque si no fuera porque ves la pantalla, no oirías que está
encendido.

Cuando lo enciendes por primera vez
te hace las preguntas de rigor y luego se pone a bajarse
actualizaciones, que en mi caso rondaron los 700 megas. Esta versión
trae el MAC OS X versión 10.5.8 (al menos después de actualizarse).
Es un Core 2 Duo a 2.66 Ghz y tiene 4 GB de RAM DDR3 a 1067 Mhz. Y
las malas lenguas dicen que en este hardware el Window Vista y 7
corren que se las pela. Ya lo veremos.

El teclado original, ¡ay el teclado
original! Lo único bueno, y no mucho, es que es de aluminio y se le
supone mayor robustez, aunque no creo que a nadie se le haya partido
el teclado en dos. En fin. Por lo demás es una mierda. Es diminuto,
no tiene la parte numérica ni teclas extendidas, el ENTER es
minúsculo, carece de teclas de avanzar y retroceder página, inicio
y fin y alguna que otra. No obstante, pese a haber instalado un
Microsoft Wireless y haberme funcionado, he vuelto a él.

El ratón no está mal, aunque como
no andes muy listo es tremendamente fácil equivocarte de botón,
sobre todo con el derecho (eso después de activarlo, porque viene
desactivado de fábrica). Es decir, a veces aprietas el lado derecho
pero como es todo una pieza también lo hace el izquierdo, y el
sistema operativo te lo toma como éste último. La bolita no está
mal, es una especie de trackball para el scroll, y si la aprietas
hace de tercer botón, aunque dada la sensibilidad de la bola a veces
haces scroll y luego aprietas.

En fin, que ambas cosas dejan mucho
que desear.

Lo bueno del sistema operativo es
que funciona. Bueno, funciona todo lo que trae, y funciona bien, no
como en Windows, que hay muchas cosas que no lo hacen como deben. Eso
sí, lado a lado, las funcionalidades de la Shell de Windows les dan
como cien mil patadas a la de OS X. Muy bonito pero funcionalidad
poca si no instalas extensiones de terceros.

El Dock (que es como el menú inicio
de Windows) es un juguete sin funcionalidad apenas excepto las
animaciones esas tan bonitas. El tamaño original te ocupa una buena
parte de la pantalla, y si lo haces diminuto los iconos resultan
bastante pequeños e incómodos. Y si lo pones para que se oculte
automáticamente, cuando arrimas el ratón a la zona tarda un montón
a aparecer.

Lo lógico es que al maximizar una
ventana existiera la opción de que ésta se colocara por detrás de
él y que se volviera casi transparente. Así sí que sería útil.

Para indicarte que un programa está
abierto, te pone una especie de circulito debajo del icono, y si le
das con el botón derecho te salen varias opciones, pero las
justitas.

¿Cómo lanzas un programa que no
esté en Dock? Pues es complicadillo, tienes que abrir el Finder,
irte a Programas y buscarlo, con lo fácil que es de hacer en Vista y
7: tecla de Windows y teclear el inicio del nombre del programa. Una
forma de medio simular esto es arrastrar la carpeta de Programas al
lado de la papelera, y así se abrirá si haces clic en ella. Eso sí,
de tecla rápida ninguna.

Existe una extensión que se llama
Quicksilver que en
cierta medida soluciona esos problemas. Con una combinación de
teclas se abre una ventana en la que puedes teclear el nombre del
programa, al estilo de Windows. Pero es una aplicación de terceros.

Otra cosa que no me mola son las
fuentes. Comparadas con Windows Vista o con 7 son asquerosamente
horrorosas de ver, con un difuminado bastante escalado. En según qué
tamaño, es posible que los agujeros de las letras cerradas (como la
parte superior de la letra e), queden casi cubiertas por el
degradado. Eso sí, la calidad del monitor es acojonante, con un
brillo y un contraste impecables.

Hay más fallos de ergonomía, sobre
todo en pantallas grandes. Eso de que el menú esté arriba del todo
hace que muchas veces tengas que desplazar mucho el ratón, con la
consiguiente pérdida de tiempo. Y también adolece de ausencia de combinaciones
esenciales de teclas y de opciones, como la imposibilidad de saltar
al siguiente mensaje sin leer en la aplicación de correo que trae.
No es que no exista atajo de teclado, es que no existe el concepto,
ni está en el menú ni en la toolbar. Menos mal que tiene lo que
llaman “buzones inteligentes”, que te permiten agrupar mensajes y
fuentes, aunque por desgracia no sabe qué son las news, y los
programas nativos que hay por ahí son una puta mierda.

De risa es que a estas fechas no
tenga forma de importar fuentes de sindicación en formato OPML y
haya que hacerlo de aquella manera. Una cosa es hacerlo diferente,
otra es no soportarlo.

Instalar y desinstalar programas
puede ser algo complicado, ya que con unos programas se hace soltando
el propio fichero sobre la carpeta de Aplicaciones y otros hay que
instalarlos por el método clásico. Lo peor de todo es que a veces
el proceso de desinstalación es el inverso al de instalación (es
decir, se instala soltando en Aplicación, pero se desinstala con un
programa, y si no lo haces así enmarranas el sistema…) Ciertamente incoherente y chapucero.

Ahora bien, para chapucero el
Messenger para MAC, que aparte de tener como doscientos mil bugs,
peta cada dos por tres.

Hay más cosas que no me gustan,
como la inexistencia del concepto de ventana MDI (una ventana dentro
de otra). Las ventanas son todas iguales, y por ejemplo no puedes
tener dos ventanas una dentro de otra como en Windows, por lo que por
ejemplo el Opera sólo puede tener las subventanas maximizadas.

Muchos programas no dejan icono en
la carpeta de Aplicaciones, una vez instalados tienes que buscarlos
en el disco (como por ejemplo el Xcode, que es de Apple, o las
herramientas de QT). Eso sí, el buscador funciona demasiado bien,
tanto que a veces el Finder pierde el concepto de carpeta y si
quieres acceder a la padre de una te toca ingeniártelas de aquella
manera.

En fin, que no es oro todo lo que
reluce, y lado a lado prefiero un 7 a un OS X, sobre todo cuando ayer
se me colgó mi flamante iMAC al reiniciar y tuve que darle al botón
de apagar. Una última carencia, por lo menos de este modelo: los
puertos USB están detrás, y es un verdadero coñazo acceder a
ellos. Será por eso por que le teclado tiene dos, uno para el ratón
y el otro para lo que quieras.

 

 

Más novedades sobre C++ Builder 2010

1ª Actualización: Tercera Semana

Parece ser que los chicos de Borland Embarcadero están que se salen, y parece ser que cada semana sacan un vídeo nuevo sobre lo nuevo que va a traer su RAD Studio, que, como en el caso de Visual Studio, engloba a Delphi, C++ Builder y Delphi Prism, que es la versión .NET de su Delphi tras el fracaso de las versiones duales anteriores.

Debido a que cada semana van poniendo cosas nuevas, voy a dejar esta entrada para ir añadiendo las novedades que atañan a C++ Builder, y es por eso por lo que voy a repetir las de la entrada anterior.

Según la publicidad, dicen que la nueva versión tiene más de 120 novedades. Nosotros vamos a ser conservadores y vamos a poner las que veamos que lo son. La página de donde saco todo esto es esta, aparte de los foros nntp que tiene Embarcadero.

Vamos allá.

Primera semana y primer vídeo
Que se puede bajar de aquí: http://altd.embarcadero.com/download/video/weaver/weaver-sneak-peak.mp4.

  • IDE Insight: Es una ventana de búsqueda que muestra las interioridades del IDE. Es decir, si uno quiere compilar pero no encuentra la opción por ningún lado, abre esta ventana, busca «compile» y le aparecen todas las cosas que tiene el IDE con esa funcionalidad y según el contexto actual. A simple vista parece una tontería, pero es una herramienta fantásticamente poderosa. Actualización: Acabo de descubrir que eso también lo tiene Visual Studio desde hace tiempo.
  • Formateador de código, algo que ya trae Visual Studio desde al menos la versión 2003: seleccionas un bloque de código y formatea correctamente los indentados.
  • Explorador de clases. Parece ser que es bastante potente y no sólo está limitado a nuestro proyecto, sino que puedes echar un vistazo por cualquier biblioteca instalada. A efectos comparativos, es una mezcla de la ventana de «Class View» y de «Object Browser» del Visual Studio con proyectos .NET.
  • Más visualizadores de datos en el depurador. Ciertamente en esto siempre ha flojeado un poco el IDE. Esperemos que ahora esté solucionado.
  • Control de Hilos en Depuración: una ventana de depuración especial que permite trastear con los hilos de nuestra aplicación, como ejecutar sólo uno de ellos, ejecutar con según qué hilos dormidos, etc. Según dice el vídeo es capaz de detectar deadlocks y similares.
  • Compilación en background. A estas alturas suena algo risible que se presente eso como una novedad, cuando era algo que ya tenía el Turbo C, tuvo el Borland C y el Borland C++, y ha tenido de siempre Visual C++…
  • Traerá integrado el SDK de Windows 7, por lo que se adelanta en cierta medida a Microsoft.

Segunda semana y segundo vídeo
Que se puede bajar de aquí: http://altd.embarcadero.com/download/video/weaver/preview-touch-gestures.mp4.

Básicamente se habla de los “Touch Gestures”, que no son ni nada más ni nada menos que el equivalente de los mouse gestures o gestos del ratón. Bueno, así a bote pronto no resulta una novedad importante, uno se instala el SDK de Windows 7 y listo, ¿no?

¡Pues no! C++ Builder trae algo más: los gestos están integrados en la VCL, de forma que, aparte de ser consustanciales a la biblioteca, los tenemos listos para usar, incluyendo un editor de gestos para personalizar los nuestros propios aparte de los ya creados.

Y hablamos de “gestos de ratón”, no de soporte para pantallas multitáctiles, que también lo lleva. Es decir, en principio, y si lo he interpretado correctamente, cualquier aplicación creada en C++ Builder del tipo que sea dispondrá de gestos de ratón de forma integrada.

Nada más y nada menos.

Tercera semana y tercer vídeo
La tercera semana nos habla del acceso a bases de datos, con el vídeo de rigor: http://altd.embarcadero.com/download/video/weaver/database-connectivity-full.mp4

Esto lo comento de oídas, porque yo de estas cosas entiendo poco: Ahora añaden soporte para Firebird 1.5 y 2.1 de la mano de sus drivers dbExpress. También añadien una cosa que llaman HTTP muti-tier connectiviy, lo que quiera que eso signifique. Y nuevos asistentes DataSnap, Data Stream Control y protocolos de conectividad nuevos para SOA. De nuevo no tengo ni repajolera idea de qué es todo eso, pero lo trae.

Lo que sí mola es que trae un teclado en pantalla diferente al del propio windows, con soporte para un espuerta de idiomas (traducción casi literal) y para gestures, que funcionará en XP, Vista y 7 (y en este caso con multitouch).

Resumen de blogs

Dicen que cuando el gato se aburre, mata moscas con el rabo, y aunque este no sea mi caso, sí que suelo aprovechar las vacaciones para re-organizar mis cosas.

Por eso he estado de cambios y he abierto algún que otro blog nuevo para evitar llenar de cosas fuera de temas este que nos ocupa, que yo considero es mi blog principal.

Así que para aquellos que pudieran estar interesados, aquí va la lista. Y no penséis que porque sean muchos no voy a publicar nada en ellos –por eso de “aprendiz de mucho, maestro de nada”, sino que la frecuencia de publicación bajará, pero como a veces me ocurre que me callo cosas que pondría por no ensuciar el blog, he preferido dividirme. Los que habitualmente me leéis veréis que realmente no hay nada nuevo bajo el sol, sino que simplemente me he esturriado un poco. Allá va:

  • .NET o no .NET, esa es la cuestión, que es este mismo blog en el que estoy escribiendo esto. El blog se queda para lo que originalmente fue creado: dedicado a mis cosas con el desarrollo, trucos, ejemplos, noticias y lo que yo llamo artículos de fondo, como mis entradas históricas o explicando cosas sobre programación.
  • Cosas mías, que prácticamente está crerrado y seguirá cerrado. No descarto escribir algo en él, pero no creo que lo haga. De hecho, la mayoría de blogs de más abajo han heredado de éste.
  • El Rincón Analógico. Dedicado a la revista Analog Science Fiction and Fact, heredera del Astounding que trajo la ciencia ficción a la palestra. En ella, con un retraso de un mes respecto al mes de portada, están mis comentarios a cada número. Es decir, el número de septiembre de 2009 saldrá en el blog el 1 de ocutubre de 2009, aunque estuviera disponible a la venta desde primeros de agosto de 2009, para así dar tiempo a quien quiera de leer el número sin mi posible interferencia, porque a veces cuento argumentos completos.
  • Kindle Man. El título ya lo dice todo, será mi blog sobre los Amazon Kindle en particular y sobre libros-e en general. La primera entrada –escrita hace nada- presenta el blog y resume las entradas sobre libros-e publicadas aquí. Eso no quiere decir que que no vayan a aparecer aquí entradas sobre el Kindle, pero si lo hacen estarán directamente relacionadas con el desarrollo.
  • Marte Digital. Aquí estoy recogiendo mis comentarios sobre libros de no ficción a excepción de los dedicados al desarrollo, que seguirán saliendo aquí.
  • Momentos Leves. Este es el de mis p*jas mentales, como se puede comprobar, aunque llevo tiempo sin actualizarlo (y es que eso de las ideas como que anda escaso..)
  • Microcuentos y otros menesteres. Este es un blog compartido con gente de es.rec.ficcion.misc y es.soc.cultura.teatro, que lleva tiempo sin actualizar pero que de vez en cuando alguien pone algo. Está dedicado a los microcuentos escritos por la gente de ambos grupos de noticias.

Y eso es todo, amigos. Nos leemos.

Sobre C++ Builder 2010 y su historia

Tenemos una nueva versión de C++ Builder a la vuelta de la esquina, para el 24 de agosto si no me he equivocado en los cálculos. Ciertamente es una gran cosa que Embarcadero, los nuevos propietarios y quiero creer que definitivos, hayan devuelto este magnífico producto a la vida, como vamos a ver. [Si no te molan mis pajas mentales históricas y autobiográficas, salta hasta C++ Builder 2010].

Un poco de historia

Yo fui un furioso borlander, hasta quizás el nivel del fanatismo. El que haya leído mi serie histórica (aquí y aquí) sabrá que, en la academia en donde aprendí C, nos pasaron el entorno de desarrollo Turbo C 2.0, que le daba como mil patadas al Microsoft C (y no es cosas de fundamentalismos, por aquella época el Turbo C era la maravilla de las maravillas tecnológicas en cuanto a compiladores de C). Por supuesto era pirata, como era pirata todo lo que usamos en aquella academia (por cierto, financiada con los primeros fondos de la UE para desempleados, de hecho nos pagaron una pasta gansa por ir a estudiar)…

La academia. De la academia aquella recuerdo una anécdota (por llamarla de alguna manera) que quizás no debería contar pero que voy a hacer. No recuerdo la fecha exacta en que estudiamos, pero era cerca del verano, y allí dentro hacía un calor más que sofocante, lo que, junto a calor generado por los ordenadores hacía que apenas pudiéramos concentrarnos en lo que estábamos haciendo. También teníamos otro problema, y es que los ordenadores eran, por decirlo suavemente, una mierda. A la par que antiguos, ninguno funcionaba bien, como tampoco los profesores eran muy buenos que digamos.

Vamos, que éramos el culo del mundo, una tapadera para que el dueño de la academia se forrara con los fondos aquellos. Nuestras quejas caían en saco roto, ya fuéramos a hablar con el dueño de la empresa como al INEM de nuestra ciudad. Prometían pero no cumplían, y algunos de nosotros estábamos allí para aprender, no para cobrar. Así que ni cortos ni perezosos, tres de nosotros cogimos el autobús y nos fuimos a la oficina del INEM en Alicante y expusimos el tema: que teníamos ordenadores que no funcionaban, que nos moríamos de calor, que los profesores sabían menos que nosotros (que no era poco), que nos habíamos quejado al dueño de la academia y al INEM de Elda y que no nos habían hecho caso, que cuando venía el propietario se iba a comer con el encargado de los cursos del paro y aquí haya paz y allí gloria, y que si no nos hacían caso no tendríamos inconveniente en irnos a quejar a Valencia o a Madrid…

Buenooooooooo, la que se armó. Nosotros, callados como putas, al día siguiente volvimos a clase como si nada hubiera pasado, y ese mismo día cayó el Armagedón. Vinieron dos señores muy trajeados, echaron un vistazo, llamaron por teléfono al dueño, el profe estaba blanco como la cera, nos mandaron a todos a casa hasta nuevo aviso y… en cosa de tres días teníamos profesores competentes, aire acondicionado y lo último de lo último en ordenadores. A partir de ese momento, aprendimos.

***

Ya lo he comentado con anterioridad, para mi aprender C fue lo más, la revelación del maravilloso mundo del desarrollo. Y más todavía con el Turbo C, primer concepto de lo que ahora nos es tan consustancial y sin el cual muchos de nosotros no sabríamos vivir. Luego vinieron otras cosas, como Visual Basic y Delphi, elementos que no podían coexistir sin un IDE. Y con ellos también nació lo que yo llamo la generación de los pseudoprogramadores. Y que nadie se me mosquee. Para un buen programador que pueda haber en VB o Delphi, hay 10 pésimos. En C (y C++) también los hay, pero esos se paran y cambian a otro lenguaje cuando están haciendo un programa de 10.000 líneas y ya no saben cómo meterle mano (ni ellos ni nadie más). Así que en esos otros lenguajes están, también, los de C que no saben.

Del Turbo C pasé al Turbo C++, no recuerdo qué versión, creo que también la 2.0, aunque mi memoria se vuelve como agua con el tema de las versiones aquellas. Sé que de las versiones «Turbo» se pasó las «Borland», que cambiaban -y mejoraban- el concepto del IDE. Aquella (cuando la tienda y algo después) fue mi época, más que de programar en C, de hacerlo en Clipper. Y las cosas están confusas en mis meninges. Sé que manejé varias versiones de ambos productos, todas ellas ejecutando en MS-DOS, aunque con algunas ya se podía desarrollar para Windows.

Bueno, el tema es que en su momento compré el Borland C++ 3.0, que fue mi primera herramienta seria (y tomada en serio) de desarrollo. Si no recuerdo mal, aquello tenía un IDE para DOS y otro para Windows. Ya os podéis imaginar cómo funcionaría la versión Windows, arrastrándose como una tortuga reumática. Lo que no recuerdo eran pantallas azules ni caídas extrañas, que no era poco. Además, yo usaba la versión de MS-DOS, mucho más estable y funcional.

Al poco de comprar (sí, he dicho comprar) la versión 3.0, salió la 3.1, que soportaba Windows 3.1 y que apenas tenía otras mejoras que usar el SDK (o como quiera que se llamara en aquella época) de la susodicha versión de Windows. Aquello me tocó un poco los cojones porque hacía nada que había pasado por caja, así que la conseguí pirata. En aquellos tiempos no hacía nada útil con aquellas herramientas más que usar los manuales para aprender C++ y programación bajo Windows.

De esos años recuerdo haber comprado el libro Aplique C++ de Bruce Eckel, que acabo de recuperar de mi biblioteca. Si bien dije en una entrada anterior que cubría el CFRONT 2.1, ahora veo que no es cierto, que sólo llega al 2.0, y encima en un capítulo aparte. Añadamos los diez o doce manuales que traía el Borland C++ 3.0 y ahí tenéis mi aprendizaje de C++, que tenía que tomarme con bastante calma, ya que aprender un lenguaje estudiando su sintaxis en formato backus-nair tiene su mérito (por eso me compré el libro citado).

Después vino Borland C++ 4.0, que ya hacía enfoque en Windows y dejaba las herramientas de MS-DOS como secundarias, y ahí fue cuando yo empecé a usar el IDE de Windows como mi editor de desarrollo, usara Clipper o el propio Borland. En aquellos años una unidad de CD valía una pasta gansa, aunque en algún momento Creative (o como se llamara entonces), sacó la Sound Blaster 16 con unidad de CD, que yo compré, más que nada por el lector, porque la música no me hacía ni fu ni fa, y encima hacer funcionar aquello era toda una odisea y se comía buena parte del procesador cuando estaba sonando.

Pues bien, yo tenía unidad de CD, pero me equivoqué al pedir la versión 4.0 y la recibí en disquetes, o más bien ignoraba que hubiera versión en CD. Reíros un rato, creo que eran 40 disquetes de 3.5″ y alguno más de 5 y 1/4. Y, por supuesto, otros diez o doce manuales en papel. Lo que más me tocó las narices fue que el disquete 1 se me rompió al poco de tener aquello, y me tocó conseguirlo pirata porque el distribuidor en España se negaba a creerse eso de que se me había roto.

Incidentalmente, esa fue la primera vez que me plantee seriamente el motivo de comprar software original, si las pegas eran superiores a las ventajas. Lo único que me decidió a seguir siendo legal en ese aspecto era que los juegos conseguidos pirata terminaban haciendo cosas raras -como colgarse o no funcionar bien-, y se suponía que el software comprado, al venir de una fuente fiable, no traería errores en el soporte. Más tarde descubrí que a los legales también les pasaba. En fin.

Luego vino la versión 4.5, que tampoco compré porque la vi como una simple mejora. Más tarde sacaron Borland C++ 4.5 and Database Tools, que conseguí, de nuevo, pirata, porque aquello de hacer bases de datos con C++ me llamó mucho la atención. Era como mezclar churras con merinas, o al menos así lo pensaba yo, que vivía muy conforme con mi Clipper y mi MS-DOS, aunque estaba profundizando, a nivel diletante, en Win16. Pero lo de database tools era como una falacia, manejar bases de datos con C++ era algo como los Trabajos de Hércules, con lo que ahora sé eran los recién nacidos interfaces COM (aunque se llamaran OLE y OLE2). Inmediatamente después salió la versión 4.52 como bug fix de la anterior.

Cuando salió Borland C++ 5.0 pasé por caja, y volví a recibir una nueva espuerta de manuales, aunque ya pedí expresamente la versión en CD. O venía en CD y si querías disquetes tenías que pagarlos (y pedirlos) aparte, no recuerdo exactamente. Esta versión me la tomé muy en serio y me puse a estudiarla a fondo, sobre todo el IDE y lo que podía hacer, con aquellas plantillas de metaproyectos, y el acceso a sus interioridades del mismo mediante un lenguaje de script orientado a objetos. Aparte el compilador era bastante bueno y generaba el mejor código posible. Poco después recibí, gratis, la versión 5.02, otro bug fix.

Más o menos entonces también descubrí algo que me llenó de gozo: los parches. Sí, los fabricantes sacaban pequeños programas más o menos gratuitos que solucionaban algunos problemas de sus productos. Ciertamente el uso que yo hacía del Borand C++ no traía a la palestra ningún fallo si no era que tenías que tener cuidado con el orden de declaración de las variables y que a veces no se llamaban a los destructores. Casi nada, pero en mi caso no tenía importancia, lo veía como algo normal. Claro, era lo único que había -y tenía. No obstante, para la versión 5.02 conseguí, con mucho sudor, dos parches que apliqué con más satisfacción que utilidad, porque no vi diferencia entre antes y después.

***

Visual C++. No os penséis que sólo vivía de Borland. No recuerdo la sincronía entre versiones, pero en su momento conseguí Visual C++ 4 y luego la versión 5, y ciertamente no tenían nada que hacer frente a Borland. Con Visual C++ 6.0 la cosa cambió un poco, porque al parecer el mercado se había volcado hacia MFC en lugar de OWL (que también estudié, como estudié el poco valorado Turbo Vision, una biblioteca de clases potentísima para hacer lo mismo que con OWL pero para DOS). Sin embargo, en comparación, MFC era (y sigue siendo, al menos hasta la versión de Visual C++ 2008) una mierda, comparada con OWL. Esta última encapsulaba y abstraía mediante orientación a objetos real el api de Win32, mientras que MFC no es más que un envoltorio pseudo orientado a objetos de Win32. No obstante, se ve una tendencia a cambiar con Visual C++ 2008 Service Pack 1, en la que MFC, tras haber permanecido prácticamente estática desde la versión 6.0, parece estar evolucionando hacia algo más decente. Y es que la competencia de QT le anda a la zaga… con muchas ventajas frente a MFC.

Las versiones de Visual C++ las he conseguido por canales un tanto tortuosos. La 4 creo que me la regalaron por algo, simplemente me dieron el CD en una caja precintada. No puedo recordar por qué ni quién, pero sé que fue gratis. La 5 la compré con una licencia de estudiante, y la 6 también fue regalada. Por más que pienso, no consigo recordar cómo las conseguí, de hecho la 6 fue Visual Studio 6.0, que también traía Visual Basic y Visual InterDev o algo así, que jamás he sabido para qué servía. Y también sólo la caja, sin manuales.

Luego vino Visual Studio 2003 como elemento al comprar una suscripción a la MSDN, y luego me hicieron MVP y pude acceder a todas las versiones sin problemas, pero esa es otra historia.

***

C++ Builder. Bueno, el tema es que, una vez que me decidí a aprender en serio lo que traía Borland C++ 5.02, el fabricante sacó algo nuevo llamado C++ Builder. Como ya era cliente fijo de Database DM, me enviaron la publicidad del producto, que leí pero no entendí. Así que llamé a la empresa, y una amable chica me estuvo contando que eso era «lo nuevo de Borland, era programar como en Visual Basic o Delphi pero en C++. Había unos componentes que tu soltabas sobre la ventana y ya tenías hecha la parte visual de la aplicación». Si no me dijo exactamente eso, lo que me contó no se alejaba mucho de lo citado.

Y menos mal que lo compré. Aquello supuso una revolución personal, abandoné definitivamente Clipper (de hecho le di a todos mis clientes el código fuente de sus respectivas aplicaciones junto a propio Clipper) y me puse a estudiar aquello. No es que viviera de programar, que no lo hacía, pero algún que otro cliente sí tenía, y tampoco era dejarlos en la estacada, de hecho siempre les he mantenido los programas hasta que los han abandonado, aunque sé de uno que todavía tiene y usa la agenda doble que le hice. Bueno, ya no, porque hace cosa de un par de años el hombre murió, pero si siguiera vivo seguro que la estaría usando.

Con C++ Builder y una oportunidad que tuve pude dedicarme definitivamente al desarrollo y no a ir a salto de mata haciendo programas aquí y allí (mi trabajo diario y normal no era más que un modo de supervivencia). Una cosa que no he dicho es que de vez en cuando hacía algo embebido sin sistema operativo, incluso desde un PC «a pelo» (evidentemente en modo real x86 y sin muchas zarandajas). Sin embargo, esta oportunidad me puso en el camino que yo quería, y gracias a mi doble vertiente de programador de PC y no-PC he sobrevivido más que bien, y espero hacerlo en un futuro.

La siguiente versión fue C++ Builder 3 (no hubo 2 por un tema de sincronización con Delphi), que también compré. Y luego la 4. Y entonces se me hincharon las pelotas y decidí dejar de hacer el tonto comprando siempre lo mismo y me planté con C++ Builder 4, sus parches y sus bugs, que no eran pocos.

Más o menos entonces Borland entró en su fase «Inprise, me cambio el nombre porque no tengo ni puta idea de qué estoy haciendo» (Parece ser que las empresas también sufren crisis existenciales, y también parece ser que para ellas no vale eso de subirse a una montaña y preguntarse por el sentido de la vida). Y dejó de cuidar sus herramientas de desarrollo. Y empezó a dar bandazos. Sacaron el Kylix, un producto adelantado a su tiempo que ellos mismos mataron. Y otra herramienta de desarrollo en C++ multiplataforma que ahora no recuerdo cómo se llama, que también mataron. Compraron CodeWright y mataron sus productos. En fin, que de tontos está lleno el mundo.

En el tema del C++ sacaron las versiones 5 y 6 del C++ Builder, que no eran otra cosa que la 4 con la cara lavada. Y con cada versión, más bugs sin solucionar, hasta que mataron el producto. Supongo que con Delphi fue más o menos lo mismo. Yo usé la 5 y la 6 pero pirateadas, aunque mi herramienta principal siempre fue, durante muchos años, la 4.

Parece ser que algo estaba ocurriendo entre bambalinas, porque a partir de la 6 el entorno fue completamente remodelado intentando imitar las versiones de Visual Studio, con nuevas características y nuevas potencialidades. Cuando fueron saliendo las sucesivas versiones X, 2006, 2007 y 2009 yo estaba desarrollando con C# (no muy convencido, la verdad) y Visual C++ en mi trabajo actual (de hecho aproveché el cambio entre el anterior y el actual para cambiar por completo de herramientas). Yo pensaba que ambos funcionarían mejor que el C++ Builder, pero no es cierto. En el caso de .NET y C#, como te salgas de lo que Microsoft ha determinado como estándar, la mayoría de cosas no funcionan, aunque poco a poco lo van solucionando. Por otro lado, el compilador de C++ de Microsoft es muy bueno, bastante mejor que el de Borland, pero Visual Studio es otra cosa. En relación a C++ no anda muy fino, más que nada porque la implementación básica es para C#, y C++ anda metido con calzador. Esperemos que Visual C++ 2010 solucione el tema (y personalmente creo que, si no lo soluciona, al menos lo mejora sensiblemente).

Otra cosa es MFC, que son difíciles de aprender y retorcidas a más no poder. Técnicamente hablando no entiendo por qué ganó a OWL, pero la vida es así. Y ahora que más o menos me defiendo con MFC, añoro con bastante intensidad el C++ Builder y he abandonado desarrollar con C# y .NET mientras pueda evitarlo.

***

Pero con C++ Builder 2009 estoy viendo un agradable cambio. Cuando salió la versión 2007 o 2006, no recuerdo bien, fui invitado a una presentación y, como coincidía con el SIMO e iba a ir con mi jefe, pues asistí. Allí fue donde vi por primera vez a Octavio Hernández, y allí fue donde dejé caer mi pregunta bomba: «¿Va Borland a seguir publicando versión tras versión de este nuevo C++ Builder sin corregir los cientos y cientos de bugs que hay pendientes?», de hecho creo que asistí sólo por preguntar eso. Ciertamente cuando tradujeron aquello al inglés todos quedaron bastante incomodados, pero las muestras de adhesión a mi pregunta entre el público eran evidentes. Así que creo que fue David Dean el que dijo que sí, que él prometía que los errores se solucionarían.

Yo hice como que me lo creía pero interiormente lo tenía claro: esa es la respuesta que tienen que dar, de hecho seguí ignorando el producto. La 2006 fue una versión puente, la 2007 estabilizó muchas cosas y la 2009 significa el paso de ANSI a Unicode en la VCL, ciertos avances en C++ como la inclusión de la biblioteca boost y algunos avances sobre C++0x.

Y resulta que sí, que sí se están preocupando de los bugs. Por ejemplo, la versión 2007 tiene doce parches, y la 2009 cuatro que son seis, porque los sacan de dos en dos (uno para el compilador y el IDE y otro para el soporte de bases de datos). Y eso me hace querer volver, aunque reconozco que me he perdido muchos pasos en relación a la evolución de la VCL (desde la versión 4), y es difícil de recuperar.

C++ Builder 2010

Cuando escribo esto faltan 14 días para la salida del producto. Podemos ver aquí un reloj de cuenta atrás y un vídeo con las novedades, en inglés.

Básicamente mejoran el IDE con nuevos elementos:

· IDE Insight: Es una ventana de búsqueda que muestra las interioridades del IDE. Es decir, si uno quiere compilar pero no encuentra la opción por ningún lado, abre esta ventana, busca «compile» y le aparecen todas las cosas que tiene el IDE con esa funcionalidad y según el contexto actual. A simple vista parece una tontería, pero es una herramienta fantásticamente poderosa.

· Formateador de código, algo que ya trae Visual Studio desde al menos la versión 2003: seleccionas un bloque de código y formatea correctamente los indentados.

· Explorador de clases. Parece ser que es bastante potente y no sólo está limitado a nuestro proyecto, sino que puedes echar un vistazo por cualquier biblioteca instalada. A efectos comparativos, es una mezcla de la ventana de «Class View» y de «Object Browser» del Visual Studio con proyectos .NET.

· Más visualizadores de datos en el depurador. Ciertamente en esto siempre ha flojeado un poco el IDE. Esperemos que ahora esté solucionado.

· Control de Hilos en Depuración: una ventana de depuración especial que permite trastear con los hilos de nuestra aplicación, como ejecutar sólo uno de ellos, ejecutar con según qué hilos dormidos, etc. Según dice el vídeo es capaz de detectar deadlocks y similares.

· Compilación en background. A estas alturas suena algo risible que se presente eso como una novedad, cuando era algo que ya tenía el Turbo C, tuvo el Borland C y el Borland C++, y ha tenido de siempre Visual C++…

· Traerá integrado el SDK de Windows 7, por lo que se adelanta en cierta medida a Microsoft.

Por desgracia parece ser que el compilador de C++ de Borland (perdón, Embarcadero) sigue siendo el mismo pobrecito de siempre, sobrepasado por los estándares y bastante faltón al respeto.

Embarcadero está continuamente poniendo información sobre las novedades de la nueva versión en el canal de Twitter llamado EmbarcaderoTech, y hay vídeos en casi castellano y en portugués (que se medio entiende) aquí.

Primeras impresiones con Windows 7 x64 … y su SDK

Windows 7

Desde ayer tarde aquellos afortunados que hayan pasado por caja y tengan una Technet o una MSDN podrán bajar Windows 7 desde su respectiva Web. Luego hay que instalarlo, cosa que no es muy difícil ya que, al menos en mi caso, estuvo hecho en un peo, con reconocimiento automático de las resoluciones y geometría de mis dos monitores. Luego fue a Windows Update y se bajó los drivers que le faltaban, toda una gozada, oiga, aunque este comportamiento ya lo presentaba en la versión RC anterior.

Luego vino instalar toda la parafernalia siguiente, a saber (espero no olvidar nada):

· Adobe Reader y Flash Player (El reader se instaló en un suspiro).

· IconWorkshop y CursorWorkshop de Axialis.

· Camtasia Studio 6.

· CutePDF (Impresora PDF virtual).

· 7zip

· Cygnus Hex Editor

· ImgBurn (Aunque casi no hace falta porque 7 graba sus propias ISO).

· Internet Download Manager.

· Microsoft File Transfer.

· Office 2007 Ultimate (sin Groove).

· Windows XP Mode (Luego hablaré sobre esto).

· Expression Studio 3

· Visual Studio 2008 y su SP1 (y Visual Assist).

· Borland C++ Builder 2009 y sus parches.

· Windows 7 SDK for 64 bits.

· iTunes (este lo estoy instalando mientras escribo esto, no sé qué tal andará).

La instalación transcurrió más o menos en ese orden, con algún reinicio y actualizaciones de Windows Update entre medias y sin muchos problemas excepto con el SDK.

Bugs en la RTM

Tras trastear unas pocas horas con Windows 7, la RTM continúa teniendo varios bugs reportados con anterioridad.

1. El famoso del CHKDKSK que tanto revuelo ha armado. Yo no lo veo tan grave, aunque sí que clama al cielo el hecho de que un programa con tanta solera tenga un error de ese tipo. De todos modos no he probado a ver si mi sistema lo tiene.

2. El altavoz de la barra de iconos a veces muestra que el servicio de audio no está funcionando pero sí lo está. Este me ha pasado a mi, parecer ser que el código del icono sólo comprueba la disponibilidad del servicio una sola vez al inicio y si no está iniciado, saca el icono y pasa del tema.

3. ¿Dónde están los 15 segundos de tiempo de arranque prometidos? Porque de momento tarda a arrancar más que mi Vista.

4. El consumo de memoria es más o menos el mismo que en Vista. En mi caso, tras arrancar marca 1.4GB y luego, conforme vas haciendo cosas, va subiendo hasta los 2.2GB y ahí se queda.

Ya sé que los dos últimos no son bugs propiamente dichos, pero como si lo fueran, porque es una cosa prometida y no cumplida.

Modo XP (Ahora en RC)

Hay que instalarlo aparte, pero sigue siendo igual de mágico que en la Beta… Instalas una máquina virtual XP y luego dentro de ella los programas que no funcionan en 7. Si la instalación de esos programas se hizo en «Todos los usuarios» del XP Virtual, Windows 7 «sacará» dichos programas y los ejecutará desde XP pero como si estuvieran en 7.

Lo bueno del programa es que te permite tener varias máquinas virtuales simultáneas con diferentes programas arrancados en modo virtual.

Es algo que merece probarse, y funciona perfecto.

Copia de seguridad

Ha mejorado bastante respecto a Vista. De hecho, ahora puedes elegir qué carpetas y unidades copiar, y lo copia todo y no sólo los ficheros que la gente de Microsoft, en su divina sapiencia, determinaron que la copia de Seguridad de Vista debía copiar. También te permite no copiar un estado del sistema en las copias normales (que no es poco).

Y, por supuesto, puedes hacer una copia «System image» (que es lo que antes era el «Complete PC») y crear un CD de reparación.

Vamos, que se ha hecho mayor de edad.

El SDK de Windows 7

A la vez que Windows 7, en la MSDN podemos encontrar el SDK para Windows 7. Si no sabes qué es un SDK es que no te hace falta. No obstante, tras la instalación correcta, no pude activarlo con Visual Studio 2008SP1. Me daba el error que aparece en la imagen.

clip_image002

Cuando menos resulta curioso, sino risible, que algo recién salido tenga este error. Es como si, una vez construido el SDK, no lo hubieran probado.

No obstante, tras trastear un rato, he encontrado una forma de registrarlo y tener acceso a las nuevas API de Windows 7 con Visual Studio 2008:

1. Start -> All programs -> Windows 7 SDK -> CMD Shell.

2. Al abrir la ventana te dice que estás usando el SDK 6.0A (el de Visual Studio), por lo que tendrás problemas, como así es, ya que no se pueden compilar los proyectos que traigan algo exclusivo de Windows 7 como es la Ribbon nativa.

3. Una vez en esa línea de comandos, ejecuta: «WindowsSdkVer.exe -version:v7.0» sin las comillas y verás cómo el SDK se ha registrado satisfactoriamente.

Por cierto, la MSDN sigue petada, je je. Mi Windows 7 Starter para meter en mi Q1U se está haciendo esperar, así como el Paquete de Idiomas…