Código Fuente

De Emulation Wiki
Ir a la navegación Ir a la búsqueda

El código fuente es una colección de archivos de texto que contiene instrucciones que una computadora ejecuta tal cual (interpretación) o se traduce de antemano en un archivo ejecutable (compilación/ensamblaje). El código fuente se escribe utilizando un lenguaje informático legible para que pueda ser traducido por un compilador o un intérprete. También es posible descompilar un archivo ejecutable, aunque los descompiladores no son tan comunes.

El lenguaje utilizado cambia la forma en que se lee el código fuente, y al igual que la emulación, también tiene sus propios tipos de alto y bajo nivel. Si un programa se escribiera en un lenguaje ensamblador (que a menudo implica aprovechar los atributos específicos del sistema), un ensamblador escribiría el código de la máquina "palabra por palabra", reflejando cómo la máquina toma las instrucciones. Si un programa se escribiera en un lenguaje de bajo nivel, un compilador leería el código y traduciría el equivalente en código de máquina. Si un programa se escribiera en un lenguaje de alto nivel, a menudo funcionaría sin necesidad de un compilador. Algunos compiladores e intérpretes también realizan una comprobación de errores para asegurarse de que el código del programador esté bien escrito o en un formato correcto. Muchos lenguajes también verifican que el código no cause errores de forma inherente, como Rust.

El software puede ser portado a otros tipos de ordenadores, pero, sin el código fuente, a menudo es prohibitivamente difícil de hacer. Otras formas de portar el software incluyen la traducción binaria y la emulación de plataforma.

Niveles de lenguaje

El software puede programarse en muchos lenguajes diferentes (incluso múltiples en un programa), y al igual que la emulación de alto y bajo nivel, tienen diferentes niveles de abstracción. Aquí están los diferentes, de menor a mayor.

Ensamblador

El ensamblador es la representación más cercana del código de máquina sin ser código de máquina. Básicamente, no hay abstracciones de la arquitectura, lo que significa que todo está cerca de lo que la máquina procesa. Esto solía ser ideal para plataformas en un momento en que los compiladores no estaban lo suficientemente optimizados para dar un rendimiento equivalente al ensamblaje, y como resultado, los juegos de consola más tempranos se programaban en ensamblador con mayor frecuencia que los lenguajes de nivel superior. El ensamblador es muy común en la recopilación dinámica ya que permite a los desarrolladores optimizar el código más cerca de una arquitectura que incluso un lenguaje de bajo nivel como C o C++.

Bajo

Un lenguaje de bajo nivel permite a los programadores acercarse al sistema en el que trabajan, aprovechando las peculiaridades de la arquitectura o las plataformas específicas sin tener que aprender la arquitectura como el ensamblador. Los lenguajes de bajo nivel tienen la ventaja de que son más fáciles de migrar a otras plataformas por su naturaleza más abstracta que el hardware.

Los ejemplos de lenguajes de bajo nivel incluyen (pero no están limitados a) C y C++.

Medio

Los lenguajes de nivel medio tienen atributos de paradigmas de nivel bajo y alto como Rust (que está diseñado para ser eficaz y enfocado en el sistema, pero también para la memoria). Algunos lenguajes de alto nivel también pueden ser más bajos que otros.

Alto

Los lenguajes de alto nivel eliminan la mayoría de las peculiaridades del sistema en favor de las instrucciones destinadas a funcionar en cualquier plataforma. Esto fue pionero en Java, cuyo objetivo era que los desarrolladores "escribieran una vez y se ejecutaran en cualquier lugar".

En los lenguajes de alto nivel, muchas de las mismas instrucciones se pueden ejecutar en diferentes arquitecturas y plataformas. Pueden tener un compilador, un caché de compilador, un recompilador dinámico, y/o un intérprete.

Esotérico

Los lenguajes esotéricos se construyen alrededor de una idea específica o una broma, como parte de un desafío. Estos lenguajes están destinados a ser cómicos, confusos y/o provocan la reflexión.

Un ejemplo incluye Brainfuck, un lenguaje de programación completo de Turing con solo ocho comandos de un carácter (a diferencia de los miles de lenguajes y arquitecturas estándar) y un puntero de instrucción. Otro es Shakespeare, un lenguaje de programación diseñado para parecerse a una obra de Shakespeare. También está Rockstar, un lenguaje diseñado en torno a "las convenciones líricas de las baladas de hard rock y power de la década de 1980", destinado a engatusar el uso de "desarrolladores de rockstar" por parte de la industria del software en la contratación.

Control de Versiones

El control de versiones se refiere a la gestión de los datos a medida que cambian. Un sistema de control de versiones es un programa que rastrea cambios en los datos. Su uso más común es permitir que los programadores colaboren en un repositorio de código fuente sin arruinar accidentalmente ningún componente. Existen varios sistemas de control de versiones, pero el más ubicuo en virtud de los vínculos con el kernel de Linux es Git, tanto que se construyen muchos servicios alrededor de Git, como GitHub y GitLab. Otros sistemas incluyen CVS (el primero de su tipo), Subversión y otro desarrollado junto con Git llamado Mercurial.

Licencias Básicas

El software es de propiedad intelectual, pero el código fuente puede estar disponible para los usuarios, sin embargo, el autor lo elige. Una licencia de derechos de autor es un documento legal que le dice a la gente cómo se puede usar el software y qué limitaciones conlleva su uso.

Dominio público
No hay derechos de autor (es decir, sin derechos reservados). Las obras ingresan al dominio público cuando:
  1. fueron liberados antes de la fecha de vencimiento actual de los derechos de autor. Esta es la razón por la cual las pinturas, obras de teatro y libros antiguos son tan comúnmente citados y utilizados en las obras modernas, porque tendrían que negociar los derechos con el autor de otra manera. La mayoría del software no se lanza de esta manera porque aún está cubierto por el término actual de copyright estadounidense.
  2. están dedicados a través de una licencia como Creative Commons Zero o Unlicense. Esta es la única opción para que las obras modernas se publiquen en el dominio público porque, según el Convenio de Berna, los derechos de autor se consideran como opciones de exclusión voluntaria, no de suscripción voluntaria. Si no se puede realizar una dedicación de dominio público (probablemente porque la jurisdicción no reconoce el dominio público), entonces la licencia otorga a los usuarios las libertades equivalentes.
Código abierto
El programa se lanza bajo una licencia de derechos de autor que permite cuatro libertades: que se puede ejecutar en cualquier momento, estudiar y modificar para los propios fines del usuario, distribuirlo a cualquier persona y mejorar para todos los demás. Esto evita la mayoría de los problemas encontrados con las obras de dominio público. Para cualquier otra cosa con derechos de autor, a menudo se aplica el término "contenido abierto".

Vale la pena señalar que el código abierto no reemplaza los derechos de autor. Y de la misma manera, la licencia no se puede eliminar después de que el trabajo se haya publicado bajo esta. Para ver las diversas licencias de código abierto disponibles, visite choosealicense.com. Ver también el apéndice en el mismo sitio web.

Fuente disponible
El programa se lanza bajo una licencia de derechos de autor más restrictiva que una licencia de código abierto, pero el código fuente todavía está disponible públicamente. El ejemplo más grande es Snes9x , que se publica bajo una licencia no comercial. Esta licencia hace que no sea de código abierto, ya que restringe el uso comercial de los usuarios.
Código Cerrado/Propietario
El código fuente del programa no está disponible. A menudo, porque el ecosistema detrás de la plataforma está cerrado, a veces por naturaleza (como Windows y Android) o, a veces, por la fuerza (como todas las consolas modernas).
Freeware
El código fuente no está disponible pero el programa sigue siendo gratuito.
Shareware/Trialware
Una versión demo limitada del programa es gratuita. Esto era común para los juegos de DOS.

Los proyectos de emulación más exitosos a menudo son de código abierto (aunque definitivamente encontrará excepciones).

Temas relacionados