Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Puede Swift reemplazar a Objective-C?

¿Puede Swift reemplazar a Objective-C?

Esta es una respuesta que leí en línea y copié y pegué para compartirla con ustedes porque a mí, como a muchos, me preocupa el impacto de la llegada de Swift al desarrollo de Mac y su impacto en Objective-C.

La conclusión principal de mi artículo es que, de toda la información que Apple ha proporcionado hasta ahora, este lenguaje no reemplazará a ObjC, no es la próxima generación de ObjC y tiene muchas deficiencias que hacen que no pueda satisfacer las necesidades de grandes proyectos. Tiene una serie de deficiencias que lo hacen inadecuado para proyectos más grandes, y Apple no lo usa en aplicaciones Mac/iOS. No descartaría mejoras significativas durante el próximo año, pero al menos no hay señales de ello todavía.

Así que si conoces ObjC, no necesitas saberlo.

Pero si me preguntas si este lenguaje es importante para el desarrollador promedio, diría que sí, y te lo puedo decir inequívocamente: esto es lo que Apple presentó al mundo en la WWDC. Es un lenguaje grande. Entonces, ¿cómo puedo decir que no es importante? Reduce la barrera de entrada. Reduce la barrera de entrada, por lo que muchos usuarios de JS, Python y Ruby utilizarán la tecnología de Apple para desarrollar programas. Su función es la misma que Core Data e Interface Builder, lo que le permite escribir rápidamente un programa utilizable. Pero si quieres hacer algo más serio, esto no es suficiente. Entonces, así como Apple no usa Core Data en Mail, UICollectionView en iPhoto e Interface Builder en las aplicaciones más complejas, Apple tampoco usa Swift. Es solo una forma para que un pequeño equipo de tres o cinco personas cree rápidamente un programa en ejecución, y también es una forma para que las grandes empresas creen rápidamente prototipos, pero también es una forma para que las grandes empresas creen aplicaciones en ejecución. Para un equipo pequeño de tres o cinco personas, esta es solo una forma de crear rápidamente un programa en ejecución, y para grandes empresas, también es una forma de crear prototipos rápidamente.

====

Algunos dicen que es equivalente a que C# o Scala mejoren Java, pero puedo decirles que ese no es el caso con Swift.

El llamado a Apple para que lance la próxima generación de Objective-C existe desde hace mucho tiempo. Ars Technica, que escribe decenas de miles de palabras de reseñas de OS X cada año, escribió un artículo hace dos años. Hace un tiempo afirmó que Apple debería continuar desarrollando una versión libre de C de Objective-C, que es un mejor enfoque.

En OS X 10.8 Mountain Lion, Apple proporciona características más modernas, una API más corta y soporte para inferencia automática de tipos: revisión de Ars Technica.

Pero Apple claramente no se toma el lenguaje en serio. Está claro que no quieren reemplazar a ObjC en absoluto. Si ven a Swift como el futuro de ObjC, habrá una o dos aplicaciones de iOS/Mac reescritas en Swift. (Por ejemplo, cuando Apple quiso acabar con Carbon, lo primero que hizo fue reescribir el Finder).

Desde la perspectiva del lenguaje, Swift tiene demasiadas deficiencias:

Su biblioteca estándar es muy pobre, con solo estructuras de datos Diccionario, Array y Cadena, y ni siquiera un Conjunto. ¿Quieres usar algo más? Aún tienes que usar ObjC. Sí, es más rápido que ObjC cuando usas estructuras de datos nativas. Pero esto es sólo una minoría. No admite programación asincrónica/sincrónica.

No se puede incluir con Grand Central Dispatch, lo que hace imposible escribir ninguna aplicación web seria.

No tiene ningún mecanismo de protección (privado, protegido) y todos los métodos y variables son globalmente visibles, lo que obviamente no puede satisfacer las necesidades de proyectos de ingeniería serios.

Solo puede interactuar con ObjC. Si desea utilizar C o C++ correctamente, debe escribir un contenedor ObjC, que básicamente lo limita a una gran cantidad de funciones de la biblioteca C/C.

No puedes detectar excepciones de Objective-C y tu aplicación fallará si recibes una excepción. Básicamente, esto también lo limita a usar gran parte del código base antiguo de ObjC.

La miopía de Chris al diseñar el lenguaje es obvia. Esto es normal, es un experto en compiladores, no un investigador de idiomas. Por lo tanto, un lenguaje que afirma admitir programación funcional simplemente no tiene las características comunes a la mayoría de los lenguajes funcionales:

El único soporte es la pereza, los cierres y funciones simples del lenguaje funcional como mapa y filtro). Todo esto se hace en ObjC

Sin coincidencia de patrones

La deducción de tipos es casi la misma que C 11, y no se utiliza hindley milner

De las características anteriores , Apple lo posiciona como un lenguaje de juguete para reducir la curva de aprendizaje de los desarrolladores que tienen problemas con ObjC. Cada uno de los primeros cinco elementos es esencialmente fatal, por lo que Apple no los utilizará para sus propios proyectos. Los prototipos utilizados para las primeras pruebas de conceptos no son un problema.

Me imagino que será fácil de implementar en Swift (LLVM es muy maduro y cada vez es más fácil escribir nuevos lenguajes, por ejemplo, puedes escribir un lenguaje pequeño en solo unos pocos pasos: 1 Kaleidoscope: introducción al tutorial y Lexer), por supuesto, también es posible que Apple resuelva los problemas en el futuro para que sea realmente útil. Caleidoscopio: Introducción al tutorial y Lexer). Pero por ahora, Apple no cree que Swift pueda reemplazar a Objective C.