Posts Tagged: iphone


18
ene 09

Apple supera a RIM en número de unidades vendidas

Tenía que venir, lo que muchos no se esperaban y otros sabíamos que iba a pasar. Leo en un post de Luquidicity que no sólamente el iPhone supera a RIM (Blackberry para los no enterados) en número de unidades, sino que se convierte en el tercer fabricante de móviles en ventas… ¡con un solo modelo!

El post en cuestión recuerda que hace dos años, justo en el lanzamiento del primer iPhone, un tal Richard Sprage (de Microsoft, para más señas) predijo que Apple no sobrepasaría los 10 millones de unidades en 2 años (la predicción de Apple). Lo malo es que lo dijo en un tono jocoso “Microsoftiano”, muy al estilo de Steve Ballmer. Bien, a la vista está que se equivocó, y ha tenido que morderse la lengua.

Entre las lindezas que dice este hombre está que el iPhone no es nada nuevo, que no tiene teclado y que la batería dura muy poco. Vamos, que es como otro móvil cualquiera. Leyendo un poco más a este hombre, resulta que trabajó en Apple a principios de los 90 antes de fichar por Microsoft. Ahora lo veo claro… cada uno está en el lugar que le corresponde. :-)

Actualización: Leed también este post de Silicon Alley Insider. El artículo es de Noviembre de 2008, y tiene como titular “El iPhone de Apple es el móvil más vendido en Estados Unidos, sobrepasando al Motorola Razr”. Me quedo con la primera frase que pongo aquí traducida: “Más pruebas de que Steve Jobs cogió a la industria móbil con los pantalones bajados: Incluso en una recesión, 200 dolares es mejor que gratis” (En alusión a que el Moto Razr no vale casi nada).


20
oct 08

Inicializando objetos en Cocoa

A vueltas con mi aprendizaje en ObjectiveC y la programación en Cocoa para iPhone, vuelvo a la carga con los “inicializadores”. Qué extraño me suena esto con respecto a C++.

En C++ todo es más “estático” en el sentido de que el mecanismo de construcción y destrucción forma parte del lenguaje: sabes exactamente cuando y como se llamarán a los constructores y destructores (inicializadores en terminología ObjectiveC). El puntero “this” existe siempre y es omnipresente, pero eso no parece ser el caso con ObjectiveC, en el que “self” es más manejable y voluble.

Por ejemplo, hay discusiones sobre cual es la mejor manera de inicializar un objeto, y por lo que puedo leer, tiene mucho más que ver que uses una librería (Foundation) u otra, como por ejemplo que los descendientes de NSManagedObject tengan siempre que asignar “self” mediante la llamada a [super init]. Esto también está relacionado con que se pueden instanciar clases, no sólo objetos con lo que se lía aún más la cosa…

Ya veremos si termino comprendiendo todo esto o tiro por la ventana todo lo relacionado con ObjectiveC… Keep in touch.


14
oct 08

iPhone y la programación con ObjectiveC

Hacía muchos años que no veía ObjectiveC. Cuando digo muchos, digo muuuchos. :-) No me equivocaría si dijera que aún estaba en venta el NeXT…

Ahora he vuelto a verlo por el iPhone. La verdad es que es la primera vez que me acerco en serio a la programación para OSX. No me acordaba desde mis tiempos de universidad, y de eso ha llovido un poco. Lo más que me acuerdo es que era en C y con un Classic… cuando era actual, jajaja.

Odio la programación en ObjectiveC. Puedo comprender las razones de Apple por elegir un lenguaje así en su época, pero no para mantenerlo. Es cierto que usar C/C++ para programación de entornos de usuario hay malos ejemplos, aunque se puede hacer bien, o hacer muy bien. También podía haber hecho su propio lenguaje, o ampliar uno ya existente. Ya puestos, por qué no usar directamente SmallTalk.

Dejemoslo claro, esto es una opinión personal. Si alguien lee esto que es defensor a ultranza de ObjectiveC le daré la razón. Simplemente quiero decir que no se piense que es una opinión de “Newbe”, llevo programando en entornos de usuario desde que me compré el número 1 del MSJ (Microsoft System Journal).

De hecho, lo malo no es el entorno de desarrollo, el Xcode lo considero fenomenal, un entorno de desarrollo que ya quisiera en Windows. No. Lo malo es con el lenguaje.

En cuanto a la sintaxis es lo de menos, al final te acostumbras aunque duramente por tantos años llamando a las funciones.con().parentesis(). Lo malo de la sintaxis de ObjectiveC es justamente lo lioso de leer y de entender para los no iniciados. Te [puedes [perder facilmente:@"en la" [maraña init]]]

Para mi lo peor es que es un lenguaje orientado a objetos sobre uno que no lo es, como C. Aunque en ObjectiveC++ se pueden mezclar clases de C++ con ObjectiveC, esto no arregla el problema. Esta diferencia de conceptos ha llevado a un lenguaje que no tiene constructores y destructores, no tiene sobrecarga de operadores ni polimorfismo, entre otras cosas.

Ahora que hay más movimiento en la programación ObjectiveC por el iPhone, se oyen voces de programadores contra el sistema, y se necesitan posts como este simplemente para decir cómo se tiene que construir un puto objeto en cocoa! Simplemente esto no me parece serio, y voy a dar una razón que creo de peso: no es de recibo que un lenguaje orientado a objetos, por mucho recolector de basura que tenga, sea tan propenso a equivocaciones.

El ejemplo de los constructores. En ObjectiveC no hay constructores ni destructores. Punto. Los objetos se inicializan si el programador se acuerda de hacerlo. Todo esto sin contar que toda la jerarquía de objetos que estás construyendo depende de que tu llames a [objeto init]. Me suena a tremendo WTF!. Si hablamos de destructores, la cosa se complica. Es el programador el que tiene que llamar a “dealloc” para destruir un objeto. No, espera, ¿o mejor llamar a “release”? Mmhh… Depende. Es a estas cosas a las que me refiero, el lenguaje no permite una construcción robusta de librerías. No basta con poner en negrita en rojo con fondo fosforito en la documentación: “Llama al puto release cuando quieras liberarme”, es la clase la que debería asegurarse de liberar sus recursos.

Me recuerdo ahora un post que leí en un blog, no recuerdo el nombre si no lo pondría, que venía a decir algo así con respecto a los destructores:

“En ObjectiveC no hace falta destruir un objeto, normalmente es más sencillo y mejor que el sistema operativo libere la memoria cuando sale del programa, excepto si el objeto tiene recursos ocupados como ficheros abiertos.”.

En resumiendo venía a decir algo así. Para mi mente tan Stroustruptiana, simplemente no cabe en la cabeza que algún programador (quizás yo mismo) me deje recursos sin liberar. Llamalo memoria, en tal caso viene la basura y me la recoje, pero llámalo fichero abierto, llámalo socket conectado o peor aún, llámalo semáforo activo y verás el problema.

Este es uno de los posts que iré poniendo conforme vaya descubriendo ObjectiveC, quizá los siguientes sean más compasivos, pero mientras tanto, y si vas a escribir un comentario negativo, resuelve esta cuestión:

¿Cual es la forma más correcta de inicializar un objeto?

Forma número 1:

1
2
3
4
5
6
- (id)init {
    if ((self = [super init])) {
        // inicializar el objeto.
    }
    return self;
}

Forma número 2:

1
2
3
4
5
- (id)init {
    if (![self init]) return nil;
 
    // Inicializar el objeto
}

11
oct 08

Los nuevos móviles

Con la entrada del iPhone en la escena móvil, podemos esperar una revolución en toda regla. No sólo RIM, a mi parecer el más directo competidor, sino otros jugadores entran en escena. Google con su Android quizá sea la jugada maestra, pero me gustaría hacer notar aquí a alguien a quien en el segmento de “SmartPhones” se está olvidando últimamente: Nokia.

Quizá pasó desapercibido para la mayoría de analistas que recientemente Nokia compró Trolltech, la compañía detrás de Qt, quizá la más conocida librería de desarrollo de interfaces multiplataforma. No quiero pensar que soy el único en ver que detrás de esta compra quizá se encuentra una sorpresa de Nokia que podríamos ver muy pronto, quizás el próximo año.


10
oct 08

iPhone, y la revolución terminal

Cumpliendo mi requisito de “un post por día” (como comentaba en el de ayer) :-) voy a escribir mis ideas y pensamientos sobre el iPhone y lo que se comenta de él.

Sobre el iPhone hay división de opiniones, mucha gente dice que es el mejor terminal disponible y sin embargo otros que no es para tanto. Yo tengo un iPhone 3G desde hace poco más de un mes y puedo decir que para mi, es el mejor terminal con diferencia, aunque hay que matizarlo. :-)

En esto hay tres frentes, según yo lo veo:

  • El “geek” empedernido de Apple.
  • El “corporativo” pijo-berry.
  • Todos los demás…

Habría que decir mucho sobre los dos primeros, porque es un debate abierto y se podrían decir muchos comentarios técnicos entre terminales de gama alta. El que me preocupa es el tercero: “todos los demás”…

En estos englobo a todo el resto del mundo usuario de teléfonos móviles. Va a ser por desconocimiento, pero mucha gente dice tonterías con respecto al iPhone. He oido cosas como “Si, pero no graba de video”, o lo más típico “es que la calidad de la cámara es muy mala”. Vale, osea que lo que la gente quiere es grabar video y fotos, vale. Del resto no hablamos.

Esta gente que sólo se fija en lo superficial del dispositivo, está perdiéndose todo el resto de funcionalidades que no conoce. Por ejemplo, olvidándonos de su excelente gestión del correo electrónico, tenemos maravillas en la AppStore como los lectores de RSS, el “AroundMe” (programita para encontrar sitios como bares, farmacias, etc, a tu alrededor en tiempo real) y todas las aplicaciones más “Web 2.0″ como Facebook, LinkedIn, AirSharing (para compartir cosas via Wifi), etc.