寻找适合初学者的编程语言

4

我不知道在这里是否允许提出这个问题,但我还是要试一下。

我正在为一个游戏建立我的框架,使用C++。我想寻找一种简单的编程语言,方便普通用户理解和编写。

我考虑过Lua,但我认为对于普通用户来说可能太难了。

游戏中只需要实现基本操作,如前进、射击、拾取物品、放置物品等。这是一个基于瓦片的游戏。


JavaScript可能是一个不错的选择。当完全使用时,它并不是一种简单的语言,但学习足够简单的内容来完成简单的任务却很快速和容易。 - jcoder
3
在任何语言中编写这种脚本都很难吗?其实它只是一系列的动作,每个动作可以用一行来表达。 - Niklas B.
是的,但我认为许多用户会害怕编程所需的开销和可怕的字符。但是,制作自己的解释器是一个选择,但这可能会变得太大。 - RobotRock
3
编程不是傻瓜才能做到的。无论使用什么编程语言,都存在编程中固有的概念(如递归),这些概念并非易于掌握。 - Matthieu M.
2
Python怎么样?如果他们只需要说走路,射击,那么他们只需编写walk(),shoot()。Python很容易与C++(Boost.Python)接口,所以最终对您更有利。 - enobayram
3
Lua 确实比较简单。Python 和 JavaScript 的复杂程度大致相当。 - Nicol Bolas
3个回答

9
Lua是一个很好的选择。这正是Lua设计的目的。
您可以通过设计适合于您的游戏的Lua API来极大地影响用户的使用体验。如果您设计了一个复杂、难以使用的API,或者要求他们使用Lua的许多高级功能,则会更加困难。如果您相反地创建了一个简单易用的API,则人们应该可以从示例中开始,并掌握他们需要知道的内容。

4
如果您认为Lua太难了,那么您可能不是在寻找通用编程语言(另一个建议是Python)。相反,考虑创建一种特定领域语言。我会在这里对您的游戏做出一些假设,但您可以例如实现基于规则的脚本语言,其中每个脚本表示敌人的行为。
can_see(player) and distance_to(player) > 100:
    run_towards(player)

can_see(player) and distance_to(player) < 100:
    shoot_at(player)

default:
    wander()

在每个推理步骤中,第一个匹配的规则将被执行。在这种情况下,需要某种形式的hysteresis来防止您的NPC出现无法做决定的情况。

这基本上将您的编程语言缩减为一个带有有限关键词和运算符的if-else-if。您甚至可以创建一个专门针对您的语言的IntelliSense自定义编辑器。如果您的用户愿意,您可以使用嵌套规则:

can_see(player):
    distance_to(player) > 100:
        run_towards(player)
    default:
        shoot_at(player)

在某些时候,您可以开始允许变量和用户定义的函数,但是从一开始选择通用语言可能会更好!因此,您可以看到,主要问题是在泛化和用户友好之间找到平衡。


2

Guido van Robot 对我来说似乎很合适,谢谢。 - RobotRock
@KajToet:你知道Guido van Robot只是一个编写Python脚本的GUI工具,不是一种语言,对吧? - Nicol Bolas

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