Creo que ObjC se ha aislado en el mundo de Apple a través de una peculiaridad de la historia y la naturaleza de los sistemas propietarios.
Primero, debe separar ObjC de Cocoa. ObjC es un lenguaje muy primitivo. Creo que es un lenguaje muy elegante, pero es extremadamente básico. Puede implementar ObjCv1 en un preprocesador C. C++ y ObjC se desarrollaron casi al mismo tiempo. C++ pone una gran cantidad de infraestructura en su lugar para llevar una sintaxis similar a C a lo que es básicamente un lenguaje completamente diferente. ObjC trajo una sintaxis tipo Smalltalk a C, con casi nada más. Incluso cosas como +alloc
y -release
no son elementos de lenguaje de ObjC. Son envoltorios bastante simples alrededor de malloc()
y free()
. * De pie por sí mismo, ObjC no es realmente tan interesante (elegante como creo que es). Esto es muy similar a la naturaleza de Smalltalk. Sin sus bibliotecas de objetos, no hay mucho que pueda hacer con eso. Con sus bibliotecas de objetos, es increíblemente poderoso.
NeXT proporcionó este marco completo sobre ObjC llamado NeXTSTEP. Debido a que la computadora NeXT no fue un éxito comercial generalizado, y NeXTSTEP era propietario, no muchas personas aprendieron el marco o el lenguaje subyacente. Cuando Apple lo compró, y lo transformó en Cocoa, siguió siendo un sistema patentado.
GNUStep está por ahí, pero nunca desarrollaron nada lo suficientemente interesante como para atraer a muchos desarrolladores (un importante navegador web o procesador de textos o similares). Y Cocoa ha avanzado mucho más que GNUStep en los últimos años. Es posible que con el aumento del interés en Cocoa debido al iPhone, ese GNUStep pueda revitalizarse y traer un buen marco de desarrollo multiplataforma, pero lo dudo.Las personas que tienen experiencia en C++ miran C# y ven una clara mejora. Cuando miran ObjC, ven muchos corchetes donde no los esperan. Para las personas criadas en el paradigma de los "métodos de llamada", el paradigma de Smalltalk de "pasar mensajes" es extraño e incluso un poco aterrador. Muchos desarrolladores asumen que necesitan un lenguaje fuertemente tipado para evitar errores y se sienten incómodos con un sistema que se basa principalmente en la disciplina del programador y una coherencia cuidadosa. Es mucho más fácil piratear algo que "simplemente funciona" en C# que en ObjC. ObjC realmente espera mucho más del desarrollador para comprender lo que está sucediendo y no confiar en el compilador para protegerlo de sus piratas informáticos.
Básicamente, la gente conocía C de Unix, y C++ tiene sentido en términos de C, y Java tiene sentido en términos de C++, y C# simplemente limpiaba Java. ObjC no es ninguno de estos. Es Smalltalk, y nadie aprende Smalltalk nunca más.
* Recientemente he chateado con el tipo que escribió +alloc
sobre su historia, y podría oponerse a que lo llame una envoltura simple dada la inclusión de zonas. Entonces, para usted que conoce la diferencia, reemplace +alloc
aquí con +new
.
Gracias por la información. Quiero aprenderlo porque es smalltalk que me encanta –
Ah, entonces ya estás a medio camino del Cocoa Nature. Si nuestra industria recordara la mitad de las lecciones que aprendimos en Smalltalk, hoy tendríamos el doble de ventaja. Tengo un equipo lleno de recién egresados graduados en Ciencias de la Computación de excelentes escuelas, y aún tengo que enseñar y volver a enseñar los conceptos básicos de Model-View-Controller. –