Si Objective C es el lenguaje ideal de bajo nivel para escribir aplicaciones iOS, ¿por qué alguien usaría Swift?

Objetivo-C no es de bajo nivel. Cuando envía mensajes a objetos, estos se enrutan a través de objc_msgSend (), donde se busca el método real para invocar en tiempo de ejecución. Esto es para todas las invocaciones de métodos. Compare esto con C ++, que solo tiene que hacer búsquedas en tiempo de ejecución de métodos que son virtuales y podrían tener implementaciones de subclase. Todas las demás invocaciones de métodos se determinan en el momento del enlace. Esto hace que la diferencia de rendimiento entre los dos lenguajes sea significativa, ya que C ++ es mucho más rápido.

Objective-C es un lenguaje de alto nivel que solo ve el mundo en términos de objetos. Cuando desee hacer una programación funcional, desplácese a escribir código C sin formato. De lo que Apple se ha dado cuenta es que a) no todo el mundo quiere o tiene la experiencia para escribir código C de bajo nivel yb) que escribir un buen código C es difícil de corregir yc) que C carece de muchos conceptos de programación funcional, como los cierres como un ejemplo .

Swift todavía está madurando, pero es un lenguaje que me entusiasma. Tiene la interoperabilidad con Objective-C, el objeto y los paradigmas funcionales que las personas necesitan para escribir un buen software, se encarga de la gestión de la memoria sin usar un recolector de basura del mundo y mucho más. Creo que Swift es definitivamente el futuro y el uso de Objective-C disminuirá con el tiempo.

El compilador de C genera código de máquina que se ejecuta directamente en el procesador, en lugar de en una máquina virtual como Java. Esto lo hace ideal. También proporciona administración de memoria que controla el programador, en lugar del lenguaje o VM. Swift genera código de máquina de la misma manera. No estoy 100% seguro, pero probablemente genera Objective C que luego se compila, de manera similar a los compiladores de C más antiguos que generaron lenguaje ensamblador en el lenguaje “As” y luego generaron código de máquina a partir de él.

El objetivo C en iOS usa ARC para la administración de memoria, que tiene características diferentes a las de C o C ++. Evita la recolección de basura que Java requiere. Esto lo convierte en una buena opción también.

¿Por qué usar Swift? Tiene algunas características que se encuentran en lenguajes más modernos como Python. Por ejemplo, puede devolver múltiples valores de una función, cierres, etc. Dado que no se interpreta como Python, esta también es una ventaja.

He usado los dos.

Objective-C fue el lenguaje en el que se desarrollaron los sistemas iOS, Mac y NeXT.

NeXT tenía el objetivo de simplificar el proceso de creación de aplicaciones GUI mediante el uso de un conjunto de patrones de diseño. Estos patrones de diseño necesitaban un lenguaje fluido y flexible. Algo así como Smalltalk, pero con más eficiencia.

Entonces Objective-C era una especie de híbrido de C y Smalltalk. La ventaja de usar C como base fue que las mejoras en la ingeniería de compilación convencional podrían explotarse.

El problema es que el lenguaje no es realmente un híbrido, sino más bien una quimera. Puede ver las uniones donde uno está injertado sobre el otro. Las costuras son como bordes ásperos, donde algunas cosas se expresan mejor en términos similares a C y otras cosas se expresan mejor con estas características modernas.

Para ciertos problemas, esto se siente torpe, un automóvil moderno y elegante, pero con estos pedazos de Modelo T sobresaliendo en ángulos extraños.

Este es un problema, pero no masivo. Ciertamente podríamos seguir usando el Objetivo C durante años. Pero alguien hizo la pregunta, ¿qué pasaría si pudiéramos diseñar un lenguaje desde cero, que conserve los mismos beneficios, pero pierda todo este ruft?

Rápido es el resultado. Y habiéndolo usado, me gusta mucho.
Ciertos tipos de ideas se expresan mucho más simplemente en Swift. No existe esta desconexión entre lo viejo y lo nuevo.

Creo que cualquiera que venga al desarrollo de iOS hoy estaría loco si no aprendiera Swift. No todos los proyectos comerciales deben volcar Objective-C. Pero creo que no hay duda de que Swift representa el futuro.

Porque ni el [Objetivo] C ni los lenguajes de “bajo nivel” son ideales.

El tiempo es la esencia.
Pero en este caso, el tiempo de los programadores es más valioso que el aumento del rendimiento que puede obtener cuando escribe en un lenguaje de bajo nivel. Simplemente es más rentable de esta manera.

Porque Objective-C no es nada ideal.

Es críptico y arcaico, y tiene redundancias redundantes redundantes “sin cargo” a través de todo.

Mis pensamientos: si Swift es la próxima gran cosa , quiero estar en algún lugar cerca de las líneas del frente de su invasión del reino de desarrollo de iOS. Me estoy adentrando en el desarrollo de iOS y tal vez solo pueda estar al frente de una tendencia por una vez.