有了可嵌入的Lua和Python,基础语言还有存在的空间吗?

我开始学习编程是在 ZX81 上用 Basic,之后学习了 BASICAGW-BASICQBasic。后来我学了 C 语言(噢,Turbo C 3.1,我几乎不知道你......)

当我开始学习微控制器时,我又回到了 Parallax 公司的 BASIC Stamp。然而,BASIC 很棒,因为它很容易理解,而且很难出错。最终我学会了汇编语言和 C 语言,因为我需要更多的能力和资源,但我知道,如果门槛太高,很多人就不会去学习微控制器编程了。

我一直想自己做一个芯片上的 BASIC 解释器,但我想知道,在 Lua 和 Python 容易嵌入,并且和 BASIC 一样好学的情况下,是否还需要 BASIC。

  • BASIC 相对于其他编程语言的优点是什么?
  • 为什么 BASIC 还存在?
  • 如果我决定做一个通用的微控制器板,带有解释器,是否有必要制作 BASIC 版本?

很多其他编程语言被认为已经死亡,但 BASIC 仍然挂着。

原文链接 https://stackoverflow.com/questions/244138

点赞
stackoverflow用户1386292
stackoverflow用户1386292

我曾经在 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 的东西,你将得到一种清洁、简单、易于使用和快速的语言。你不需要解决任何语言设计问题,最好的是人们已经知道你的语言了。

2008-10-28 17:58:50
stackoverflow用户15459
stackoverflow用户15459

很好的问题...

基本上(sic!),我没有答案。我只能说Lua很容易学,可能和BASIC一样容易(BASIC也是我的第一种语言之一,我在许多8位电脑上使用方言…),但更加强大(允许OO或函数式风格甚至混合使用),同时也更加严格(没有goto…)。

我不十分了解Python,但据我所知,它与Lua一样易学、强大和严格。

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

此外,两者都有精心设计的VM,高效(大多数情况下)且没有bug。如果您要自己制作解释器,则应该使用现有的VM并从BASIC源代码生成字节码,或者自己制作。当然,这很有趣,但需要耗费大量时间,并容易出现错误。

所以,我只能让BASIC退休... :-P

PS.:为什么它还在?也许与微软有关...(VB、VBA、VBScript...)

还有许多方言(RealBasic、DarkBasic等),有着不同的受众。

2008-10-28 17:59:19
stackoverflow用户10116
stackoverflow用户10116

冒着像坐在摇椅上的两个老头的风险,让我抱怨地说:“现在的孩子不懂得欣赏BASIC”,然后矛盾地说“他们不知道他们有多好”。

BASIC最大的优点一直都是它的易懂性。人们可以很容易地理解它。这一点长期被学术研究人员和语言开发人员忽略了。

当你谈论想要实现BASIC时,我想你肯定不是指带行号的BASIC,而是结构化的BASIC。问题在于,一旦你开始转向结构化编程——函数、 “我为什么不能直接跳转到那个位置?”—— 就很难明确BASIC和Python有什么优势。

此外,BASIC之所以“易于正确理解”,其中一个原因是在那个时代,库不像今天那样重要。库暗示结构化,如果不是面向对象编程,所以你又处于这样一个情况:更现代的动态脚本语言更适合今天人们的现实。

如果真正的问题是“我想实现一个解释器,所以它就变成了投资回报的问题”,那就成了一个语法实际上很容易实现的问题。除非你真的回到了行号和非常有限的语法,否则我认为BASIC在这方面实际上没有太多优势。

简而言之,我认为你不应该在BASIC解释器上投入努力。

2008-10-28 18:02:35
stackoverflow用户10661
stackoverflow用户10661

[这可能听起来比实际情况更负面。我并不是说 Basic 是所有邪恶的根源,其他人已经这样说过了。我是说这是一个我们可以放弃的遗产。]

“因为它很容易理解,又很难犯错误” 这当然是可争议的。我有一些关于完全不透明的 Basic 的不好经历。职业性质的东西——商业产品——完全糟糕的代码。不得不放弃并且拒绝工作。

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

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

“其他许多语言被视为已死亡…” 是的。 Basic 与 COBOL、PL/I 和 RPG 并列作为遗留代码,有时比价值更高的成本。但由于大型 IT 的“不要修补没有损坏的东西”的政策,它们就在那里,占用资源,而这些资源本来可以轻松地替换成更小、更简单、更便宜的维护方案。除了它没有“失败”——它只是非常昂贵而已。

30 多年的 COBOL 是一个可怕的重新工作情况。从 2016 年开始,我们将看看 30 多年的 MS Basic,我们根本无法弄清楚,不想没有它生活,也无法决定如何替换它。

“但 Basic 仍然存活” 一些人似乎喜欢 Basic,而另一些人则视它为又一个设计不良的语言;它的优势在于早期进入市场,并由巨大的厂商(最初是 IBM)支持。糟糕的设计、早期进入市场只留下了我们将在几十年内苦苦挣扎的遗产。

我仍然有我的 1965 年版 Dartmouth Basic 手册。我并不怀念过去的好日子。

2008-10-28 18:24:02
stackoverflow用户17867
stackoverflow用户17867

好吧,这些人似乎认为在移动领域,基本语言不仅还有市场,而且他们还能从中获利:

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

2008-10-28 21:27:54
stackoverflow用户15401
stackoverflow用户15401

作为一种编程语言,BASIC 的主要优点在于可以制作非常小的 BASIC 解释器,只有几 KB。在 DG Nova 等计算机时代,这是一种胜利,因为你可以使用 Business BASIC 等系统在 RAM 为 64K 或更少的机器上构建多用户应用程序。

BASIC(尤其是 VB)是一种传统系统,具有大量现有的代码库。可以说 VB 实际上是一种语言(一些人会说它只是 COM 的一层薄包装),其具有类似 BASIC 的语法。现在,我认为没有太多保留这种语言的理由,除了人们熟悉它并保持现有的代码库。我肯定不会倡导在其中进行新开发(请注意,VB.Net 实际上并不是 BASIC,但具有类似 VB 的语法。类型系统不像 VB 那样存在故障)。

计算机世界中缺少的是一种易于学习和玩耍,并在主流应用程序开发中有一定影响力的“相关”语言。我在 8 位机器的年代长大,入门编程非常容易。这些机器的架构非常简单,你可以很容易地学习编程并编写几乎相关的应用程序。

现代架构要复杂得多,学习曲线也更陡峭。你可以看到人们声称孩子们无法像在BASIC和8位计算机时代那样容易学习编程,我认为这个观点有一定道理。这留下了一个问题,使编程更加困难。玩具语言在这里并没有太大用处-为了使计算机编程具有吸引力,必须能够期望使用所学习的语言构建相关的东西。

这导致的问题是一种易于孩子们学习,但仍允许他们编写实际需要的程序(甚至游戏)的语言。它也必须被广泛认为是相关的。

我可以想到的最接近这一点的语言是 Python。这不是这种类型语言的唯一例子,但它是具有最多相关个人保持的语言(在我见过的 30 种语言中),对感知的相关性来说是必要的。它也是我体验过的最容易学习的语言之一。

2008-10-29 11:04:48
stackoverflow用户88888888
stackoverflow用户88888888

为什么不尝试一下 Jumentum,并看看它对你有什么作用呢?

http://jumentum.sourceforge.net/

它是一个针对微控制器的开源 BASIC 语言。

另外,elua 项目也是一个针对微控制器的 Lua 语言。

http://elua.berlios.de/

2008-11-08 23:33:44
stackoverflow用户13675
stackoverflow用户13675

BASIC 的持续存在

在 STAMP 实现中,BASIC 持续存在,因为它比大多数其他非常易学的编程语言更低级。对于大多数嵌入式 BASIC 实现,BASIC 指令直接映射到单个或一组机器指令,几乎没有额外的开销。在像 Lua 或 Python 这样的“高级”语言中编写的相同程序将在相同的微控制器上运行得更慢。

注:像 PBASIC 这样的 BASIC 变种与 Visual BASIC 等命名相似的语言几乎没有什么共同之处。它们已经以非常不同的方式发散了。

2008-11-25 04:38:06
stackoverflow用户42404
stackoverflow用户42404

我也曾经从 ZX81 开始。但正如 Tony Hoare 所说的那样,用 BASIC 编程就像尝试使用罗马数字进行长除法。

很多其他编程语言都已被认为已死亡,但 BASIC 仍在坚持。

可悲的是是的。我认为是比尔・盖茨的错... BASIC 已经被搬上救护车,牧师正在为其做丧事,但微软却像天花一样把它带回来了。

2008-12-20 22:03:43