新的或新兴的编程语言真的需要实用的库吗?

时间:2009-02-26 23:09:18

标签: programming-languages

使用因子或者四,以Arc或其他为例(注意:因子是一个很糟糕的例子,因为它有一大堆实用的库)。假设您正在考虑使用编程语言。拥有大量实用库是否重要?如果您的语言设计得很好,那么创建“字符串”库或“日期”库会很容易。甚至可能是一个Web框架?

我提到这一点,因为当一种语言出现时,似乎有人会提出“实用图书馆”。

9 个答案:

答案 0 :(得分:11)

这绝对重要 - 十分之九,我将选择一种语言,其中有很好的,支持良好的库,可以帮助我完成我想做的事情。

这并不是说我不喜欢编写我自己的库(恰恰相反),但对于一个快速,准确的结果很重要的生产项目来说,这对于任何一段时间来说都不是一个实用的选择。想象。

答案 1 :(得分:4)

Java和.Net已经破坏了人们在框架中或其他高质量库(通常也是免费和开源)中丰富的类。 Ruby和Python也是如此。如果没有这样的库,就很难采用一种新语言,因为必须重新实现所需的每一项功能,你的工作效率会受到极大的影响。

除非它是一种突破性语言,它引入了一些像故意编程这样激进的东西(我告诉计算机我想要它做什么,并且它会通过正确的代码来实现它)...为什么,你有其中一个? : - )

答案 2 :(得分:3)

实用图书馆很重要。我没有得到写一个框架的报酬,我得到报酬以增加业务价值。如果我告诉客户我不得不指责他们写一个字符串数据类型,我可能会丢失我的工作/合同。

答案 3 :(得分:2)

只需看看SO上的大多数问题,看看工具对人们有多重要。

也就是说,如果你找到一种能够很好地适应你的任务的新语言,并且你有时间和倾向于编写自己的工具,那么请务必深入研究。这是新语言获取的一种方式

答案 4 :(得分:1)

大型图书馆使语言的使用效率更高。一个非常好的语言,不支持解析XML,加密,Web框架,UI框架等,需要花费更多的时间来生成工作代码。出于学习目的,没有大型图书馆的语言很好,但是出于实际目的,使用这种语言会花费时间和金钱。想象一下,如果每次要加载图像时都必须编写代码来解析.jpg标题。如果您必须手动编写XML解析器而不是将其加载到预先构建的XML解析器中,该怎么办?你可能搞砸了,花了很多时间调试。如果项目的目标是创建一个新工具,那么编写支持代码并不能充分利用你的时间。

答案 5 :(得分:1)

我认为Python流行的重要原因是其巨大的标准库。 Java和PHP也是如此。事实上,我可能会说库的选择比语言本身更重要。

答案 6 :(得分:1)

如果您的首要任务是以尽可能少的时间和精力创建成品,那么是的,让可用的库很重要。 (如果您的目标很有趣,或者为了学习而学习,那么编写自己的图书馆可能是一种很好的体验。)

一个好的图书馆已经足够成熟,许多人已经使用它并淘汰了大部分的bug。无论您的编程语言有多棒,或者从头开始编写库是多么容易。随着时间的推移,您的代码无法替代。

很多图书馆的写作都不是很有趣或有趣,再次重新实现它们不会以任何方式彻底改变世界。你可以用日期库或字符串库做任何事情。它既可以使用,也可以不运行。许多图书馆只是标准或某些事实上的标准行为的实现,而有些人只需要通过必要的工作来实现它。你必须自己做的越多越好。

在我看来,任何可以利用现有图书馆的全新语言都将从未开始。例如,Clojure虽然是一种非常新的语言,但也可以访问所有Java库。这可以说是目前它做得很好的一个重要原因。努力是为了新事物,而不是重新发明轮子。

答案 7 :(得分:1)

您认为字符串库易于编写吗?去看看Unicode,UTF-8,UTF-16,遗留代码页,字节顺序问题等等。

您认为日期/时间库易于编写吗?去看看闰秒,周编号方案等等。

为您考虑这些事情,实施一次并正确实施,比您想象的节省更多时间和头痛。

答案 8 :(得分:0)

这是一个诱人的想法,如果你是保罗格雷厄姆或查克摩尔,它肯定有用。

如果您的域名非常有限,并且您不会在该域外提出要求,这可能会有效,这就像客户要求“从Excel导入”功能一样简单。另一方面,Paul Graham使用Lisp编写了一个网络商店系统,这是一个非常广泛的需求领域;我有兴趣知道他是如何处理类似PDF导出的东西,他是否会在暑假期间从麻省理工学院给一些实习生提供PDF规范和Lisp手册,还是他会去C库?

如果你的领域是由逻辑或持久的自然原理驱动的,可能会有效,比如天文模拟。如果它们是人类的要求,它们将充满矛盾和特殊情况(字符串和日期库属于该类别,顺便说一句),并且没有完全切断它的抽象或语言功能,你将拥有无论你是用Haskell还是用PHP编写,都要轻视特殊情况。

它可能适用于优化非常重要的地方(编辑:以及你自己足够智能自己优化它) - 你有一个精简系统,你知道堆栈的每一层,因为你自己实现了它一个特定的目标。

我将整个想法与毕业生联系在一起:他们在编程技巧和一般智能方面排名前1%;他们在一个非常狭窄的领域工作;他们可能没有最好的设备,因此他们试图剥离东西并进行深度优化;他们没有学习与完成工作的工作程序员的困境。