【问题标题】:GUI + multithreading support + regex support. Which language? JAVA / Python / Ruby?GUI + 多线程支持 + 正则表达式支持。哪种语言? JAVA/Python/Ruby?
【发布时间】:2009-10-26 12:38:54
【问题描述】:

我有兴趣学习一种支持 GUI、多线程和简单测试操作(支持正则表达式)的编程语言。

主要在 Windows 上,但最好是跨平台的。 Stack Overflow 社区有什么建议?

【问题讨论】:

  • 这应该完全是维基。
  • 你忘了为完整的 HollyWar 添加“Ruby”标签 :)

标签: java python user-interface multithreading


【解决方案1】:

我的建议是 Java。你可以做所有这些,甚至更多。

【讨论】:

    【解决方案2】:

    我是 Erlang 的粉丝:

    • Wx GUI 工具

    • 正则表达式(模块正则表达式)

    • 跨平台

    • 多线程(当然!)

    • EUnit 测试

    当然Python也很合适!

    【讨论】:

      【解决方案3】:

      如果您真的喜欢打字,请选择 Java,如果您真的喜欢空格,请选择 Python,如果您更喜欢编程而不是高性能,请选择 Ruby。

      说真的,Java 非常完整且非常跨平台。我不知道 Python 是如何添加 GUI 的,但是当我几年前详细研究 Ruby 时,它似乎有点复杂(或者至少,没有什么很难用 ruby​​ 编写,但看起来并不容易生成一个漂亮的、现代的 UI ),但与 Java 令人痛苦的冗长相比,我更喜欢使用脚本语言可以实现的代码行数。

      我在上面看到推荐的 Erlang,我从未尝试过,但它是我非常有兴趣学习的一门语言。如果您正在学习新东西,可能值得研究一下,特别是如果多线程对您很重要。

      【讨论】:

        【解决方案4】:
        • Python 很好,但有major problems 和多线程(除非你使用Stackless)。不过,它对多处理有很好的支持。有与 Tk(开箱即用)、Qt、GTK 和 WxWidgets 的绑定。

        • Ruby 1.8 只有green threads,Ruby 1.9 使用本机线程,但正如@James Cunningham 所指出的,它仍然具有全局 VM 锁,因此它的并发性也受到限制。它是唯一提到的具有语法级正则表达式支持的语言。 AFAIK,它支持与 Python 相同的 UI 工具包。

        • Java 支持本机线程。它有两个开箱即用的标准 UI 工具包(过时的 AWT 和更现代的 Swing)。还有非常流行的 SWT 工具包(Eclipse 就是用它开发的)。

        如果您不需要可移植的 UI,我建议您使用 C#。它的语法比 Java 更好,而且通常不那么令人沮丧。但不幸的是,Windows 和 Linux 上的 UI 现状令人遗憾。

        【讨论】:

        • 你夸大了 Python。 GIL 不会阻止编写多线程软件,并且有大量用 Python 编写的多线程应用程序。但是,在执行 GUI 事件循环和多线程时存在一些问题 informit.com/articles/article.aspx?p=30708 涵盖 QT,而此 code.activestate.com/recipes/409244 讲述了如何使用 GTK 来完成。
        • 正如 Michael Dillon 所暗示的,GIL 的问题被大大夸大了。它不会阻止编写使用多核的软件;请参阅多处理模块。 (如果性能至关重要,那么你真的应该使用 Python 吗?)除此之外,Ruby 1.9 有一个 GIL,就像 Python 一样,所以没有(感知到的?)优势。
        • 据我了解 GIL 的工作方式,它强制一次只执行一个操作码。因此,使用线程我们实现了任务分解,但在多核上没有性能提升。是的,多处理是一种解决方案。 @James Cunningham 感谢您对 Ruby 1.9 的说明。我已经编辑了我的帖子以包含它。
        • GIL 是特定于 CPython 的。你不应该有任何带有 Jython(JVM 上的 Python)或 IronPython(.NET 上的 Python)的 GIL。
        【解决方案5】:

        我认为 Tcl/Tk 是您列出的功能的自然选择。

        但可能被称为老式。

        • GUI - Tk,集成良好,如果您知道自己在做什么,看起来还不错,您也可以使用 Qt 或 gtk,但那不太常见。
        • 多线程 - Tcl 具有用于协作多任务处理的 CoRoutine,基于消息传递的线程,没有全局解释器锁定并且可以很好地扩展,此外还有一个内置的事件循环,可以减少您对线程的需求
        • 测试操作:您可以获得一种非常灵活的语言来进行测试自动化,添加 expect 包,您就可以选择用于测试大量路由器之类的工具,或者在 DejaGnu 框架中使用 GCC 测试套件.

        它通常很容易学习并且有一些很酷的功能,但你通常不会用它找到工作。 The Tcl'ers Wiki 是一个很好的起点,其他兴趣点可能是The tkdocs 主页或www.tcl.tk 的官方语言页面

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-05-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-13
          • 1970-01-01
          • 2011-04-07
          相关资源
          最近更新 更多