sábado, 22 de noviembre de 2014

Código Fuente

Texto escrito en un lenguaje de programación específico y que puede ser leído por un programador. Debe traducirse a lenguaje máquina para que pueda ser ejecutado por la computadora o a bytecode para que pueda ser ejecutado por un intérprete. Este proceso se denomina compilación.
Acceder al código fuente de un programa significa acceder a los algoritmos  desarrollados por sus creadores. Es la única manera de modificar eficaz y eficientemente un programa. 
Liberar un código fuente significa compartir ese texto con cualquier persona que lo desee, esto implica que cualquiera puede analizarlo, copiarlo o modificarlo. Las aplicaciones que liberan sus códigos suelen ser gratuitas bajo licencia GNU. La liberación de un código de un programa implica ciertos riesgos en cuando a la seguridad del mismo, pues su funcionamiento exacto queda expuesto. El código fuente no suele liberarse para las aplicaciones comerciales y no puede obtenerse el código fuente original a través de los programas ya compilados. 

Kernel

En informática, un núcleo o kernel (de la raíz germánica Kern, núcleo, hueso) es un software que constituye una parte fundamental del sistema operativo, y se define como la parte que se ejecuta en modo privilegiado (conocido también como modo núcleo).Es el principal responsable de facilitar a los distintos programas acceso seguro al hardware de la computadora o en forma básica, es el encargado de gestionar recursos, a través de servicios de llamada al sistema. Como hay muchos programas y el acceso al hardware es limitado, también se encarga de decidir qué programa podrá hacer uso de un dispositivo de hardware y durante cuánto tiempo, lo que se conoce como multiplexado. Acceder al hardware directamente puede ser realmente complejo, por lo que los núcleos suelen implementar una serie de abstracciones del hardware. Esto permite esconder la complejidad, y proporciona una interfaz limpia y uniforme al hardware subyacente, lo que facilita su uso al programador.
En algunos sistemas operativos, no existe un núcleo como tal (algo común en sistemas empotrados), debido a que en ciertas arquitecturas no hay distintos modos de ejecución.

Lenguaje de Programacion

es un lenguaje diseñado para describir el conjunto de acciones consecutivas que un equipo debe ejecutar. Por lo tanto, un lenguaje de programación es un modo práctico para que los seres humanos puedan dar instrucciones a un equipo.


Lenguajes de programación imperativos y funcionales

Los lenguajes de programación generalmente se dividen en dos grupos principales en base al procesamiento de sus comandos:
  • lenguajes imperativos;
  • lenguajes funcionales.

Lenguaje de programación imperativo

Un lenguaje imperativo programa mediante una serie de comandos, agrupados en bloques y compuestos de órdenes condicionales que permiten al programa retornar a un bloque de comandos si se cumple la condición. Estos fueron los primeros lenguajes de programación en uso y aún hoy muchos lenguajes modernos usan este principio.
No obstante, los lenguajes imperativos estructurados carecen de flexibilidad debido a la secuencialidad de las instrucciones.

Lenguaje de programación funcional


Un lenguaje de programación funcional(a menudo llamado lenguaje procedimental) es un lenguaje que crea programas mediante funciones, devuelve un nuevo estado de resultado y recibe como entrada el resultado de otras funciones. Cuando una función se invoca a sí misma, hablamos de recursividad.

Interpretación y compilación

Los lenguajes de programación pueden, en líneas generales, dividirse en dos categorías:
  • lenguajes interpretados
  • lenguajes compilados

Lenguaje interpretado

Un lenguaje de programación es, por definición, diferente al lenguaje máquina. Por lo tanto, debe traducirse para que el procesador pueda comprenderlo. Un programa escrito en un lenguaje interpretado requiere de un programa auxiliar (el intérprete), que traduce los comandos de los programas según sea necesario.

Lenguaje compilado

Un programa escrito en un lenguaje "compilado" se traduce a través de un programa anexo llamado compilador que, a su vez, crea un nuevo archivo independiente que no necesita ningún otro programa para ejecutarse a sí mismo. Este archivo se llama ejecutable.
Un programa escrito en un lenguaje compilado posee la ventaja de no necesitar un programa anexo para ser ejecutado una vez que ha sido compilado. Además, como sólo es necesaria una traducción, la ejecución se vuelve más rápida. 
Sin embargo, no es tan flexible como un programa escrito en lenguaje interpretado, ya que cada modificación del archivo fuente (el archivo comprensible para los seres humanos: el archivo a compilar) requiere de la compilación del programa para aplicar los cambios.
Por otra parte, un programa compilado tiene la ventaja de garantizar la seguridad del código fuente. En efecto, el lenguaje interpretado, al ser directamente un lenguaje legible, hace que cualquier persona pueda conocer los secretos de fabricación de un programa y, de ese modo, copiar su código o incluso modificarlo. Por lo tanto, existe el riesgo de que los derechos de autor no sean respetados. Por otro lado, ciertas aplicaciones aseguradas necesitan confidencialidad de código para evitar las copias ilegales (transacciones bancarias, pagos en línea, comunicaciones seguras...).

Lenguajes intermediarios

Algunos lenguajes pertenecen a ambas categorías dado que el programa escrito en estos lenguajes puede, en ciertos casos, sufrir una fase de compilación intermediaria, en un archivo escrito en un lenguaje ininteligible (por lo tanto diferente al archivo fuente ) y no ejecutable (requeriría un interprete). Los applets Java, pequeños programas que a menudo se cargan en páginas web, son archivos compilados que sólo pueden ejecutarse dentro de un navegador web (son archivos con la extensión .class).

Algunos ejemplos de lenguajes ampliamente usados

LenguajePrincipal área de aplicaciónCompilado/interpretado
ADATiempo realLenguaje compilado
BASICProgramación para fines educativosLenguaje interpretado
CProgramación de sistemaLenguaje compilado
C++Programación de sistema orientado a objetoLenguaje compilado
CobolAdministraciónLenguaje compilado
FortranCálculoLenguaje compilado
JavaProgramación orientada a InternetLenguaje intermediario
MATLABCálculos matemáticosLenguaje interpretado
Cálculos matemáticosCálculos matemáticosLenguaje interpretado
LISPInteligencia artificialLenguaje intermediario
PascalEducaciónLenguaje compilado
PHPDesarrollo de sitios web dinámicosLenguaje interpretado
Inteligencia artificialInteligencia artificialLenguaje interpretado
PerlProcesamiento de cadenas de caracteresLenguaje interpretado

Sistemas Operaticos mas utilizados


Linux
Es un sistema operativo, compatible Unix, es uno de los terminos empleados para referirse a la combinación del núcleo o Kernel / libre con el sistema GNU.
Su desarrollo es uno de los ejemplos más prominentes de software libre;todo su código fuente puede ser utilizado, modificado y redistribuido libremente por cualquiera bajo los terminos de la GPL (Licencia Publica General de GNU), y otar serie de licencias libres.
Su objetivo consiste en ofrecer ediciones que cumplan con las necesidades de un determinado grupo de ususarios.


Unix
El sistema operativo Unix se inicio como un proyecto de investigación y se ha comvertido en un importante producto ampliamente utilizado en el mundo de los negocios, en el acádemico y en el gubernamental.
Se trata de un sistema operativo potente, flexible y versatil, que puede ser instalado en cualquier tipo de plataforma, incluyendo los oredenadores personales monousuarios.
Unix es un sistema multiusuario, multitarea y además proporciona un buen entorno para el trabajo en red.
El sistema Unix es mucho más fácil de portar a nuevas máquinas que otros sitemas operativos. Esta portabilidad es consecuencia directa de estar escrito completamente en el lenguaje de alto nivel, el lenguaje C. La portabilidad de un alto rango de arquitecturas hace posible mover las aplicaciones de un sistema a otro.
 
OS / 2
Es un sistema operativo ideal para la automatización de oficinas, proporcionar manejadores gráficos independientes de los dispositivos, lograr que las aplicaciones tuvieran acceso directo a perifericos con gran ancho de banda, ofrece capacidad multitarea.
Se desarrollo inicialmente de manera conjunta entre Microsoft e IBM, pero posteriormente IBM se ocupo en solitario de OS /2.
Modelo de desarrollo.- Software no libre
Núcleo.- OS / 2
Tipo de núcleo.- Hibrido
Licencia.- Software no libre.


Sistemas Operativos

  • ¿Que es un sistema Operativo (SO)?
  • Es el software básico de una computadora que provee una interfaz entre el resto de programas del ordenador, los dispositivos hardware y el usuario.
  • Las funciones básicas del Sistema Operativo son administrar los recursos de la máquina, coordinar el hardware y organizar archivos y directorios en dispositivos de almacenamiento.
  • Los Sistemas Operativos más utilizados son Dos, Windows, Linux y Mac. Algunos SO ya vienen con un navegador integrado, como Windows que trae el navegador Internet Explorer.



Clasificación de los Sistemas Operativos

  • Los sistemas operativos pueden ser clasificados de la siguiente forma:
    • Multiusuario: Permite que dos o más usuarios utilicen sus programas al mismo tiempo. Algunos sistemas operativos permiten a centenares o millares de usuarios al mismo tiempo.
    • Multiprocesador: soporta el abrir un mismo programa en más de una CPU.
    • Multitarea: Permite que varios programas se ejecuten al mismo tiempo.
    • Multitramo: Permite que diversas partes de un solo programa funcionen al mismo tiempo.
    • Tiempo Real: Responde a las entradas inmediatamente. Los sistemas operativos como DOS y UNIX, no funcionan en tiempo real.

El sistema binario

Llamado también sistema diádico en ciencias de la computación, es un sistema de numeración en el que los números se representan utilizando solamente las cifras cero y uno (0 y 1). Es uno de los que se utiliza en las computadoras, debido a que trabajan internamente con dos niveles de voltaje, por lo cual su sistema de numeración natural es el sistema binario (encendido 1, apagado 0).

Decimal a binario

Se divide el número del sistema decimal entre 2, cuyo resultado entero se vuelve a dividir entre 2, y así sucesivamente hasta que el dividendo sea menor que el divisor, 2. Es decir, cuando el número a dividir sea 1 finaliza la división.
A continuación se ordenan los restos empezando desde el último al primero, simplemente se colocan en orden inverso a como aparecen en la división, se les da la vuelta. Éste será el número binario que buscamos.
Ejemplo
Transformar el número decimal 131 en binario. El método es muy simple:
131 dividido entre 2 da 65 y el residuo es igual a 1
 65 dividido entre 2 da 32 y el residuo es igual a 1
 32 dividido entre 2 da 16 y el residuo es igual a 0
 16 dividido entre 2 da 8  y el residuo es igual a 0                   
  8 dividido entre 2 da 4  y el residuo es igual a 0
  4 dividido entre 2 da 2  y el residuo es igual a 0
  2 dividido entre 2 da 1  y el residuo es igual a 0
  1 dividido entre 2 da 0  y el residuo es igual a 1
             -> Ordenamos los residuos, del último al primero: 10
000011

suma y resta binaria

Suma.

0 + 0 = 0
0 + 1 = 1
1 + 0 = 1

Pero la suma de 1+1, que sabemos que es 2 en el sistema decimal, debe escribirse en binario con dos cifras (10) y, por tanto 1+1 es 0 y se arrastra una unidad, que se suma a la posición siguiente a la izquierda
Ejemplos:

  1101       110101         1011101         100111
+1101   +   10110      + 1110011      +     1011
______     _______      ________       _______
11010      1001011       11010000         110010

Resta.

0 – 0 = 0
1 – 0 = 1
1 – 1 = 0

La resta 0 - 1 se resuelve, igual que en el sistema decimal, tomando una unidad prestada de la posición siguiente: 10 - 1, es decir, 210 – 110 = 1.  Esa unidad prestada debe devolverse, sumándola, a la posición siguiente. 

Ejemplos:

10101      11001          1011000           1011101
- 1110   - 10011         -  110001        -   110010
______   ______          _______          ________
 00111     00110           0100111          0101011