C/C fronte a outras linguaxes de programación
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?
editarPorque 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?
editarPrincipalmente 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++ 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
oustruct
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
editarEn 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 → |