Características de la programación en C que lo hacen único (y mejor)

Características de la programación en C que lo hacen único (y mejor) / Programación

El lenguaje de programación C es la madre de todos los lenguajes de programación modernos. 10 Lenguajes de programación que probablemente nunca hayas escuchado. 10 Lenguajes de programación que probablemente nunca oigas. Fieles a la ciencia de la comunicación con una computadora. Vas a… Leer más. Casi todos los idiomas en uso hoy en día incluyen varias características que aparecieron por primera vez en el lenguaje C. Se ha utilizado ampliamente para escribir software para los microcomputadores integrados más pequeños en los mainframes y supercomputadores más grandes.

Las aplicaciones escritas en C varían en una amplia variedad de software de sistema, software de escritorio, software de empresa, bases de datos, etc. Harías muy bien en comenzar una carrera en programación. Exija ahora Ya que conseguir un trabajo de programación puede ser difícil en el panorama actual, considere centrarse en una de las siguientes concentraciones para mejorar sus posibilidades de éxito. Leer más con un conocimiento de los conceptos básicos de C.

Una breve historia de C

El desarrollo del lenguaje C está muy estrechamente asociado con Unix. Fue desarrollado alrededor de 1972, con más adiciones hechas en años posteriores..

Antes de que se desarrollara C, el sistema operativo Unix se desarrolló para la computadora PDP-7 usando su lenguaje ensamblador. Más tarde, se compiló un compilador para C en esta plataforma, nuevamente utilizando lenguaje ensamblador. En este momento, C fue diseñado para facilitar el desarrollo de Unix. Usando este compilador, Unix fue reescrito completamente en C para la computadora PDP-11. Y nuevamente, el compilador de lenguaje C se reescribió en C (ayudado, por supuesto, por la excelente lex y yacc herramientas), completando así el proceso de arranque de C / Unix.

La razón principal por la que se reescribió Unix en C fue por portabilidad. Desde lenguajes de ensamblaje para diferentes arquitecturas de CPU Una breve guía de la fantástica CPU AMD Threadripper Una breve guía de la fantástica CPU AMD Threadripper. AMD Threadripper es una de las CPU de consumo más potentes del mercado, pero ¿es adecuada para usted? Leer más son diferentes, portar el sistema operativo Unix a cada uno habría sido un esfuerzo significativo. Desarrollando un lenguaje de sistemas como C, y reescribiendo el sistema operativo Unix en C, este esfuerzo se redujo en varios órdenes de magnitud.

Una vez que se desarrolló el lenguaje, se reconoció que podía usarse para escribir mucho más que el software del sistema. Y así, C comenzó a utilizarse para escribir software como servidores de archivos, servidores de bases de datos, pilas de redes, software de escritorio y servidores web (y posteriores) Cómo convertir un dispositivo Android en un servidor web Cómo convertir un dispositivo Android en una web Servidor Aloje su propio servidor web de forma simple y económica con un teléfono inteligente o tableta Android. Leer más, etc..

En 1978, Brian Kernighan y Dennis Ritchie publicaron el libro. El lenguaje de programación C. Este libro sirvió de informal Especificación del lenguaje C durante muchos años, hasta 1989, cuando C se estandarizó formalmente por ANSI. La última versión de C es C11, publicada en 2011..

Veamos ahora algunas características de C que lo hacen único..

C vs C ++: ¿Están relacionados?

A medida que se desarrollaba software más complejo en C, se reconoció que los conceptos orientados a objetos que incluyen encapsulación, polimorfismo, etc., ayudarían a manejar la complejidad. Esto condujo al desarrollo de C ++ como un superconjunto de C.

C ++ se construyó agregando ciertas características para escribir software orientado a objetos, mientras se mantiene la compatibilidad con C. Se desarrolló con la idea de mejora progresiva - Realizar cambios compatibles en el lenguaje C para que los módulos C y C ++ puedan combinarse en el mismo programa y compilarse con el mismo compilador. Esto permitió reutilizar módulos anteriores basados ​​en C con cambios mínimos en un programa más grande escrito con conceptos orientados a objetos..

Un programa de C puede, en teoría, ser compilado por un compilador de C ++ sin requerir ningún cambio. Sin embargo, en la práctica, la comprobación de tipos más estricta impuesta por C ++ produce errores, que requieren algunos cambios en el código.

Pequeño número de palabras clave

El lenguaje C ha sido un lenguaje pequeño a pesar de su poder. Esto se debe a que declara solo 32 palabras como palabras clave con un significado específico. Por el contrario, C ++ declara 82 palabras clave, java tiene 50 palabras clave reservadas y javascript tiene 63. Y COBOL declara la friolera de 357 palabras clave. Imagine el dolor de cabeza de tener que recordar y esquivar una gran cantidad de palabras clave!

Sin tipo de cadena explícita

A diferencia de la mayoría de los otros lenguajes modernos Para crear una aplicación de Android, debe aprender estos 7 lenguajes de programación Para crear una aplicación de Android, debe aprender estos 7 lenguajes de programación ¿Qué lenguaje de programación es el adecuado para crear aplicaciones de Android? Todo se reduce a su historial de programación y a qué idiomas se siente más cómodo usando. Afortunadamente, tienes opciones. Lea más, como Java, C ++ y JavaScript, C no proporciona un tipo separado para cadenas. Una cadena se considera una matriz de caracteres terminados por un 0 caracteres (denotado “\ 0”). La longitud de la cadena se indica mediante una convención: el número de caracteres hasta el 0 caracteres. Usted es libre de ignorarlo y contar o almacenar más allá del “\ 0”. Esta falta de un tipo de cadena adecuado y la convención ha resultado en innumerables errores a lo largo de los años, conocidos como desbordamiento de búfer.

De hecho, el primer gusano que se conectó a Internet, el Morris Internet Worm, fue el resultado de este error en una pieza crucial de software del sistema conocida como dedo demonio.

Aquí hay un ejemplo de tal error. Ilustra lo fácil que es introducir estos errores en un programa. El programa compila bien, pero se bloquea debido al desbordamiento del búfer.

# incluir  main () char * buf = "hola mundo"; buf [12] = 'a'; printf ("% s \ n", buf);  

En contraste, la mayoría de los lenguajes modernos proporcionan un tipo de cadena explícito que hace que tales travesuras sean imposibles. Incluso C ++, que compila la multa del código anterior, proporciona un explícito std :: string tipo.

Manipulación del puntero

Un puntero es una referencia a una ubicación de memoria. C es completamente flexible cuando se trata de leer y escribir ubicaciones de memoria arbitrarias. Esta flexibilidad tiene un gran costo y ha sido la causa de muchos errores en todo el espectro de software. Los más notables y que afectan a toda Internet incluyen estos errores en servidores web, servidores de correo y servidores ftp. Incluso hoy en día, ocasionalmente hay noticias sobre errores causados ​​por referencias y actualizaciones de ubicaciones de memoria no válidas..

El infame SSL HeartBleed El error de seguridad descubierto en 2014 fue el resultado de una gestión incorrecta de las ubicaciones de los punteros e ilustra la importancia crucial de la correcta gestión de los punteros en C.

Incluso los ocasionales BSOD (“pantalla azul de muerte”) los errores que se ven en los sistemas Windows también son causados ​​probablemente por un manejo inadecuado del puntero.

Otros lenguajes que no sean C ++ no permiten la manipulación de punteros y, por lo tanto, no son vulnerables a esta clase de errores.

Las matrices y los punteros son intercambiables

En C matriz las referencias y los punteros son intercambiables. El lenguaje permite el uso de una referencia de matriz. Cómo utilizar una lista de arreglos de Java. Cómo usar una lista de arreglos de Java. Proporciona la mayoría de las instalaciones generalmente esperadas de matrices en otros idiomas. En este artículo, aprenderá a configurar y utilizar un arraylist. Lea más donde se requiere un puntero, y viceversa. Si bien esto permite una manipulación poderosa, también ha resultado en muchos errores infames.

Amplio uso de “definir” Macros

Las macros se utilizan para sustituir un nombre por una expansión diferente. Se pueden usar para cambiar la definición de un nombre en tiempo de compilación, o para sustituir una expansión más larga por un nombre simple. El sistema macro de C es compatible ifdef Condicionales que permiten la compilación condicional. Esta es una forma en que el software se traslada a diferentes arquitecturas y sistemas operativos. Los nombres genéricos se definen y se sustituyen en tiempo de compilación con diferentes expansiones para diferentes condiciones.

También es posible incluir o eliminar secciones completas de código para que no se compilen con estas macros ¿Tiene un teclado Razer? Grabar macros es fácil con Synapse ¿Tiene un teclado Razer? Grabar macros es fácil con Synapse Si usa periféricos Razer pero no aprovecha el software Synapse, se lo está perdiendo. A continuación le indicamos cómo usar las macros de manera efectiva y cómo pueden potenciar sus juegos. Lee mas .

Están en desuso pero disponibles en C ++. Otros idiomas, como Java, JavaScript, Python, etc., no proporcionan una facilidad similar.

Módulos encapsulados en archivos

C no tiene el concepto de clase y, por lo tanto, no admite la noción de visibilidad pública, privada y protegida por separado. La única encapsulación proporcionada por C es la de los archivos. Las funciones, las variables globales y los tipos definidos dentro de un archivo fuente son visibles solo dentro de ese archivo a menos que se exporten los nombres. Las palabras clave estático y externo Se proporcionan con el fin de controlar la visibilidad de los nombres de variables y funciones..

Por el contrario, otros lenguajes como C ++, Java y Python generalmente admiten clases, y la encapsulación que acompaña a las clases..

Bibliotecas externas

Aparte de las construcciones de lenguaje básico, la funcionalidad más compleja en C se delega a bibliotecas externas. La manipulación de cadenas, las matemáticas, la entrada-salida, las redes, etc. están provistas por bibliotecas externas. Por el contrario, otros idiomas generalmente vienen con una biblioteca de módulos bien surtida con el propio idioma..

Y eso cubre algunas características básicas del lenguaje C, especialmente aquellas que lo diferencian de otros idiomas..

¿Has trabajado con C? ¿Te gustó o hubieras preferido trabajar con otro idioma? Por favor explique en los comentarios a continuación..

Explorar más sobre: ​​Programación.