为什么Linux应用程序经常在摘要中使用它所使用的语言?


19

在展示应用程序时,Windows和Mac大多谈论功能。另一方面,Linux应用程序具有有关使用哪种语言(以及随附的库)而非功能编写的更多详细信息。这是为什么?

我能理解知道GTK +与QT之间的差异会仅仅因为桌面集成要求而有所不同,但是C,C ++,Python,Assembly与其他等等之间的差异呢?真?

例如:foo是用C / GTK +编写的简单等等。


2
我想提到的是,许多Windows应用程序都不是开源的。即使它们是开源的,它们也经常与所需的依赖项打包在一起。pidgin就是一个例子。您无需在Windows上单独下载gtk即可使pidgin正常工作。您可能会发现,当确实需要外部依赖时,在Windows上包含该语言确实会发生,尽管目前我无法想到任何示例,因为似乎最努力地不要求外部依赖。
xenoterracide 2011年

Answers:


21

我认为传统的Linux用户(实际上是由自己自行安装系统的怪异修补匠)确实关心此类信息(该工具背后的技术是什么?)。例如,我也是那些讨厌的人之一,他们会因为安装了我不喜欢的某些技术而避免安装和使用软件包。有些人当然称这种行为为宗教。是不是很傻?

无论如何,我可以想到两个原因:

  • 打包程序也比那些Linux用户一样令人讨厌(如果不更多),因此他们发现添加此类信息是一个好主意。

  • 我认为,当这些打包人员将此类信息放在其打包说明中时,他们很可能会将其作为某种形式的宣传来进行。它有时会起作用(对我有用很多次)。

当然,这只是一个猜测。


是的,我认为您在这里有一个要点。* nix文化确实是一种文化。
乔丹·帕默

1
当您想知道“嘿,用哪种语言编写Chromium?”时,还可以节省时间。
greenoldman 2011年

@macias:我的怪胎让我看了一下程序包的依赖关系,这个怪胎最常在其中找到语言。实际上,这个怪胎非常虔诚,以至于每当他访问一个网站时,他都会感到烦恼,以至于他无法快速检查不熟悉的工具所用的语言。 <插入喜欢的语言>,显示极客的偏见。
tshepang 2011年

4
关于技术可能会出现问题的一个实际例子是mono / .NET,因为Microsoft在该领域拥有很多专利,并且在“不友好”方面拥有悠久的历史...因此,有人希望这样做并不奇怪。知道这种事情可以避免将来出现问题。
约翰

1
从系统管理员的角度来看,编写项目的内容通常指示必须提供哪些依赖项。
JM Becker

12

我的感觉是,它与四个软件自由中第二个有关

自由学习程序的工作原理,并对其进行更改以使其按您的意愿进行操作(自由1)。前提条件是访问源代码。

公开使用该语言(或其他技术功能)可以提高人们的选择能力,并鼓励精通这些语言的人们参与项目。


10

这可能是部分历史性的。即使在不太遥远的过去,单个系统管理员也通常会构建和安装他们系统上运行的所有内容。

关于使用哪种语言和库来实现工具的说明向管理员提示了该过程将对其系统进行多少工作。

在这个无处不在且影响深远的软件包管理工具的时代,这有点不合时宜,但是Unix文化是保守的,因为它不会抛出似乎有用的东西,因此习惯会消失还需要一段时间。


2
我正在考虑的一个不错的示例是一个名为redmine的Web应用程序。它是用Ruby on Rails编写的,默认情况下,系统通常不提供ruby和rails。Java应用程序也是如此。
xenoterracide 2011年

10

扩展jasonwryans的答案

如果您命名了该语言的编写语言,则接收该语言的人可以估算出提供补丁,获得一些见识或扩展程序的难度。

当然,只有当您是程序员时,这才有意义。

您在哪里看到摘要?在存储库中,还是.deb或.rpm之类的包中?

如果从源代码构建它,则该信息可能有助于识别是否必须安装其他内容(编译器,库,构建工具)。


只需浏览Ubuntu存储库(通过软件中心)。几乎所有的摘要都在第一句中包含了语言。我觉得有些可笑的是,大多数Linux开发人员似乎实际上是为其他Linux开发人员而不是用户开发的。
Jordan Parmer

@ j0rd4n不是ubuntu用户,可以举个软件包的例子吗?我的意思是,他们真的将C放在Firefox的描述中吗?我推测Linux上大约90%的软件并不适合最终用户使用,而是库。另外...您没有意识到Linux开发人员是为自己开发的吗?真可悲,但确实如此……作为一名perl程序员,我离题了,我还没有为最终用户编写任何东西:(
xenoterracide

我使用ubuntu(德语)作为界面语言,因此举几个例子只会对我们中的少数人有所帮助,但是我可以向您保证:在新产品的安装工具synaptics中,我进行了测试并选择了5个软件包-没有找到一个单一的人,提到这是写的语言。
用户未知的

延伸我的评论:通常,该软件是为Unix编写的(如果您找到automake-files等),不一定是为linux编写的,但是由于兼容性,可以在不同的unix风格上使用。
用户未知

6

Unix,以及现在的LInux和BSD,一直都有一个非常脆弱的软件基础,​​并且在最近的过去存在着更加多样化的硬件基础。重要的是要知道您的系统上的解释器中运行了某些软件,或者您可以编译源代码。如果您没有Common Lisp解释器,Tcl解释器或任何其他解释器,则您不想打扰下载源,只是发现自己无法运行它。

对某种语言的描述可以避免浪费大量时间。


4

当提示“这是什么?”时,开发人员将倾向于描述其性质,对他们而言,其性质与源代码有关,而不是其功能。希望有人在最终将其描述打包之前将其重写为更以用户为中心,但是提及该语言仍可能是相关的,例如与可扩展性和可脚本性相关,或者对于吸引参与者有帮助。


Ubuntu存储库提供了惊人的软件包描述,其中前五个词包含该语言。我本人是一名开发人员,但我从来没有想过要关心用户。但是,我可以理解,作为开源,它可能具有更多的意义,但是我们是在为人员还是其他开发人员进行开发?
Jordan Parmer

1
@ j0rd4n开发人员也是人!
扎克(Zach)

3

从我的角度来看,此类信息对于吸引新的贡献者以及使潜在用户立即了解将应用程序集成到他们的系统中可能需要进行的工作至关重要。

  • 一般方面是运行应用程序时使用的库。

某些安装仅限于一些选定的工具箱,例如GTK +,但不包括QT,反之亦然。对于维护系统并在很长一段时间内定期更新其组件的管理员来说,这可能仅仅是一个实际问题,而不是一个虔诚的问题。

  • 另一方面是为了编译应用程序而使用的库和必要的先决条件。

即对于基于源的Linux发行版的用户而言,无论是用C还是用Objective-C编写应用程序,都会产生很大的不同,因为他们的编译器首先需要支持该语言。其他语言可能需要安装大量的库。接下来的问题是,您愿意接受多少工作来编译此应用程序。

  • 另一个方面是吸引贡献者的意图。

大多数开发人员偏爱少数几种语言,或者可能只是缺乏其他语言的经验。为了允许更多的人为某个应用程序做出贡献,一些项目甚至将其源代码分为两种不同的语言(例如Wesnoth,Vega Strike,Naev,仅举几例)。其中一个用于核心应用程序(例如C或C ++),另一个用于简单修改(例如Python或Lua)。是“开源应用程序体系结构”一章的链接,该章描述了在Wesnoth中如何以及为什么这样做。

  • 最后,对于某些语言,显然存在很多偏见和偏见。

我只是说我已经看到过用任何一种语言编写的效率低下的软件。如果您问我,为了提高效率,应用程序的代码质量比其编写的语言重要得多。


1

我认为这很大程度上与表演广告有关。用编译语言(C,C ++等)编写的应用程序的性能要比使用脚本语言(perl,python等)编写的应用程序好得多。

但这也与兼容性有关。用脚本语言编写的应用程序也可能几乎不需要修改就可以跨体系结构和OS移植。


因此,在两种情况下,您都有赞成意见和反对意见-这并不令人满意。封闭源代码的编译代码在Windows上也很常见,因此性能参数不能区分Linux程序
用户未知

1
什么?你只是没有道理。利与弊恰恰是您列出该语言的原因。如果只有“专业人士”,那么每个人都会使用它。而且我什至不明白您要说些什么关于编译后的代码和操作系统。
帕特里克

我以这种方式理解了您的答案:如果用C / C ++编写,则人们会隐式地宣传性能;如果不是用C / C ++编写,则他们会隐式地宣传可移植性。这始终是一个相反的论点-要么反对可移植性,要么反对性能-都是两个原因,更不用说语言了。那么为什么有时会这样,而有时却相反呢?
用户未知,

0

在当今的台式机/服务器系统上,它可能不那么相关,但是对于较小的系统(从嵌入式系统到SSD上网本和平板电脑),由于大小和大小的原因,程序使用的语言或库可能是成败的问题。便携性考虑。

关于大小:添加解释器以使用其他语言,以及所有标准模块和通常使用的附加模块,可以轻松为存储需求增加数百兆字节。库家族,尤其是与主要桌面环境(如Gnome和KDE)相关的家族也是如此。更糟糕的是,从运行nn+1Perl程序可能不会增加太多的内存使用需求,因为可以共享很多内存,但是从nPerl程序和0个Python程序到nPerl程序和1个Python程序导致内存使用显着增加。当每个愚蠢的编写自由软件的人都想要使用自己喜欢的脚本/ radtool语言进行编程时,这将成为一个更大的问题。Perl,Python,PHP,Ruby,JavaScript,Bourne shell,Bash,Csh等。

关于可移植性:许多解释语言(以及库框架)大量使用了可能在大型Linux桌面/服务器系统上可用但在较小/嵌入式/无MMU的系统上可用的功能。我.so想到了对运行时动态模块加载的依赖...


为什么称他们为傻子?他们为什么不使用自己喜欢的语言进行编码?他们应该改用哪种语言?
tshepang
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.