Alrededor de C

Alrededor de C

Introducción

Lo que estás leyendo es el comienzo de la serie de artículos dedicados al desarrollo en los sistemas de Linux. Sin embargo, con modificaciones menores (si las hay), podrá usar este conocimiento que obtendrá leyendo nuestra serie sobre cualquier otro sistema que use las mismas herramientas (OpenIndiana, BSD ...). Este primer artículo tratará gradualmente con las complejidades de escribir código C en Linux. Se espera que tenga conocimiento básico de programación, ya sea en sistemas Linux/Unix o en otras plataformas. La idea es que deba conocer los conceptos básicos de la programación, como lo que es una variable o cómo definir una estructura. Aunque obtendrá esta información de este artículo, no insistiremos mucho en los conceptos de nivel para principiantes. Una advertencia: no incluiremos todo lo que hay que contar sobre C, porque eso tomaría mucho espacio y, por supuesto, en realidad no sabemos todo sobre C.

Por qué c?

Algunos de ustedes podrían argumentar que C no es el mejor idioma de nivel para principiantes. De acuerdo, pero de nuevo, se espera que tenga algunos conocimientos básicos de programación, para uno. Segundo, C y Unix, y Linux después, están íntimamente unidos que solo parecía natural comenzar nuestra serie de desarrollo con C. Desde el núcleo, del cual una parte sustancial está escrita en C, hasta muchas aplicaciones cotidianas de tierra de usuario, C se usa masivamente en su sistema Linux. Por ejemplo, GTK se basa en C, por lo que si está utilizando aplicaciones GNOME o XFCE, está utilizando aplicaciones basadas en C. C es un lenguaje de programación antiguo y bien establecido, una herramienta vital en muchas partes del mundo de TI, desde sistemas integrados hasta mainframes. Por lo tanto, es justo suponer que las habilidades de C no solo enriquecerán su CV, sino que también lo ayudarán a resolver muchos problemas en su sistema de Linux, eso es solo si toma esto en serio y practica mucho leyendo y escribiendo C código.

Alrededor de C

Historia

C tiene más de 40 años, con comienzos en Bell Labs con Brian Kernighan, Dennis Ritchie y Ken Thompson como "sospechosos habituales."Unix Development y la evolución de C están íntimamente vinculados, como dijimos, porque Unix se escribió inicialmente en la Asamblea, pero eso tenía muchas deficiencias. Por lo tanto, al pasar al PDP-11 como la plataforma de hardware principal, los desarrolladores comenzaron C como un lenguaje central para Unix. En 1978, Kernighan y Ritchie escribieron: "The C Programming Language", un libro que es hoy como fue hace 20 años: el libro sobre programación C. Recomendamos sinceramente que lo obtengas.



Clasificación

Siempre hay personas interesadas en la clasificación de las cosas y, por supuesto, la programación no es diferente. Bromeando a un lado, ya que estamos al principio, pensamos que debía saber que C es un lenguaje de programación estructurado de procedimiento, con una tipificación débil. Lo que acabamos de decir, en inglés, es que C usa procedimientos (el nombre habitual utilizado por los programadores de C, y el que también usaremos también es funciones), que utiliza un enfoque estructurado (piense en bloques de código) y Finalmente, admite conversiones de tipo implícitas. Si no sabe lo que significa algo anterior, no temas, lo descubrirás!

Nuestro enfoque

Este artículo, que es solo la parte introductoria y publicaremos regularmente las próximas partes donde cada capítulo se ocupará de una parte importante del idioma: variables, punteros, estructuras, etc. (Suscríbase a RSS Feed si aún no lo ha hecho) Al final de la parte teórica, le mostraremos un ejemplo práctico, para el cual elegimos yest, una pequeña pieza de software escrita por Kimball Hawkins (gracias, Kimball). Lo compilaremos, luego lo empaquetaremos para los sistemas Debian y Fedora. El desarrollador de Debian, Andree LeidenFrost, le mostrará cómo enviar nuestro nuevo paquete al repositorio de Debian, asegurándose de que respetemos todos los requisitos del paquete para ser admitidos en Debian Distribution (gracias, Andree). Le recomendamos que pruebe nuestros ejemplos en su sistema, tómese un tiempo para examinar el código e intenten hacer modificaciones suyos.

Las herramientas necesarias

Antes de comenzar, nos aseguremos de que tengamos todas las herramientas esenciales instaladas en su sistema Linux. Necesitará un compilador, a saber, GCC, el paquete binutils y un editor de texto o un IDE. Si elige el editor de texto o algún tipo de IDE depende en gran medida de sus preferencias, pero más de eso más tarde. Dependiendo de sus opciones de distribución e instalación de Linux que haya utilizado, es posible que ya tenga las herramientas necesarias instaladas. Reunimos un pequeño script para ayudarlo a ver si tiene todas las herramientas de desarrollo obligatorias instaladas:

#!/bin/sh gcc -v if [$? != 0]; entonces echo "GCC no está instalado!"fi ld -v if [$? != 0]; luego hacer eco "Instale binutilos!"Fi 


Guarde este script como devitoolscheck.sh, ejecutarlo:

 $ sh devitoolscheck.mierda 

En mi máquina obtengo la siguiente salida:

$ sh devlools.SH usando especificaciones incorporadas. Collect_gcc = GCC Collect_lto_wrapper =/usr/lib/x86_64-linux-gnu/gcc/x86_64-linux-gnu/4.6.1/LTO-Wrapper Target: x86_64-linux-gnu configurado con: .../src/configure -v-with-pkgversion = 'Debian 4.6.1-4 '-with-bugurl = archivo: /// usr/share/doc/gcc-4.6/Readme.Bugs --enable-Languages ​​= C, C ++, Fortran, OBJC, OBJ-C ++, GO--Prefix =/usr --Program-Suffix = -4.6-Modelo de subprocesos de hilo POSIX: Versión 4.6.1 (Debian 4.6.1-4) GNU LD (GNU binutils para Debian) 2.21.52.20110606 

Por qué necesitas binarios binutils y GCC, verás en breve. Ahora centrémonos un poco en la pregunta "Editor vs IDE".

Lo único que le aconsejaremos a este respecto es "Use lo que se sienta cómodo y ignore lo que otros le dicen". Este asunto es muy subjetivo y depende de muchas variables. Por ejemplo, si se desarrolla (o solía desarrollarse) en otros sistemas operativos, es posible que esté acostumbrado a un IDE. Encontrará muchos buenos ides en Linux, incluidos Eclipse, Geany, Kdevelop o Anjuta. Intente instalarlos para ver lo que encuentre más adecuado. Por otro lado, si quieres ir al editor simple, también hay muchas opciones: VI (M), Emacs, Kate, Nano, Jed, etc. Al buscar en Internet, encontrará muchas discusiones sobre cuál es el mejor editor. Decimos instalar algunos de ellos y descubrir qué mejor te adapta. Usted es el único juez de esto, y será una herramienta que usará con frecuencia, así que tómese su tiempo, úselo, lea sobre ella y familiar. Independientemente de su elección, asumiremos que ha elegido su elección con respecto a la herramienta de edición y está familiarizado con su uso.

El proceso de compilación

En palabras simples, este proceso es lo que comienza con el código fuente que escribió y si todo va bien, el resultado es un binario ejecutable o una biblioteca. No hace falta decir que hay más, pero es esencial que comprenda la oración anterior antes de seguir adelante. No es necesario memorizar todos los conceptos ahora, ya que se volverán más claros más tarde. En esta etapa solo es importante tener la idea general.

Digamos que tenemos el código fuente escrito y ahora queremos que un compilador lo procese y nos dé el binario ejecutable. El flujo de trabajo de este proceso se ilustra a su derecha.

Tenga en cuenta que esto es aplicable solo a C, que es un idioma compilado, en lugar de los idiomas interpretados (Perl, Python, Shell), y nos referiremos estrictamente a GCC y amigos para el resto de nuestra guía. Como la figura a su derecha ilustra el preprocesador (CPP) toma su código fuente, busca Instrucciones del preprocesador (En C, comienzan con un hash) Y si todo se ve bien, el resultado es un resultado comprensible por el compilador. El compilador (GCC) hace todo el trabajo duro, incluida la optimización del código para el hardware subyacente (si está interesado en la teoría del compilador o la compilación cruzada, hay muchos libros buenos sobre el tema, pero asumimos un nivel más para principiantes aquí). El resultado es el código de ensamblaje, íntimamente cerca de la máquina, desde el cual se generarán los binarios (como es la herramienta). Al final, dependiendo de las opciones y el código, "LD" vinculará el ejecutable con todas las bibliotecas necesarias y voila! El resultado final: su programa. Si desea ver todos los archivos intermedios resultantes, GCC Flag -Save -Temps lo ayudará a hacerlo. Le recomendamos que lea la página del manual de GCC, al menos frugalmente, y asegúrese de que su compilador nos actualice. Te acostumbrarás a las banderas GCC habituales leyendo nuestros ejemplos, pero se espera que sepan lo que hacen, no solo copiar y pegar los comandos que ve en la pantalla.



Programa C de Ejemplo C

Cada tutorial de programación que se respecta a sí mismo comienza con un programa de "hola, mundo". Este programa no hace nada más que imprimir "Hola, mundo!"En la pantalla, luego sale. Se utiliza para ilustrar la estructura muy básica de un programa y algunos conceptos esenciales. Así que sin más preámbulos, aquí está.

#incluir  / * Este es un comentario */ int main () printf ("Hola, mundo!\norte"); devolver 0; 

Ahora, diseccionemos el programa línea por línea y veamos lo que representa cada línea. La primera es una directiva preprocesadora (ver arriba) que solicita el stdio.H archivo, que proporciona la definición para el printf función. Los archivos de encabezado son archivos que generalmente contienen varias definiciones (funciones, variables ...) y fabricar .c archivos menos abarrotados. Todo qué archivo fuente (.c) necesitará es un #incluir declaración y posiblemente un argumento al enlazador. Todo lo que se define en el archivo de encabezado incluido estará disponible en su código fuente.

principal() es una función obligatoria en cada programa C. Como dice el nombre, el principal La actividad sucederá aquí, independientemente de cuántas funciones haya definido. int main () significa que esta función no tiene ningún argumento (los paréntesis vacíos) y que devuelve un entero (el inicial En t). Todo esto se discutirá más tarde. Lo más importante aquí es el printf función, que toma nuestro texto como un argumento y lo muestra. "\norte"Significa" Newline "y es el equivalente a usar la tecla ENTER (o ^M). Se llama secuencia de escape y todas las secuencias de escape en C comienzan con "\". Por ejemplo, para comprender mejor qué es una secuencia de escape, imagine que está escribiendo el código HTML y necesita imprimir un ""<” character. HTML's syntax uses angle brackets to define HTML tags, so chances are your bracket will be interpreted as HTML code instead of being displayed. So, what to do? We escape it with “<” and it will appear properly. Just the same, if you want to insert a newline character, you can't type it directly, as the compiler could care less if you write your program on a single line or not and therefore you you need to escape your new line character with “\norte"".

regresar 0 le dice al compilador que todo está bien y la ejecución de principal() la función termina ahí. Esto se debe a que 0 es el código para una ejecución exitosa, mientras que los valores superiores a 0 (enteros) son una indicación de que algo salió mal. Los aparatos ortopédicos que comienzan y terminan la función principal delimitan su 'bloque de ejecución, es decir, lo que sucede en principal(), se queda en principal(). Es posible que haya notado las semicolones al final de las declaraciones: son obligatorios como una señal de que la declaración actual terminó allí, pero no se deben usar en las directivas del preprocesador como #incluir.



Compilacion

La compilación se discutirá en más detalles en las próximas partes de esta guía. Pero para la integridad aquí hay un simple ejemplo de línea de comando sobre cómo compilar y ejecutar nuestro primer programa ""Hello World"" C:

$ gcc -o hola hola.C $ ./Hola hola, mundo!

Conclusión

Esperamos que no estuviéramos en tanta información en su cerebro y que disfrute de quedarse con nosotros en este tutorial de programación. La Parte 2 se ocupará de una comparación entre C y otros lenguajes de programación para ayudar a aquellos que ya tienen algo de experiencia en desarrollo.

Esto es lo que puede esperar a continuación:

  • I. C Desarrollo en Linux - Introducción
  • II. Comparación entre C y otros lenguajes de programación
  • III. Tipos, operadores, variables
  • IV. Control de flujo
  • V. Funciones
  • VI. Punteros y matrices
  • VII. Estructuras
  • VIII. E/S básica
  • Ix. Estilo de codificación y recomendaciones
  • X. Construyendo un programa
  • Xi. Embalaje para Debian y Fedora
  • Xii. Obtener un paquete en los repositorios oficiales de Debian

Tutoriales de Linux relacionados:

  • Cosas para instalar en Ubuntu 20.04
  • Cosas que hacer después de instalar Ubuntu 20.04 fossa focal Linux
  • Cosas que hacer después de instalar Ubuntu 22.04 Jellyfish de Jammy ..
  • Una introducción a la automatización, herramientas y técnicas de Linux
  • Instale Arch Linux en VMware Workstation
  • Cosas para instalar en Ubuntu 22.04
  • Descarga de Linux
  • Comandos básicos de Linux
  • Comandos de Linux: los 20 comandos más importantes que necesitas ..
  • Ubuntu 20.04 Guía
"