Red de conocimientos turísticos - Conocimientos sobre calendario chino - ¿Por qué es difícil aprender Objective-C?

¿Por qué es difícil aprender Objective-C?

Como activista en Internet y desarrollador que utiliza Objective-C, he recibido muchas preguntas sobre Objective-C. Estas preguntas surgirán constantemente cuando las personas aprendan Objective-C o intenten desarrollar aplicaciones, y algunas de ellas pueden ser tan generales como "Objective-C parece demasiado difícil" o tan detalladas como "¿Qué es eso?" Lo que quiero decir es que estas son realmente buenas preguntas, así que permítanme discutir con ustedes: ¿Por qué algunos programadores tienen miedo de cambiar al desarrollo de iOS u OS X en comparación con Ruby o Java?

Sintaxis

Primero, hablemos de qué es un lenguaje de programación. El llamado lenguaje de programación es un código de programa que los humanos pueden leer y comprender. Un lenguaje de programación suele contener una serie de contenidos: sintaxis (las reglas para escribir y declarar declaraciones) y semántica (la combinación efectiva de declaraciones y declaraciones con el objetivo de lograr determinadas tareas).

La mayoría (normalmente) de los lenguajes de programación son similares al lenguaje C en la llamada a métodos y utilizan la sintaxis de acceso a los miembros de la clase. (Es decir, estructuras en C). Aunque estos lenguajes generalmente tienen su propia forma de definir clases (Java y C# o C siguen siendo bastante diferentes), muchos detalles de los lenguajes siguen siendo muy similares. Siempre que la gente empieza a entrar en contacto con un nuevo lenguaje de programación, si su sintaxis les resulta familiar, el alumno se sentirá muy cómodo. La mayoría de las personas tienen experiencia en sintaxis de C, por lo que si desea aprender un lenguaje similar a la sintaxis de C, la primera impresión será muy amigable.

Solo desde una perspectiva gramatical, Objective-C es único. Su sintaxis es demasiado especial. Debido a su sintaxis inusual, muchas personas no tienen la paciencia para profundizar en su semántica, que no se diferencia de lenguajes como C y Java.

Los lenguajes llamados "extraños" como Python y Ruby son más fáciles de comenzar simplemente porque pueden usar la sintaxis . Y la gente suele acostumbrarse rápidamente a utilizar sangrías en lugar de llaves.

Cuando presento Objective-C a otras personas, normalmente lo comparo con un lenguaje POO (programación orientada a objetos).

Por qué Objective-C es difícil de aprender 1

Parece estar bien hasta ahora. Quizás ya conocían Lisp antes, por lo que no es difícil entender esta sintaxis.

Por qué es difícil aprender Objective-C 2

En este punto, a las personas generalmente les resulta más difícil aceptarlo y la situación se ha vuelto menos optimista.

Por qué es difícil aprender Objective-C 3

Esta oración puede hacer que las personas colapsen directamente.

¿Qué son esos dos puntos? ¡Qué miedo! Entonces surgieron un montón de preguntas: ¿Cómo se llama el método? ¿Es a través de performAction o de alguna otra forma? ¿Cómo sobrecargar métodos?

Sabes, no estamos discutiendo métodos, estamos hablando de mensajes (no discutiré la diferencia entre ellos) y selectores, como performAction: withTwoParameters presentado anteriormente. Sin embargo, todo el mundo es demasiado vago para entenderlo.

Objective-C es un superconjunto de C. En realidad, es un lenguaje de programación genial. Sin embargo, debido a algunas de sus propias características, en comparación con otros lenguajes de programación modernos, la gente sentirá que Objective-C es muy. antiguo. Como superconjunto de C, Objectivec-C extiende una serie de características no convencionales basadas en C, lo que simplemente aumenta la complejidad de Objective-C.

Objective-C es un lenguaje grande.

El punto de partida de esta definición es que su sintaxis es muy compleja. De hecho, Apple ha estado aumentando sus esfuerzos para adelgazar Objective-C. Por ejemplo, aunque es lento, finalmente completó la transición de los archivos de encabezado al estilo C estándar. Además, Apple también ha realizado muchas mejoras en Objective-C y ha agregado muchas características nuevas para hacer que el código de Objective-C sea más conciso, como:

Síntesis de propiedades

Mediante captadores de acceso .grammar /setters

Recolección de basura

Bloques (cierres)

ARC (Conteo automático de referencias)

Referencias débiles

Entonces, aunque el lenguaje se hace cada vez más grande, la complejidad de desarrollar y escribir código disminuye.

Tiempo de ejecución

Objective-C se ejecuta dinámicamente. Esta característica puede no ser tan intuitiva solo desde la perspectiva de sus orígenes con C. Dado que no es necesario escribir código ensamblador directamente, el lenguaje C en sí es un lenguaje con pocos cambios. Dado que Objective-C es un superconjunto de C, es fácil para nosotros cuidar la estabilidad de Objective-C en C, pero. de hecho, Objective-C -C es un lenguaje dinámico y muy flexible. Objective-C admite el mecanismo de reflexión y curry de funciones, que puede agregar o eliminar métodos dinámicamente a las clases en tiempo de ejecución.

A menos que haya estado expuesto antes a un lenguaje de programación con características similares a Objectivec-C, como Ruby o Lisp, será difícil adaptarse a Objective-C por un tiempo. ¡Pero no hay necesidad de preocuparse! Algunas cosas que parecen misteriosas y aterradoras por fuera en realidad no son tan complicadas por naturaleza.

Marco

La creación de aplicaciones utilizando Objective-C es completamente inseparable del marco Cocoa/Cocoa Touch. Al igual que desarrollar aplicaciones web en Ruby es inseparable de Rails.

Después de años de desarrollo, Cocoa se ha vuelto muy pesado. Sin embargo, como se mencionó anteriormente, Apple recientemente ha estado reduciendo gradualmente el marco Cocoa Touch en el que se basa el desarrollo regular de iOS para reducir su complejidad. Aun así, incluso si la aplicación a desarrollar es extremadamente simple, todavía hay mucho que aprender. Los documentos oficiales de Apple y varios archivos de encabezado expuestos son buenos recursos de aprendizaje. Tome la propiedad contentStretch en UIView como ejemplo. La definición y descripción del archivo de encabezado son las siguientes:

@property(nonatomic) CGRect contentStretch __OSX_AVAILABLE_STARTING(__MAC_NA, __IPHONE_3_0); // animatable. el valor predeterminado es el rectángulo unitario {{0, 0} {1, 1}}

¿Qué significa esto? Según tengo entendido, este atributo se utiliza para describir el tamaño del área escalable. ¿Pero cómo? ¿Esta área se refiere a un rectángulo? Tal vez nunca se ocupe de este atributo, pero si usarlo en un determinado punto del proceso y escenario de desarrollo puede resolver fácilmente su problema, ¿conocerá su existencia y podrá usarlo correctamente en ese momento?

Cocoa/Cocoa-Touch es un framework enorme. Para controlarlo verdaderamente, la práctica hace la perfección. Pero este proceso de familiarizarse con él a menudo desanima a muchos nuevos alumnos.

Historia

Durante mucho tiempo, Apple ha estado promoviendo constantemente el progreso del sistema de desarrollo del lenguaje Objective-C, como el tiempo de ejecución de Objective-C, el marco Cocoa/Cocoa Touch y Objective. -C La superposición de una serie de diseños de nivel superior, como el compilador -C, hace que Objective-C sea más que un simple lenguaje.

Por qué Objective-C es difícil de aprender 4

Entonces, al aprender Objective-C, no puedes aprender el lenguaje, ciertos marcos, su mecanismo operativo o el compilador, sino integrarlos. Por ejemplo, el mecanismo ARC (Recuento automático de referencias) integrado con Objective-C ahora involucra el nivel semántico (no es necesario llamar explícitamente a dealloc), el nivel del compilador (obviamente) y la convención de nomenclatura del marco Cocoa/Cocoa Touch.

La serie de diseños estrechamente relacionados mencionados anteriormente en Objective-C son sus características únicas. Otros lenguajes dependen más o menos de otros lenguajes o plataformas para ejecutarse, como Iron Python que se ejecuta en .net, Clojure que no es Java pero depende de la JVM, e incluso Ruby y Rails en realidad tienen los suyos propios relativamente. entidades independientes y proyecto. El único Mac Ruby relativamente conocido que es compatible con Cocoa/Cocoa Touch y el tiempo de ejecución Objective-C fue posteriormente detenido por Apple y posteriormente admitido.

Objective-C y frameworks, tiempos de ejecución, compiladores, etc. relacionados. Este sistema está casi cerrado a otras comunidades de desarrolladores.

Futuro

A juzgar por la información disponible actualmente, Apple ha estado intentando reducir la complejidad del lenguaje Objective-C durante los últimos cuatro años. La eliminación de la gestión manual de la memoria y los archivos de encabezado estándar de C, la introducción del mecanismo ARC que está más en línea con la tendencia actual del lenguaje de programación y los métodos getter/setter para acceder a las propiedades a través de . de Objective-C. Pero aun así, Objective-C sigue siendo un lenguaje de desarrollo con un cierto umbral de aprendizaje. Su popularidad está impulsada enteramente por las populares aplicaciones de iOS escritas en base a Objective-C.