2008-10-28 12 views
6

Empecé a programar en Basic en ZX81, luego BASICA, GW-BASIC y QBasic. Pasé a C (Ah, Turbo C 3.1, casi no sabía que ...)Con Lua y Python incorporable, ¿hay un lugar para Basic?

Cuando comencé a usar microcontroladores retrocedí con el BASIC Stamp de Parallax. Sin embargo, BASIC es/era increíble porque era tan fácil de entender y tan difícil de cometer un error. Pasé a ensamblar y C eventualmente porque necesitaba la potencia adicional (velocidad, capacidad, recursos, etc.), pero sé que si la barra fuera mucho mayor, muchas personas nunca entrarían en la programación de microcontroladores.

Sigo teniendo ganas de hacer mi propio intérprete BASIC en el chip, pero me pregunto si es necesario BASIC ahora que Lua y Python son fáciles de integrar, y tan abordables como BASIC.

  • ¿Cuáles son, si las hay, las ventajas que BASIC tiene con respecto a otros lenguajes?
  • ¿Por qué todavía está presente?
  • Si decido crear un tablero de microcontroladores de propósito general con un intérprete, ¿hay alguna razón para hacer una versión de BASIC?

Muchos otros lenguajes se consideran muertos, pero el BASIC sigue aguantando.

Respuesta

6

Como una arquitectura, la reivindicación principal a La fama de BASIC es que puedes hacer que los intérpretes de BASIC sean muy pequeños, solo unos pocos KB. En los días de una DG Nova esto era una ganancia, ya que se podían usar sistemas como Business BASIC para construir una aplicación multiusuario en una máquina con 64K de RAM (o incluso menos).

BASIC (VB en particular) es un sistema heredado y tiene una gran base de código existente. Podría decirse que VB es realmente un lenguaje (algunos dirían que un envoltorio delgado sobre COM) que tiene una sintaxis similar al BASIC. En estos días, veo pocas razones para mantener el lenguaje aparte de la familiaridad de las personas con él y para mantener la base de códigos existente. Desde luego, no estaría a favor de nuevos desarrollos en el mismo (tenga en cuenta que VB.Net no es muy básico, pero sólo tiene una sintaxis similar a VB. El sistema de tipos no se rompe en la forma en que fue VB.)

Qué es faltante en el mundo de la informática es un idioma relevante que es fácil de aprender y jugar y que tiene la mente compartida en el desarrollo de aplicaciones convencionales. Crecí en la época de las máquinas de 8 bits, y la barrera de entrada a la programación en esos sistemas era muy baja. La arquitectura de las máquinas era muy simple, y se podía aprender a programar y escribir aplicaciones más o menos relevantes en estas máquinas con mucha facilidad.

Las arquitecturas modernas son mucho más complejas y tienen una joroba más grande que aprender. Puedes ver a gente pontificando sobre cómo los niños no pueden aprender a programar tan fácilmente como lo harían en los tiempos de las computadoras BASIC y de 8 bits y creo que ese argumento tiene algún mérito. Hay algo de un agujero que hace que la programación sea un poco más difícil de lograr. Los lenguajes de juguete no son muy útiles aquí: para que la programación sea atractiva, debe ser posible aspirar a construir algo relevante con el idioma que está aprendiendo.

Esto lleva al problema de un lenguaje que es fácil de aprender para los niños pero que les permite escribir programas relevantes (o incluso juegos) que en realidad podrían querer. También debe ser ampliamente percibido como relevante.

Lo más parecido que puedo pensar es Python. No es el único ejemplo de un lenguaje de ese tipo, pero es el que tiene la mayor cantidad de personas que comparten la mente, y (IMO) es necesaria una percepción de relevancia para jugar en este nicho. También es uno de los idiomas más fáciles de aprender que he experimentado (de los 30 o más que he usado a lo largo de los años).

0

Solía ​​programar en BASIC en los días de QBasic. QBASIC tenía subrutinas, funciones, estructuras (solían llamarse tipos), y supongo que eso es todo. Ahora, esto parece limitado en comparación con todas las características que Python tiene - OO, lambdas, metaclases, generadores, listas de comprensión, solo por nombrar algunas de las más importantes. Pero esa simplicidad, creo, es una fortaleza de BASIC. Si estás viendo un lenguaje simple incrustable, apostaría a que QBasic será más rápido y fácil de entender. Y un lenguaje de procedimiento es probablemente más que suficiente para la mayoría de las aplicaciones de tipo de incrustación/scripting.

Diría que la razón más importante por la que BASIC aún se encuentra es Visual Basic. Durante mucho tiempo en los 90, VB era la única forma de escribir GUI, COM y código DB para Windows sin caer en uno de los tarpits de C++ Turing. [Tal vez Delphi fue una buena opción también, pero desafortunadamente nunca llegó a ser tan popular como VB]. Creo que es debido a todo este código VB y VBA que todavía se usa y se mantiene que el BASIC aún no está muerto.

Dicho esto, diría que hay una buena razón para escribir un intérprete BASIC (tal vez incluso un compilador que use LLVM o algo similar) para BASIC hoy. Obtendrá un lenguaje limpio, simple, fácil de usar y rápido si implementa algo que se asemeje a QBasic. No tendrá que resolver problemas de diseño de idiomas y la mejor parte es que las personas ya conocerán su idioma.

1

Buena pregunta ...

Básicamente (sic!), No tengo respuesta. Diría simplemente que Lua es muy fácil de aprender, probablemente tan fácil como Basic (que también fue uno de mis primeros idiomas, usé dialectos en muchas computadoras de 8 bits ...), pero es más poderoso (lo que permite OO o estilos funcionales e incluso mezclarlos) y de alguna manera más estricto (no goto ...).

No conozco bien Python, pero por lo que he leído, es tan fácil, potente y estricto que Lua.

Además, ambos están "estandarizados" de facto, es decir. no hay dialectos (además de las diversas versiones), a diferencia de Basic, que tiene muchas variantes.

También ambos han creado VM cuidadosamente, eficiente, (la mayoría) sin fallas. Si crea su propio intérprete, debe tomar una máquina virtual existente y generar un código de bytes desde la fuente básica, o hacer la suya propia. cosas de diversión segura, pero lento y propenso a errores de tiempo ...

lo tanto, me acaba de dejar básico tiene un buen retiro ... :-P

PS .: ¿Por qué se está colgando en? Quizás Microsoft no es ajeno a eso ... (VB, VBA, VBScript ...)
También hay muchos dialectos alrededor (RealBasic, DarkBasic, etc.), con un poco de audiencia.

1

A riesgo de sonar como dos veteranos en las mecedoras, permítanme decir de mal humor que "Los niños de hoy no aprecian el BASIC" y luego, paradójicamente, dicen "No saben lo bien que lo tienen". "

La mayor fortaleza de BASIC fue siempre es comprensible. Era algo que la gente podía obtener. Eso fue ignorado durante mucho tiempo por académicos y desarrolladores de lenguaje.

Cuando habla de querer implementar BASIC, asumo que no está hablando de BASIC con número de línea, sino de una forma estructurada. El problema con eso es que tan pronto como comienzas a moverte a la programación estructurada - funciones, '¿por qué no puedo acabo de OBTENER ese punto?', Etc. - realmente no está claro qué ventajas, si hubiera, BASIC tener más, por ejemplo, Python.

Además, una de las razones por las que BASIC era "tan fácil de entender" era que en aquellos días las bibliotecas no eran tan importantes como lo son hoy en día. Las bibliotecas implican una programación estructurada, si no orientada a objetos, así que una vez más se encuentra en una situación en la que un lenguaje de scripting dinámico más moderno "se ajusta" mejor a la realidad de lo que la gente hace hoy.

Si la verdadera pregunta es "bueno, quiero implementar un intérprete y todo se reduce a un retorno de la inversión", entonces se convierte en un problema de una gramática que es realmente fácil de implementar. Sugeriría que BASIC en realidad no tiene muchas ventajas en ese sentido tampoco (a menos que realmente haga vuelva a los números de línea y una gramática muy limitada).

En resumen, I no cree que debe invertir su esfuerzo en un intérprete BÁSICO.

+0

Me gustaría sugerir que el análisis no es realmente un problema importante al escribir un compilador/interpretar estos días. Las partes difíciles son todas las semánticas complejas. Python necesitaría cierres, generadores, parches de monos, todo muy bien, pero un dolor real para conseguirlo en un controlador. – Pramod

+0

Lo suficiente: si la pregunta es realmente "¿Es fácil implementar Python?" entonces la respuesta es claramente 'No, no tanto'. Tomé la pregunta para '¿Es preferible un lenguaje BÁSICO a un lenguaje Python para principiantes?' –

10

[Esto puede sonar más negativo de lo que realmente es. No digo que Basic sea la raíz de todo mal, others have said that. Estoy diciendo que es un legado que podemos darnos el lujo de dejar atrás.]

"porque era tan fácil de entender y tan difícil de cometer un error" Eso es ciertamente discutible. He tenido algunas malas experiencias con básicos completamente opacos. Cosas profesionales - productos comerciales - código perfectamente horrible. Tuve que darme por vencido y rechazar el trabajo.

"¿Cuáles son, si las hay, las ventajas que Basic tiene con respecto a otros idiomas?" Ninguno, realmente.

"¿Por qué todavía está aquí?" Dos razones: (1) Microsoft, (2) todos los departamentos de TI que comenzaron a usar VB y ahora tienen millones de líneas de código heredado de VB.

"Muchos otros idiomas se consideran muertos ..." Sí. Basic está junto a COBOL, PL/I y RPG como herencias que a veces tienen más costo que valor. Pero debido a la política de" si no está roto, no lo arregles "de las grandes TI, allí sentarse, absorber recursos que podrían reemplazarlo fácilmente con algo más pequeño, más simple y más barato de mantener. Excepto que no ha "fallado": es simplemente desproporcionadamente caro.

COBOL de 30 años es una situación horrible para retrabajar A partir de 2016 veremos MS Basic de 30 años que simplemente no podemos entender, no queremos vivir sin, y no podemos decidir cómo reemplazarlo.

"but basic simplemente sigue pendiente de " Parece que a algunas personas les encanta Basic. Otros lo ven todavía como un anot su lenguaje mal diseñado; sus ventajas son llegar temprano al mercado y contar con el respaldo de grandes proveedores (IBM, inicialmente). El diseño deficiente y el lanzamiento temprano al mercado solo nos deja con un legado que sufriremos durante décadas.

Todavía tengo mi manual de Dartmouth Basic de 1965-edición. No anhelo los buenos viejos tiempos.

+0

Bravo - buena respuesta. Sin embargo, dada la velocidad de las TI, un conservadurismo obstinado dentro del campo es perturbador ... – new123456

1

Bueno, estas personas parecen pensar que no sólo básica todavía tiene un lugar en el espacio móvil sino que también puede hacer dinero fuera de él:

http://www.nsbasic.com/symbian/

2

BÁSICO persiste, particularmente en la aplicación del sello, porque es más bajo nivel que la mayoría de los otros lenguajes de programación muy fáciles de aprender. Para la mayoría de las implementaciones BASIC incorporadas, las instrucciones BASIC se asignan directamente a instrucciones individuales o grupales de la máquina, con muy poca sobrecarga. Los mismos programas escritos en lenguajes de "nivel superior" como Lua o Python se ejecutarían mucho más lentamente en esos mismos microcontroladores.

PD: Las variantes BASIC como PBASIC tienen muy poco en común con, digamos, Visual BASIC, a pesar de la similitud de nombres. Han divergido de maneras muy diferentes.

1

Empecé en una ZX81 también. Pero como dijo Tony Hoare, la programación en BASIC es como tratar de hacer una división larga usando números romanos.

Un montón de otros idiomas se considera muerto, pero básico sólo mantiene flote.

Lamentablemente sí. Culpo a Bill Gates por esto ... BASIC estaba en una camilla con un sacerdote diciéndole los últimos ritos, y luego MS lo trajo de regreso como Smallpox.