Questions tagged «language-features»

有关特定计算机语言的独特方面的问题,尤其是在编写方式或提供给程序员的表达能力方面。


30
您想在PHP中拥有哪些功能?[关闭]
既然现在是假期,每个人都在许愿,我想知道-您希望PHP将添加哪些语言功能?我对这种语言的一些实用建议/希望很感兴趣。实际上,我的意思是: 可以实际完成的操作(不是:“我希望PHP猜出我的代码的含义并为我修复错误”或“我希望任何代码都可以在5毫秒内执行”) 不需要将PHP更改为另一种语言的东西(不是:“我希望他们放弃$符号并使用空格而不是花括号”或“我希望PHP被编译,静态键入并以#命名”) 不需要破坏所有现有代码的东西(不是:“让我们重命名500个函数并更改它们的参数顺序”) 东西不改变语言或它的一些有趣的方面(不是:“我希望有扩展XYZ协议,支持”或“我想了bug#12345终于固定”) 不仅仅是喧嚣的东西(不是:“我希望PHP不会糟透了”) 有人有美好的祝愿吗? 国防部编辑:Stanislav Malyshev是一名核心PHP开发人员。


8
为什么要设计一种没有异常处理机制的现代语言?
许多现代语言提供了丰富的异常处理功能,但是Apple的Swift编程语言没有提供异常处理机制。 像我一样,我陷入了异常,无法理解这意味着什么。Swift有断言,当然还有返回值。但是我很难想象我基于异常的思维方式如何映射到一个没有例外的世界(就此而言,为什么这样的世界是可取的)。有像Swift这样的语言我无法做的事情我可以做例外吗?通过丢掉异常我能获得一些收益吗? 例如,我如何最好地表达这样的话 try: operation_that_can_throw_ioerror() except IOError: handle_the_exception_somehow() else: # we don't want to catch the IOError if it's raised another_operation_that_can_throw_ioerror() finally: something_we_always_need_to_do() 缺少异常处理的语言(例如,Swift)?

7
为什么在C ++中必须在类外部分别定义静态数据成员(与Java不同)?
class A { static int foo () {} // ok static int x; // <--- needed to be defined separately in .cpp file }; 我看不到需要A::x在.cpp文件(或用于模板的同一文件)中分别定义。为什么不能同时A::x声明和定义? 是否出于历史原因被禁止使用? 我的主要问题是,如果static同时声明/定义数据成员(与Java相同)会影响任何功能吗?

30
编程中有什么真的是邪恶的吗?[关闭]
因此,出现了很多问题,询问是X邪恶,是Y邪恶。 我的观点是,没有语言构造,算法或任何有害的东西,只有那些被滥用的语言。天哪,如果您看上去很努力,甚至还有goto的有效用法。 那么,在编程中是否存在绝对邪恶的东西,那在所有情况下都与最佳实践完全不兼容?如果是这样,那是什么?还是只是不好的程序员不知道什么时候合适? 编辑:明确地说,我不是在谈论程序员的工作(例如不检查返回码或不使用版本控制-它们是不良程序员做出的选择),我的意思是工具,语言,语句,无论是什么,坏...

5
学习Python的Java开发人员:我需要包扎哪些概念?
背景:我已经完成了一些教程并编写了一些小项目。使用Google和StackOverflow一切都很好。 在过去的几天里,我几次想知道“我想念什么?” -我觉得我在用Python编写代码时仍在思考Java。 StackOverflow上的这个问题充满了关于学习Python需学习哪些资源的提示,但我仍然觉得我是Java开发人员,有字典(无需双关语)可以翻译成Python。 我真正想做的是重构我的头脑,使其能够编写Pythonic Python而不是伪装成Python的Java,而又不会失去我的Java技能。 因此,我的问题的症结在于:Java开发人员真正需要学习什么概念才能思考Pythonic?这包括需要学习的所有内容。 注意:我是在询问语言概念,而不是语言语法。


2
什么是第四代和第五代编程语言?还有更多吗?[关闭]
由于通常在学校/学院级别进行分类,因此流行的编程语言(C#,Java,C ++)都是第3代语言(从机器的物理部件中具有更高的抽象级别)。同样,汇编语言被分类为第二语言,机器语言被分类为第一代语言。 最初,我认为SQL应该被认为是第四代语言,因为它更抽象,并且与循环细节和描述性相去甚远。 刚才我发现有第四代和第五代语言,但是将任何编程语言或技术归为第四代或第五代语言的基础是什么? 另外,还有第六代或第七代语言吗?

7
为什么大多数主流语言不支持“ x <y <z”语法进行三路布尔比较?
如果我想比较两个数字(或其他排序良好的实体),则可以使用x &lt; y。如果我想比较其中的三个,那位高中代数的学生会建议尝试x &lt; y &lt; z。然后,我中的程序员将回答“不,那是无效的,您必须这样做x &lt; y &amp;&amp; y &lt; z”。 我遇到的大多数语言似乎都不支持这种语法,考虑到它在数学中的普遍性,这很奇怪。Python是一个明显的例外。JavaScript 看起来像是一个异常,但实际上,它只是运算符优先级和隐式转换的不幸产物。在node.js中,1 &lt; 3 &lt; 2评估为true,因为它确实是(1 &lt; 3) &lt; 2 === true &lt; 2 === 1 &lt; 2。 所以,我的问题是这样的:为什么x &lt; y &lt; z具有预期语义的编程语言不常见?

7
Haskell的类型系统是理解函数式编程的障碍吗?[关闭]
我正在研究Haskell,目的是理解函数式编程,并期望我将应用在其他语言(主要是Groovy,Python,JavaScript)中获得的见解。 我之所以选择Haskell,是因为我有一个印象,那就是它纯粹是功能性的,不会允许任何对状态的依赖。 我没有选择学习Haskell,因为我对导航一个非常严格的类型系统感兴趣。 我的问题是:强类型系统是否是一种极其纯净的功能语言的必要副产品,还是这与Haskell无关的设计选择?

4
为什么在C ++中不隐式转换`void *`?
在C语言中,不需要将a强制转换void *为任何其他指针类型,因此始终可以安全地对其进行提升。但是,在C ++中并非如此。例如, int *a = malloc(sizeof(int)); 在C语言中有效,但在C ++中无效。(请注意:我知道您不应该malloc在C ++中使用,或者在这种情况下new,应该使用智能指针和/或STL;纯粹出于好奇而问)。为什么C ++标准不允许这种隐式转换,而C标准呢?

5
为什么用Lisp学习Lisp口译员如此重要?
我已经看到了许多针对新程序员的CS课程和学习建议,呼吁有抱负的程序员学习专门用Lisp编写的Lisp解释器。所有这些站点都表示类似以下内容:“具有智力上的启示”,“这是每个认真的程序员应有的启发经验”或“它向您展示了硬件/软件的关系”以及其他含糊的陈述,尤其是本文摘自这个著名的方法。 我的问题的普遍看法是,lisp如何实现上述目标,为什么选择lisp?为什么不使用其他语言? 我之所以这样问是因为我刚刚完成了使用scheme编写的方案解释器(摘自SICP http://mitpress.mit.edu/sicp/),现在我正在使用scheme编写python解释器,而我正努力地拥有这个传奇的顿悟那应该专门来自前者。我正在寻找两种语言之间的具体技术细节,我可以在他们的方案解释器中利用它们来了解程序的工作方式。 进一步来说: 为什么对以其所解释的语言编写的解释器进行研究如此强调-是将原始语言和所构建的语言保持直觉仅仅是一项伟大的心理锻炼,还是存在只能根据其本质找到解决方案的特定问题?原始语言? Lisp口译员如何为未来的软件设计展示良好的体系结构概念? 如果我使用其他语言(如C ++或Java)进行此练习,会错过什么? 什么是最常用的,从这个练习外卖或“心理工具”?** **我选择我做,因为我的答案已经注意到,我已经从这个练习更多的技巧获得了在我的脑海设计解析工具,比其他任何一个工具,我想找到解析,可能对计划更好的工作,不同的方法解释器比python解释器。

10
编程语言中的每个函数调用/块都在单独的线程中完成?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 2年前关闭。 我目前正在创建一种有趣的编程语言,其思想是每个函数调用/新块(如果有子句,循环等)将在单独的线程中工作。它不是自动创建新线程,而是应该自动执行该标准,并且如果您希望它在主线程中运行,则必须指定它。 我对多线程并行编程的了解不多,但是我知道一些基础知识(期货,线程安全对象)。因此,我想知道这样的语言在语法上看起来如何明智,甚至是否有可能以它开头?目标不是使它“有用”,更多是为了它的乐趣和学习经验。 (很抱歉,如果这是错误的发帖地点。如果是这样,请将您指向允许我这样的问题的正确地点,我将不胜感激。)


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.