C/C fronte a outras linguaxes de programación

En Galilibros, o Wikibooks en galego.
< C
C
← Volver a Características C fronte a outras linguaxes de programación Seguir con Requisitos


A linguaxe de programación C é a linguaxe de programación máis utilizada á hora de programar sistemas operativos. Unix foi o primeiro sistema operativo programado en C. Máis adiante escribíronse tamén en C GNU/Linux, Windows e Mac OS X.

C non é só a linguaxe dos sistemas operativos, senón que é a precursora de case todas as linguaxes de alto nivel dispoñibles hoxe en día. De feito, Perl, PHP, Python, e Ruby escribíronse todas en C.

Para entendermos mellor o asunto, fagamos un paralelismo. Digamos que vas aprender francés, italiano, e catalán. Non cres que saber latín podería resultarche útil? Pois do mesmo xeito que o latín é a base desas linguas, coñecer C permitirache comprender e apreciar unha familia enteira de linguaxes de programación feitas todas elas a partir de C.

Por que C e non linguaxe ensambladora?[editar]

Porque a linguaxe ensambladora, malia a súa potencia, e difícil de máis á hora de programar aplicacións longas, e difícil de ler ou interpretar de maneira lóxica. C é unha linguaxe compilada, ao contrario que a linguaxe ensambladora, o que resulta en ficheiros executables rápidos e eficientes. E en certo modo, C é unha linguaxe do tipo WYSIWYG ("O que ves é o que hai"), no sentido de que algunhas cousas que en linguaxe ensambladora poderían precisar moito código, en C fanse con facilidade gracias ás funcións da súa biblioteca estándar.

Ademáis cómpre ter en conta que as linguaxes ensambladoras son distintas dun procesador a outro, polo que aprendelas pode acabar resultando inútil, mentres que C salienta pola súa universalidade e portabilidade a varios tipos distintos de computador (e outros dispositivos electrónicos) xunto coa súa capacidade para manter un control sobre o hardware similar ao que fornece a linguaxe ensambladora. Ademais, C dálle ao programador a opción de programar en linguaxe ensambladora dentro do propio código C, dándolle aos programadores a opción de optimizar unha parte de código moi importante ou moi utilizada en linguaxe ensambladora.

Por que C e non outras linguaxes de alto nivel?[editar]

Principalmente pola asignación de memoria. Ao contrario que moitas das linguaxes de programación, C permítelle ao programador escribir directamente na memoria. Construcións clave de C tales coma a estruturas, punteiros ou matrices están deseñados para estruturar e manipular a memoria dun modo eficiente e independente da máquina. Concretamente, C dálle ao programador o control sobre as estruturas de datos dos enderezos da memoria. O programador pode manexar ata a asignación dinámica de memoria, o que pola outra banda significa que é o programador o que asemade ten que encargarse da liberación de memoria. Outras linguaxes, coma Java e Perl liberan ao programador de se preocupar da asignación de memoria ou dos punteiros. Isto adoita considerarse beneficioso para o programador, xa que pode resultar algo tedioso tratar coa asignación de memoria cando se fai un gran programa. Mais cando se trata de pequenos programas ou pequenas partes de grandes programas, o acceso directo á memoria chega a resultar imprescindible, e C é a linguaxe idónea para ditas tarefas. Noutras linguaxes coma Java é directamente imposible facer cousas como as que permite C.

Se ben linguaxes coma Perl, PHP, Python ou Ruby poden resultar potentes e contar con funcionalidades das que C carece (en principio), estas linguaxes non adoitan estar implementadas na súa propia linguaxe. En realidade a meirande parte delas escribíronse nun principio precisamente en C (ou outras linguaxes de alto rendemento).

C++[editar]

C++ baseouse en C e conserva unha gran parte da súa funcionalidade, pero non son linguaxes completamente compatibles a nivel de código. Existen algunhas diferencias fundamentais que cómpre coñecer:

  • C permite maior liberdade con respecto a C++ á hora de “xogar cos bytes” ─o que pode resultar tan beneficioso como prexudicial─.
  • Seguen paradigmas de programación distintos: C é unha linguaxe estruturada, mentres que C++ está orientada a obxectos.
  • C non ten un tipo booleano ─cuxo valor pode ser «certo» ou «falso»─ nin un para cadeas de texto. Porén, os tipos booleanos poden imitarse mediante un tipo «enum» e trabállase coas cadeas de texto mediante matrices de caracteres.
  • Aínda que en C adoita facerse por convención, en C++ é obrigatorio que as funcións se declaren antes de empregarse.
  • En C hai que engadir a palabra clave enum ou struct ao declarar unha variable do tipo dunha enumeración ou estrutura previamente definida, mentres que en C++ emprégase directamente o nome da estrutura.
  • A biblioteca estándar de funcións de C++ é moito máis completa, e permite empregar tamén a de C.
  • En C++ as funcións devolven 0 de maneira predeterminada, mentres que en C debe especificarse sempre.

Diferéncianse ademais nos seguintes aspectos:

Asignación implícita dun tipo void*[editar]

En C++ non se pode facer unha asignación implícita dun tipo void* a outro tipo calquera. Por exemplo, a seguinte liña de código é completamente correcta en C (de feito, é probablemente o mellor modo de escribila), pero non compilaría en C++:

int *x = malloc(sizaof(int) * 10);

Memoria dinámica[editar]

En C hai unha única función principal de asignación de memoria, malloc(), que se emprega para asignar memoria tanto a elementos individuais como a matrices, e a memoria sempre se libera mediante a función free().

Porén, en C++ a asignación de memoria para as matrices é algo distinta da asignación de memoria para elementos individuais. Para as primeiras empréganse os operadores new[] e delete[], mentres que para os segundos new e delete.


C
← Volver a Características C fronte a outras linguaxes de programación Seguir con Requisitos