一种有益的桌面语言,可以学习,值得学习,具有跨平台能力

时间:2010-09-25 04:22:03

标签: programming-languages

我首先要说的是我自学成才,我所知道的一切都是从家庭中的程序员,自我利益和反复试验中汲取的。

我目前正在阅读Aaron Hillegass的Cocoa Programming for Mac OS X,但我无法保持兴趣。我认为我失去兴趣的主要原因是缺乏我喜欢Javascript和PHP的主要原因,这是允许在任何平台上开发,托管和测试的整体可移植性(我有Windows 7,Mac OS X和Linux) 。当我能够在任何地方使用它时,想出一个项目 - 因此对语言保持兴趣 - 会容易得多。

那就是说,我的问题就像对跨平台语言的信息请求一样简单(Java?C ++?,*),或者对项目或方法的一些建议可能让我对一种语言感兴趣的时间足够长能够开始制作功能性应用程序。

修改

为了澄清我正在寻找语言的整体知识,而不是特定的API或工具包。从那里开始,我可以学习工具包,外部库和其他东西。现在的主要问题是找到一种跨平台的语言,并且最好由Stack Overflow社区尊重(因此在这里发布,因为这对我来说是一个非常有价值的工具,我喜欢在我可以的时候帮助别人)。

9 个答案:

答案 0 :(得分:4)

desktop 这个词也隐含地说应用程序应该提供超出基于Web的解决方案所能提供的用户体验级别。如果是这种情况,使用跨平台语言编写应用程序将不是一个好主意。跨平台工具倾向于将功能降低到它们支持的所有平台中可用的最低公分母,因此您无论如何都可以编写基于Web的应用程序并“免费”获得跨平台功能。 / p>

最好在编写桌面应用程序时按照以下顺序做出决定:

  1. 仅限网络的解决方案是否支持应用程序的大多数功能?
  2. 要定位哪个桌面平台?
  3. GUI编程平台支持的编程语言是什么?
  4. 当您对问题#2有答案时,#3的答案并不太难

    • Windows - C#&的WinForms
    • Mac OS X - Objective-C&可可
    • Linux - C / C ++& GTK +

    如果您仍坚持使用跨平台桌面GUI应用程序,那么最好的选择仍然是Java& Swing或者SWT。

答案 1 :(得分:3)

我认为Ruby是个好主意。它与Java有很大的不同,但不是太多,以至于你无法掌握这些概念。这也是一门容易学习的语言。一旦你学习了Ruby,你就会继续思考它。

答案 2 :(得分:2)

如果你想以快速的方式从创意转向运行软件,我推荐使用Python。跨平台,成熟,拥有强大而强大的社区,大量的教程,跨行业测试,无数的图书馆,最重要的是,一个美丽的语言。

现在,如果你想了解计算机并开发速度较慢但写入杀手级的跨平台应用程序,那么唯一的答案就是C.

如果你是都市男性,那就学习Haskell。 (只是在开玩笑 - 它实际上非常优雅,精致,而且很聪明)

祝你好运。

聚苯乙烯。实际上,这一切都取决于你想做什么。 C很棒,但它无法帮助您在合理的时间内建立网站。 Python很漂亮,但我不做大规模的数学运算。 Haskell是一个我尚未破解的坚果。

答案 3 :(得分:2)

答案 4 :(得分:1)

首先,您最好在问题中区分语言 API /工具包

  • 一方面,有一种像C这样的跨平台语言(它不仅仅是跨平台的,它无处不在!)但它并没有转化为编写可以编译和运行的GUI应用程序的能力。许多系统。
  • 另一方面,有一个跨平台的GUI API /工具包,如wxWidgets,其绑定在C ++,pythonperl中可用。

另外,请注意,学习如何使用语言编写代码并学习如何使用API​​ /工具包是两回事。即使您已经熟悉某种语言,学习如何使用工具包也需要数月时间。如果你已经知道一个工具包,你也可以在一周内掌握一门新语言并开始使用已知的工具包轻松地用这种新语言编写程序。

现在,如果您的主要目标是学习一门新语言,我认为编写GUI应用程序并不是一个好方法。在我个人看来,学习使用工具包是一项更重要的工作。

相反,编写一个操作文本文件的命令行程序。在这个层面上,每种语言大多是跨平台的;您可以在大多数平台上找到大多数语言的在线免费实现。

那就是说,如果你想编写GUI应用程序, 我建议使用C ++ Qt工具包。它适用于大多数平台。谷歌地球是用它写的。

如果你想要便携性,Objective-C和Cocoa是一个糟糕的选择。

答案 5 :(得分:1)

我碰巧认为Tcl是一种用于跨平台编程的合理语言。你可以用语言本身做一些非常简洁的东西(例如,它非常强大地支持基于事件的编程和异步I / O,使得编写网络代码非常简单)并且有一些很好的附加功能GUI之类的东西(带有ttk小部件集的Tk在OSX和Windows上看起来都非常好,Tcl是它的母语)数据库(你知道SQLite是作为Tcl包开始生活的吗?)和与粗糙旧程序的交互(Tcl的Expect包是原始的和最好的)。更重要的是,Tcl也有一种真正可靠的部署技术;通过将应用程序构建为starkit,您可以轻松地将其同时提供给许多平台,或者您可以将其直接绑定到运行时并提供易于维护的单文件可执行解决方案。

我认为用任何语言注意的主要事情是文件处理。问题在于,这是一个特定于平台的细节往往会泄漏的区域;即使不考虑它是/还是\,Windows,OSX和传统Unix都倾向于以非常不同的方式安排系统的关键部分。虽然我碰巧认为Tcl在这里做得很好(在抽象太少和太多之间取得平衡)但它仍然是一个可以绊倒的区域。

当然,公平地说,我还必须提到Tcl的价值模型与大多数其他语言使用的模型有很大不同。特别是,它专注于使用不可变值,所有类型信息都完全显示出来;所有可变性都集中在修改变量的内容上。 (实现比这更有效,在不影响官方语义的情况下进行引用共享,类型变异和就地更新,或者在其他情况下进行copy-on-write。但这是一个实现细节;它需要的唯一方法当你意识到你的代码比你想象的要快时,你会感到很担心,这很好。)

答案 6 :(得分:0)

如果您正在为桌面寻找强大的跨平台语言我相信JAVA就是答案。但是我愿意学习python如何比java更好。

答案 7 :(得分:0)

通过Silverlight XAML怎么样:声明性IU包含事件,数据绑定,样式等(是的,你可以使用它构建桌面应用程序,因为它具有浏览器外的功能)它已经在Windows,Mac,Windows上运行电话7和Linux版本即将推出(通过Moonlight项目)。作为语言,您可以使用C#或F#,它们都在Windows上运行,并且(通过Mono)在Mac和Linux上运行。

答案 8 :(得分:0)

当我说“ JavaScript ”时请不要笑。我真心的。每个现代浏览器都支持它,它完全是跨平台的。