问题 什么编程语言用于制作中型软件? [关闭]


请原谅我的问题愚蠢..

像Adobe After Effects,Apple final cut,Pro tools,photoshop等...... 还有,像Windows媒体播放器,真正的播放器

使用哪些编程语言来构建它们?

我真的很有兴趣知道,谢谢


1847
2018-01-02 08:08


起源

我注意到你改变了标题,但是 尺寸 应用程序并不是语言选择的主要决定因素。除了由于可维护性,可移植性和纯粹的辛勤工作而不太可能在100%汇编程序中编写大型应用程序这一事实,并且脚本语言通常针对并且非常适合于小块集成代码,因此粘合其他组件一起。 - Clifford
我是克利福德的第二个观点。 - dave


答案:


如果您在维基百科中查找许多主要应用程序,他们将有一个侧边框提供包括开发语言(已知)的信息。

应用程序使用与相关域相关的任何语言构建。然而,由于其无处不在的性质,最小的运行时间,通用适用性,高性能,通过库的可扩展性以及从业者的纯粹体,C和C ++是普遍的。

在Windows上,对于大规模商业应用程序,C ++可能比C更常用,部分原因是随着1990年代早期Visual C ++和MFC的发布,Microsoft将其作为Windows的首选开发语言。然而,随着.NET框架的发布,首选的开发语言不再是一个问题,可能会使用C#,VB.NET,C ++ / CLI和其他.NET语言,但很少有我知道的主要消费者应用程序使用.NET(如果你比较优秀但速度慢的Paint.NET与PhotoShop Elements的性能,你可能会看到原因!),然而它广泛用于定制的应用程序开发(例如银行业,其中客户端接口性能不是问题)。

C仍然常用于Linux应用程序。 Linux本身是用C语言编写的,它的主要API是C接口。但是,有很多基于C ++的应用程序接口和库,特别是对于KDE,WxWidgets和Qt等GUI界面。

OSX和iOS应用程序通常用Objective-C编写,因为这是Apple的首选开发语言和OS API。

Android应用程序通常用Java编写,因为Google Android API是一个Java库。但这些通常不是 “非常大的软件”[原文如此]


6
2018-01-02 08:45



通过回答!这就是SO需要的更多!好东西! - dave
只是一个旁注:我认为Photoshop不会像用C或C ++专门编写的那样快。我很确定它的性能关键部分是用汇编语言编写的,因此它们可以使用CPU SIMD指令。 (所以Paint.NET和Photoshop之间的比较可能不完全公平;-) - Niki
@nikie:非常可能,但同样,使用处理器优化的库(如Intel的Integrated Performance Primitives Library)会使汇编程序变得不必要(当然,库本身也是用汇编程序编写的)。当使用特定的编码习惯用法时,也不要低估现代编译器优化SIMD的能力(参考: drdobbs.com/184401611)。此外,由于JIT编译,理论上可以使.NET比本机代码更好地优化,因为它确切地知道它运行的是什么硬件。 - Clifford
...此外,Adobe已经在68000,PowerPC和x86上实现了Photoshop,这是可移植的,避免汇编程序是一个好主意(事实上,Photoshop不是那么快速,我不相信它完全是用C或C ++)。在Paint.NET中,即使拖动选区或图层太慢也无法使用,如果它是适度大的(例如典型的数码相机图像)。您不需要汇编程序代码来加速它。 - Clifford


您列出的主要是用C和C ++编写的(在Mac端使用Objective-C。)其他程序可能用其他语言编写。 ;)


2
2018-01-02 08:15





像往常一样,C,C ++,Objective C。您不需要一种神奇的编程语言来开发大型项目。这更多的是管理和基础设施问题。


2
2018-01-02 08:16



虽然值得注意的是,Objective-C仅在Applle OSX和iOS上流行 - Clifford


由于需要高性能,许多这些“更大”的应用程序是使用编程语言编写的,这些编程语言允许访问系统资源(内存,cpu等)而不需要很多抽象,以便进行性能优化。允许此类访问的语言包括C和C ++,在某些情况下,或者程序的某些部分可能包含低级汇编语言。

由于包含机器资源访问抽象,不适合高性能(实时或近实时)编程任务的语言包括Java,C#和Visual Basic。


2
2018-01-02 08:26





那些不是非常“大”的应用程序,企业应用程序有时是猛犸象(我更喜欢在JAVA中构建它们:))。例如,您的电信运营商使用的流量分析应用程序。无论如何我知道VLC是一个“大型软件”,它是用C ++和qt制作的。


2
2018-01-02 08:35



同意,他对*“真正大型软件”* [原文如此]的想法是一种有限的观点。 - Clifford
那么流量分析程序呢? - Pete Kirkham
我承认流量分析不是最好的描述,因为用C编写的简单嗅探器可以做到这一点。我的意思是什么 nexustelecom.com/products/nexusnetview/index.php (基本上是相关子应用程序的集合).To mods:我不是在尝试推销任何东西,只是通过我对企业应用程序的有限知识分享一些东西。我相信还有很多其他的应用程序会使这个相形见绌:) - Adil Mehmood


看看Joel的文章 http://www.joelonsoftware.com/articles/FiveWorlds.html 那些描述的不同世界在编程语言方面有不同的偏好。

正如其他人所说, 收缩软件 现在主要用C ++或C编写,同样适用于(商业) 游戏。我怀疑你不会考虑 一次性软件 非常大,也许同样适用 嵌入式软件 (但不要低估现代导航系统源代码库的大小)。

内部 软件系统有时可能更大。存在不同的优选编程语言,例如,在COBOL中用金融业务部门存在真正的大规模系统。其他业务部门更喜欢Java环境或Microsoft编程世界(VB6,VBA,VB.NET,C#)。高速数值计算仍然使用(有时是大规模的)Fortran程序。

乔尔也提到了 Web应用程序。这些软件系统通常使用不同的编程语言为系统的不同层构建。例如,浏览器中的Java Script或Flash / Actionscript,Web应用程序服务器上的Ruby,Perl,Python或PHP等脚本语言,以及其中提到的一些其他语言。 内部 后端程序的类别。

缺少的世界是智能手机/应用程序市场(当Joel撰写他的文章时,2002年并不存在)。由于市场仅发展了几年,因此大多数现有应用程序今天并不是非常“大”。


2
2018-01-02 09:10



您的“Web应用程序编程”与Joel的“基于商业网络的软件”之间有什么区别?应用程序如何不是“从互联网上下载”媒体的“Shrinkwrap”? - Pete Kirkham
你用Java构建了一台时间机器?!好文章,谢谢Doc! - dave
@Pete:根据你的评论编辑我的答案。 - Doc Brown
@Rafael:构建时间机器主要是硬件问题;-) - Doc Brown
磁通电容器的控制器在嵌入式Java上运行。 (: - dave