miércoles, 5 de junio de 2019

¿Quien no se ha hecho estas preguntas? Hablando de matemáticas

Saludos lectores, en esta ocasión vengo a aclararles una inquietud que muchos tienen o la han tenido alguna vez. ¿Que cual es esa? Ya se las digo.

Es muy seguro que se hayan preguntado para que me sirven las matemáticas o que voy a hacer con las matemáticas.

para que sirven las matematicas
Una pregunta muy común
Pues bien, aquí les voy a dar la respuesta.

Deben saber que las matemáticas están en todo, sí, en todo, y si no me creen piensen en sus casas o apartamentos. Para construirlos primero tuvieron que hacerse una serie de cálculos, por lo que las paredes y el techo de donde viven son la realización de dichos cálculos.

las matematicas estan en nuestras casas
Las matemáticas están en nuestras casas
Muchos de ustedes están viendo esta publicación en un teléfono celular o en una tablet. Pues bien, eso que hoy parece normal y cotidiano era impensable hace 25 o 20 años y para que esto fuera posible se recurrió a las matemáticas para el análisis y diseño de la forma en que se hacen las comunicaciones que hacen que puedan ver esto en sus aparatos móviles.

matematicas en los avances del mundo
Las matemáticas ha estado presente en los avances del mundo
Las matemáticas también están presente en muchos, por no decir todos, de los avances científicos y tecnológicos que hacen nuestra vida mas fácil y cómoda, como son la radio, la televisión, los satélites, las computadoras, carros, aviones, y mucho mas.

matematicas y civilizacion
Las matemáticas y la civilización
Luego de haber leído esto, empezaras a ver a las matemáticas de otra forma, y si eres estudiante ten en cuenta que:

las matematicas es la base de todo
Las matemáticas es la base de todo
Bueno es todo por hoy. Recuerden comentar y segur este blog. Hasta la próxima.



jueves, 16 de mayo de 2019

BASIC: un clasico de la programación

Saludos. Luego de una prolongada ausencia les presento una nueva publicación, la cual trata sobre el lenguaje de programación BASIC. Así que sin mas preámbulos comencemos.

Que es BASIC


BASIC, que es el acrónimo de Beginner's All-purpose Symbolic Instruction Code, que significa código de instrucciones simbólicas de propósito general para principiantes, es un lenguaje de programación de propósito general, es decir, que puede ser usado para varios propósitos, tales como acceso a bases de datos, comunicación entre computadoras y dispositivos, cálculos matemáticos y diseño de imágenes. BASIC también es un lenguaje de alto nivel, es decir, que se aproxima al lenguaje natural de los seres humanos, lo que permite que el programa se pueda escribir y leer de una forma más sencilla.

basic-logo

Cuando fue creado BASIC y el porqué de su origen


BASIC fue creado el 1 de mayo de 1964 por los matemáticos John George Kemeny y Thomas Eugene Kurtz, quienes para ese entonces eran profesores del Dartmouth College, que es una universidad privada ubicada en New Hampshire, Estados Unidos.


creadores basic


La motivación de ambos profesores fue el crear un lenguaje de programación sencillo, que fuese fácil de usar para todo el mundo sin necesidad de tener conocimientos científicos y matemáticos y que siguiera estos principios:
  1. Ser fácil de usar para los principiantes.
  2. Ser un lenguaje de propósito general (no orientado).
  3. Permitir a los expertos añadir características avanzadas, conservando simple el lenguaje para los
    principiantes.
  4. Ser interactivo.
  5. Proveer mensajes de error claros y amigables.
  6. Responder rápido en los programas pequeños.
  7. No requerir un conocimiento del hardware de la computadora.
  8. Proteger al usuario del sistema operativo.
John George Kemeny y Thomas Eugene Kurtz ya venían trabajando en esta idea desde el año 1956. Finalmente, basándose en otros dos lenguajes de programación, el FORTRAN II y el Algol 60 y desarrollado en lenguaje ensamblador y desarrollado en lenguaje ensamblador se ejecuta el primer compilador de BASIC en una computadora perteneciente al Dartmouth College,siendo esta del tipo GE-225 fabricada por General Electric a las 4 de la mañana del día 1 de mayo de 1964.


GE-225

Este sería el primer programa hecho en BASIC en el cual se le indica al computador que muestre el resultado de la suma de 2 y 2.

10 PRINT 2 + 2

Había surgido uno de los lenguajes de programación mas famosos, pero sus creadores no se imaginaban que tenia gran alcance, ya que fue creado para el uso de los estudiantes y del personal docente del Dartmouth College.


Características de BASIC


En sus inicios BASIC era un lenguaje compilado, es decir, que el código fuente debe pasar primero por un compilador para ser llevado a lenguaje de maquina que es el que entiende el computador y así ser ejecutado. Posteriormente fue modificado para que sea un lenguaje interpretado, esto significa que el código fuente del programa se convierte en lenguaje de maquina a medida que se va ejecutando, aunque hay versiones de BASIC que son lenguajes compilados.

BASIC está disponible para casi todas las plataformas y sistemas operativos existentes. Este lenguaje se basa en el vocabulario inglés y en las expresiones matemáticas y utiliza un alfabeto formado por los caracteres alfabéticos: A-Z, cifras 0-9, caracteres especiales como operadores aritméticos y otros.

La primera versión de BASIC tiene los siguientes comandos:
PRINT: Para escribir o mostrar textos y gráficos.
LET: Para declarar variables.
IF y THEN: Condicionales.
FOR y NEXT: Indica la cantidad de veces que las instrucciones se ejecutan dentro de un bucle.
GOTO: Indica al programa que su ejecución sigue en determinada parte del código
END: Finalizar
INPUT: Para leer datos de entrada.

Posteriormente se le han añadido otros comandos como son:
do
loop
while
until
exit
on... goto
gosub
select ... case

Este lenguaje consta de cientos de instrucciones para utilización de gráficos, procesado de textos, uso de variables, archivos, etc. Una instrucción BASIC se compone por dos elementos:

  • Un comando (el verbo, la acción)
  • Un conjunto de argumentos (datos)

Ejemplo: en este sencillo programa

10 PRINT 2 + 2

10 es el número de línea
PRINT es el comando
2+2 son los argumentos o datos

Existen dos tipos de instrucciones en todas las versiones de BASIC:
  • En el primer caso las instrucciones pueden consistir en frases sueltas que dan pie a una respuesta inmediata, en este caso a cada instrucción le sigue una respuesta de parte de la computadora. A este tipo de órdenes inmediatas se las denomina instrucciones directas.
  • El otro tipo de instrucciones forma parte de un programa, siempre van asociadas a un número de orden (o número de línea) que indica el lugar dentro de la secuencia de ordenes que se ejecutaran en el programa. A esto se denomina instrucción indirecta.
En algunas versiones las líneas de código se enumeran de 10 en 10, es decir, la promera línea se enumera cn 10. la segunda con 20 y asi sucesivamente.


Tipos de datos manejados por BASIC
  • Numérico entero: Cualquier valor numérico en el límite de -32768 y 32767.
  • Numérico con coma flotante: Un valor con coma con cierta cantidad de cifras de precisión
  • Lógicos: Puede tomar dos valores Verdadero o Falso.
  • Alfanumérico, string o cadena de caracteres: conjunto de símbolos que pueden representar un texto o cualquier secuencia de símbolos como una fecha etc.

Versiones de BASIC


Si bien BASIC fue diseñado originalmente para ser usado en Dartmouth College, se popularizó con el tiempo, apareciendo diferentes versiones del mismo, entre las cuales se tienen:

Dartmouth BASIC
Es la versión original de este lenguaje. Los primeros programas corrían, desde 1964 hasta 1967, en dos computadores, un GE-235 para ejecutar programas y un GE DN-30 (Datanet-30) para manejar las comunicaciones (hacia y desde los teletipos) y para programar la ejecución de programas en el GE-235.
En la segunda versión de este lenguaje solamente tuvo cambios mínimos, agregando al operador punto y coma a la sentencia PRINT y el subíndice cero a las matrices. Para la tercera versión del lenguaje , la sentencia de INPUT fue introducida junto con las poderosas sentencias MAT para la manipulación de matrices y la sentencia del RESTORE para el uso con READ/DATA. La versión 4 contó con la introducción de la manipulación y variables de texto, también conocidas como variables de string, mientras que la versión 5 contó con un verdadero manejo de archivos. La versión 6 vio la introducción de procedimientos con parámetros, compilables separadamente.

Altair BASIC
Diseñada para ejecutarse en los computadores Altair 8800 que fabricados por la empresa MITS. Esta versión de BASIC y que fue la dio popularidad a este lenguaje fue creada a partir del lenguaje ensamblador en el año 1975 por Bill Gates y Paul Allen, siendo el primer producto de su para entonces nueva empresa Microsoft. Asimismo, Altair BASIC tuvo varias versiones: 4K BASIC, llamada asi poeque usaba 4KB de memoria y que ademas fue la versión original, 8K BASIC, Extended BASIC, Extended ROM BASIC y Disk BASIC. Microsoft posteriormente desarrolló otras versiones de BASIC. De allí surgieron las distintas versiones de BASIC desarrolladas por Microsoft para otras plataformas, las cuales fueron conocidas como Microsoft BASIC.

altair 8800

Tiny BASIC
Creado por el ingeniero Li-Chen Wang en el año 1975, es una versión de este lenguaje de reducido espacio para ser ejecutado en los computadores que comenzaban a ser diseñados en aquel tiempo. Fue programado originalmente en lenguaje ensamblador como otras versiones de BASIC y cabía en tan solo 2 a 3 KB de memoria.

Integer BASIC
Creado en el año 1977 por Steve Wozniak, fundador junto a Steve Jobs de Apple, fue la versión de BASIC para las computadoras Apple I y Apple II. Fue desarrollado en lenguaje ensamblador para el microprocesador MOS 6502 que era el que usaban las computadoras antes nombradas. Mientras que para el Apple I Integer BASIC venía en cassette que se instalaba en el computador, para el Apple II, este se encontraba incluido en la memoria ROM del mismo. Esta versión de BASIC tenía la limitante que solo trabajaba con números enteros, ya que no contaba soporte para números de coma flotante, aunque esto hacia que corriera mas rápido.

Applesoft BASIC
Fue la siguiente versión incluida en los computadores Apple II, siendo desarrollada por Microsoft en el año 1977, que había creado un BASIC para el microprocesador MOS 6502, y que suministrada a Apple previo pago de licencia. Sustituyó a Integer BASIC debido a que este no soportaba números de coma flotante, aunque si tenía el operador matemático “MOD” que permite obtener el residuo de una división, algo que no fue incluido en Applesoft BASIC. Este variante de BASIC. Las primeras versiones no incluían los comandos LET (asignar variables) y REM (para hacer comentarios), pero en siguientes modificaciones fueron incluidos. Applesoft BASIC al principio venia en cassette y en disquettes, pero luego fue incluida en la memoria ROM del Apple II.

IBM BASIC
Creado en 1981 por Microsoft para las nacientes PC de IBM, era un lenguaje interpretado con pocas instrucciones y venia grabada en la memoria ROM del equipo, siendo conocida esta versión como IBM BASICA aunque también salieron versiones en cassette, conocida como IBM BASIC-C y en disquettes, siendo esta conocida como IBM BASIC-D. Cuando aparecieron los computadores compatibles con las PC de IBM, Microsoft desarrolló el GWBASIC, creado originalmente para los equipos de la empresa Compaq, siendo incluido luego en la mayoría de las versiones del sistema operativo MS-DOS, extendiéndose por todos los demás computadores compatibles con la PC.

Quick BASIC
Desarrollado en 1985 por Microsoft para sustituir a GWBASIC y ser instalado tanto en el sistema operativo MS-DOS 5.0 (este incluía una versión reducida de este lenguaje) así como en el Mac OS de las computadoras Mac de Apple. QuickBASIC fue la base de otros lenguajes: QBASIC, también creado por Microsoft y que podía ejecutarse en los sistemas operativos MS-DOS, Windows 95, 98 y Millenium, OS/2, PC-DOS y eComStation, y Turbo BASIC, desarrollado por la empresa Borland para ejecutarse en el sistema operativo MS-DOS y el cual incluye funciones gráficas.

Visual Basic
Desarrollado en 1991 por Microsoft, está basado en Quick Basic. Fue desarrollado con la intención de simplificar la programación utilizando un ambiente de desarrollo completamente gráfico que facilitara la creación de interfaces gráficas. Si bien Visual Basic es un lenguaje es de propósito general, también provee facilidades para el desarrollo de aplicaciones de bases de datos. Visual Basic corre bajo el sistema operativo Windows, aunque también se creó también una versión para MS-DOS. Visual Basic es un lenguaje orientado a eventos, esto significa que la ejecución de los programas van determinados por los sucesos que ocurran en el sistema, definidos por el usuario o que ellos mismos provoquen, como hacer click con el mouse o pulsar una tecla, asi como su aprendizaje es fácil. Visual Basic facilitó la creación de aplicaciones para Windows. La última versión de este lenguaje de programación fue la 6.0, ya que Microsoft decidió descontinuarlo para dar paso a Visual Basic.NET.

Visual Basic.NET
Microsoft le hizo unos cambios a Visual Basic, dando origen a Visual Basic.NET, el cual salió a la luz en el año 2002 con el nombre Visual Basic.NET 7.0, indicando con este número que sería el sucesor de Visual Basic 6,0. Este lenguaje de programación forma parte del entorno Visual Studio.NET, el cual ademas incluye a otros lenguajes de programación como C#. Seis años después, en 2008, Visual Basic dejó de recibir soporte, enfocándose Microsoft en Visual Basic.NET. La diferencia mas notable entre Visual Basic y Visual Basic.NET es que mientras el primero es es un lenguaje orientado a eventos, el segundo es orientado a objetos, asimismo, Visual Basic.NET, ademas de permitir crear aplicaciones de escritorio, también soporte para desarrollo de aplicaciones web. Otro detalle es que Visual Basic.NET no es compatible hacia atrás con Visual Basic, es decir que un programa creado en Visual Basic.NET no correrá en Visual Basic, pero el manejo de las instrucciones es similar a versiones anteriores de este lenguaje.

VBScript
Abreviatura de Visual Basic Script Edition, es un lenguaje de script o de archivo de órdenes o de procesamiento por lotes, el cual permite añadir efectos o interactividades: Fue desarrollado por Microsoft y lanzado en el año 1996, es directamente derivado de Visual Basic y que se se utiliza principalmente para crear aplicaciones para servidores web.

En el 2008 Microsoft lanza Small Basic, enfocada el aprendizaje de la programación. Otras versiones de BASIC fueron Atari BASIC y Commodore BASIC, ambas basadas en el Microsoft BASIC creada para el microprocesador MOS 6502 y que fue la misma que le fue vendida la licencia a Apple. Atari BASIC fue hecha para ser usado en las primeras computadoras de esta empresa y fue desarrollado para que ocupara 8 Kilobytes. Commodore BASIC también era conocida como PET BASIC ya que fue hecha por PET (Persona Electronic Transactor), posteriormente Commodore recurrió a Microsoft para que desarrollara una versión de BASIC para sus computadores Amiga y que fue conocida como Amiga BASIC. La empresa británica Sinclair creó su propia versión de BASIC para sus computadores Spectrum ZX80 la cual se llamaba Sinclair BASIC. Igualmente de la Gran Bretaña es la empresa británica Amstrad, fabricante de las computadoras Amstrad CPC, las cuales tenían su propia versión de BASIC conocida como Locomotive BASIC, desarrollada por la también británica empresa de software Locomotive.

En el mundo del software libre también existe versiones del lenguaje BASIC, entre las cuales tenemos:
  • FreeBASIC: Lenguaje compatible con Quick BASIC y el cual puede trabajar en los sistemas operativos MS-DOS, FreeDOS, Windows y GNU/Linux.
  • Kbasic: Lenguaje compatible con Visual Basic y Visual Basic.NET y corre en los sistemas operativos Windows, Mac OS y GNU/Linux.
  • Gambas: Siglas de Gambas Almost Means Basic. Cuenta con un ambiente similar al de Visual Basic. Solo funciona para sistemas operativos GNU/Linux

BASIC fue el lenguaje de programación en el que se escribieron las primeras versiones del sistema operativo Windows, específicamente Windows 1.0 y Windows 2.0

Bueno esto ha sido solo un breve recuento de lo que es el lenguaje de programación BASIC, aunque se que les servirá de utilidad. No olviden comentar. Hasta la próxima.

lunes, 22 de octubre de 2018

Lenguaje C la base de todo (o casi todo)

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.

El lenguaje C es la base de muchos sistemas operativos y aplicaciones
El lenguaje C es la base de muchos sistemas operativos y aplicaciones

Lenguaje 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
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
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.


Arbol genealógico del lenguaje C
Á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
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:
  1. 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.
  2. Compilación que genera el código objeto a partir del código ya preprocesado.
  3. 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 programacion
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
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
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
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 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 esta presente en Internet
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!