Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
BASIC
BASIC Informacin general Paradigma Apareci en Diseado por Tipo de dato Imperativo 1964 John George Kemeny; Thomas Eugene Kurtz dinmico
En la programacin de computadoras, el BASIC, siglas de Beginner's All-purpose Symbolic Instruction Code[1] (Cdigo simblico de instrucciones de propsito general para principiantes en espaol), es una familia de lenguajes de programacin de alto nivel. El BASIC original, el Dartmouth BASIC, fue diseado en 1964 por John George Kemeny y Thomas Eugene Kurtz en el Dartmouth College en New Hampshire, Estados Unidos, como un medio para facilitar programar computadores a estudiantes (y Captura de pantalla mostrando Atari BASIC, un temprano lenguaje profesores) que no fueran de ciencias. En ese tiempo, BASIC para pequeos computadores casi todo el uso de los computadores requera codificar software hecho a la medida, lo cual era algo bastante restringido a personas con formacin como cientficos y matemticos. BASIC originalmente fue desarrollado como una herramienta de enseanza. El lenguaje y sus variantes llegaron a estar ampliamente disponibles en los microcomputadores a finales de los aos 1970 y en los aos 1980. El BASIC sigue siendo popular hasta el da de hoy en un puado de dialectos altamente modificados, y en nuevos lenguajes, influenciados por BASIC tales como Microsoft Visual Basic o Gambas en GNU/Linux. Por el ao 2006, el 59% de los desarrolladores para la plataforma .NET usaban Visual Basic .NET como su nico lenguaje.[2]
Historia
Antecedentes
A principios de la dcada de 1960, las computadoras eran sumamente caras y se utilizaban nicamente para propsitos especiales, ejecutando "una nica tarea" a la vez. Sin embargo, durante el transcurso de esa dcada, los precios bajaron al punto que incluso algunas pequeas empresas ya podan costearlas. La velocidad de proceso de las mquinas se increment al grado que a menudo quedaban demasiado tiempo ociosas, porque no haba suficientes tareas para ellas. Todo ello fue debido a la rpida evolucin del hardware. Los lenguajes de programacin de aquellos tiempos estaban diseados para propsitos especficos, como las mquinas en las que eran ejecutados; por ejemplo para desarrollar aplicaciones clculo o procesamiento de frmulas se dise el lenguaje FORTRAN, en tanto que para la programacin en administracin o gestin de informacin se desarroll especficamente el COBOL.
BASIC A fin de incrementar el rendimiento y amortizar mejor los costos (por reduccin del tiempo ocioso de la procesador), y siendo que ya la velocidad de las mquinas comenz a permitirlo, se propuso la idea de ejecutar ms de una tarea "simultneamente", fue as que surgi el concepto de sistema de tiempo compartido, que comenz a ganar mucha popularidad. En sistemas de ese tipo, el tiempo de procesamiento del procesador central se divida, y a cada usuario se le otorgaba secuencial y cclicamente una pequea porcin o "cuota" de tiempo de proceso. Las mquinas eran lo suficientemente rpidas como para provocar en los usuarios la ilusin de que disponan de la funcionalidad de la mquina todo el tiempo para ellos ("seudo-simultaneidad" de procesos). Esa distribucin del tiempo de cmputo entre los usuarios redujo considerablemente el costo de la computacin, ya que una sola mquina poda ser compartida por numerosos usuarios.
El lenguaje fue en parte basado en FORTRAN II y parte en Algol 60, con adiciones para hacerlo apropiado en sistemas de tiempo compartido y con elementos que facilitaran la operacin aritmtica de matrices. BASIC fue implementado por primera vez para la mainframe GE-265, mquina que soportaba mltiples terminales. En 1968 Edsger Dijkstra public un carta con una famosa crtica[3] en la que consideraba que los lenguajes de programacin que usaban sentencias GOTO para estructurar un programa eran nocivos para la productividad del programador, y para la calidad del cdigo resultante. En este artculo no se menciona a ningn lenguaje de programacin en particular; nicamente se indica que el uso excesivo de GOTO en lenguajes de alto nivel es algo no recomendable, y proporciona las razones tcnicas por las que esto es as. Pero s se observ, desde sus inicios, una marcada tendencia de los programadores a utilizar excesivamente el GOTO en BASIC, mxime en los noveles; hecho ste que fue decreciendo con la incorporacin al lenguaje de otros recursos, tales como subrutinas parametradas, y posteriormente con la aparicin de tcnicas de programacin estructurada. Contrario a la creencia popular, BASIC inicialmente no era un lenguaje interpretado sino compilado. Casi inmediatamente despus de su lanzamiento, los profesionales de computacin comenzaron a alegar que BASIC era muy lento y simple. Tal argumento, hasta no hace mucho, fue un tema recurrente en la industria de las computadoras.
BASIC Aun as, BASIC se extendi hacia muchas mquinas y plataformas, y se populariz moderadamente en las minicomputadoras como las de la serie DEC PDP y la Data General Nova. En estos casos, el lenguaje era implementado como intrprete, en vez de un compilador, o alternativamente, en ambas formas de funcionamiento.
Crecimiento explosivo
Sin embargo, fue con la introduccin de la Microcomputador Altair 8800 en 1975 que BASIC se extendi ampliamente. La mayora de los lenguajes de programacin eran demasiado grandes para ser albergados por las pequeas memorias de que disponan la mayor parte de las mquinas en esa poca; y con el lento almacenamiento que permita la cinta de papel, y ms tarde la cinta de audiocasete (los discos magnticos an no existan), y la falta de editores de texto adecuados, un lenguaje pequeo como BASIC resultaba una buena opcin. Uno de los primeros en aparecer fue Tiny BASIC, una implementacin simple de BASIC escrita originalmente por el Dr. Li-Chen Wang, y portada ms tarde a la mquina Altair por Dennis Allison, a peticin de Bob Albrecht (quien despus fund Dr. Dobb's Journal (DDJ)). El diseo de Tiny BASIC y el cdigo fuente completo fue publicado en DDJ en 1976.
Captura del microordenador Commodore PET-32 mostrando un programa en el lenguaje de programacin BASIC, bajo el emulador VICE en una distribucin GNU/Linux. La primera lnea, titula (rem) al programa para permitir su almacenamiento, la segunda, solicita una cadena de datos (input) que una vez obtenidos, almacenar en una instruccin que el lenguaje lleva incorporada, llamada variable alfanumrica ($). La tercera lnea, establece una condicin, (if) determina que si la cadena de texto almacenada no es igual (<>) al valor dado, proceda (then) a ejecutar la lnea anterior, volviendo as a solicitar nuevos datos, pero en caso de ser igual, (=) contine ejecutando la siguiente lnea del programa. La cuarta lnea, imprime el mensaje encomillado en pantalla (print), para terminar con la quinta lnea que establece su fin. (end)
En 1975 Microsoft (entonces formado por dos personas: Bill Gates y Paul Allen) lanz el Altair BASIC. Luego comenzaron a aparecer bajo licencia versiones para otras plataformas, y millones de copias y variantes pronto estaran en uso. BASIC se convirti en uno de los lenguajes estndar en el Apple II. Para 1979 Microsoft estaba negociando con varios vendedores de microcomputadores, incluyendo a IBM, para licenciar un intrprete de BASIC para sus computadores. Se incluy una versin en los chips ROM de las PC IBM, para equipos sin discos; y en los que disponan, eventualmente, de unidad de diskette, el BASIC era iniciado automticamente, si es que no se colocaba ningn diskette de arranque de sistema operativo. Las nuevas compaas intentaban seguir los pasos del xito de Altair: IMSAI, North Star, y Apple, creando la revolucin de la computadora casera. BASIC se convirti en una caracterstica estndar para casi todas las computadoras hogareas; la mayora vena con un sistema operativo bsico e intrprete de BASIC, todo alojado en una ROM (algo hecho por primera vez en la Commodore PET en 1977). Pronto habra muchos millones de computadores alrededor del mundo ejecutando BASIC, un nmero mucho ms grande que el de todos los usuarios de otros lenguajes juntos. Muchos programas, especialmente los de la Apple II e IBM PC, dependan de la presencia del intrprete de BASIC de Microsoft y no podan ejecutarse sin ste; por lo que Microsoft us la licencia de copyright en los intrpretes de BASIC para influir en las negociaciones con los vendedores de computadores. El BASIC fue tambin el lenguaje preinstalado en los computadores hogareos europeos de la dcada de los 80 como el ZX Spectrum (Sinclair BASIC), Amstrad CPC, MSX (MSX BASIC), el Commodore 64 y 128 (Basic 2.0, Basic 7.0, Simons' Basic), los Commodore Amiga (AmigaBASIC) o la familia Atari de 8 bits (Atari BASIC) y en los computadores hogareos japoneses NEC PC-8801 y NEC PC-9801 (N88-BASIC), haciendo muchas veces la funcin de intrprete y sistema operativo primitivo, ya que venan implementados ambos en ROM. Texas Instruments incorpor su propia versin en sus microcomputadoras, tal como la TI99/4A, y tambin con una versin
Madurez
En este perodo se crearon versiones de BASIC nuevas y ms poderosas. Microsoft vendi varias versiones de BASIC para MS-DOS/PC-DOS, incluyendo BASICA, GW-BASIC (una versin compatible con BASICA que no necesitaba la ROM de IBM), y Quick BASIC. El fabricante de Turbo Pascal, Borland, public Turbo BASIC 1.0 en 1985 (versiones sucesoras an se venden bajo el nombre de PowerBASIC por otra compaa). Aparecieron varias extensiones de BASIC para computadores caseros, tpicamente con capacidad para grficos, sonido, y comandos DOS, as como facilidades para Programacin estructurada. Hubo lenguajes que usaron la sintaxis de BASIC como base para otros sistemas totalmente diferentes, por ejemplo GRASS. Sin embargo a finales de la dcada de 1980 las computadoras nuevas eran mucho ms complejas, e incluan caractersticas (como la Interfaz grfica de usuario) que hacan a BASIC menos apropiado para programarlas. Al mismo tiempo las computadoras progresaban de ser inters para aficionados a herramientas usadas principalmente para ejecutar aplicaciones escritas por otros, y la programacin en s se fue haciendo menos importante para una creciente mayora de usuarios. BASIC comenz a desvanecerse, aunque numerosas versiones an estaban disponibles. Una de las ms poderosas fue el denominado Locomotive BASIC 2 diseado para el entorno grfico GEM. Esta nueva versin del lenguaje permita crear aplicaciones con interfaces grficas dotadas de ventanas, mens y diferentes tipos de grficos estadsticos. La suerte de BASIC dio un giro nuevamente con la introduccin de Visual Basic de Microsoft. Si bien este lenguaje utiliza prcticamente todas las palabras clave (sentencias, estructuras de control y funciones intrnsecas) y forma de manejo y tipo de datos que versiones BASIC anteriores (DOS); VB es abismalmente ms potente y evolucionado; y se ha convertido en uno de los lenguajes ms utilizados en la plataforma Windows; se estima que entre el 70 y el 80% del total de aplicaciones comerciales son programadas en VB. A partir de 2002, y con la introduccin de la plataforma .NET Framework de Microsoft, Visual Basic comienza a utilizar el paradigma "orientado a objetos", aumentando la potencia del lenguaje y hacindolo multiplataforma. Visual Basic for Applications (VBA) fue aadido a Microsoft Excel 5.0 en 1993 y al resto de la lnea de productos de Microsoft Office en 1997. Windows 98 incluy un intrprete de VBScript. La versin ms reciente de Visual Basic es llamada VB.NET. Por otra parte, tambin existe la variante OpenOffice.org Basic menos poderosa pero similar a VBA de Microsoft.
El Lenguaje
Sintaxis
La sintaxis mnima de BASIC slo necesita los comandos LET, INPUT, PRINT, IF y GOTO. Un intrprete que ejecuta programas con esta sintaxis mnima no necesita una pila. Algunas de las primeras implementaciones eran as de simples. Si se le agrega una pila, se pueden agregar tambin ciclos FOR anidados y el comando GOSUB. Un intrprete de BASIC con estas caractersticas necesita que el cdigo tenga nmeros de lnea. Los nmeros de lnea fueron un aspecto muy distintivo del BASIC clsico. Sin embargo, el uso de nmeros de lnea tiene la desventaja de requerir que el programador estime cuntas lneas ocupar la parte del programa que escribe. Este requerimiento se cumple generalmente incrementando los nmeros de lnea en un intervalo regular, como 10, pero esto lleva a problemas a la hora que el cdigo despus agregado exceda el espacio disponible entre las lneas originales. Para aliviar este problema de los primeros intrpretes de BASIC, los usuarios expertos pronto escribieron sus propios programas utilitarios para renumerar sus programas, despus del ingreso inicial. Ms tarde aparecieron intrpretes de BASIC que incluan un comando especfico RENUMBER, el que permita renumerar rpidamente (y las veces que se quisiera) todo el cdigo nuevamente, con cualquier intervalo entre lneas indicado y a partir de un nmero entero dado; eliminando as el principal problema de la numeracin de lneas obligatoria.
BASIC En los dialectos modernos de BASIC MIUN ya no es necesario incluir nmeros de lnea (aunque son permitidos), y la mayora (o todos) han aadido control de flujo estructurado y los constructores de declaracin de datos similares a los de otros lenguajes, tales como C y Pascal: do loop while until exit on... goto gosub select ... case
Casi todos los dialectos de BASIC incluyen el comando REM (remark), que posteriormente fue sustituido por el smbolo (apstrofo o comilla simple). Es un comando no ejecutable, se utiliza a los fines de incluir lneas y notas aclaratorias en el cdigo fuente, para la mejor comprensin (y documentacin) del programa. Variantes recientes como Visual Basic han introducido algunas caractersticas orientadas a objetos, y hasta herencia en la ltima versin. La administracin de memoria es ms fcil que con muchos otros lenguajes de programacin procedurales por el uso de un Recolector de basura (y a costas de la velocidad de ejecucin).
BASIC
Tipos de Datos
BASIC es reconocido por tener muy buenas funciones para manipular cadenas de caracteres. Los primeros dialectos ya tenan un juego de funciones fundamentales (LEFT$, MID$, RIGHT$) para extraer y/o reemplazar subcadenas fcilmente. Como las cadenas son utilizadas en aplicaciones diarias, esta era una ventaja considerable sobre otros lenguajes al momento de su introduccin. El Dartmouth BASIC original soportaba nicamente datos de tipo numrico y cadenas. No haba un tipo entero. Todas las variables numricas eran de coma flotante. Las cadenas eran de tamao dinmico. Soportaba arreglos de ambos, nmeros y cadenas, en una o dos dimensiones. Cada dialecto moderno de BASIC posee al menos los tipos de datos numrico y cadena. Estos tipos de datos se pueden distinguir usando un posfijo: los identificadores de cadenas terminan con $ (signo pesos, ejemplo la variable NOMBRE$), mientras que los numricos sencillamente no llevan posfijo; a menos que se requiera indicar y forzar explcitamente qu tipo de numrico es, por ejemplo A% es entero, A! es real simple precisin y A# es real doble precisin. En BASIC las variables no necesitan forzosamente ser declaradas antes de usarse, excepto los arreglos de ms de 10 elementos; aunque versiones BASIC relativamente modernas poseen la opcin (considerada buena prctica de programacin) para obligar al programador a declarar toda variable antes de su uso (una directiva como OPTION EXPLICIT). La declaracin de variables en BASIC se hace usando la palabra clave DIM. Muchos dialectos tambin soportan tipos numricos adicionales, como enteros de 16 y 32 bits (simple y long, respectivamente), adems de sus nmeros de coma flotante. Adicionalmente algunos permiten la utilizacin de tipos de datos definidos por el usuario, similar a los "records" de Pascal, o las "structs" de C. Versiones modernas de BASIC (como VBA) soportan una gran variedad de tipos de datos primitivos (o intrnsecos), adems de los definidos por el usuario. La mayora de los dialectos de BASIC soporta arreglos en todos sus tipos de datos; es comn tambin el soporte para arreglos mulidimensionales Ejemplos: DIM DIM DIM DIM MatrizDeEnteros(100,100) AS INTEGER VectorDeEnteros%(30) ListaDeNombres(50) AS STRING ListaDeCiudades$(50)
Dependiendo del dialecto de BASIC y del uso del enunciado OPTION BASE, el primer ndice de los arreglos que se declaren ser 1, por defecto es cero. En los ejemplos anteriores, si no se declara previamente "OPTION BASE 1", el primero es un arreglo en dos dimensiones de enteros 16 bits, con ndices que van desde 0 hasta 100 (matriz de 101 x 101 elementos); en tanto que el segundo es un arreglo de enteros en una sola dimensin, de 0 a 30 (vector de 31 elementos). Observar que las dos formas de declaracin de enteros son equivalentes, explicitndolo o con el uso del posfijo %. Anlogamente para cadenas o string de caracteres, que en este caso adems son de longitud variable (dinmicas, por defecto).
BASIC Las versiones de intrpretes/compiladores ms conocidos son la lnea de productos Quick BASIC y QBASIC, ste ltimo es slo intrprete, ambos son de Microsoft. En la actualidad lo es el moderno Visual BASIC, que Microsoft ha tratado de mantener al menos mnimamente compatible con incluso las primeras versiones de sus BASIC (en realidad es escasamente compatible), si bien existe FreeBASIC que es un compilador libre, compatible en sintaxis con QBASIC/QuickBASIC. Otras versiones comerciales incluyen PowerBASIC de PowerBASIC, PureBasic de Fantaisie Software, as como TrueBASIC de TrueBASIC, que cumple con los ltimos estndares oficiales de BASIC. (True BASIC Inc. fue fundada por los creadores originales de Dartmouth BASIC.) REALbasic es una variante disponible para Mac OS Classic, Mac OS X, Microsoft Windows y GNU/Linux, comercializada por los actuales propietarios de Rapid-Q, otra implementacin inicialmente libre de BASIC actualmente abandonada. Una versin de un dialecto simple de BASIC para la parrot virtual machine, muestra cmo se implementa un intrprete de BASIC en un lenguaje similar al ensamblador. SmallBASIC es un dialecto que ejecuta en muchas plataformas (Win32, DOS, GNU/Linux y PalmOS) y viene bajo la licencia GNU (GPL). Existen muchas implementaciones de BASIC freeware o GNU, como BCX, YaBasic, HBasic, XBasic, Gambas o Just BASIC, entre otras.
BASIC
Referencias
[1] The acronym is tied to the name of an unpublished paper by Thomas Kurtz and is not a backronym, as is sometimes suggested in older versions of The Jargon File (http:/ / catb. org/ ~esr/ jargon/ html/ B/ BASIC. html) [2] Mono brings Visual Basic programs to Linux (http:/ / web. archive. org/ web/ http:/ / www. linux-watch. com/ news/ NS5656359853. html), By Steven J. Vaughan-Nichols, Feb. 19, 2007, Linux-Watch
Bibliografa
KEMENY, J.G.; T.E. KURTZ (1986) (en Ingls). Structured BASIC programming (http://portal.acm.org/ citation.cfm?id=20411). New York, USA: John Wiley & Sons. ISBN 0-471-81087-8. Bennet, P. Lientz (1976) (en Ingls). A comparative evaluation of versions of BASIC (http://portal.acm.org/ citation.cfm?id=360032.360038&coll=GUIDE&dl=GUIDE&CFID=15996720&CFTOKEN=98220082). 19. New York, USA: ACM. pp.175-181. ISBN 0001-0782. Gottfries, Byron S. (1984) (en Espaol). Teora y problemas de Programacin BASIC. traduccin, Guillermo Caro Murillo, Jess Villamizar Herrera (2a. ed. edicin). Buenos Aires; Bogot: McGraw-Hill. pp.278 p.. ISBN 968-451-396-8. Kemeny, John G.; Thomas E. Kurtz (1984) (en Espaol). Programacin BASIC. Mxico: Cecsa. pp.432 p.. ISBN 968-26-0402-8. Finkel, Leroy; Jerald R. Brown (1986) (en Espaol). Programacin de archivos de datos en BASIC. Mxico; Argentina: Limusa. pp.361 p.. ISBN 968-18-1889-X. (Series Instruccin Programada Limusa)
BASIC Petroutsos, Evangelos (1999) (en Espaol). Visual Basic 6 (1a ed. edicin). Anaya Multimedia. pp.864 p.. ISBN 8441508291; ISBN 978-84-415-0829-3. Dobson, Rick (2002) (en Espaol). Programacin De Microsoft Sql Server 2000 Con Microsoft Visual Basic .net (1a ed. edicin). McGraw-Hill. pp.664 p.. ISBN 8448137213. ISBN 978-84-481-3721-2. Halvorson, Michael (2008) (en Espaol). Visual Basic 2008 (1a ed. edicin). Anaya Multimedia. pp.656 p.. ISBN 8441524483. ISBN 978-84-415-2448-4.
Enlaces externos
Tomas Kurtz, co-inventor de BASIC (http://cis-alumni.org/TKurtz.html) A Brief History of Programming Languages (http://web.archive.org/web/http://www.byte.com/art/9509/ sec7/art19.htm) True BASIC - Home Web (http://www.truebasic.com/) Tutorial de QBasic - Universidad de Oviedo (http://www.etsimo.uniovi.es/qbasic/qbasic1.html) Tutorial de QBasic -Monografias.com (http://www.monografias.com/trabajos11/tuto/tuto.shtml) iBASIC - Home Web (http://ibasic.arredemo.org/)
10
Licencia
Creative Commons Attribution-Share Alike 3.0 Unported //creativecommons.org/licenses/by-sa/3.0/