¿Cómo hacer aplicaciones móviles usando solo lenguaje de programación C? ¿Es posible?

La respuesta a continuación de Manish Sharma es simplemente incorrecta.

Un paradigma de programación no dice nada sobre lo que un lenguaje puede hacer y lo que no. Un paradigma, si algo te dice lo que ese lenguaje ya no puede hacer de manera eficiente. Eso es todo.

“C” es un paradigma libre. Lo que significa que casi puede hacer cualquier cosa. Lo que “casi” significa que no tiene acceso al sistema de bandera del procesador, es un precio a pagar para ser portátil entre sistemas y arquitecturas. En general, es algo bueno, pero no debe convertirse en un dogma. Siempre se necesita un código de ensamblaje. La asamblea es buena. Es un código bueno, delgado, malo y eficiente.

Es más importante cuán profunda es la integración del sistema de ese lenguaje. Y Java está mucho menos integrado en ese kernel de Linux que “C”. “C” es el núcleo.

Todo el Kernel de tu teléfono está hecho en C. Y todas las bibliotecas que usa esta jodida interfaz Java están hechas en C. Y puedes tirar perfectamente ese pobre nivel de basura que pierde el ciclo del ciclo y obtendrás una aplicación que está más allá de la imaginación de cualquiera lo que puede hacer en una plataforma móvil.

Puedes perfectamente hacer cualquier cosa en “C”.

Créeme. Visto eso. Estado allí. Hecho eso

Los paradigmas de programación son simplemente buenos para dar conferencias. No por hacer una mierda. No te dan nada. Simplemente limitan las cosas que puedes hacer. Por la promesa de presentar “código más limpio”. Lo que significa que comienzan a ocultar la complejidad de tu rostro para que dejes de entender lo que estás haciendo. Y para que no pueda depurar sus propios programas al final.

El poder de procesamiento en los móviles es bastante limitado. No desperdicies los ciclos en algo hinchado como Java. Ese es mi consejo. Simplemente haga su mierda en un lenguaje que esté al mismo nivel que el sistema: use “C”.

Es posible que su programa no se ejecute en plataformas que no sean ARM. Puede pasar. Pero también hay muchas aplicaciones Java que no se ejecutarán en mis teléfonos, y todas están basadas en ARM. Entonces, incluso la promesa de ser “plataforma independiente” es una mentira. Puede enviar diferentes versiones de la aplicación para diferentes plataformas de hardware. Simplemente recompile su proyecto con un objetivo diferente: listo.

No ganas nada. Lo único que querrás es perder. Velocidad, control, espacio de memoria, espacio en disco.

“C” es un lenguaje de programación muy moderno más moderno que la mayoría de los demás. No veo ninguna forma de usar los comandos SIMD en Java o en Haskell o Scala o cualquier nuevo cerdo que haya sido lanzado recientemente en el mercado. No veo cómo acceder a las rutinas eficientes del sistema operativo desde el nivel del kernel en ninguno de esos idiomas.

Puedes hacer eso en “C”. Perfectamente bien. Se trata de un factor mínimo 5 más rápido para hacerlo en “C” y su código es más corto, más estricto la mayoría de las veces factor 100. Y más fácil de mantener. Sí, no tendrás algunos de los contenedores de Java desde el principio. Maldición, solo inclúyelas, únelas, listo.

Si realmente golpeas algo duro, montaje en línea. ARM Assembly es fácil. Es la asamblea de un niño. Necesitas un día para aprenderlo, si has aprendido alguna Asamblea antes, lo cual probablemente deberías.

Hay una serie de plataformas móviles hoy en día. Casi todo el desarrollo de aplicaciones es para las 4 grandes plataformas de teléfonos inteligentes: Android, iOS, Blackberry y Windows Mobile. Android e iOS combinados representan el 99% del mercado.

Todos ellos le permiten escribir código en C para su plataforma, pero no es el lenguaje de desarrollo principal de los kits de desarrollador para ninguna de las plataformas. las bibliotecas y servicios del sistema se escriben para otros idiomas, por lo que sería extremadamente complejo.

En iOS, por ejemplo, todo el software son binarios nativos (algunos son HTML + JavaScript, pero tienen un trozo de código que es un navegador para mostrarlos). Podrían escribirse en cualquier lenguaje que se compile en código de máquina, y una gran cantidad de software de iOS contiene código C, C liBarrie e incluso utilidades auxiliares completamente escritas en C. La arruga es que el marco del sistema para cosas como la interfaz de usuario, los medios y otras características están escritos en Objective-C y requieren el tiempo de ejecución de Objective-C. Ciertamente puedes hacerlo desde C, pero es terriblemente tedioso y no hay recursos para hacerlo fácil (y la documentación es deficiente). Sería más fácil escribir la mayor parte del código de la aplicación en C, pero escriba los bits que interactuaron con los marcos del sistema en Swift u Objective-C (sus proyectos pueden contener ambos).

La situación es un poco diferente en Android. En Android hay más variación en el hardware subyacente y el entorno es diferente. El entorno de desarrollo esperado es Java. El código de bytes se compila en código nativo en el dispositivo durante la instalación del software. Todos los marcos del sistema están basados ​​en Java. Hay un kit de desarrollo nativo para Android que admite el uso de C y C ++ para el desarrollo, y que utiliza la API de interfaz nativa de Java para acceder a los elementos basados ​​en Java de los marcos y el entorno. Allí todavía necesita un código auxiliar de Java solo para crear un paquete de aplicación válido, pero de lo contrario, el resto se puede programar en C o C ++. Es incómodo y tedioso como lo sería iOS, pero JNI está mejor documentado y hay algunos recursos para guiarlo. Tiene las arrugas que puede necesitar para compilar el código para diferentes objetivos de hardware.

Hay varias opciones para hacerlo, pero todas dependen de la plataforma a la que se dirige.

Androide

  • Escriba su código en C, cree un contenedor JNI (Java Native Interface) para el código usando SWIG, escriba el resto de su código en Java

iOS

  • Es mucho más fácil hacer esto con iOS. Todo lo que realmente necesita hacer es escribir su código C, crear un encabezado de puente para Objective C o Swift y puede comenzar a usar el código en el idioma que elija.

Tizen

  • Samsung lanzó su SDK tizen para los teléfonos tizen. El SDK está escrito completamente en C y le permite escribir aplicaciones en C también. Creo que tizen solo se vende en India, por lo que su audiencia es limitada si elige ir con esto.

En conclusión, de todas las plataformas mencionadas, solo tizen realmente le permite escribir aplicaciones móviles completas en C. Las otras le permiten inyectar código C, pero los widgets y componentes similares deben escribirse en el lenguaje de la plataforma.

HTH

La respuesta no es mi amigo,

No puede crear aplicaciones usando solo C, porque C es una programación orientada a procedimientos.

Para las aplicaciones, necesita programación orientada a objetos.

Y la programación orientada a objetos es

Java.