Abrir o menú principal

C é unha linguaxe de programación creada no 1969 por Ken Thompson e Dennis M. Ritchie nos Laboratorios Bell baseándose nas linguaxes BCPL e B. Ao igual que os seus dous predecesores, é unha linguaxe orientada á implementación de sistemas operativos (os sistemas operativos Linux e UNIX están escritos maiormente en C), pero converteuse nunha linguaxe de propósito xeral dos máis usados.

C
Paradigmaimperativa, estruturada
Data1972[1]
DeseñadorDennis Ritchie
DesenvolvedorDennis Ritchie e Bell Labs (creadores); ANSI X3J11 (ANSI C); ISO/IEC JTC1/SC22/WG14 (ISO C)
Última versiónC11
Tipo de datoestática, deble, manifesta, nominal
DialectosCyclone, Unified Parallel C, Split-C, Cilk, C*
Influído porB (BCPL, CPL), ALGOL 68, Assembly, PL/I, FORTRAN
InfluíuMultitude: AMPL, AWK, csh, C++, C--, C#, Objective-C, BitC, D, Go, Java, JavaScript, Julia, Limbo, LPC, Perl, PHP, Pike, Processing, Python, Rust, Seed7, Vala, Verilog (HDL)
Sistema operativoMultiplataforma

Trátase dunha linguaxe non fortemente tipada de medio nivel pero con moitas características de baixo nivel. Dispón das estruturas típicas das linguaxes de alto nivel pero, á súa vez, dispón de construcións da linguaxe que permiten un control a moi baixo nivel. Un exemplo é a posibilidade de mesturar código en linguaxe ensambladora con código C ou acceder directamente a memoria o dispositivos periféricos. Destaca a súa grande riqueza de operadores e expresións.

Existe un estándar ISO do 1986 denominado ANSI C. En teoría, unha linguaxe 100% ANSI C sería portable entre plataformas e/ou arquitecturas pero na práctica isto non é sempre certo.

Vantaxes e inconvenientesEditar

  • Vantaxes:
    • É unha linguaxe moi eficiente posto que é posible utilizar as súas características de baixo nivel para realizar implementacións óptimas.
    • A pesar do seu baixo nivel é portable sempre que no sistema final exista o compilador axeitado (con algunhas restricións).
    • É unha linguaxe moi flexible que permite programar con múltiples estilos. Un dos máis empregados é o estruturado non levado ao extremo (permitindo certas licenzas rupturistas).
    • Proporciona facilidades para realizar programas modulares e/uo utilizar código ou bibliotecas existentes.
  • Inconvenientes:
    • A súa flexibilidade e/ou optimización excesiva pode xerar programas pouco lexibles e mantibles.
    • Algunhas das súas posibilidades mal empregadas poden inducir a erros ou bugs difíciles de detectar e corrixir.
    • Trátase dunha linguaxe complexa e complicada de aprender. O seu núcleo nativo é moi reducido (unicamente expresións, sentenzas condicionais e bucles) mentres que a maior parte da funcionalidade proporcionase con bibliotecas externas (a maior parte bibliotecas estándar e as bibliotecas da API do sistema).

VariantesEditar

Desde a súa aparición da linguaxe xurdiron varias ramas de evolución que xeraron varias novas linguaxes:

Proceso de compilaciónEditar

A compilación dun programa C realizase en varias fases que normalmente son automatizadas e ocultadas polos entornos de desenvolvemento:

  1. Preprocesado consistente en modificar o código fonte en C segundo unha serie de instrucións (denominadas directivas de preprocesado) simplificando de esta forma o traballo do compilador. Por exemplo, unha das accións máis importantes é a modificación das inclusións (#include) polas declaracións reais existentes no ficheiro indicado.
  2. Compilación que xera o código obxecto a partir do código xa preprocesado.
  3. Enlazado que une os códigos obxecto dos distintos módulos e bibliotecas externas (como as bibliotecas do sistema) para xerar o programa executable final.

Exemplo de Código CEditar

Segue o clásico exemplo "Ola mundo!" en C:

/* O noso primeiro programa en C */

#include <stdio.h> //Incluímos a biblioteca standard input output

main()
{
      printf("Ola mundo!\n");
}

NotasEditar

  1. Ritchie, Dennis M. (March 1993). "The Development of the C Language". ACM SIGPLAN Notices 28 (3): 201–208. doi:10.1145/155360.155580. 

Véxase taménEditar

Outros artigosEditar

Ligazóns externasEditar