使用Lua和Python嵌入式,是否有适合Basic的地方?

时间:2008-10-28 17:27:33

标签: python scripting lua interpreter basic

我开始使用ZX81,然后BASICAGW-BASICQBasic编写基础编程。我转到C(啊,Turbo C 3.1,我几乎不知道你......)

当我开始使用微控制器时,我使用Parallax的BASIC Stamp回归。但是,BASIC非常棒,因为它很容易理解并且很难犯错误。我最后转向装配和C,因为我需要额外的功率(速度,容量,资源等),但我知道如果标准高得多,许多人将永远不会进入编程微控制器。

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

  • BASIC比其他语言有什么优势?
  • 为什么还在?
  • 如果我决定使用翻译制作通用微控制器板,是否有理由制作BASIC版本?

许多其他语言被认为已经死亡,但BASIC一直坚持不懈。

9 个答案:

答案 0 :(得分:10)

[这可能听起来比实际上更负面。我并不是说基本是所有邪恶的根源,others have said that。我说这是我们可以留下的遗产。]

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

“如果有的话,Basic有什么优于其他语言?”没有,真的。

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

“很多其他语言被认为已经死了......”是的。基本与COBOL,PL / I和RPG一起作为遗产,有时成本高于价值。但是由于“如果它没有破坏不解决它”的大IT政策,他们坐在那里,吸收资源,可以轻松地用更小,更简单,更便宜的维护代替它。除了它没有“失败” - 它只是不成比例地昂贵。

30岁的COBOL是一个糟糕的返工情况。从2016年开始,我们将会看到30岁的MS Basic,我们无法弄清楚,不想没有,也无法决定如何更换。

“但基本只是一直挂着”似乎有些人喜欢Basic。其他人认为这是另一种设计糟糕的语言;它的优点是早期上市并得到大型供应商的支持(IBM,最初)。设计糟糕,早期上市只会让我们留下几十年来一直受到影响的遗产。

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

答案 1 :(得分:6)

作为一种架构,BASIC声名鹊起的主要原因是你可以使BASIC解释器非常小 - 只需几KB。在DG Nova的时代,这是一个胜利,因为您可以使用Business BASIC等系统在具有64K RAM(甚至更少)的机器上构建多用户应用程序。

BASIC(特别是VB)是遗留系统,具有大量现有代码库。可以说VB实际上是一种语言(有些人会说是COM上的薄包装),它具有类似BASIC的语法。现在,除了人们对它的熟悉和维护现有的代码库之外,我认为没有理由保持语言。我当然不会提倡新的开发(请注意,VB.Net并不是真正的BASIC,而只是具有类似VB的语法。类型系统不会像VB那样被打破。)

计算机世界中 缺少的相关语言易于学习和修补,并且在主流应用程序开发中具有思维共享。我在8位机器的时代长大,这些系统编程的入门门槛非常低。机器的架构非常简单,您可以学习在这些机器上编写和编写或多或少相关的应用程序。

现代架构要复杂得多,并且需要学习更大的驼峰。您可以看到人们在BASIC和8位计算机时代就像孩子们学习编程一样容易,并且我认为这个论点有一些优点。还有一些漏洞使得编程变得更难以进入。玩具语言在这里用处不大 - 为了使编程变得有吸引力,必须有可能建立与您正在学习的语言相关的东西。

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

我能想到的最接近的是Python。它不是这种语言的唯一例子,但它是心灵分享最多的语言 - 而且(IMO)在这个利基市场中必须有相关性的感知。它也是我所经历过的最容易学习的语言之一(多年来我用过的30多种语言)。

答案 2 :(得分:2)

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

http://jumentum.sourceforge.net/

它是微控制器的开源BASIC

对于微控制器而言,该项目也是lua

http://elua.berlios.de/

答案 3 :(得分:2)

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

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

答案 4 :(得分:1)

好问题......

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

我不太熟悉Python,但从我读过的内容来看,它比Lua简单,强大和严格。

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

两者都精心制作了VM,高效,(大部分)无bug。如果您自己创建解释器,则应该从现有的VM中获取并从Basic源生成字节码,或者自己创建。当然有趣的东西,但耗时,容易出错...

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

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

答案 5 :(得分:1)

冒着听起来像摇椅上的两位老人的风险,让我脾气暴躁地说“今天的孩子不喜欢BASIC”然后矛盾地说“他们不知道他们有多好”。

BASIC最大的优势在于始终其可理解性。这是人们可以获得的东西。学者和语言开发人员长期忽略了这一点。

当你谈到想要实现BASIC时,我假设你不是在谈论行编号的BASIC,而是一个结构化的形式。问题在于,只要你开始进入结构化编程 - 函数,'为什么不能我只是GOTO那个点?'等等 - 它真的变得不清楚有什么优点,如果有的话,那么BASIC就会超过Python。

另外,BASIC“很容易做对”的一个原因是当时图书馆并不像今天那么重要。如果不是面向对象的编程,那么图书馆意味着结构化,所以你再次处于这样一种情况:更现代的动态脚本语言“更符合”人们今天所做的事实。

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

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

答案 6 :(得分:1)

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

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

答案 7 :(得分:1)

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

  

还有很多其他语言   被认为死了,但基本只是保持   挂在上面。

可悲的是。我责备比尔盖茨这个...... BASIC在一个担架上,一位牧师说最后的仪式,然后MS把它带回来像天花。

答案 8 :(得分:0)

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

我想说BASIC仍然存在的最重要原因是Visual Basic。在90年代的很长一段时间里,VB是为Windows编写GUI,COM​​和DB代码而不属于C ++ Turing tarpits的唯一方法。 [也许Delphi也是一个不错的选择,但遗憾的是它从未像VB那样受欢迎]。我认为这是因为所有这些VB和VBA代码仍然被使用和维护,BASIC仍然没有死。

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