我正在努力寻找一种编程语言,我觉得它非常适合学习和用于桌面/ GUI应用程序开发。我意识到任何语言都不可能满足所有这些标准,但我想找到一个尽可能多的语言。我已经按照从最理想/最重要到最不重要的顺序列出了以下功能。
最重要的是,我需要一些直接前瞻且相当熟悉的东西,以及不需要深入理解特定于平台的API的东西。我不能花费大量时间学习用C ++开发Win32应用程序。我已经使用了wxWidgets,并且喜欢它的基本用法,但我真的想要使用垃圾收集,动态类型等语言。
我对Java,C#和其他人的沮丧是需要第三方运行时。我不希望最终用户担心安装和维护单独的平台。
现在。想法?
答案 0 :(得分:14)
答案 1 :(得分:11)
你的问题的答案很简单:没有。 您排除了问题中所有理想的语言和平台。
我建议你抛弃对.NET的反感并使用Delphi Prism。它不是C#,它是跨平台兼容的(一切都在Mono上得到官方支持),您可以创建带有运行时的应用程序(Mono作为应用程序的一部分)。
答案 2 :(得分:8)
我建议Groovy和Griffon。 Groovy是一种动态语言(如Ruby / Python),它在JVM上运行,并且可以轻松地与数百万个Java库集成。 Griffon是一个用于开发GUI的高效RAILS框架。 Groovy已经存在了5年,拥有一个强大的社区,并得到SpringSource(现为VMWare部门)的支持。格里芬有点年轻,但也有一个相当强大的社区。
这些似乎符合您的标准。
我知道我从Java切换到Grails(用Groovy编写的类似于Rails的Web框架),并且没有回头看。
答案 3 :(得分:6)
答案 4 :(得分:4)
哇,你真的限制了你的选择。我将跳上QT的潮流并推荐C ++。
QT中的大多数对象继承自排序的另一个对象,它自己的垃圾收集。
有令人难以置信的文件。
QT非常强大,拥有您想要的大多数元素,并且如果您想自己修改元素,则可以扩展。
如果您为发布版本进行静态构建,那么您为应用程序提供的人员将不需要分发任何其他库,因为它们都将构建到.exe文件中。
答案 5 :(得分:3)
据说Delphi的下一次迭代是跨平台的(Windows,Mac,Linux)。我认为除垃圾收集外,它符合您的所有要求。
答案 6 :(得分:3)
没有语言符合所有这些限制。从技术上讲,这听起来好像你要求的东西几乎与Java相同,但是出于未说明的原因明确禁止Java。从概念上讲,这听起来像是在寻找Python或Ruby,但不允许它们使用稍微不同的语法。
考虑到优先级的顺序,我认为在现有语言中最接近的可能是C与Boehm GC和GTK +用于GUI(和GLib用于对象系统)。你在“不需要第三方运行时”下说“No GTK”,但我不确定你在这里提到的“运行时”,因为IIRC它只是一堆C库。
鉴于要求的特殊性,我认为最好的办法是编写自己的语言。编译器真的不难写了。有现成的工具可以帮助解析和代码生成以及数学和文本处理以及GC等。一旦你开始,你可能会发现有人愿意帮助移植它。许多现有的跨平台GUI库(如wxWidgets)使用C / C ++,所以如果你有一个不错的FFI,你也可以使用它。你想要“支持”和“记录”,但如果你是主要作者,你会比任何人都更了解它。关于某种语言最难的部分就是设计,听起来你脑中已经有了一张完全符合语言的图片。
答案 7 :(得分:3)
如果您可以接受WxWindows或GTK或QT作为工具包,那么有一些。
按照我个人喜好的顺序:
答案 8 :(得分:2)
JavaScript的?
可能不是最快的,并不能完全满足您的所有需求,但嘿......它无处不在且易于学习
在列表之后没有阅读,但是有棱镜你可以实现你的大部分目标。
或者您可以尝试Qt和c ++ autopointers
答案 9 :(得分:1)
Silverlight实际上可以为您提供足够的跨平台可用性来使用C#/ .NET,但我不确定它是否符合您的所有要求。
答案 10 :(得分:1)
听起来像动作脚本3会让你开心。但它更面向网络,但您可以尝试制作投影仪或Air应用程序。我认为这是一个很好的解决方案,因为你可以用AS3做任何事情(图像,视频,文本,声音视频文本键盘和鼠标输入,梨到梨和3D自闪光10,...),它是跨平台,你可以使用它在网络或桌面上:)
如果你是一个纯粹的根编码器(使用vim,只使用命令行),你可以在不使用flash ide的情况下创建你的整个应用程序,只需编写你的文件并用mxmlc编译它们(随自由flex一起提供) SDK)。
答案 11 :(得分:1)
我建议使用Python。虽然它不符合您对编码风格的第一个要求,但它符合您的所有其他要求!
py2exe
关于你的第一个要求我会说你应该至少尝试一下Python。入门需要很少的努力。有2-hour tutorial给你一个认真的介绍。有一个Basic to Advanced tutorial,我几乎可以保证你会在第二天写下你的第一份申请。
答案 12 :(得分:1)
我也感觉到你的痛苦布莱恩。大多数时候,当我提出有关桌面GUI的问题时,我得到的唯一答案是:“Make it Web”。你真的把它钉了下来,因为你的问题仍然存在,尽管有一些非常有建设性的答案......
我一直在密切关注JavaFX 2,它解决了Swing的一些问题,看起来很有希望。这可能是Oracle从Sun获得Java以来唯一正确的做法。
答案 13 :(得分:0)
<强>更新强>
.NET终于成为一个开源的跨平台解决方案。 .NET Core允许多个设备进行本机编译。
几年前我提出这个问题时,新的.NET体验正是我所寻找的。 p>
<强>原始强>
很多好的建议,尽管在整个过程中都充满了消极性。
我想我会选择C#和Mono。我非常喜欢C#语法(我经常被指责为浅薄,但语言的语法和我的功能一样重要,因为我花了很多时间用特定的语法编写)。虽然与Java类似,但它有一些我欣赏的独特功能,我认为社区似乎更开放。
坦率地说,除了表现之外,我对Java最大的抱怨是社区。它似乎感染了过多的傲慢,并且在支持和开发各种重叠的库,工具等方面似乎也非常分散。围绕Mono的社区似乎更有条理。
实际上,就此而言,.NET本身也是如此。 Sun是一家大型企业公司,似乎对它的内容和它作为微软或IBM所做的事情感到困惑,但他们似乎在领导和组织他们的平台方面做得比微软更糟糕,这非常悲惨。 / p>