Questions tagged «syntax»

语法是指一组规则,这些规则定义了如何用语言编写结构正确的程序。它显然不处理程序的含义或解释。

9
让赋值运算符返回值有什么好处?
我正在开发一种语言,打算取代Javascript和PHP。(我看不出有任何问题。这两种语言都不具有庞大的安装基础。) 我要更改的一件事是将赋值运算符转换为赋值命令,从而取消了使用返回值的功能。 x=1; /* Assignment. */ if (x==1) {} /* Comparison. */ x==1; /* Error or warning, I've not decided yet. */ if (x=1) {} /* Error. */ 我知道这将意味着C员工如此钟爱的单行功能将不再起作用。我发现(几乎没有我个人经验的证据),这种情况在绝大多数情况下确实是比较操作。 还是?赋值运算符的返回值是否有任何实际用途,无法轻易重写?(对于具有这种概念的任何语言。)

30
您最常使用的编程语言最讨厌什么语法元素?[关闭]
无论您多么热爱一种编程语言,其中总是有一些细节并不尽如人意。 在这个问题上,我想特别关注语法元素。在您经常使用的一种编程语言(也许是您最喜欢的编程语言,或者您可能不得不在工作中使用的一种编程语言)中,您发现最不可读,不清楚,不便或不愉快的语法元素是什么?

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

12
您会使用Trilean(True,False,??)吗?
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 有时我有一个应返回true或false的函数。但是有时三个可能的值会更有意义。 在某些语言中,这些情况将使用整数或例外进行处理。 例如,如果用户年龄超过18岁,则要处理该用户的年龄。而且您具有这样的功能。 if(user.isAdult(country_code)){ //Go On }else{ // Block access or do nothing } 但是在某些情况下,取决于您的应用程序的构建方式,我可以看到生日字段不完整的情况。然后,此函数应返回未确定的内容。 switch(user.isAdult()){ case true: // go on break; case undetermined: //Inform user birthday is incomplete case false: //Block access } 正如我说过的,我们可以使用Exceptions和Int来处理它,但是我发现在语言中嵌入一个true,false,undefinedtermed而不是使用一些内部定义的常量是很性感的。
22 syntax 

2
为什么C使用星号作为指针?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 4年前关闭。 我现在正在学习C。 我感到奇怪的是,创建者选择星号(*)作为指针的符号,而不是实际上看起来像指针(->)的符号。 考虑到取消引用和函数指针可能会造成混淆,使用星号是否有历史或什至实际的原因?
21 c  history  syntax 

4
python块中的冒号在技术上是必要的吗?
这实际上只是想要了解更多信息的python新手的理论问题。 在python中的块初始语句之后,我一直忘了冒号。这些就是我的意思: for <variable> in <sequence>: if <blah blah>: 我的想法是,我一直忘记的一个原因是它们实际上是隐式的:不管是否冒号,该语句都以该行结尾。 我的问题-为了学习python语法如何工作而问-是冒号是否真的不必要?我是否要更改python语法,以便不再需要冒号,是否会中断?这会使某些陈述模棱两可或不可能吗?
19 python  syntax  theory 

6
是否有一种语言可以更好地转换为C语言?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 CoffeeScript是一种受Ruby启发的具有清晰语法的语言,可以转换为JavaScript。有没有类似的语言可以转换成C语言,从而在不影响性能的情况下提供更具可读性的代码?如果没有类似的东西存在,是否有充分的理由不创建它?
19 c  syntax  compiler 

1
美元符号蓝调:JavaScript和PHP
我从小就对C ++和Java进行编程,那里的一切都是安全而美丽的。编译器一定要检查我是否流浪。当然,每个人在大学里都做了一点Perl,但我没有吸气。这些天的孩子们全都在后端使用PHP,而在前端则使用Javascript。在尝试时髦时,我也这样做(用于Web开发)。我一直遇到的问题是,我不小心在Javascript的常规变量前添加了美元符号($),当然没有人说什么,因为这是jQuery对象经常使用的合法语法。 是否有任何调试工具或开发技巧来捕捉这种美元符号的混乱?您是否经常犯同样的错误,如何从情感上处理错误?Chrome开发者工具并不总是会看到这是Javascript错误。我使用PhpStorm和Emacs进行开发,但是这些并没有引起我的愚蠢,尽管我怀疑Emacs确实可以,但是选择不告诉我有关情况。 如果您认为这个问题很荒谬,我认为您是对的。但是我们生活在一个变量前面有美元符号的世界。在这样的世界里,没有什么是荒谬的。


2
Javascript三元运算符与||
我之前看过一些node.js代码,我发现编写它的人似乎更喜欢以下语法: var fn = function (param) { var paramWithDefault = null == param ? 'Default Value' : param; } 在我认为更为简洁的地方: var fn = function (param) { var paramWithDefault = param || 'Default Value'; } 我想知道第二种形式是否实际上是更易为社会接受的JavaScript语法,为此,我比三元运算符更清楚地看到了第二种形式。 我注意到在第一个示例中,他使用的是双重等于(而不是三次等于),这意味着它将“未定义”计数为null,这将减少我能想到的影响。但是,我在很多地方都读过==在JavaScript中是一个非常邪恶的运算符(JIRCint非常反对它,IIRC)。

5
为什么用这种方式设计数组,指针和函数的C语法?
看过(问!)之后,有很多类似的问题 int (*f)(int (*a)[5])在C 中是什么意思? 甚至看到他们制作了一个程序来帮助人们理解C语法,我不禁想知道: 为什么用这种方式设计C的语法? 例如,如果我正在设计指针,我会将“指向10个元素的指针数组的指针”转换为 int*[10]* p; 而不是 int* (*p)[10]; 我觉得大多数人都同意,这要简单得多。 所以我想知道,为什么这种不直观的语法?语法是否解决了我未意识到的特定问题(也许有歧义?)?
16 c  syntax 

7
在C中惯用的任意块是什么?
块是要执行的语句列表。在C中出现块的示例是在while语句和if语句之后 while( boolean expression) statement OR block if (boolean expression) statement OR block C还允许将一个块嵌套在一个块中。我可以用它重用变量名,假设我真的很喜欢'x' int x = 0; while (x < 10) { { int x = 5; printf("%d",x) } x = x+1; } 将数字5打印十次。我想我会看到需要保持变量名数量少的情况。也许在宏观扩张中。但是,我看不出有任何硬性理由需要此功能。任何人都可以通过在使用该功能的地方提供一些惯用法来帮助我理解此功能的用法。
15 c  syntax 

12
是否有任何尝试自行修复语法错误的编译器?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 不久前,我听说曾经有一个编译器试图通过分析上下文并推断出意图来修复语法错误。 这样的编译器真的存在吗?显然,它没有什么实用价值,但是玩和学习会很有意思。
15 syntax  compiler 

6
单线与可读性:何时停止减少代码?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 语境 我最近对产生更好的格式化代码感兴趣。更好的意思是“遵循足够多的人认可的规则,将其视为一种良好的做法”(当然,因为永远不会有一种独特的“最佳”编码方式)。 如今,我主要使用Ruby进行编码,因此我开始使用linter(Rubocop)为我提供一些有关代码“质量”的信息(此“质量”由社区驱动的项目ruby-style-guide定义)。 请注意,我将使用“质量”作为“质量格式化的”,与其说是对代码的效率,即使在某些情况下,代码效率实际上是由代码是怎么写的影响。 无论如何,做完所有这些事情,我意识到(或至少记得)一些事情: 一些语言(最著名的是Python,Ruby等)允许编写出色的一线代码 遵循一些代码准则,可以使代码大大缩短,但仍然非常清晰 但是,过于严格地遵循这些准则会使代码不太清晰/不易阅读 该代码几乎可以完全遵守某些准则,但质量仍然很差 代码的可读性主要是主观的(如“我发现对开发人员完全不清楚的内容”) 这些只是观察,并非绝对的规则。您还将注意到,此时代码的可读性和遵循的准则似乎无关紧要,但此处的准则是一种缩小重写代码块的方式的方法。 现在,举一些例子,使所有这些变得更加清楚。 例子 我们来看一个简单的用例:我们有一个带有“ User”模型的应用程序。用户具有可选firstname和surname必填email地址。 我想编写一个方法“ name”,firstname + surname如果至少存在用户firstname或,则将返回该用户的名称(),如果没有,则返回surname其email后备值。 我还希望此方法采用“ use_email”作为参数(布尔值),从而允许将用户电子邮件用作后备值。此“ use_email”参数应默认(如果未传递)为“ true”。 用Ruby编写最简单的方法是: def name(use_email = true) # If firstname and surname are both blank (empty string or undefined) # and we can use the email... …


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.