小项目的想法,应该用Python吗?
我有一个项目的想法,但不确定用Python是否合适。
首先,我是一个C++和C#的开发者,有一些SQL的经验。我的日常工作是用C++。我有一个想做的项目,考虑用一种我不太熟悉的语言来开发。Python似乎很受欢迎,引起了我的兴趣。我在编程中肯定会用到面向对象编程(OOP),而且我了解到Python也能很好地支持这种风格。不过,我对这个语言的了解还很有限,只看过一些零碎的资料。
这个项目不会公开,只是我自己在家里玩玩的东西。
简单来说,这个项目是我想出的一个简单游戏的想法。这个游戏大致包括以下几个方面:
- 一些数据结构来存储特定的信息(会是强类型的)。
- 一种输出游戏状态给玩家的方式。这部分还没确定,可以是图形界面也可以是文本界面,目前我对这点没什么特别的要求。
- 一种保存游戏数据的方法,可以是数据库或者文件系统。
- 一个相对简单的方式让我输入信息,还有一个“开始”按钮,用来处理这些变化,当然也会生成新的游戏状态。
- 这个游戏的玩法类似于桌面游戏。
回头看看这个列表,其实也没什么特别的。用这种方式学习Python会有趣吗,还是我应该选择其他语言呢?
4 个回答
我已经给del-boy的回答投过票了,但我想进一步说,如果你的目标是(1)玩得开心,(2)学习一门新语言,以及(3)自己写一个游戏,那么Python绝对是个简单明了、非常棒的选择,可以帮助你实现这三点。
这个语言在你所寻找的所有方面都表现得很好(关于强类型的注意事项可以参考Alex Martelli的回答),在我看来,它和C家族的语言相比并没有太大的“跨度”(我觉得你会发现大多数事情都简单得多,而不是奇怪),而且比起其他一些不错的语言,比如Ruby或Lua,Python会更容易上手。
Python看起来非常适合你的需求,比如说,pygame
和其他流行的第三方扩展可以让你轻松实现漂亮的图形,你也可以选择curses
来处理结构化的文本输入输出等等。唯一的例外可能就是你所说的“强类型”这个概念。
其实,Python是强类型的(也就是说,你不能把一个字符串用在需要整数的地方,反之亦然),但它是动态强类型的:每个对象都有一个强类型,但名字(广义上说,包括基本名称、复合名称、容器中的项目等)是没有类型的——每个名字指向一个对象,对象才有类型,而不是名字。你可以把名字重新绑定到一个不同的对象,而那个对象可能和之前绑定的对象有不同的(强)类型。
动态语言都有这个特点,虽然很多语言在“类型宽松”方面比Python更进一步(比如把字符串和数字搞混,或者不同种类的数字,而Python则清楚地区分字符串、整数和浮点数)——Python在动态意义上是相当“挑剔类型”的,尽管名字本身是没有类型的;-)。
我发现学习一门新语言最好的方法就是自己动手做点小项目。Python也不例外。
你写的所有内容都可以用Python来实现,所以如果你想学习的话,我找不到不使用它的理由。