有了可嵌入的Lua和Python,基础语言还有存在的空间吗?
我开始学习编程是在 ZX81 上用 Basic,之后学习了 BASICA、 GW-BASIC 和 QBasic。后来我学了 C 语言(噢,Turbo C 3.1,我几乎不知道你......)
当我开始学习微控制器时,我又回到了 Parallax 公司的 BASIC Stamp。然而,BASIC 很棒,因为它很容易理解,而且很难出错。最终我学会了汇编语言和 C 语言,因为我需要更多的能力和资源,但我知道,如果门槛太高,很多人就不会去学习微控制器编程了。
我一直想自己做一个芯片上的 BASIC 解释器,但我想知道,在 Lua 和 Python 容易嵌入,并且和 BASIC 一样好学的情况下,是否还需要 BASIC。
- BASIC 相对于其他编程语言的优点是什么?
- 为什么 BASIC 还存在?
- 如果我决定做一个通用的微控制器板,带有解释器,是否有必要制作 BASIC 版本?
很多其他编程语言被认为已经死亡,但 BASIC 仍然挂着。
原文链接 https://stackoverflow.com/questions/244138
很好的问题...
基本上(sic!),我没有答案。我只能说Lua很容易学,可能和BASIC一样容易(BASIC也是我的第一种语言之一,我在许多8位电脑上使用方言…),但更加强大(允许OO或函数式风格甚至混合使用),同时也更加严格(没有goto…)。
我不十分了解Python,但据我所知,它与Lua一样易学、强大和严格。
此外,两者都是事实上的“标准化”,即没有方言(除了各种版本),不像BASIC有许多变体。
此外,两者都有精心设计的VM,高效(大多数情况下)且没有bug。如果您要自己制作解释器,则应该使用现有的VM并从BASIC源代码生成字节码,或者自己制作。当然,这很有趣,但需要耗费大量时间,并容易出现错误。
所以,我只能让BASIC退休... :-P
PS.:为什么它还在?也许与微软有关...(VB、VBA、VBScript...)
还有许多方言(RealBasic、DarkBasic等),有着不同的受众。
冒着像坐在摇椅上的两个老头的风险,让我抱怨地说:“现在的孩子不懂得欣赏BASIC”,然后矛盾地说“他们不知道他们有多好”。
BASIC最大的优点一直都是它的易懂性。人们可以很容易地理解它。这一点长期被学术研究人员和语言开发人员忽略了。
当你谈论想要实现BASIC时,我想你肯定不是指带行号的BASIC,而是结构化的BASIC。问题在于,一旦你开始转向结构化编程——函数、 “我为什么不能直接跳转到那个位置?”—— 就很难明确BASIC和Python有什么优势。
此外,BASIC之所以“易于正确理解”,其中一个原因是在那个时代,库不像今天那样重要。库暗示结构化,如果不是面向对象编程,所以你又处于这样一个情况:更现代的动态脚本语言更适合今天人们的现实。
如果真正的问题是“我想实现一个解释器,所以它就变成了投资回报的问题”,那就成了一个语法实际上很容易实现的问题。除非你真的回到了行号和非常有限的语法,否则我认为BASIC在这方面实际上没有太多优势。
简而言之,我认为你不应该在BASIC解释器上投入努力。
[这可能听起来比实际情况更负面。我并不是说 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 手册。我并不怀念过去的好日子。
好吧,这些人似乎认为在移动领域,基本语言不仅还有市场,而且他们还能从中获利:
作为一种编程语言,BASIC 的主要优点在于可以制作非常小的 BASIC 解释器,只有几 KB。在 DG Nova 等计算机时代,这是一种胜利,因为你可以使用 Business BASIC 等系统在 RAM 为 64K 或更少的机器上构建多用户应用程序。
BASIC(尤其是 VB)是一种传统系统,具有大量现有的代码库。可以说 VB 实际上是一种语言(一些人会说它只是 COM 的一层薄包装),其具有类似 BASIC 的语法。现在,我认为没有太多保留这种语言的理由,除了人们熟悉它并保持现有的代码库。我肯定不会倡导在其中进行新开发(请注意,VB.Net 实际上并不是 BASIC,但具有类似 VB 的语法。类型系统不像 VB 那样存在故障)。
计算机世界中缺少的是一种易于学习和玩耍,并在主流应用程序开发中有一定影响力的“相关”语言。我在 8 位机器的年代长大,入门编程非常容易。这些机器的架构非常简单,你可以很容易地学习编程并编写几乎相关的应用程序。
现代架构要复杂得多,学习曲线也更陡峭。你可以看到人们声称孩子们无法像在BASIC和8位计算机时代那样容易学习编程,我认为这个观点有一定道理。这留下了一个问题,使编程更加困难。玩具语言在这里并没有太大用处-为了使计算机编程具有吸引力,必须能够期望使用所学习的语言构建相关的东西。
这导致的问题是一种易于孩子们学习,但仍允许他们编写实际需要的程序(甚至游戏)的语言。它也必须被广泛认为是相关的。
我可以想到的最接近这一点的语言是 Python。这不是这种类型语言的唯一例子,但它是具有最多相关个人保持的语言(在我见过的 30 种语言中),对感知的相关性来说是必要的。它也是我体验过的最容易学习的语言之一。
为什么不尝试一下 Jumentum,并看看它对你有什么作用呢?
http://jumentum.sourceforge.net/
它是一个针对微控制器的开源 BASIC 语言。
另外,elua 项目也是一个针对微控制器的 Lua 语言。
BASIC 的持续存在
在 STAMP 实现中,BASIC 持续存在,因为它比大多数其他非常易学的编程语言更低级。对于大多数嵌入式 BASIC 实现,BASIC 指令直接映射到单个或一组机器指令,几乎没有额外的开销。在像 Lua 或 Python 这样的“高级”语言中编写的相同程序将在相同的微控制器上运行得更慢。
注:像 PBASIC 这样的 BASIC 变种与 Visual BASIC 等命名相似的语言几乎没有什么共同之处。它们已经以非常不同的方式发散了。
我也曾经从 ZX81 开始。但正如 Tony Hoare 所说的那样,用 BASIC 编程就像尝试使用罗马数字进行长除法。
很多其他编程语言都已被认为已死亡,但 BASIC 仍在坚持。
可悲的是是的。我认为是比尔・盖茨的错... BASIC 已经被搬上救护车,牧师正在为其做丧事,但微软却像天花一样把它带回来了。
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
- 如何创建一个 lua 脚本以针对特定键为 fluentbit 进行限流
我曾经在 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 的东西,你将得到一种清洁、简单、易于使用和快速的语言。你不需要解决任何语言设计问题,最好的是人们已经知道你的语言了。