所以,我有这个想法,我试图使用OpenGL和一些物理原型设计一个实验用户界面.我对这两个主题都知之甚少,但我对C++,Java和C#等编程语言非常有经验.经过一些初步的研究,我决定使用Python(使用Eclipse/PyDev)和Qt,这对我来说都是新手,现在有四个不同的主题可以同时学习或多或少.
I've gotten quite far with both OpenGL and Python, but while Python and its ecosystem initially seemed perfect for the task, I've now discovered some serious drawbacks. Bad API documentation and lacking code completion (due to dynamic typing), having to import every module I use in every other module gets tedious when having one class per module, having to select the correct module to run the program, and having to wait 30 seconds for the program to start and obscure the IDE before being notified of many obvious typos and other mistakes. It gets really annoying really fast. Quite frankly, i don't get what all the fuzz is about. Lambda functions, list comprehensions etc. are nice and all, but there's certainly more important things.
所以,除非有人能解决至少一些这些烦恼,否则Python就会出局.出于显而易见的原因,C++也出局了,C#已经出局了,主要是因为缺乏可移植性.这使Java和JOGL成为一个有吸引力的选择,但我也对Ruby和Groovy感到好奇.我希望你对这些和其他人的意见,以防止我再次犯同样的错误.
要求是:
让地狱不受影响.
良好的代码完成.完整的方法签名,包括数据类型和参数名称.
良好的OpenGL支持.
Qt支持是可取的.
面向对象
适用于RAD,原型设计
跨平台
优选开源,但至少是免费的.
truppo.. 7
看起来你并不是主要遇到Python本身的问题,而是使用IDE.
"糟糕的API文档"
什么API?Python本身,Qt或您正在使用的其他库?
"缺乏代码完成(由于动态类型)"
只要你没有做任何魔术,我发现PyDev非常擅长弄清楚这些事情.如果它丢失了,你总是可以通过这样做来输入提示:
assert isinstance(myObj, MyClass)
然后,即使myObj来自动态上下文,PyDev也会为您提供代码完成.
"每个模块有一个类时,必须导入我在每个其他模块中使用的每个模块都会变得乏味"
安装PyDev Extensions,它可以动态自动导入.或者在单独的模块中收集所有导入并执行:
from mymodulewithallimports import *
"必须选择正确的模块来运行程序"
在Eclipse中,您可以设置默认启动文件,或者只选中"使用上次运行配置".然后你永远不必再选择它.
"在被告知许多明显的拼写错误和其他错误之前"
安装PyDev Extensions,它有更高级的语法检查,并很乐意通知您有关未使用的导入/变量,未初始化的变量等.
看起来你并不是主要遇到Python本身的问题,而是使用IDE.
"糟糕的API文档"
什么API?Python本身,Qt或您正在使用的其他库?
"缺乏代码完成(由于动态类型)"
只要你没有做任何魔术,我发现PyDev非常擅长弄清楚这些事情.如果它丢失了,你总是可以通过这样做来输入提示:
assert isinstance(myObj, MyClass)
然后,即使myObj来自动态上下文,PyDev也会为您提供代码完成.
"每个模块有一个类时,必须导入我在每个其他模块中使用的每个模块都会变得乏味"
安装PyDev Extensions,它可以动态自动导入.或者在单独的模块中收集所有导入并执行:
from mymodulewithallimports import *
"必须选择正确的模块来运行程序"
在Eclipse中,您可以设置默认启动文件,或者只选中"使用上次运行配置".然后你永远不必再选择它.
"在被告知许多明显的拼写错误和其他错误之前"
安装PyDev Extensions,它有更高级的语法检查,并很乐意通知您有关未使用的导入/变量,未初始化的变量等.