Disclaimer: This is a personal web page. Contents written here do not represent the position of my employer.

Saturday, August 11, 2007

 

Vala: ¿lo mejor de los dos mundos (C & C#)?

Charlando con mi colega José Ramón, me comentó algo sobre un proyecto que iba a ser considerado como el "asesino" de Mono. La verdad, si algún proyecto iba a tener tamaña tarea, me pregunto cómo no escogieron un nombre más "vistoso".

Y es que "Vala" es un nuevo proyecto de Gnome que pretende coger lo mejor de los dos mundos entre un lenguaje nativo, sin orientación a objetos, con aritmética de punteros y rápido (C) y un lenguaje administrado, orientado a objetos, sin aritmética de punteros, y en el que la eficiencia suele considerarse como algo menor (por tener un JIT que lo compila al iniciar, y un runtime que lo gestiona, y lo monitoriza con un recolector de basura).

¿Qué coge Vala de cada uno?

Y cualquiera se preguntaría, ¿cómo es posible? Pues porque Vala tiene un compilador cuya salida no es código máquina ni código intermedio, sino código C, lo que es muy interesante.

También es interesante la discusión que ha suscitado el tema en OSNews, de la que destaco este comentario por si no ha quedado del todo claro de lo que este proyecto es capaz.

Y yo me pregunto lo siguiente:

Hay una cosa que no me gusta de Vala: al parecer es estáticamente tipado para tipos primitivos, pero es dinámicamente tipado para clases/objetos. ¿Volvemos al Lazy Programming? :(

Lo que yo haría si fuera Miguel de Icaza, es contratar a esta gente para que hicieran un compilador similar a Vala, pero para C#. Con eso podrían hacer que Gnome y otros detractores de lenguajes de alto nivel, usasen una API tan establecida y útil como la de Mono, además de ofrecer interoperabilidad con este lenguaje. O mejor aún, que hicieran un compilador que convirtiese IL a C. Y me repito ¿no es esto el AOT? (No digo que sea lo mismo que el AOT, sino que el AOT consigue lo mismo.)

Aunque ahora que lo pienso, ¿por qué el AOT soporta tan pocas arquitecturas? Porque compila directamente a nativo, en lugar de a C. A lo mejor habría que reescribir el AOT de Mono con este nuevo approach de manera que se reutilizara el tan estable y poderoso GCC.

Actualizacion 25-MAY-2008: Antes de nada quería agradecer a los que han publicado comentarios en esta entrada, pues han sido muy reveladores.

Y ahora queria rectificar algunas cosas que he dicho (y que sin embargo ningún comentario me había advertido):
a) Ahora que he estado trabajando unos meses con gcc (para hacer ciertas cosas de bajo nivel en mi nuevo proyecto en Novell) voy a dejar de considerar "todo poderoso" al gcc porque le he encontrado bugs graves (de parseo y de análisis semántico).
b) Resulta que Vala no es dinámicamente tipado, ¡es estáticamente tipado! Lo que ocurrió es que confundí su inferencia de tipos con la dinamicidad de tipos al ver un ejemplo de codigo. Pero gracias a esta entrada he salido de mi error (y aquí un ejemplo de codigo que recibe un Gtk.TreeView como parámetro de un método).
c) Con lo descubierto en el punto (b) me he quedado bastante entusiasmado con el proyecto. Aun asi, creo que sigue siendo interesante un runtime que gestione tu flujo de codigo, por lo que seguiré usando Mono en general. Sin embargo, para cualquier pieza de software que requiera permanecer en el nivel bajo (bien por rendimiento, o bien para ser "wrapeado" por otros lenguajes) consideraré seriamente empezar a usar Vala, y dejar de usar C de una vez por todas. De hecho opino que la industria debería empezar a reescribir todo lo que esta hecho en C a este lenguaje.

Labels: , , , ,


Tuesday, August 07, 2007

 

N95: primeras decepciones

Bueno, pues al final me lo he comprado, y la he cagado. ¿Por qué?



Por lo demás bien, pero ya tengo una espinita clavada y no sé si llevarlo al servicio técnico a que me solucionen lo de las WLAN. He leído en foros, y al parecer este problema a Nokia se la suda. Bien pues tengo 2 años de garantía para decidir si me la suda a mí o no, no voy a pasarle esto a Nokia.



Actualización 21-ABR-2008: He actualizado el software del móvil (vía Windows, puajj, a ver cuándo Nokia se digna a portar todo a Linux, ahora que han comprado Tolltrech) y hay novedades: el programa de GPS es mucho mejor porque ahora puede conectarse por wifi para bajarse los mapas (aunque el GPS en sí sigue yendo mal y lo voy a llevar a reparar). He conseguido entrar a alguna red wifi cifrada, pero no a todas. El navegador parece que ya muestra PNGs. Próximamente contaré cómo va la conexión a internet con tarifa plana permanente y sin límite que me voy a poner con el N95 gracias a Yoigo.

Actualización 6-MAY-2008: Parece que no es que el GPS estuviera roto, es que hay que pagar una suscripción a Nokia, ¡¡qué hijos de puta!! ¿Y por qué en los GPS que compras en los coches no hay que hacerlo? Y lo más importante, ¿cómo son tan hijos de perra de esconder esto tan bien en las especificaciones? Incluso en la página de soporte de Nokia no viene claro hasta que llegas aquí, donde se puede ver este vídeo. Además no pone el precio, ¿se dignarán a pedirme el nº de tarjeta de crédito sin decirme lo que me van a cobrar? Bueno, al menos he hecho otra actualización de software y las redes wifi seguras ya funcionan (aunque poniendo la clave en Hexadecimal), aunque estoy tan decepcionado que estoy por vender este maldito móvil del demonio.

Actualización 6-MAY-2008: La anterior actualización la había escrito guiado por unos auténticos incompetentes profesionales de PhoneHouse que me indicaron que el servicio de GPS era de pago. Lo que es de pago es el servicio de guiado por voz!!!!!!!!!!!!!!!$·%)/·)·$/%$)(·%?)·"!ª!!!!!!!! Ahora mismo relleno una hoja de reclamaciones para esta gente tan poco informada (del propio centro Nokia de soporte, es acojonante).

Actualización 1-JUN-2008: Ya me han reparado el móvil, se supone, y el GPS parece que funciona más veces que antes, pero no tantas, y lo voy a volver a llevar. ¡Además ahora no funciona el botón de subir el volumen! En fin, en otro orden de cosas, he conseguido conectarme por 3G con él, con Linux (OpenSUSE) y la cojonuda tarifa de Yoigo de 1'20 € al día sin límite de descarga, y va muy bien, como una ADSL de hace unos años (en cuanto a que va un poco más despacio y es algo más inestable, el MSN a veces se cae... pero en fin, incluso YouTube funciona bien y rápido). Los detalles de mis divagaciones técnicas sobre esto están en los comentarios de esta entrada.

Actualización 3-JUL-2008: Voy a poner las instrucciones concretas para conseguir hacer funcionar todo este ecosistema (de keywords bluetooth opensuse11 Nokia N95 Yoigo 3G) en lugar de citar enlaces:

Configurar el Bluetooth del teléfono para activarlo y ponerlo un nombre.
En OpenSUSE ya viene algo en el system tray para gnome con el símbolo de bluetooth. Botón derecho en él: Browse Device.
Saldrá el elemento con nuestro nombre: lo seleccionamos y damos a Connect.
En el móvil saldrá un mensaje para que pongamos un número aleatorio de seguridad, lo ponemos (12345 por ejemplo).
Luego en el portátil saldrá una pantalla para poner este número, lo ponemos (12345), ya están enlazados.
Luego saldrá una pantalla de error con "Couldn't display obex://[...]/
La dirección que aparece donde los puntos suspensivos es la de nuestro móvil <-- a partir de ahora (BDADDR)
Instalamos el paquete kdebluetooth.
Ejecutamos el siguiente comando:
sdptool browse (BDADDR) | grep -iA 11 "^Service Name: Dial-up"
Allí saldrá una línea con "Channel:" y apuntamos ese número <-- a partir de ahora [CHANNEL]
(Hay que tener cuidado!!! Porque si reiniciamos el teléfono parece que el CHANNEL cambia.)
Ahora necesitamos establecer un canal para nuestro teléfono, para hacerlo en esta sesión:
sudo rfcomm bind rfcomm0 (BDADDR) (CHANNEL)
Para hacerlo en subsiguientes, añadir el siguiente texto en el fichero
rfcomm0 {
# Automatically bind the device at startup
bind yes;

# Bluetooth address of the device
device (BDADDR);

# RFCOMM channel for the connection
channel (CHANNEL);

# Description of the connection
comment "My N95";
}

Ahora nuestro dispositivo es /dev/rfcomm0 <-- a partir de ahora (DEVFILE).

Ahora instalamos el paquete pppd (llamado smpppd en opensuse).

Ahora editamos como root (con sudo) el fichero /etc/wvdial.conf y le metemos este contenido:

[Dialer Defaults]
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","internet"
Modem Type = USB Modem
Baud = 460800
New PPPD = yes
Modem = (DEVFILE)
ISDN = 0
Phone = *99***1#
Username = "internet"
Password = "internet"
Stupid Mode = 1
Ask Password = 0
Dial Command = ATDT
Compuserve = 0
Force Address =
Idle Seconds = 3000
DialMessage1 =
DialMessage2 =
Auto DNS = 1


Ahora arrancamos pppd con:
su
service smpppd start

Ahora desactivamos el networkManager (botón derecho -> desactivar Enable Wireless o el tipo de red que tengamos).

y marcamos con el comando:

sudo wvdial

(Es posible que al hacer esto, salga algo en el móvil, si es así le damos a Aceptar en el móvil.)

Y ya está, desactivamos la opción File->Work offline de Firefox y a navegar.


Actualización 26-NOV-2008: Ahora que vivo en EEUU, los parámetros del fichero de configuración wvdial han cambiado (operador: AT&T):

[Dialer Defaults]
Modem = /dev/rfcomm0
Baud = 921600
Init1 = ATZ
Init2 = ATQ0 V1 E1 S0=0 &C1 &D2 +FCLASS=0
Init3 = AT+CGDCONT=1,"IP","WAP.CINGULAR"
Phone = *99***1#
Username = WAP@CINGULARGPRS.COM
Password = CINGULAR1
Stupid Mode = 1
Auto DNS = 1

Por cierto, mucho cuidadito con navegar más de 1 minuto sin contratar el plan "plano" de datos, porque a mí por hacer una mínima prueba se me ha chupado 12 dolares... ¡¡Hijos de puta!!

Labels: ,


This page is powered by Blogger. Isn't yours?

Categories

RSS of the category Gnome
RSS of the category Mono
RSS of the category C#
RSS of the category Programming
RSS of the category Mozilla
RSS of the category Web Development
RSS of the category Security
RSS of the category Open Source
RSS of the category Engineering
RSS of the category Misc
RSS of the category Politics

Contact with me:
aaragonesNOSPAMes@gnNOSPAMome.org

Archive
My Photo
Name:
Location: Hong Kong, Hong Kong
Follow me on Twitter