Red de conocimiento informático - Problemas con los teléfonos móviles - Desarrollo web front-end o iOS, ¿cuál elegirías?

Desarrollo web front-end o iOS, ¿cuál elegirías?

Como programas orientados al usuario, el front-end y el terminal tienen las mismas características: deben depender del entorno de ejecución de la máquina del usuario, por lo que básicamente no hay elección de lenguaje de desarrollo, a diferencia del backend donde puedes usar lo que quieras. iOS solo puede usar Objective-C y el front-end solo puede usar javascript. Por supuesto, iOS también puede usar RubyMotion y el front-end también puede usar GWT/CoffieScript. No es común y muy pocas personas lo usan. Si realmente lo usa, causará muchos problemas.

Existe un contraste interesante entre los dos: los estilos de denominación de variables/métodos son exactamente opuestos. Apple siempre ha abogado por la experiencia del usuario y escribir código no es una excepción. Los nombres de los programas están todos en inglés y deben ser lo más detallados posible. Nos esforzamos por saber cuáles son las variables y los nombres de los métodos, como aplicación: didFinishLaunchingWithOptions:. Debido a que js debe descargarse de Internet cada vez, debemos esforzarnos por reducir el tamaño del código, de modo que los nombres de los métodos de las variables se acorten tanto como sea posible. De hecho, existen herramientas de compresión de código sin importar la longitud del nombre de la variable. , El efecto final en línea es el mismo, pero todos también Estamos acostumbrados a usar nombres cortos. Por ejemplo, el método application:didFinishLaunchingWithOptions: del objc mencionado anteriormente generalmente se nombra en js: $().

objc y js son lenguajes dinámicos y su uso es bastante similar, pero objc se compila y es rápido, y se pueden encontrar muchos errores durante la interpretación de js, y su rendimiento depende de. interpretación El motor, incluso con el potente motor v8, no puede seguir el ritmo de los lenguajes compilados. El lenguaje es demasiado dinámico y las variables no tienen ningún tipo. Es divertido de escribir pero un poco laborioso de depurar. Siempre he sentido que js es ligero, flexible y bohemio, lleno de todo tipo de trucos y objc es bastante satisfactorio, no tan serio como c ++ java ni tan flexible como js.

Subprocesos

El desarrollo front-end casi no necesita el concepto de subprocesos. El navegador implementa el análisis y la representación de HTML y CSS en la página y es posible que no estén en el mismo subproceso. Como js, ​​pero todos los códigos js solo se ejecutan en un subproceso, no habrá ejecución concurrente en el subproceso, por lo que no es necesario considerar varios problemas de programación concurrente. En la nueva característica JS, se pueden crear tareas de trabajo. Dichas tareas se pueden ejecutar en paralelo iniciando un nuevo hilo. Sin embargo, dado que no todos los navegadores lo admiten, diferentes hilos tienen diferentes estándares para transmitir datos y existen pocos escenarios de uso. , no parece utilizarse a gran escala. Tareas como operaciones de bases de datos/envío de solicitudes de red se encuentran en subprocesos diferentes a los de ejecución de código js, ​​pero el navegador las administra y no necesita preocuparse y no puede afectar estos subprocesos. Solo necesita recibir devoluciones de llamadas de eventos y no lo hace. Es necesario abordar cualquier problema de concurrencia.

El desarrollo de terminales requiere un uso extensivo de subprocesos múltiples. iOS tiene un subproceso principal, y la representación de la interfaz de usuario se realiza en este subproceso. Otras solicitudes de red/IO de base de datos o lógica que consumen mucho tiempo deben ejecutarse en subprocesos separados. De lo contrario, ocuparán el tiempo del hilo principal, lo que hará que la interfaz no pueda responder a los eventos de interacción del usuario o que el procesamiento sea lento, lo que provocará que el desplazamiento se bloquee. La lógica del programa se distribuye y se ejecuta en varios subprocesos. Es necesario abordar problemas como la inconsistencia de datos/desorden de tiempo que pueden ser causados ​​por la ejecución simultánea de varios códigos. La concurrencia también hace que algunos errores sean difíciles de solucionar. Tenga cuidado, caerá en una trampa. Debe usarlo adecuadamente. Algunas colas/bloqueos garantizan el orden de ejecución del programa. iOS proporciona un conjunto de métodos de administración de subprocesos múltiples GCD, que encapsula subprocesos y colas de una manera muy simple, fácil de usar y poderosa. Es mucho mejor que otros terminales o fondos, pero aún requiere mucho esfuerzo. para tratar problemas de subprocesos múltiples.