Questions tagged «programming-languages»

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


10
当与“ if”和“ while”一起使用时,为什么语言需要在表达式周围加上括号?
如C,Java中,和C ++语言在使用时都需要围绕整个表达式括号if,while或switch。 if (true) { // Do something } 相对于 if true { // Do something } 我觉得这很奇怪,因为括号是多余的。在此示例中,true是一个单独的表达式。括号不会以我所知的任何方式改变其含义。为什么存在这种奇怪的语法?为什么如此常见?我不知道有什么好处吗?

9
在什么时候可以说我已经“学习”了一种语言?
在我的几年编程中,我玩弄了从Ruby到C ++的所有内容。从学习基本语法(Ruby)到完成一些扩展我的语言能力的重大(对我而言)项目,我已经做了很多工作。考虑到这种多样性(以及真正学习语言永不停止的事实),我什么时候可以说我知道(或已经学习)一种语言?

8
一些语言社区(例如Ruby和Python)如何防止碎片化,而其他语言社区(例如Lisp或ML)却不能?
术语“ Lisp”(或“类似Lisp”)是许多不同语言(例如Common Lisp,Scheme和Arc)的保护伞。其他语言社区也有类似的碎片,例如ML。 但是,Ruby和Python都设法避免了这种命运,因为创新更多地在实现上发生(例如PyPy或YARV),而不是对语言本身进行更改。 Ruby和Python社区是否做了一些特殊的事情来防止语言碎片化?

10
为什么C胜过Pascal?[关闭]
我的理解是,在1980年代,也许也是在1990年代,Pascal和C在生产语言上几乎是一对一的。 帕斯卡的最终灭亡是仅由于Borland忽视了Delphi吗?还是还有更多的东西,例如运气不好或Pascal固有的错误(希望它复兴)。 我对可以支持的历史事实和观察感兴趣,而不是喜欢和不喜欢。

10
语法设计-为什么在不传递任何参数的情况下使用括号?
在许多语言中,语法function_name(arg1, arg2, ...)用于调用函数。当我们想不带任何参数地调用函数时,我们必须这样做function_name()。 我感到奇怪的是,编译器或脚本解释器需要()成功将其检测为函数调用。如果已知一个变量是可调用的,那为什么还function_name;不够? 另一方面,在某些语言中,我们可以执行以下操作:function_name 'test';甚至function_name 'first' 'second';可以调用函数或命令。 我认为如果只需要用括号声明优先顺序,括号会更好,而在其他地方则是可选的。例如,doing if expression == true function_name;应该和一样有效if (expression == true) function_name();。 我认为最烦人的事情是'SOME_STRING'.toLowerCase()原型函数显然不需要参数时。设计师为什么决定反对更简单的选择'SOME_STRING'.lower? 免责声明:不要误会我的意思,我喜欢类似C的语法!;)我只是在问是否会更好。需求是否()具有任何性能优势,还是使理解代码更容易?我真的很好奇原因到底是什么。

11
如何使老板相信ANSI C不适合我们的新项目?[关闭]
几个月前,我们开始开发一个应用程序,以控制内部开发的测试设备并记录一组测量值。它应该具有简单的UI,并且由于必须进行连续记录,因此可能需要线程。该应用程序将使用几年,并且在此期间应由许多计算机科学专业的学生维护。 我们的老板大约30年前毕业(不要被视为冒犯;我也有一半以上的时间都在我的背上),并责令我们在ANSI C中开发此应用程序。理由是他是唯一的一位将一直存在,因此他必须能够了解我们在做什么。他还裁定我们不应使用抽象数据类型。他甚至给我们列出了他希望我们使用的全局变量的名称(叹气)。 我实际上尝试了这种方法一段时间,但确实让我放慢了脚步,以确保所有指针操作都是安全的并且所有字符串的大小均正确。此外,与手头问题实际相关的代码行数仅占我们代码库的一小部分。几天后,我放弃了整个工作,并使用C#重新开始。我们的老板已经看到了程序的运行,他喜欢它的工作方式,但是他不知道该程序是用另一种语言编写的。 下周,我们两个人将开会讨论源代码,以便他“知道如何维护它”。我有点害怕,我想听听你们可以用哪些论点支持我的决定。 ward弱的你

16
如何在不支持异常的语言中处理零除?
我正在开发一种新的编程语言来解决一些业务需求,并且该语言面向新手用户。因此,不支持该语言中的异常处理,即使我添加了它,我也不希望他们使用它。 我已经到了必须实现除法运算符的地步,我想知道如何最好地处理除零错误? 我似乎只有三种可能的方式来处理这种情况。 忽略错误并产生0结果。尽可能记录警告。 将其添加NaN为数字的可能值,但这引发了有关如何处理NaN语言其他区域中的值的问题。 终止程序的执行并将严重错误报告给用户。 选项1似乎是唯一合理的解决方案。选项#3不切实际,因为该语言将用作夜间cron来运行逻辑。 解决零除错误的方法是什么,选择#1会有什么风险。

14
我们能否就解释代码和编译代码的性能做出一般性陈述?
我正在比较两种技术,以便提出建议,公司应该使用其中的一种。技术A的代码被解释,而技术B的代码被编译为机器代码。在我的比较中,我指出技术B一般而言会具有更好的性能,因为它没有解释过程的额外开销。我还指出,由于程序可以用多种方式编写,因此用技术A编写的程序仍然有可能胜过使用技术B编写的程序。 当我将此报告提交审核时,审核员表示我没有提供清楚的理由说明为什么解释流程的总费用通常会足够大,以至于我们可以得出结论,技术B的性能会更好。 所以我的问题是,我们能否谈谈编译/解释技术的性能?如果我们可以说编译的速度通常快于解释的速度,那么我该如何说服审阅者呢?

8
为什么C在C ++不足的地方提供语言“绑定”?
我最近想知道何时在C ++上使用C,反之亦然?幸运的是,有人已经击败了我,尽管花了一段时间,但我能够消化该问题的所有答案和评论。 但是,该帖子中的一个项目一直不断地被处理,而没有任何示例,验证或解释: “当您想为库提供多种语言绑定时,C代码非常有用” 这是一个释义。我应该指出,有几个人指出,C ++可以通过某种extern功能实现多种语言绑定,但是,如果您完整阅读该文章,则很明显C是可移植性/语言绑定的理想之选。我的问题是:为什么? 有人可以提供一些具体的原因,为什么用C编写库可以简化其他语言的绑定和/或可移植性?


30
您认为编程的第一原则是什么?
我一直喜欢问自己“这的首要原则是什么?” 在我学到了一些基本知识之后(例如编程)。这是一个鼓舞人心的问题,IMO,可能会迫使您考虑某些事物背后的最重要原则,尤其是诸如编程之类的技能。 那么,您认为编程的第一个原则是什么?我稍后再给出答案。

11
Java的现代回顾
我从事编程已经有几年了,我从Java开始。在我那段时间里,我发现许多不同的来源声称Java在某种程度上是一种劣等语言。我很清楚每种语言都有其优点和缺点,但是我所读过的有关Java的很多东西似乎都是过时的。 Java劣势最常被引用的原因是它比其他本地编译语言(例如C ++)慢得多。许多人批评游戏设计师Notch(开发了Minecraft)使用Java,因为它显然缺乏性能部门。我知道Java的运行速度要慢得多,但是此后有了很多改进,尤其是JIT编译。 我今天想就Java作为一种语言获得一些客观的见解。所以我的问题分为四个部分。 性能。 一种。今天的Java速度与C ++相比如何? b。是否可以使用Java创建现代AAA标题? C。如果有的话,在哪些方面Java比C ++慢?(即数字运算,图形或周围所有图形) Java现在被视为编译语言还是解释语言? 自早期以来,已经解决了Java的一些主要缺点? Java有哪些主要缺点需要解决? 编辑: 只是为了澄清起见,我并没有制作Java vs C ++,显然平均而言,c ++的速度要比Java快一点。现在,我只需要比较一下Java作为语言的成熟度就可以了。由于c ++永远存在,我想我将是一个比较点。

15
我不认识C。为什么我应该学习它?[关闭]
我的第一种编程语言是PHP(gasp)。之后,我开始使用JavaScript。我最近在C#中完成工作。 我从来没有看过像C这样的中低级语言。 大型编程社区的普遍共识是:“坦率地说,没有学习C之类的程序员,就无法处理诸如指针,数据类型,通过引用传递值等编程概念。” 我不同意。我认为: 由于高级语言易于访问,因此更多的“非程序员”陷入困境 为了真正用高级语言完成所有工作,需要理解大多数“学习低级优先”的拥护者都宣扬的相同概念。 有些人需要了解C。这些人的工作要求他们编写低至中级代码。我确定C很棒,而且我确定有一些懂C的坏程序员。 为什么会有偏见?作为一个优秀,诚实,饥饿的程序员,如果我不得不学习C(出于某些不可预见的原因),我将学习C。考虑到那里的多种语言,好的程序员是否应该专注于学习什么能促进我们的发展?我们不应该学习我们感兴趣的东西吗?我们不应该利用有限的时间前进吗?为什么有些程序员不同意这一点? 我相信在工作上追求卓越是优秀程序员和劣质程序员之间的基本确定性特征。 在现实世界中,有没有人举例说明过用高级语言(例如Java,Pascal,PHP或JavaScript)编写的东西如何真正受益于C的先验知识?实例将是最大的赞赏。


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.