Questions tagged «programming-languages»

用于指示计算机执行计算步骤以完成任务的人工语言。它们允许程序员与计算机进行通信。

12
为什么在一种产品或软件的开发中使用多种编程语言?
我是一名刚毕业的研究生,旨在攻读计算机科学硕士学位。我遇到了多个真正吸引我并鼓励我为它们做出贡献的开源项目(CloudStack,OpenStack,moby和Kubernetes仅举几例)。我发现它们中的大多数有一个共同点,就是使用多种编程语言(例如Java + Python + Go或Python + C ++ + Ruby)。我已经看过另一个问题,它涉及如何使多种编程语言相互通信:如何使两种不同的编程与两种不同的语言交互? 我想了解提示企业使用多种编程语言的要求。什么样的要求或要求类型使软件架构师或项目负责人说:“我建议对于任务1使用语言X,对于任务2使用语言Y”?我似乎无法理解在同一产品或软件中使用多种编程语言的原因。

4
飞机使用什么操作系统,以及使用什么编程语言开发?[关闭]
我想知道是否有人知道商用飞机使用什么操作系统(例如波音或空中客车公司)。 另外,什么是(首选)实时编程语言?我听说波音公司使用了Ada,所以我的问题是-为什么要使用Ada?波音人选择该语言的标准是什么?(我猜想Java并不是一个不错的选择,如果恰好在垃圾收集器启动时唤醒它)。

14
是什么触发了lambda函数在现代主流编程语言中的流行?
在过去的几年中,匿名函数(又名lambda函数)已成为一种非常流行的语言结构,几乎每种主流/主流编程语言都已经引入了它们,或计划在即将发布的标准修订版中引入它们。 但是,匿名函数是数学和计算机科学中一个非常古老且非常著名的概念(由数学家Alonzo Church于1936年左右发明,并自1958年以来被Lisp编程语言使用,请参见此处)。 那么,为什么今天的主流编程语言(其中许多起源于15至20年前)从一开始就不支持lambda函数,而仅在后来才引入它们呢? 在过去的几年中,是什么导致了匿名功能的广泛采用?是否有某种特定的事件,新的要求或编程技术引发了这种现象? 重要的提示 这个问题的重点是在现代主流(因此,除了少数例外,非功能性)语言中引入匿名功能。另外,请注意,匿名函数(块)存在于Smalltalk中,这不是一种功能语言,并且标准命名函数甚至在程序语言(如C和Pascal)中已经存在很长时间了。 请不要通过谈论“采用功能范式及其好处”来概括您的答案,因为这不是问题的主题。

14
如何真正掌握编程语言?
我知道学习语言,您只需购买一本书,按照示例操作,并尽可能尝试练习。但是,我真正要寻找的是一旦学习了该语言,该如何掌握它。 现在我知道经验是一个主要因素,但是学习语言的内部知识,底层结构是什么等等。 那里有文章说读这本书,读那本书,做这个游戏以及那个游戏。但是对我来说,这并不意味着要精通一门语言。我希望能够阅读别人的代码并理解它,无论这样做有多困难。了解何时使用功能以及何时使用其他功能等。 名单可以继续下去,但我相信我已经指出了。:) 最后,如果需要,可以使用任何语言作为示例,尽管最好以C作为示例。


5
当我们已经有了抽象类时,为什么要将默认方法和静态方法添加到Java 8的接口中?
在Java 8中,接口可以包含已实现的方法,静态方法和所谓的“默认”方法(实现类不需要重写)。 以我的观点(可能是幼稚的),不需要违反这样的接口。接口一直是您必须履行的合同,这是一个非常简单而纯粹的概念。现在,它是几件事情的混合体。在我看来: 静态方法不属于接口。它们属于实用程序类。 根本不应该在接口中允许使用“默认”方法。为此,您可以始终使用抽象类。 简而言之: 在Java 8之前: 您可以使用抽象和常规类来提供静态和默认方法。接口的作用很明显。 接口中的所有方法都应通过实现类来覆盖。 您不能在不修改所有实现的情况下在接口中添加新方法,但这实际上是一件好事。 在Java 8之后: 接口和抽象类之间几乎没有区别(除了多重继承)。实际上,您可以使用接口模拟常规类。 在对实现进行编程时,程序员可能会忘记覆盖默认方法。 如果类试图实现两个或多个具有默认方法且具有相同签名的接口,则会出现编译错误。 通过向接口添加默认方法,每个实现类都会自动继承此行为。这些类中的某些类可能并未在设计时考虑到该新功能,因此可能会引起问题。例如,如果有人将新的默认方法添加default void foo()到interface Ix,则不会编译Cx实现Ix并具有具有foo相同签名的私有方法的类。 进行此类重大更改的主要原因是什么?它们会带来哪些新的好处(如果有)?


18
为什么冗长对编程语言不利?[关闭]
我看到很多人抱怨编程语言的冗长。我发现,在一定范围内,编程语言越冗长,就会越容易理解。我认为冗长程度也加强API了为该特定语言编写更清晰的。 我能想到的唯一缺点是,它会使您键入更多内容,但是我的意思是,大多数人都使用IDE为您完成所有工作。 那么,冗长的编程语言可能有哪些弊端?

17
(为什么)我应该学习一种新的编程语言吗?[关闭]
我对Java,C / C ++,JavaScript / jQuery相当精通,并且对Objective-C也很熟练。我对这些语言及其相应的框架也相当有生产力,并且在保持代码“干净”和可维护的同时,确实很轻松地生产了企业级系统(以及小规模的系统)(是的,我可以在六点后阅读我自己的代码个月:) 除非平台(iPhone,iPad等)或客户/实施组织要求,否则“为什么”我应该学习一种新的编程语言?纯娱乐”?如果我不想为此做任何有价值的事情,那会带来什么乐趣呢? 我的很多同仁都准备学习“下一个新事物/语言”,通常是Python,Ruby或PHP(仅列举一些流行的语言)。现在,仅了解语言本身就是徒劳的恕我直言。您还需要了解框架,了解它们的用法/ API以及“良好的实施规范”等。 因此,从“经济”的角度来看,学习一种新的编程语言是否有任何好处?如果以一种快速而肮脏的方式学习该语言,那么它也可能会被用于快速而肮脏的原型设计/实现-但我认为这不是对时间/精力的合理投资。 因此,为什么我(或任何与此有关的人)应该学习一种新的编程语言,而不是“很有趣,所以让我们尝试一下”-如果从长远来看,时间的投入可能不值得?

3
为什么编程语言(尤其是C)使用大括号而不是方括号?
实际上,“ C样式语言”的定义可以简化为“使用花括号({})”。我们为什么要使用该特定字符(为什么不使用更合理的字符(如[],至少在美国键盘上不需要Shift键)? 这些花括号会给程序员的生产力带来实际的好处,还是新的语言设计师应该寻找替代品(例如,Python背后的人)? Wikipedia告诉我们C 使用大括号,但不是为什么。Wikipedia上有关基于C的编程语言列表的一篇文章表明,此语法元素有些特殊: 广义上讲,C系列语言是使用类似C的块语法的语言(包括大括号来开始和结束块)。

14
仍然使用C编程语言吗?
我是C#程序员,我的大部分开发工作都是针对网站以及一些Windows应用程序。就C而言,由于没有必要,我已经很长时间没有使用它了。当我的一个朋友说她在学习C#时需要学习C来测试工作时,我感到惊讶。 我认为,只有有人用C进行开发,才会有人学习C进行测试。据我所知,所有与COM和硬件设计有关的开发也都用C ++进行。因此,如果您需要使用C ++,则学习C毫无意义。我也不相信历史意义,那么为什么要花时间和金钱来学习C? C仍用于任何新软件开发或其他任何形式吗?

16
为什么用户定义的运算符不更常见?
我从功能语言中错过的一个特性是,运算符只是函数,因此添加自定义运算符通常与添加函数一样简单。许多过程语言都允许运算符重载,因此从某种意义上说,运算符仍然是函数(在D中,该运算符在模板参数中作为字符串传递,这是非常正确的)。 似乎在允许运算符重载的地方,添加额外的自定义运算符通常很简单。我找到了这篇博客文章,该文章认为由于优先级规则,自定义运算符不能很好地使用后缀表示法,但是作者为该问题提供了几种解决方案。 我环顾四周,找不到支持该语言中的自定义运算符的任何过程语言。有一些技巧(例如C ++中的宏),但这与语言支持几乎不一样。 由于此功能实施起来很简单,为什么它不更常见? 我知道这可能会导致某些丑陋的代码,但是这并没有阻止语言设计人员过去添加易于使用的有用功能(宏,三元运算符,不安全的指针)。 实际用例: 实现缺少的运算符(例如,Lua没有按位运算符) 模拟D ~(数组串联) DSL 使用|如UNIX管道风格的语法糖(使用协程/发电机) 我对确实允许自定义运算符的语言也很感兴趣,但是我对为什么它被排除在外更感兴趣。我曾考虑过分叉一种脚本语言来添加用户定义的运算符,但是当我意识到自己没在任何地方看到它时就停下来了,所以可能有充分的理由为什么比我更聪明的语言设计师不允许这样做。


15
是什么让C在OOP时代如此受欢迎?[关闭]
我用C和C ++编写了大量代码,但是没想到C是第二大流行语言,仅次于Java。 TIOBE编程社区索引 我很好奇为什么在这个OOP时代,C仍然如此流行?请注意,在前5种流行的编程语言中,有4种是“现代”的,面向对象的语言。 现在,我同意您可以在C中使用OOP,但这有点痛苦和不雅(至少与我猜想的C ++相比)。那么,是什么使C如此受欢迎?是效率吗?低级 绝大多数已经存在的库或其他库?

8
如何修改您没有源代码的程序的输出
在我们公司中,我们有一个小程序(大小为.exe 500Kb)进行数学计算,最后将结果吐出到Excel电子表格中,该电子表格用于继续我们的工作流程。 我想在Excel电子表格上修改列,间距格式并添加VBA逻辑等,但是由于该参数无法在该程序中配置,因此在我看来,修改它的唯一方法是对.exe进行分解/反向工程。 没有人知道用什么语言编程,我们唯一知道的是: 超过20年前开发 开发者10年前退休 GUI应用 独立运行 尺寸500Kb 有什么建议可以解决这类问题吗?逆向工程是唯一的选择,还是有更好的方法?

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.