7

我开始在ZX81上使用 Basic 编程,然后是BASICAGW-BASICQBasic。我转向 C(啊,Turbo C 3.1,我几乎不知道你......)

当我开始使用微控制器时,我使用Parallax的BASIC Stamp退步了。然而,BASIC 非常棒,因为它很容易理解,而且很难出错。我最终转向汇编和 C 语言,因为我需要额外的能力(速度、容量、资源等),但我知道,如果门槛更高,许多人将永远不会进入微控制器编程。

我一直渴望制作自己的片上 BASIC 解释器,但我想知道现在是否需要 BASIC,因为 Lua 和 Python 易于嵌入,并且与 BASIC 一样平易近人。

  • BASIC 与其他语言相比有哪些优势(如果有的话)?
  • 为什么它还在?
  • 如果我决定制作带有解释器的通用微控制器板,是否有理由制作 BASIC 版本?

很多其他语言都被认为已经死了,但 BASIC 一直在坚持。

4

9 回答 9

11

[这听起来可能比实际情况更消极。我不是说 Basic 是万恶之源,其他人都这么说。我是说这是我们有能力留下的遗产。]

“因为它很容易理解,而且很难犯错误”这当然值得商榷。我在完全不透明的基本方面有过一些不好的经历。专业的东西——商业产品——非常糟糕的代码。不得不放弃并拒绝这项工作。

“如果有的话,Basic 相对于其他语言有哪些优势?” 没有,真的。

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

“很多其他语言都被认为已经死了......” 是的 。Basic 与 COBOL、PL/I 和 RPG 一起作为遗产,有时成本高于价值。但是由于大型 IT 的“如果它没有坏就不要修复它”的政策,他们坐在那里,吸收资源,这些资源可以很容易地用更小、更简单、维护成本更低的东西来代替它。除了它没有“失败”——它只是不成比例地昂贵。

30 岁的 COBOL 是一个可怕的情况来返工。从 2016 年开始,我们将关注 30 岁的 MS Basic,我们只是想不通,不想没有,也无法决定如何更换。

“但基本款一直在坚持”似乎有些人喜欢基本款。其他人则将其视为另一种设计不佳的语言。它的优势在于早期上市并得到大型供应商(最初是 IBM)的支持。糟糕的设计、过早的上市只会给我们留下数十年的苦难。

我还有 1965 年版的达特茅斯基础手册。我不渴望过去的美好时光。

于 2008-10-28T18:24:02.937 回答
7

作为一种架构,BASIC 的主要声名是您可以使 BASIC 解释器非常小——只有几 KB。在 DG Nova 时代,这是一场胜利,因为您可以使用 Business BASIC 之类的系统在具有 64K(甚至更少)内存的机器上构建多用户应用程序。

BASIC(尤其是 VB)是一个遗留系统,并拥有大量的现有代码库。可以说,VB 确实是一种具有类似 BASIC 语法的语言(有人会说是对 COM 的薄包装)。这些天来,我认为没有理由在人们熟悉它的情况下保留该语言并维护现有的代码库。我当然不会提倡对其进行新的开发(请注意,VB.Net 并不是真正的 BASIC,而只是具有类似 VB 的语法。类型系统并没有像 VB 那样被破坏。)

计算世界缺少的是一种易于学习和修补的相关语言,并且在主流应用程序开发中占有一席之地。我是在 8 位机器时代长大的,在这些系统上编程的入门门槛非常低。这些机器的架构非常简单,你可以很容易地学习在这些机器上编程和编写或多或少相关的应用程序。

现代架构要复杂得多,学习难度也更大。你可以看到人们对孩子们无法像在 BASIC 和 8 位计算机时代那样轻松地学习编程而自以为是,我认为这个论点有一定的道理。留下了一些让编程变得更难进入的漏洞。玩具语言在这里用处不大——要使编程具有吸引力,就必须能够渴望构建与您正在学习的语言相关的东西。

这导致了一种语言的问题,这种语言对孩子们来说很容易学习,但仍然允许他们编写他们可能真正想要的相关程序(甚至游戏)。它还必须被广泛认为是相关的。

我能想到的最接近这一点的是Python。它不是该类型语言的唯一示例,但它是最受关注的语言 - 并且(IMO)在这个利基市场中发挥相关性的感知是必要的。它也是我经历过的最容易学习的语言之一(在我多年来使用的大约 30 种语言中)。

于 2008-10-29T11:04:48.017 回答
2

为什么不试试 Jumentum,看看它对您有什么作用?

http://jumentum.sourceforge.net/

它是用于微控制器的开源 BASIC

elua 项目也是微控制器的 lua

http://elua.berlios.de/

于 2008-11-08T23:33:44.317 回答
2

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

PS:尽管命名相似,但像 PBASIC 这样的 BASIC 变体与 Visual BASIC 几乎没有共同之处。他们以非常不同的方式出现分歧。

于 2008-11-25T04:38:06.013 回答
1

好问题...

基本上(原文如此!),我没有答案。我想说 Lua 非常容易学习,可能和 Basic 一样简单(这也是我的第一门语言之一,我在很多 8 位计算机上使用方言......),但更强大(允许 OO或功能样式,甚至混合它们)并且以某种方式更严格(没有转到...)。

我不太了解 Python,但从我所阅读的内容来看,它与 Lua 一样简单、强大和严格。

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

两者都精心设计了虚拟机,高效,(大部分)没有错误。如果您制作自己的解释器,您应该使用现有的 VM 并从 Basic 源代码为其生成字节码,或者自己制作。当然有趣的东西,但耗时且容易出现错误......

所以,我只想让Basic过一个愉快的退休生活...... :-P

PS.:为什么它挂了?也许微软对此并不陌生......(VB,VBA,VBScript......)
周围还有很多方言(RealBasic,DarkBasic等),有一些观众。

于 2008-10-28T17:59:19.320 回答
1

冒着听起来像摇椅上的两个老前辈的风险,让我暴躁地说“今天的孩子们不喜欢 BASIC”,然后自相矛盾地说“他们不知道自己掌握得有多好”。

BASIC 的最大优势始终是它的可理解性。这是人们可以得到的东西。学术界和语言开发人员长期以来一直忽视这一点。

当您谈论想要实现 BASIC 时,我假设您不是在谈论行号 BASIC,而是在谈论结构化形式。问题在于,一旦你开始转向结构化编程——函数,“为什么我不能直接转到那个地方?”等等——真的变得不清楚 BASIC 有什么优势(如果有的话) ,比如说,Python。

此外,BASIC“如此容易正确”的一个原因是,在那些日子里,图书馆并不像今天那么重要。库意味着即使不是面向对象的编程也是结构化的,因此您再次处于一种更现代的动态脚本语言“适合”人们今天做得更好的现实的情况。

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

简而言之,我认为您应该将精力投入到 BASIC 解释器上。

于 2008-10-28T18:02:35.273 回答
1

好吧,这些人似乎认为 Basic 在移动领域仍然占有一席之地,而且他们可以从中赚钱:

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

于 2008-10-28T21:27:54.797 回答
1

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

许多其他语言被认为已经死了,但基本语言仍然存在。

Sadly yes. I blame Bill Gates for this...BASIC was on a stretcher with a priest saying the last rites for it, and then MS brought it back like Smallpox.

于 2008-12-20T22:03:43.830 回答
0

我曾经在 QBasic 时代用 BASIC 编程。QBASIC 有子例程、函数、结构(它们曾经被称为类型),我想就是这样。现在,与 Python 具有的所有功能相比,这似乎是有限的——OO、lambdas、元类、生成器、列表推导,仅举几例。但我认为,这种简单性是 BASIC 的优势。如果您正在寻找一种简单的可嵌入语言,我敢打赌 QBasic 会更快、更容易理解。对于大多数嵌入/脚本类型的应用程序来说,程序语言可能绰绰有余。

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

也就是说,我想说今天为 BASIC 编写 BASIC 解释器(甚至可能是使用 LLVM 或类似东西的编译器)有很好的理由。如果您实现类似于 QBasic 的东西,您将获得一种干净、简单易用且快速的语言。您不必解决任何语言设计问题,最好的部分是人们已经知道您的语言。

于 2008-10-28T17:58:50.833 回答