Saludos. En esta ocasión les comentaré sobre una letra, bueno no exactamente una letra, sino sobre un lenguaje de programación cuyo nombre es la tercera letra del alfabeto. Estoy hablando del lenguaje C, el cual ha sido la base de muchas de las cosas que usamos actualmente. sin mas preámbulos, empecemos.
Las
computadoras están en todos lados, incluyendo en los smartphones, ya
que estos al fin y al cabo son computadoras al igual que las tablets,
peros estos aparatos no serian nada útil sin un sistema operativo
que es el conjunto de programas que permiten a los seres humanos
interactuar con una computadora siendo los mas conocidos Windows, Mac
OS, GNU/Linux, Unix en el caso de los equipos de escritorio y laptops
y Android, iOS,Windows Mobile y Blackberry OS en el caso de los
smartphone y tablets son los sistemas operativos usados por dichos
artefactos, pero hacen falta otras aplicaciones para sacar mayor
provecho de estos, como es el caso de los navegadores o browsers que
nos permiten acceder a Internet, siendo los mas conocidos Mozilla
Firefox, Chrome, Safari, Opera Microsoft Edge e Internet Explorer y
de los paquetes de ofimática, que son un conjunto de aplicaciones
usados tanto en empresas como en el hogar que sirven para crear,
modificar e imprimir archivos, como es el caso de Microsoft Office y
LibreOffice. Pero todos estos sistemas operativos y aplicaciones
creados por distintos fabricantes y usados en distintos equipos
tienen algo en común y es la letra C. No, no está presente en el
nombre sino es algo que es la base en la que se crearon ¿Que es ese
algo? El lenguaje de programación C.
Es
un lenguaje de programación de propósito general, esto significa
que pueden ser usados para varios propósitos como acceso a bases de
datos, comunicación entre computadoras y entre dispositivos,
cálculos matemáticos, diseño de imágenes o páginas, crear
sistemas operativos, manejadores de bases de datos, compiladores,
etc. El lenguaje C es la base de muchos sistemas operativos y de
otras aplicaciones como veremos a continuación.
Orígenes
del lenguaje C
El
lenguaje C fue creado por Dennis Ritchie, científico que laboraba en
los Laboratorios Bell, que pertenecían en aquella época a la
compañía AT&T), en los Estados Unidos, en el año 1972, para lo
cual se basó en otro lenguaje de programación llamado B, para lo
cual Ritchie estuvo haciéndole modificaciones, hasta que finalmente
logra terminar su creación, llamándolo C por la sencilla razón que
C es la letra que le sigue a B en el alfabeto.
|
Dennis Ritchie creador del lenguaje C |
¿Pero
exactamente que fue lo que llevó a la creación del lenguaje C?
Como
se dijo, el lenguaje C fue desarrollado a partir del lenguaje B, el
cual fue a su vez fue creado para recodificar al sistema operativo
UNIX, el cual había sido creado en el año 1969 en los laboratorios
Bell (donde fueron también creados los lenguajes B y C) por Ken
Thompson, Dennis Ritchie y Douglas McIlroy. En aquel entonces, Unix
se programaba directamente en ensamblador, con el inconveniente de
estar vinculado a equipos concretos (según el juego de instrucciones
de cada uno de ellos), por lo que se hacía necesario un lenguaje que
permitiese al programador abstraerse de la capa hardware y conseguir
una mayor portabilidad del código, algo que se realizó con el
lenguaje B.
Dennis
Ritchie, tal como se dijo antes, modifica el lenguaje B aportando
tipos y estructuras de datos que consiguiesen clarificar la
programación y obtener un lenguaje mucho más eficiente, el cual
permitía realizar una programación estructurada en la que se podían
economizar las expresiones a usar y con el que los desarrolladores
podrían contar con un buen conjunto de operadores y tipos de datos
para programar tanto en alto como en bajo nivel de manera simultánea,
dando como resultado a C. En el año 1973, Dennis Ritchie reescribe
al sistema UNIX en lenguaje C, haciendo que este sistema operativo
fuera independiente de la máquina. Eso permitió que UNIX fuese
compatible con otras arquitecturas o familias y su expansión fuese
de tipo viral. El primer compilador de C fue escrito por Dennis
Ritchie para un DEC PDP-11 (un compilador es el que se encarga de
traducir las instrucciones de al gun lenguaje en lenguaje de maquina,
es decir 1 y 0, de modo que las computadoras lo entiendan).
|
El primer compilados para el lenguaje C fue escrito para una computadora DEC PDP-11. Aquí vemos a Dennis Ritchie junto a Ken Thompson, uno de los creadores del sistema operativo UNIX trabajando en una de estas computadoras |
La
gran novedad y ventaja que proporcionó C sobre B fue el diseño de
tipos y estructuras de datos. Los tipos estructurados básicos de C
son las estructuras, las uniones y los arrays. Estos permiten la
definición y declaración de tipos de mayor complejidad.
Existen
otras versiones sobre como se llegó a crear al lenguaje C. Una de
estas es que el desarrollo de C fue el resultado del deseo de los
programadores de jugar con Space Travel. Habían estado jugando en el
mainframe de su compañía, pero debido a su poca capacidad de
proceso y al tener que soportar 100 usuarios, Kenneth Thompson y
Dennis Ritchie no tenían suficiente control sobre la nave para
evitar colisiones con los asteroides. Por ese motivo decidieron
portar el juego a un PDP-7 de la oficina que no se utilizaba; pero
esa máquina no tenía sistema operativo, así que decidieron
escribir uno. Finalmente decidieron portar el sistema operativo del
PDP-11 que había en su oficina, pero era muy costoso, pues todo el
código estaba escrito en lenguaje ensamblador, por lo que decidieron
usar un lenguaje de alto nivel y portátil para que el sistema
operativo se pudiera portar fácilmente de un ordenador a otro.
Consideraron usar B, pero carecía de las funcionalidades necesarias
para aprovechar algunas características avanzadas del PDP-11.
Entonces se empezó a crear un nuevo lenguaje, que fue C.
La
otra causa es que se buscaba crear un sistema que automatizase el
archivo de patentes de los Laboratorios Bell y, dado que la versión
original de UNIX se desarrolló en ensamblador, se usó C para
rescribir el sistema operativo. No se sabe si algunas de estas
versiones sean ciertas.
Cuando
alguien adquiría una copia de UNIX recibía ademas un compilador de
C gratis. Como UNIX fue escrito en C, entonces si alguien quería
entender este sistema, tenia que aprender C. Esto dio como resultado
que este lenguaje adquiriera popularidad, por lo que distintas
empresas introdujeron sus propios compiladores C, que incluso podían
ejecutarse en otros sistemas operativos distintos a UNIX.
La
referencia para este lenguaje era el libro de Brian Kernighan y
Dennis Ritchie, llamado El lenguaje de programación C, escrito en
1978, en donde se explica el desarrollo de aplicaciones en C.
En
1987 con la creación de "The American National Standars
Institute (ANSI) version of C", mejor conocida como ANSI C se
crea un estándar para este lenguaje. Posteriormente, en 1990, fue
ratificado como estándar ISO (ISO/IEC 9899:1990). Su adopción es
muy amplia por lo que, si los programas creados lo siguen, el código
es portable entre plataformas y/o arquitecturas.
Durante
la segunda mitad de la década de los 80, el lenguaje C se convirtió
en el lenguaje elegido para el desarrollo de software comercial.
Los
ancestros del lenguaje C
Ya
se ha dicho varias veces que el lenguaje C fue creado a partir del
lenguajes B. El mismo fue creado por Kenneth Thompson, con ayuda de
Dennis Ritchie en los Laboratorios Bell en el año 1969. Entre sus
características se tiene que era carente de tipos y estructuras. El
nombre es una contracción de BCPL, aunque se piensa que Kenneth
Thompson lo llamo B en honor a su esposa Bonni.
El
lenguaje B está basado en otro mas, el BCPL, y era similar a este,
excepto en si sintaxis. Para crear B, Thompson eliminó cualquier
componente de BCPL que el consideró prescindible de forma que
cupiese en la memoria de las computadoras de la época. El lenguaje
también incluyó cambios de acuerdo con las preferencias de Thompson
(Reducir el número de caracteres de un programa). Además solo
manejaba un tipo de datos, que correspondía con una palabra de
maquina.
BCPL
son las siglas en ingles de Basic Combined Programming Language, el
cual fue diseñado por Marin Richards en la Universidad de Cambridge,
Gran Bretaña en 1966, motivado a las dificultades experimentadas con
el lenguaje de programación CPL.
BCPL
es un lenguaje de programación ordenado, potente y muy fácil de
adaptar a diferentes arquitecturas, usaba flujo de control con
If-Then, Test-Then-Else, Unless-Do, While-Do, Until-Do, Repeat,
Repeatwhile, Repeatuntil, For-to-By-Do, Loop, Break and
Switchon-Into-Case-Default-Endcase. Se popularizó en los programas
de arranque de las computadoras (bootstraps en inglés) debido a sus
compiladores simples y compactos, algunos con capacidad para correr
en solo 16 kilobytes, Inclusive algunos sistemas operativos fueron
escritos total o parcialmente en BCPL.
Con
respecto a CPL que son las siglas en inglés de Combined Programming
Language, podemos decir que fue creado conjuntamente por el
laboratorio de Matemáticas de la Universidad de Cambridge y la
Unidad Computación de la Universidad de Londres en 1963. Por lo
tanto BCPL está basado o tiene influencias de CPL. Este lenguaje fue
utilizado en Multics (siglas de Multiplexed Information and Computing
Service, Servicio de información y cómputo con multiplexión) el
cual fue uno de los primeros sistemas operativos de tiempo compartido
y tuvo una gran influencia en el desarrollo de los posteriores
sistemas operativos.
Pero
a su vez CPL está basado en otro lenguaje de programación, el
ALGOL, que son las siglas en ingles de ALGorithmic Oriented Language,
y a diferencia de este que era extremadamente pequeño, elegante y
simple, CPL era grande, moderadamente elegante y complejo. ALGOL fue
creado en el año 1958 por un comité internacional con la finalidad
de crear un lenguaje de programación que sea independiente de la
máquina en que vaya a instalarse y que ademas solucionara algunos
problemas presentados por Fortran otro lenguaje de programación
antiguo. Una de las características de ALGOL es que utiliza bloques
de declaraciones entre paréntesis y fue el primer lenguaje en
emplear los términos BEGIN y END para delimitarlos. Fue el primer
lenguaje estructurado, es decir que usaba el ciclo for,
if-then-else, anidado, recursivo, y de libre forma y switch que es
una generalización del goto de FORTRAN.
Por
lo tanto, C ha sido producto de una secuencia de lenguajes de
programación, los cuales cada uno fueron mejorando algunas
características de los que les precedían, por lo que puede decir
que C tiene su árbol genealógico.
|
Árbol genealógico del lenguaje C |
Características
de C
El
lenguaje C tiene las siguientes características:
-
Programación estructurada
-
Un núcleo del lenguaje simple, con funcionalidades añadidas
importantes, como funciones matemáticas y de manejo de archivos,
proporcionadas por bibliotecas.
-
Un sistema de tipos que impide operaciones sin sentido.
-
Economía de las expresiones
-
Abundancia en operadores y tipos de datos
-
Codificación de alta y bajo nivel simultáneamente
-
Reemplaza ventajosamente a la programación en ensamblador
-
Utilización natural de las funciones primitivas del sistemas
-
No está orientado a ninguna área en especial
-
Producción de código objeto altamente optimizado
-
Facilidad de aprendizaje
-
Acceso a memoria de bajo nivel mediante el uso de punteros
-
Conjunto reducido de palabras reservadas
-
Paso de parámetros a funciones por valor
-
Tipos de datos agregados (struct) que permitían combinar, bajo un
mismo tipo, datos de tipos distintos y manejarlos como uno solo
C es
un lenguaje de alto nivel (aquel que se encarga de de mostrar
distintos Algoritmos de modo tal de que un usuario pueda leerlo,
reorganizarlo e interpretarlo), que es capaz de manipular la
computadora a bajo nivel (cuando se habla de bajo nivel se se refiere
al lenguaje que entienden las computadoras, es decir, 1 y 0, o lo que
es lo mismo, código binario), tal como lo haría un lenguaje
ensamblador y al tener un modesto conjunto de características, se
pueden desarrollar compiladores de C fácilmente.
Una
de las peculiaridades de C es su riqueza de operadores, puede decirse
que prácticamente dispone de un operador para cada una de las
posibles operaciones en código maquina. Hay toda una serie de
operaciones que puede hacerse con el lenguaje C, que realmente no
están incluidas en el compilador propiamente dicho, sino que las
realiza un preprocesador (El preprocesador es un programa que forma
parte del compilador y que modifica el código fuente antes de ser
traducido a código binario) justo antes de cada compilación, siendo
los mas importante #define (directriz de sustitución simbólica o de
definición) e #include (directriz en el fichero fuente).
Estructura
de un programa hecho en lenguaje C
Un
programa hecho en lenguaje C está compuesto de la siguiente manera:
|
Estructura de un programa hecho en lenguaje C |
Explicaremos
cada una de las partes que conforman un programa en C.
Archivo
de cabecera
Los
archivos de cabecera contienen diversos archivos y funciones
predefinidos que sirven a la hora de correr el programa. Cada archivo
de cabecera se identifica por la extensión .h (header file), como
por ejemplo stdio.h, el cual contiene funciones para realizar
operaciones de entrada y salida sobre archivos.
Otros
archivos de cabecera son:
ctype.h:
Funciones útiles para la clasificación y el mapeado de códigos.
float.h:
Funciones que establecen algunas propiedades de las representaciones
de tipos real.
limits.h:
Funciones que establecen algunas propiedades de las representaciones
de tipos enteros.
math.h:
Funciones que sirven para realizar operaciones matemáticas comunes
sobre valores de tipo double.
stdarg.h:
Son declaraciones que permiten acceder a los argumentos adicionales
sin nombre en una función que acepta un número variable de
argumentos.
stdlib.h
y a veces unistd.h: Declaraciones de una colección de funciones
útiles. Entre ellas suele estar la función malloc que permite hacer
peticiones de memoria dinámica al sistema.
string.h:
Declaración de una colección de funciones útiles para manejar
cadenas y otros arrays de caracteres.
time.h:
Declaración de funciones para el manejo de fechas.
assert.h:
Es proporcionar una definición de la macro assert, que imprime un
mensaje de error y aborta el programa.
alloc.h:
Existen funciones para asignar, liberar memoria, u obtener
información de bloques de memoria.
dir.h:
Esto permite ordenar, crear, modificar, mover y eliminar directorios
errno.h:
Representa los números de error, después que ocurre un error se
puede consultar el valor de la variable del sistema de errno para
obtener mas información sobre ese error.
limits.h
Define los limites de los diferentes tipos de enteros.
setjmp.h:
Define el tipo de jmp_buf para algunas funciones.
signal.h:
Contiene funciones de estado.
stdef.h:
Se definen algunos tipos especiales
iostream.h:
Funciones para ingresar y mostrar datos.
Para
incluir a los archivos de cabecera se usa la palabra #include.
Cabecera
de función
Una
función es un conjunto de instrucciones que se la puede llamar desde
el programa principal o desde otras funciones. En este caso, estas
funciones se colocan en la cabeza o inicio del programa, ya que estas
instrucciones se incluirán en todo el programa, por lo que a estas
se les llama también variables globales. La función que se coloca
al principio del programa es main(), que es la que ejecuta el sistema
operativo al llamar a un programa C y que ademas puede llamar a otras
funciones. Cada función va acompañada de paréntesis (). También
se le coloca los parámetros de la función, que para main() es int
que indica que la función es de tipo entero (trabaja con números
enteros), pero esto es opcional.
Sentencias
Las
sentencias o instrucciones se colocan entre llaves {}, estas
manipulan los datos que se ingresan al programa para obtener un
resultado esperado. De forma mas exacta, indica que es lo que va a
realizar específicamente el programa. Cada una de estas
instrucciones tienen un significado y que al juntarlas correctamente
se obtendrá el resultado esperado por el programa y se representan
por palabras claves, que significa que no se pueden utilizar como
nombre de variables o constantes. Algunas de estas instrucciones son
las siguientes:
printf:
Significa imprimir o mostrar en pantalla.
scanf:
Significa leer una variable.
break:
significa interrumpir.
if:
Significa si (condicional.)
if-else:
sSignifica si sino (condicionales).
while:
Significa mientras.
do-while:
Significa hacer mientras.
return:
Significa regresar.
continue:
Significa continuar.
switch:
Significa según sea.
Dentro
de las sentencias se pueden incluir comentarios, que es información
relativa a este. Estos comentarios si bien se añaden a la estructura
del programa, no afectan a este, ya que solo es información
complementaria.
Tipos
de datos usados por el lenguaje C
Los
tipos de datos definidos por C son caracteres, números enteros y
números en coma flotante y son representados por char, los enteros
por short, int, long y los números en coma flotante por float y
double.
Representación
|
Tipo
|
Tamaño
|
CHAR
|
carácter
|
normalmente 8 bits
|
INT enteros
|
enteros
|
depende de la implementación
|
FLOAT
|
números reales (flotante simple)
|
normalmente 32 bits
|
DOUBLE
|
números reales (flotante doble)
|
normalmente 64 bits
|
SHORT
|
números enteros cortos
|
normalmente 16 bits
|
LONG
|
números enteros largos
|
normalmente 32 bits
|
UNSIGNED
|
números enteros sin signo
|
depende de la implementación
|
Creación
de un programa en lenguaje C
Para
crear un programa, primero se escriben, siguiendo la estructura antes
descrita, las diferentes funciones y sentencias que lo conforman y se
guarda. Este archivo, el cual consta de palabras que pueden ser
entendidas por el ser humano es lo que se conoce como código fuente.
Este código fuente posteriormente se compila, es decir, que se
convierte en otro archivo en código objeto, el cual puede ser
entendido por la computadora para finalmente ser convertido en código
ejecutable, el cual tiene toda la información para que el
microprocesador del computador pueda “correrlo o ejecutarlo” y
realizar la actividad para la que fue hecho el programa.
C
puede ser compilado al lenguaje de maquina en casi todas las
computadoras y se programa con una serie de funciones que se llaman
unas a otras para el procesamiento. Los programadores pueden elegir
la elección entre el uso de la biblioteca estándar que se provee
con el compilador, el uso de funciones de terceros creadas por otros
proveedores de C, o el desarrollo de sus propias funciones.
La
compilación de un programa en C se realiza en varias fases que
normalmente son automatizadas y ocultadas por los entornos de
desarrollo:
-
Preprocesado consistente en modificar el código fuente en C según
una serie de instrucciones (denominadas directivas de preprocesado)
simplificando de esta forma el trabajo del compilador. Por ejemplo,
una de las acciones más importantes es la modificación de las
inclusiones (#include) por las declaraciones reales existentes en el
archivo indicado.
-
Compilación que genera el código objeto a partir del código ya
preprocesado.
-
Enlazado que une los códigos objeto de los distintos módulos y
bibliotecas externas (como las bibliotecas del sistema) para generar
el programa ejecutable final.
Si
hay un error en la compilación del programa, este se se puede
depurar para corregir estos errores.
Ventajas
del lenguaje C
-
Lenguaje muy eficiente puesto que es posible utilizar sus
características de bajo nivel para realizar implementaciones
óptimas.
-
A pesar de su bajo nivel es el lenguaje más portado en existencia,
habiendo compiladores para casi todos los sistemas conocidos.
-
Proporciona facilidades para realizar programas modulares y/o
utilizar código o bibliotecas existentes.
-
La programación en C tiene una gran facilidad para escribir código
compacto y sencillo a su misma vez.
Desventajas
del lenguaje C
No
todo es perfecto, ya que C presenta las siguientes desventajas:
-
Carece de instrucciones de entrada/salida, de instrucciones para
manejo de cadenas de caracteres.
-
La excesiva libertad en la escritura de los programas puede llevar a
errores en la programación que, por ser correctos sintacticamente
no se detectan a simple vista.
-
Las precedencias de los operadores convierten a veces las
expresiones en pequeños rompecabezas.
-
No tiene soporte para programación orientada a objetos y para
programación multihilo.
Lenguajes
derivados de C
A
partir del lenguaje C se crean otros lenguajes de programación tales
como:
-
C++
Creado
en 1979 por el profesor de ciencias de la computación de la
Universidad A&M de Texas, Estados Unidos Bjarne Stroustrup. Este
lenguaje cuenta, ademas de todas las funcionalidades de C, otras mas
como clases, sobrecarga de funciones, herencia entre clases, etc. A
diferencia de C, que es un lenguaje de programación estructurado,
es decir, que sigue tres estructuras de control que son secuencia
que es la sucesión simple de dos o mas operaciones, selección, que
es la bifurcación condicional de una o mas operaciones e
interacción, que es la repetición de una operación mientras se
cumple una operación, C++ está orientado a objetos, es decir, que
trabaja con objetos visibles, entendiendo como objeto a entidades
que contienen datos y los que cada uno de los cuales posee sus
propias características, métodos y eventos y toma como entidad
principal los objetos de la naturaleza misma que contienen sus
propias características y alguna función de utilidad.
-
Objective-C
Creado
en 1981 por el experto en ciencias de la computación y matemático
Brad Cox y está caracterizado por su aplazamiento a muchas
decisiones hasta que se cumple el tiempo de corrida del programa
creado y al igual que C++ está orientado a objetos. Objective-C es
un lenguaje compilado. pero también es al mismo tiempo un lenguaje
enlazado . Esto quiere decir básicamente que el resultado del
compilador no es el programa final sino que existe una segunda fase
que lleva a cabo el enlazador, que es el responsable de recoger el
código compilado y de juntarlo con otro código compilado: el de
las librerías que el programa utilice. En Objective-C, el
compilador tan solo tiene en cuenta los archivos de cabecera. Por lo
tanto si una clase no está definida en los archivos de cabecera es
como si no existiese, mientras que el enlazador es un paso posterior
al compilador. Eso significa que un código puede compilar bien pero
puede tener errores del enlazador.
-
C# (se pronuncia C Sharp)
Creado
por Microsoft en el año 2000 como parte de .NET, que es una
plataforma de desarrollo de software con énfasis en transparencia
de redes, con independencia de plataforma de hardware y que permite
un rápido desarrollo de aplicaciones, con el fin de facilitar la
interconexión de distintas plataformas de hardware, software,
información y usuarios. El nombre del lenguaje, C#, proviene de
dibujar dos signos positivos encima de los dos signos de suma de
C++, queriendo dar una imagen de evolución tal como ocurrió con el
paso de C a C++. C# es un lenguaje de programación orientado a
objetos y se caracteriza por su sencillez de uso, ya que elimina
muchos elementos añadidos por otros lenguajes y que facilitan su
uso y compresión, como por ejemplo ficheros de cabecera y no
incorpora elementos como macros y herencia múltiple. Asimismo
incorpora elementos útiles como tipos decimales o booleanos, un
tipo básico string, así como una instrucción que permita recorrer
vectores con facilidad (instrucción foreach) e incluye mecanismos
de control de acceso a tipos de datos, lo que garantiza que no se
produzcan errores difíciles de detectar.
Otros
lenguajes basados en C o que han sido influenciados por este son
Swift el cual fue creado por Apple en el año 2014, está basado
tanto en C, como en Objective-C. También se cuentan entre estos
lenguajes a Python, Ruby y PHP .
|
El lenguaje ha sido la base de otros lenguajes de programación |
Lenguaje
C base de sistemas operativos
Se
dijo que el sistema operativo UNIX está hecho en C, pero hay otros
sistemas basados en este, y que por lo tanto está presente este
lenguaje, como es el caso de BSD, siglas de Berkeley Software
Distribution, cuya última versión fue la 4.4 lanzada en el año
1995 y de la cual fueron creados otros sistemas como FreeBSD, OpenBSD
y NetBSD. Asimismo, otro sistema operativo basado en UNIX, que es
Solaris, creado por la la empresa Sun Microsystems y que en la
actualidad es propiedad de la empresa Oracle. A partir de Solaris
surgieron otros sistemas como son OpenIndiana e Illumos y Nexenta OS.
Al ser todos estos sistemas operativos basados en UNIX y al ser este
creado en lenguaje C, todos estos serán sus descendientes.
Otro
descendiente del lenguaje C es macOS (antes llamado OS X o Mac OS X),
que es el sistema operativo desarrollado por Apple que fue lanzado en
el año 2001 y el cual está basado en NeXTSTEP, que fue el sistema
operativo creado por NeXT, la empresa creada por Steve Jobs luego de
su salida de Apple, y que a su vez está basado en BSD, y tal como se
dijo en el párrafo anterior, está basado en UNIX, por lo que C está
presente en el mismo. El núcleo de macOS está hecho en BSD y por
tanto en UNIX (al igual que el de NeXTSTEP) y gran parte del sistema
está escrito en Objective C, por lo que C está presente en este
sistema operativo. Pero ya antes del lanzamiento de macOS, las
versiones anteriores de este sistema operativo, conocidas con Mac OS
Classic, a partir de la versión System 7 lanzada en 1991 eran
escritas en lenguaje C. Hasta la versión System 6 se escribían en
lenguaje emsamblador (que es la representación del que entienden las
maquinas directamente).
|
Muchos sistemas operativos han sido basados en UNIX y este a su vez fue escrito en C, por lo que estos sistemas son "primos" |
Otro
sistema operativo que tienen como base el lenguaje C es GNU/Linux.
Este sistema esta compuesto por el núcleo o kernel Linux, creado por
Linus Torvald en el año 1991, y GNU, que es el resto del sistema, el
cual fue idea de Richard Stallman con la intención de tener un
sistema operativo libre, es decir, cuyo código fuente sea abierto y
de libre distribución al cual le faltaba el núcleo o kernel, por lo
que se le incorporó Linux el cual fue escrito en gran parte en
lenguaje C. Asimismo, los elementos que conforman GNU tales como
librerías, utilidades, gestores de paquetes, programas de
configuración, entornos de escritorios, gestores de ventanas y
aplicaciones gráficas de usuario, también están escritos en este
lenguaje.
|
Tanto el núcleo como el resto del sistema GNU/Linux está escrito en lenguaje C |
Otro
sistema operativo en donde el lenguaje C está presente, es en el mas
usado a nivel mundial que es Windows, que como se sabe es creación
de Microsoft, esto se aplica desde la versión Windows 3.1 hasta la
mas reciente que es Windows 10 (Windows 1.0, 2.0 y 3.0 están
escritos en Basic). Específicamente estas versiones de Windows están
escritas tanto en lenguaje C como en C++ y en C#, una parte está
escrita en lenguaje ensamblador (que es la representación del que
entienden las maquinas directamente).
Lenguaje
C presente en los smartphones
Así
como hay sistemas operativos para computadoras (eso incluye de
escritorio y laptops) hechos en C, tanto directa como indirectamente
(como por ejemplo, el caso de macOS), lo mismo ocurre también con
los sistemas operativos para smartphones, tal como veremos a
continuación.
Tenemos
el caso de iOS (abreviatura de iPhone OS), el sistema operativo
creado por Apple para sus smartphones iPhone y para sus iPad y iPod
touch (y para nadie mas), y el cual fue lanzado de forma oficial el 6
de marzo de 2008. iOS está basado en macOS, que como se dijo en
párrafos anteriores, fue desarrollado a partir BSD y este a partir
de UNIX, que a su vez fue escrito en lenguaje C, asimismo, al igual
que su hermano mayor macOS, iOS está escrito en parte en
Objective-C, así como en Swutf, ambos creados a partir del lenguaje
C.
Para
Android, el famoso sistema operativo para smartphones y tablets de
diferentes fabricantes (al contrario de iOS que solo puede ser
instalado en los equipos fabricados por Apple), lanzado el 23 de
septiembre de 2008 y que actualmente es propiedad de Google, también
tiene al lenguaje C en su interior, ya que su núcleo Linux (el mismo
que tiene GNU/Linux) y el cual, como se dijo anteriormente está
hecho en lenguaje C. Una parte del sistema está escrito en ese
mismo lenguaje y en C++ (La mayor parte lo está en Java).
|
Los principales sistemas operativos para smartphones tienen al lenguaje C como parte de su estructura |
Si
bien Microsoft domina el mercado de los sistemas operativos de
escritorio, en el caso de los smartphone y tablets, su participación
es minoritaria. Su sistema operativo para estos dispositivos, Windows
10 Mobile y su antecesor Windows Phone, están escritos en C++ (que
como se sabe es un derivado del lenguaje C), al igual que en su
momento fue un gigante esta área y que ahora su cuota de mercado es
mínima como es Blackberry OS, desarrollado por la empresa
Blackberry. Por lo tanto cuando se use un smartphone o tablet, hay
que recordar la presencia de C en estos.
El
lenguaje C presente en aplicaciones
Al
igual que en los sistemas operativos en los que están instaladas,
muchas aplicaciones están escritas, o por lo menos en parte, en
lenguaje C o en algunos de sus derivados. Tal es el caso de las
suites ofimáticas, las cuales son un conjunto de aplicaciones que
permiten manipular, crear, modificar archivos y documentos. Microsoft
Office, que es la suite ofimática mas usada a nivel mundial, está
escrito C++, mientras su alternativa en software libre que es
LibreOffice está escrito en parte en dicho lenguaje (derivado de C).
Otras
aplicaciones importantes son los navegadores web o browsers, que nos
permiten acceder a Internet. Muchos de estos están hechos en C o en
sus derivados. Los navegadores web mas usados como Google Chrome y
Mozilla Firefox están escritos en parte en C++. En ese mismo
lenguaje están escritos otros navegadores como Opera y Microsoft
Edge y su antecesor Internet Explorer. Safari, el browser creado por
Apple también está escrito en parte en C++, en Objective-C y en
Switf, todos derivados de C.
Otras
aplicaciones hechas en C o en sus derivados son todos los productos
de Adobe (Photoshop, Acrobat, Illustrator, etc) los cuales están
escritos en C y C++, AutoCAD, usado para diseño, originalmente fue
escrito en C, pero las nuevas versiones están hechas en C++, y MySQL
y PostgreSQL, sistemas de gestión de bases de datos muy populares,
los cuales están escrito en en C y C++.
|
El lenguaje C es la base de muchas aplicaciones |
El
lenguaje C presente en Internet
Al
conectarnos a Internet, debemos recordar que el lenguaje C está
presente en dicha conexión. Como se dijo antes, los navegadores web
o browsers están escrito en este lenguaje o en sus derivados, al
igual que el sistema operativo tanto de la computadora, laptop,
tablet o smartphone en el que están instalados como del servidor al
cual accedemos. Asimismo dichos servidores también tendrán
instalados programas con PHP, cin el que se elaboran paginas web
dinámicas con el que llenamos formularios, cuyos datos se guardan en
servidores de base de datos, pata lo que se cuentan sistemas de
gestión de base de datos (SGBD) como MySQL o PostgreSQL, que están
desarrollados en C y en C++.
|
El lenguaje C de una forma u otra está presente en Internet |
Asimismo,
muchas de las páginas web y redes sociales mas populares como
Google, Facebook, Rwitter, Youtube, Wikipedia, WordPress usan C o
sus derivados como C++ y PHP.
Bueno, vamos a dejarlo hasta aquí. Espero que haya sido de su agrado. Si tienen algun comentario, pueden hacerlo y no olviden suscribirse. ¡Hasta la próxima!