使用可嵌入的Lua和Python,Basic是否还有存在的意义?

7
我最开始使用ZX81上的Basic编程,然后是BASICAGW-BASICQBasic。后来我转向了C语言(啊,Turbo C 3.1,我几乎不认识你了…)
当我开始使用微控制器时,我退回到了Parallax的BASIC Stamp。然而,BASIC非常棒,因为它非常容易理解,而且很难出错。最终我转向汇编和C语言,因为我需要额外的能力(速度、容量、资源等),但如果门槛更高,许多人可能永远不会涉足微控制器编程。
我一直想自己制作一个芯片内置的BASIC解释器,但我想知道现在是否还需要BASIC,因为Lua和Python现在都可以轻松嵌入,并且与BASIC一样易于学习。
  • BASIC相较于其他编程语言有哪些优势(如果有的话)?
  • 为什么BASIC仍然存在?
  • 如果我决定制作一个带解释器的通用微控制器板,是否有理由制作BASIC版本?

许多其他编程语言被认为已经死亡了,但BASIC仍然存在。

9个回答

11

[这可能听起来比实际情况更加负面。我并不是说BASIC是万恶之源,其他人已经这样说了。我是说这是我们可以扬弃的一种遗产。]

“因为它很容易理解,而且很难犯错误” 这当然是有争议的。我曾经有过一些与完全不透明的基础知识相关的坏经历。专业的东西 - 商业产品 - 完全糟糕的代码。必须放弃并拒绝这项工作。

“如果有的话,Basic相对于其他语言有哪些优势?” 实际上没有任何优势。

“为什么它仍然存在?” 有两个原因:(1)微软,(2)所有开始使用VB的IT部门,现在拥有数百万行VB遗留代码。

“许多其他语言被视为死亡语言......” 是的。BASIC与COBOL、PL/I和RPG并列为遗产,有时比价值更高。但由于大型IT的“如果它没有损坏就不要修复”政策,它们就坐在那里,吞噬着资源,这些资源可以轻松地用更小、更简单和更容易维护的东西取代它。除了它没有“失败” - 它只是成本不成比例。

30年的COBOL是一个可怕的情况,需要重新设计。从2016年开始,我们将看到30年的MS Basic,我们无法理解,不想没有它,也无法决定如何替换它。

“但基础语言仍然存在” 有些人喜欢基础语言,而其他人则认为它是又一个设计不良的语言;它的优点在于早期进入市场并获得大型供应商(最初是IBM)的支持。然而,设计不良和早期进入市场只会留下我们将在几十年内一直遭受的遗产。我仍然保留着我的1965版Dartmouth Basic手册,但我并不怀念过去的好日子。

好极了 - 很棒的回答。然而,考虑到IT行业的快速发展,这种顽固保守在该领域内令人不安... - new123456
虽然在BASIC中犯错的难易程度有争议,但几乎任何语言都可以编写可怕的代码。这不一定是语言的问题。有结构化方言可以允许编写可读性强、易于维护的代码。此外,该问题将其与微控制器上的C和汇编语言进行了比较。 - BlackJack

7
作为一种架构,BASIC最大的优点在于可以使BASIC解释器非常小,只需几KB。在DG Nova时代,这是一种胜利,因为您可以使用像Business BASIC这样的系统在具有64K RAM(甚至更少)的计算机上构建多用户应用程序。
BASIC(特别是VB)是一种传统系统,并且具有大量现有的代码库。可以说VB实际上是一种语言(有些人会说是COM的薄包装器),其具有类似BASIC的语法。如今,我认为除了人们熟悉它并维护现有代码库外,几乎没有理由保留该语言。我肯定不会提倡在其中进行新开发(请注意,VB.Net实际上不是BASIC,而只是具有类似VB的语法。类型系统不像VB那样被破坏)。
计算机世界中缺少的是易于学习和玩耍的相关语言,并在主流应用程序开发中具有心智份额。我在8位机的时代长大,编程入门门槛非常低。机器的架构非常简单,您可以很容易地学习编程,并在这些机器上编写更或多或少相关的应用程序。
现代架构更加复杂,学习曲线更陡峭。您可以看到人们在谈论孩子们无法像在BASIC和8位计算机时代那样轻松地学习编程,我认为这种观点有一定的道理。留下了一些空洞,使编程变得更加困难。玩具语言在这里并不是很有用-为了使编程具有吸引力,必须能够希望使用正在学习的语言构建一些相关内容。
这导致了一个问题,即一种易于孩子们学习但仍允许他们编写实际想要的程序(甚至游戏)的语言。它还必须被广泛认为是相关的。
我能想到的最接近的东西就是Python。这不是该类型语言的唯一示例,但它是拥有最多心智份额的一种-而且(在我看来)认为相关性对于在这个领域发挥作用是必要的。这也是我经历过的最容易学习的语言之一(我使用了30多种语言)。

2

BASIC在STAMP实现中仍然存在,因为它比大多数其他易学编程语言更低级。对于大多数嵌入式BASIC实现,BASIC指令直接映射到单个或组合的机器指令,开销非常小。相同的程序如果使用“更高级”的语言如Lua或Python编写,则在相同的微控制器上运行速度会慢得多。

附注:像PBASIC这样的BASIC变体与Visual BASIC等具有相似的命名,但它们已经发生了非常不同的发展。


2

1

我也是从ZX81开始编程的。但正如托尼·霍尔所说,使用BASIC编程就像试图使用罗马数字进行长除法。

许多其他语言被认为已经死亡,但基础语言仍然继续存在。

很遗憾,是的。我把这归咎于比尔·盖茨... BASIC曾经在担架上,有一位牧师为它祈祷着最后的仪式,然后微软公司又像天花一样将其带回了人们的视野。


1

好问题...

基本上,我没有答案。我会说Lua非常容易学习,可能和Basic一样容易(这也是我的第一种语言之一,我在很多8位计算机上使用方言...),但更强大(允许面向对象或函数式风格甚至混合它们)并且有点严格(没有goto...)。

我不太了解Python,但从我所读到的来看,它与Lua一样易于使用、强大和严格。

此外,两者都是“标准化”的事实,即没有方言(除了各种版本),不像Basic有许多变体。

此外,两者都有精心制作的虚拟机,高效(大多数情况下)无错。如果您要制作自己的解释器,您应该使用现有的VM,并从Basic源代码生成字节码,或者制作自己的VM。当然很有趣,但耗时且容易出错...

所以,我只会让Basic退休... :-P

附:为什么它还在使用?也许微软对此有些责任...(VB、VBA、VBScript...)
还有很多方言(RealBasic、DarkBasic等),有一定的受众群体。


1

冒着像两个老人在摇椅上的风险,让我不爽地说一句:“现在的孩子们不欣赏BASIC了”,然后自相矛盾地说:“他们不知道自己有多好。”

BASIC最大的优点始终是它的易懂性。这是人们可以理解的东西。这一点长期被学者和语言开发者忽视。

当你谈论想要实现BASIC时,我假设你不是在谈论带行号的BASIC,而是结构化形式。问题在于,一旦你开始进入结构化编程——函数,“为什么我不能只是GOTO到那个位置?”等等——就很难确定BASIC相对于Python等其他语言的优势。

此外,BASIC之所以“如此容易正确”,其中一个原因是在那些日子里,库不像今天那样重要。库意味着结构化甚至面向对象编程,因此你又处于一种更现代的动态脚本语言“适应”人们今天所做的事情的现实情况下。

如果真正的问题是“嗯,我想要实现一个解释器,所以归根结底是回报率的问题”,那么它就变成了一个实际上很容易实现的语法问题。我建议BASIC在这方面并没有太多优势(除非你真的回到行号和非常有限的语法)。

简而言之,我认为你不应该把精力投入到一个BASIC解释器中。


1
我想建议的是,在编写编译器/解释器时,解析实际上并不是一个主要问题。所有困难的部分都在于复杂的语义。Python需要闭包、生成器、猴子补丁等功能 - 非常酷,但在微控制器上正确实现起来非常困难。 - Pramod
很好:如果问题真的是“Python易于实现吗?”那么答案显然是“不,不太容易。” 我认为这个问题是“对于新手来说,类似BASIC的语言是否比类似Python的语言更可取?” - Larry OBrien

1

0

我曾经在QBasic时代使用BASIC编程。QBASIC有子程序、函数、结构(它们曾被称为类型),我想那就是全部了。现在,与Python拥有的所有功能相比,这似乎有限 - 面向对象、lambda、元类、生成器、列表推导等等。但是,我认为这种简单性是BASIC的优点。如果你正在寻找一种简单的可嵌入语言,我敢打赌QBasic会更快、更容易理解。对于大多数嵌入/脚本应用程序来说,过程化语言可能已经足够了。

我认为BASIC仍然存在最重要的原因是Visual Basic。在90年代的很长一段时间里,VB是在Windows上编写GUI、COM和DB代码的唯一方式,而不会陷入C++图灵陷阱之一。[也许Delphi也是一个不错的选择,但不幸的是它从未像VB那样流行]。我认为正是因为所有这些VB和VBA代码仍在使用和维护,BASIC才没有死亡。

话虽如此,我认为现在编写BASIC解释器(甚至使用LLVM或类似工具编译器)是有充分的理由的。如果你实现一些类似于QBasic的东西,你将会得到一个干净、简单易用且快速的语言。你不必解决任何语言设计问题,最好的部分是人们已经知道你的语言。

但是在重新发明轮子之前,如果你想要类似于QBasic的东西,可以看看FreeBasic和QB64。 :-) - BlackJack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接