Performance 用J语言编写大型项目

Performance 用J语言编写大型项目,performance,functional-programming,j,Performance,Functional Programming,J,披露 这是一个“一般性”的问题,也许没有具体的答案,但它不是一场火焰战。在开始我的项目之前,我真的想要一些信息 我必须实施一个特定的项目,该项目将真正受益于J提供的数据结构和抽象。这是一个大型项目,旨在作为大型(软实时)web应用程序的核心组件。因此,性能非常重要 我一直在试图找到一些关于在大型商业或开源项目中使用J的信息,但我找不到任何信息来作为我决定继续前进的基础。我有: 搜索谷歌趋势,但收到以下回复:“你的术语——j编程语言——没有足够的搜索量来显示图表。” 免费搜索(代码),但没有找到

披露

这是一个“一般性”的问题,也许没有具体的答案,但它不是一场火焰战。在开始我的项目之前,我真的想要一些信息

我必须实施一个特定的项目,该项目将真正受益于J提供的数据结构和抽象。这是一个大型项目,旨在作为大型(软实时)web应用程序的核心组件。因此,性能非常重要

我一直在试图找到一些关于在大型商业或开源项目中使用J的信息,但我找不到任何信息来作为我决定继续前进的基础。我有:

  • 搜索谷歌趋势,但收到以下回复:“你的术语——j编程语言——没有足够的搜索量来显示图表。”
  • 免费搜索(代码),但没有找到一个使用J
  • 在Sourceforge上搜索,但未找到使用J的单个项目
  • 在Lambda the Ultimate上搜索,只找到了间接引用APL的
  • 在Google和Bing上进行了搜索,但没有找到任何使用J
在我的项目中使用J是否会犯错误?它似乎拥有我想要的一切——特别是在数据结构、抽象和简洁方面。当然,我可以花时间来模拟F、C或C++中的所有属性,但是J已经有了,所以…

有人能告诉我在重要项目中使用J(或任何晦涩的语言)的一些缺点吗?它的性能不够好吗?它没有图书馆吗?还有什么我应该知道的吗


提前感谢您的回复。

我认为J适用于大型重要项目的关键用途。但我也认为J对于这样一个项目来说是一个非常冒险的选择(读作:高风险)

据我所知,使用J作为主要软件系统核心技术的两家大型公司是Cognos和联泰。(Cognos已被IBM收购。)关于这些系统的一些讨论,或者至少涉及到它们的一些经验,已经在本文中展示。然而,那里没有多少信息

可能还有其他大型软件系统依赖于J,但我还没有确定它们(我已经注意了很多年)

Dmitri Chubarov正确地认为,难以找到具有适当技能的开发人员可能是一个重大问题。此外,我认为对于那些尚未开发出一种数组语言的重要技能的人来说,很难估计他们在JJ编程方面的努力会付出多少努力。这种态度可能会受到软件项目生产压力的影响。(在工作中学习J并热爱它是可能的,但程序员因为“必须”学习而讨厌它的风险不应被忽视。)

另一个可能的困难是整合工作。J有各种各样的库,并且已经连接到各种其他软件系统,但是与更流行的语言所取得的成就形成了巨大的对比。我的经验表明,J接口非常容易,我将其归因于一些关于如何与外部世界合作的好选择。(这包括DLL、内存映射文件、套接字和文本文件脚本。)然而,在一个大型项目中,当连接到周围的支持软件时,您将比平常更经常地进行创新

在我看来,最大的因素是我是否有足够的团队来承担核心产品。实际上,这可能是一个比大多数“大型”项目所依赖的团队小得多的团队。数组语言已与显著较小的团队相关联,这是典型的领域,这是我认为的优势之一。如果你已经安排好让你需要的任何同事参与进来,那就太好了。如果没有,在你做之前不要承诺这样的项目

接下来最重要的事情是了解J的主要好处是什么,以及在项目中检查您是否获得了这些好处的方法。我不是建议如何做到这一点的合适人选,但我相信,如果你不知道这样一个高风险的选择是否会带来预期的回报,你肯定不想投入投资资本


保罗·格雷厄姆(Paul Graham)曾写道,有些语言被视为秘密优势。J绝对可以是这样一种语言。然而,仅仅使用J不足以保证它提供了他所想的那种优势。你所描述的J的吸引人的方面表明,这样的优势对你来说可能是触手可及的。如果你真的选择依赖它,那么让所有主要参与者都有一个强烈而清醒的理解为什么选择这种语言来完成这项工作是至关重要的。

尽管已经有了公认的答案,我还是要回答这个问题

  • 可移植性:我负责维护一个用J构建的大型代码库,其中大部分代码都无法移植到J6(或者很危险),所以我被困在J5中。J并不意味着非常向后兼容。事实上,大多数版本都引入了突破性的更改。版本7的前端使用Java,因此您的界面和所有使用Windows驱动程序(
    wd
    )的东西都无法工作。版本8承诺将QT作为其前端,因此您的新Java接口很可能不会被移植。公平的警告

  • IDE:对我来说,大型项目应该与可靠的IDE齐头并进。J's是一个文本编辑器

  • 库:有许多J库,但J是众所周知的,有几种语言的libr更丰富