Questions tagged «semantics»

12
API和SDK有什么区别?
当我意识到无法真正分辨出API和SDK之间的区别时,我正在研究各种API和SDK。 从概念上讲,这两种方法都是您的程序与另一种软件进行交互并控制另一种软件提供的资源的一种方式,而无论该其他软件是Web服务,最终用户应用程序,OS服务或守护程序还是内核设备驱动。 那么,SDK和API在语义上有什么区别?


10
永远不要在Java中使用字符串?[关闭]
我偶然发现了一个博客条目,不鼓励在Java中使用字符串来使您的代码缺乏语义,建议您改用瘦包装器类。这是该条目提供的用于说明问题的示例的前后: public void bookTicket( String name, String firstName, String film, int count, String cinema); public void bookTicket( Name name, FirstName firstName, Film film, Count count, Cinema cinema); 根据我阅读编程博客的经验,我得出的结论是90%都是胡说八道,但是我想知道这是否是正确的观点。不知何故,我觉得不合适,但是我无法确切指出编程风格的不对之处。

8
为什么要打扰正确地和语义地标记?
请注意,我(尝试)尽可能地在语义上进行标记,因为我喜欢它们的外观和感觉,但不是因为我意识到任何其他惊人的优点。我的问题的重点是能够教育他人 好吧,我看过很多文章和教程,这些文章和教程经常说“让我们以最可能的语义方式进行标记”。 但是我想到了一个奇怪的想法,为什么? 为什么一个人需要(或想要)去打扰那些传达正确语义的特定元素?具体地讲,我指的是新的HTML5元素,如<time>,<output>,或<address>。特别是,如果页面“有效”(在所有浏览器中都能很好地呈现)。 为什么我要使用诸如<time>或元素<address>,而根本没有任何元素(或在最坏的情况下,泛型<span>)表现得那么好呢? 我之所以这样问,是因为我看到许多(非常受欢迎的)网站(包括此网站)没有遵循这些所谓的最佳实践。
55 html  html5  semantics  markup 

9
没有并发性时,不变性是否值得?
似乎总是/经常提到线程安全是使用不可变类型(尤其是集合)的主要好处。 我有一种情况,我想确保方法不会修改字符串字典(在C#中是不可变的)。我想尽可能地约束事物。 但是,我不确定将依赖项添加到新程序包(Microsoft不可变集合)是否值得。性能也不是大问题。 因此,我想我的问题是,在没有硬性能要求且没有线程安全问题的情况下,是否强烈建议使用不可变集合?考虑一下值语义(在我的示例中)可能是也可能不是要求。

3
什么是帮手?是设计模式吗?是算法吗?
也许有点tongue之以鼻,但由于我无法在Google的任何地方找到此答案,因此请确保Software Engineering拥有以下答案: 什么是帮手? 我已经看到该名称在每个地方都被使用(模块名称,类名称,方法名称),好像语义是深刻而有意义的,但是在计算机科学的背景下(尽管我没有学位),我从未在任何地方看到描述或定义! 是设计模式吗?是算法吗?我曾经在一个程序中工作过,在该程序中,模块和类都被称为somethingsomethinghelper(其中某些东西也是相当通用的),然后我立即将其重命名为对我来说有意义的东西,但是我感觉好像在这里丢失了一些东西!


3
使用堆栈表示函数调用语义的替代方法有哪些?
我们都知道并喜欢函数调用通常是使用堆栈来实现的。有框架,返回地址,参数等等。 但是,堆栈是实现细节:调用约定可能会做不同的事情(例如,x86快速调用使用(某些)寄存器,MIPS和跟随器使用寄存器窗口,等等),优化甚至可以做其他事情(内联,帧指针省略,尾调用优化..)。 当然,许多机器(如JVM和CLR这样的VM,以及带有PUSH / POP等的x86等实际机器)上都存在方便的堆栈指令,可以很方便地将其用于函数调用,但是在某些情况下,这是可能的以不需要调用堆栈的方式进行编程(我在这里考虑的是Continuation Passing Style,或者消息传递系统中的Actor) 因此,我开始感到奇怪:是否可以在没有堆栈的情况下实现函数调用语义,或者更好地使用不同的数据结构(可能是队列,或者是关联映射?) ,当然,我知道堆栈非常有用。方便(它无处不在的一个原因),但是最近我碰到了一个使我感到奇怪的实现。 你们是否知道是否曾经用任何语言/机器/虚拟机完成过这项工作?如果有的话,有哪些显着的区别和缺点? 编辑:我的直觉是不同的子计算方法可以使用不同的数据结构。例如,lambda演算不是基于堆栈的(函数应用程序的想法通过简化来体现),但是我正在查看一种真实的语言/机器/示例。这就是为什么我要问...

4
可迭代和可枚举之间有区别吗?
许多语言似乎具有非常相似的结构,称为可迭代或可枚举。这些是可以迭代或枚举的结构,在我看来,它们极为相似。这些单词是同义的还是可迭代的和可枚举的之间存在细微的语义差异,这证明了术语的选择是正确的?

3
一种方法会使另一种方法超载,还是两种方法都“超载”
如果我创建此方法 public void foo() 然后我创建一个像这样的重载版本 public void foo( string bar ) 我们是说第二个函数重载了第一个函数,还是两个方法都同样“重载了”? 这意味着(我认为),存在一个基本类型的函数,该函数正在被另一个函数重载(有点像继承,但不是真的)。 假设一种方法可以“超载另一种”,那么即使这只是一个词,也将暗示诸如“ overloader”和“ overloadie”之类的术语。但这根本感觉不对,尤其是因为您可能会有多个重载。 当我想记下创建重载方法的过程并且想要最正确的记下来方法时,我遇到了这个问题。 例子: 我超载 foo 我重载foo用foo( string bar ) 我正在创建一个重载方法 我正在使foo超载 是的,这让我思考,我不确定该怎么做。在线上有成百上千的函数重载的描述,即使不是成千上万的描述,但是乍一看,我找不到任何解决方法。

22
您知道哪些有用的替代控制结构?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 SO上也有类似问题。 有时,当我们进行编程时,我们会发现某些特定的控制结构对我们非常有用,但是在我们的编程语言中并不能直接使用。 您认为哪些替代控制结构是组织计算的有用方法? 这里的目标是获得有关代码结构的新思考方式,以改善分块和推理。 您可以创建一个现在不可用的理想语法/语义,或者在现有的编程语言上引用一个鲜为人知的控件结构。 答案应该为新的编程语言或增强实际语言提供思路。 认为这是集思广益,所以发布您认为是疯狂的主意,但在某些情况下可行。 这是关于命令式编程的。


2
RESTful参考表示-语义链接与URI
我们正在设计一个RESTful API,以打开客户的帐户信息。我们的表示形式包含对与当前资源相关的其他资源的引用。这来自我们在公共API和已发布的资料中可以找到的许多最佳实践。表示形式可以是XML或JSON。 例如,对于帐户资源,我们将引用该帐户的地址,对于分页列表资源,我们将引用第一,下一页和上一页。 该API首先使用<link title="" rel="" href="" />O'Reilly书中所述的语义链接进行设计,并由Netflix和Google在API中使用。当我们的质量检查工程师编写自动化套件时,他们在反序列化链接时遇到了问题。现在,我们建议使用更简单的uri字符串元素,这些元素已在Facebook和Twitter中用于API。 此后,我们的质量检查工程师已经解决了其反序列化问题,但是我仍然担心当前API规范与语义链接的易用性。我们的API主要将由我们的客户和一些第三方合作伙伴使用,而我们之所以选择REST,是因为以前的XML-RPC API对我们的消费者来说太难了。 tl; dr; 题: 实施了语义链接表示的任何人都遇到过困难的消费者问题吗? 更新(6/21):我已经决定保留语义链接,并希望混淆是一个边缘案例。一旦一些消费者使用了该API,我将尽量记住用我们的经验来回答这个问题。 编辑:添加示例 语义帐户JSON: { "username": "paul", "links": [ { "title": "addresses", "rel": "related", "href": "http://example.com/account/paul/addresses" }, { "title": "history", "rel": "related", "href": "http://example.com/account/paul/history" } ] } 语义帐户XML: <account> <username>paul</username> <link title="addresses" rel="related" href="http://example.com/account/paul/addresses" /> <link title="history" …
9 rest  semantics 
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.