Questions tagged «comparison»

有关数据比较和完成数据的有效方法的问题。

5
在这些比较中,Swift如何比Objective-C快得多?
苹果在WWDC14上发布了其新的编程语言Swift。在演示中,他们对Objective-C和Python进行了一些性能比较。以下是其中一张幻灯片的图片,比较了执行某种复杂对象排序的这三种语言: 关于使用RC4加密算法的性能比较,还有一个更加令人难以置信的图表。 显然,这是一次市场营销讲座,他们没有详细介绍如何在每种情况下实施。我让我想知道: 一种新的编程语言怎么能这么快? Objective-C的结果是由错误的编译器引起的还是在客观上比Swift效率低? 您如何解释性能提高40%?我知道垃圾回收/自动引用控制可能会产生一些额外的开销,但是要多少呢?


24
程序员为什么要使用或推荐Mac OS X?[关闭]
我在Mac和Windows上都工作了一段时间。但是,我仍然很难理解为什么程序员会热情地选择Mac OS X而不是Windows和Linux? 我知道有些程序员更喜欢Windows和Linux,但是我要问的是只使用Mac OS X的程序员,因为他们认为Mac OS X最适合程序员。 有人可能会说Mac OS X拥有漂亮的UI,并且基于nix,但是Linux可以做到。尽管Windows不是基于nix的,但是除了Cocoa / Objective-C之外,您几乎可以在任何平台或语言上进行开发。 是仅在Mac OS X上可用的应用程序吗?这真的值得吗? 是开发iPhone应用程序吗? 是否因为您需要每2年升级一次Windows(向后兼容性较低)? 我知道为什么在多媒体/娱乐行业工作的人们会使用Mac OSX。但是,我不知道Mac OS X在Windows上有什么优点。如果您每天在Mac上进行开发,并且比其他任何事物都更喜欢Mac,那么能否给我带来Mac在Windows / Linux之上的优点?也许您可以在Mac上做的某些事情在Windows / Linux上做不到那么轻松? 我不是在这里尝试做另一台Mac vs. Windows。我试图找到可以在Mac上完成但在Windows上无法做到的轻松程度,但我做不到的事情。因此,我正在寻求帮助。




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具有预期语义的编程语言不常见?

11
Java与C#-生产率透视图
如果您有使用Java的多年经验,以及使用C#和.NET的多年经验,那么我对您在这两种环境之间的软件开发生产力差异方面的观点表示赞赏。我们的一位客户正在考虑更换其现有的软件解决方案。由于更换将需要大约。根据Java或.NET之间的生产率差异,选择10到15个工作年的工作可能会显着影响所需的投资和上市时间。 您能否向我们提供Java和C#/。NET之间软件开发生产率差异的指示?我希望收到如下答复: 我的经验是基于X的Java工作经验和X的C#/。NET工作经验。如果考虑以下因素,则Java的生产力比Java#高出X%,而C#.NET或C#/。NET的生产力比Java高出X%。

18
您什么时候可以称自己为X语言擅长?
这可以追溯到我与女友的对话。我试图告诉她,我只是对自己的编程语言(C ++)感到不足以称自己为好。然后她问我:“嗯,你什么时候认为自己足够好?” 这是一个有趣的问题。我不知道该告诉她什么 所以我问你。 对于任何编程语言,框架之类的东西,什么时候坐下来,看看您所做的事情,然后说:“嘿,我实际上很擅长此事。” 您如何定义“好”,以便您可以诚实地告诉其他人,“是的,我擅长X”。 此外,您是否通过比较其他人可以做到这些结论? 附加信息 我已经读过规范论文,说明您是该领域的专家需要花费一万小时的时间。(向知道此文件又称什么的人提供支持) 我还阅读了《编码恐怖》中有关采访人的各种文章。有人说,“不能在框架之外运行”。因此它们对于该框架可能是“好”的,但在语言方面则并非如此。这是真的?


10
为什么大多数编程语言都没有“!>”(不大于)和“!<”(不小于)运算符?
我想知道是否有任何原因-或者仅仅是历史的偶然- 大多数编程语言中都没有!&gt;和!&lt;运算符? a &gt;= b (大于或等于b)可以写成!(a &lt; b) (a不小于b)等于a !&lt; b。 当我编码自己的表达式树生成器时,这个问题使我震惊。大多数编程语言都有的a != b运算符!(a=b),那么为什么不!&gt;加!&lt;? 更新: !&lt;(不少于)比(大于或等于)更容易发音&gt;= !&lt;(不少于)的类型比&gt;=(大于或等于)的类型短 !&lt;(不少于)比(大于或等于)更容易理解*&gt;= *因为OR是二进制运算符,所以您的大脑需要操作两个操作数(grater,等于),而因为NOT是一元运算符,并且您的大脑仅需要操作一个操作数(较小)。


5
一个实例可以等于某个更特定类型的其他实例吗?
我读过这篇文章:如何用Java编写平等方法。 基本上,它为支持继承的equals()方法提供了一种解决方案: Point2D twoD = new Point2D(10, 20); Point3D threeD = new Point3D(10, 20, 50); twoD.equals(threeD); // true threeD.equals(twoD); // true 但这是个好主意吗?这两个实例看起来是相等的,但可能具有两个不同的哈希码。是不是有点不对劲? 我相信这可以通过改用操作数来更好地实现。
25 java  c#  scala  comparison 

2
合并具有最少比较数的两个排序数组的算法
给定两个大小为n和m的类型为T的排序数组a,b。我正在寻找一种将两个数组合并为一个新数组(最大大小为n + m)的算法。 如果比较便宜的话,这很简单。只需从具有最低第一个元素的数组中取出,直到完全遍历一个或两个数组,然后添加其余元素即可。像这样的东西/programming/5958169/how-to-merge-two-sorted-arrays-into-a-sorted-array 但是,当比较两个元素时,情况的改变要比将元素从源数组复制到目标数组要贵得多。例如,您可能具有大的任意精度整数或字符串组成的数组,其中比较可能会非常昂贵。只需假设创建数组和复制元素是免费的,而唯一花​​费的就是比较元素。 在这种情况下,您希望使用最少数量的元素比较合并两个数组。这里有一些示例,您应该可以比简单的合并算法做得更好: a = [1,2,3,4, ... 1000] b = [1001,1002,1003,1004, ... 2000] 要么 a = [1,2,3,4, ... 1000] b = [0,100,200, ... 1000] 在某些情况下,简单合并算法将是最佳选择,例如 a = [1,3,5,7,9,....,999] b = [2,4,6,8,10,....,1000] 因此,理想情况下,算法应该适当地降级并在阵列交错或至少不会明显恶化的情况下执行最多n + m-1个比较。 对于大小差异较大的列表,应该做得很好的一件事是使用二进制搜索将较小数组的元素插入较大数组。但是,如果两个列表的大小相同且交织在一起,则不会优雅地降低性能。 元素唯一可用的是(总计)排序功能,因此任何使比较便宜的方案都是不可能的。 有任何想法吗? 我在Scala中提出了这一点。我认为比较次数是最佳的,但是我无法证明这一点。至少它比我在文献中发现的要简单得多。 而且自原始帖子以来,我写了一篇有关其工作原理的博客文章。

3
Node.js与其他服务器端框架有何不同?
我注意到Node.js变得非常流行,并且我看到有人在其中进行小型项目的一些实例。 我还查看了利弊列表,以了解Node.js可以做什么,但是我仍然不清楚它与其他更成熟的服务器端技术(如PHP,Perl或Ruby)的区别滑轨。 具体来说,是什么将Node.js与当前替代方案区分开来,为什么?

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.