小编dsi*_*cha的帖子

为什么Java不支持无符号整数?

为什么Java不包含对无符号整数的支持?

在我看来,这是一个奇怪的遗漏,因为它们允许人们编写不太可能在意外的大输入上产生溢出的代码.

此外,使用无符号整数可以是一种自我文档形式,因为它们表明unsigned int意图保留的值绝不应该是负数.

最后,在某些情况下,无符号整数对于某些操作(例如除法)可能更有效.

包含这些内容的不利之处是什么?

java unsigned integer language-design

367
推荐指数
11
解决办法
11万
查看次数

函数重载按返回类型?

为什么更多主流的静态类型语言不支持返回类型的函数/方法重载?我想不出那样做.通过参数类型支持过载似乎没有那么有用或合理.怎么这么不受欢迎呢?

programming-languages overloading language-design function-calls

248
推荐指数
5
解决办法
10万
查看次数

你见过的最荒谬的悲观是什么?

我们都知道,过早优化是所有邪恶的根源,因为它会导致不可读/不可维护的代码.更糟糕的是悲观化,当有人实施"优化",因为他们认为它会更快,但它最终会变慢,而且变得越来越慢,不可维护等等.你看到的最荒谬的例子是什么? ?

optimization performance

145
推荐指数
29
解决办法
2万
查看次数

如何从Python代码中删除REPL(读取,评估,打印,循环)

有没有办法以编程方式强制Python脚本在其执行的任意点放入REPL,即使脚本是从命令行启动的?

我正在编写一个快速而肮脏的绘图程序,我想从stdin或文件中读取数据,绘制它,然后放入REPL以允许自定义绘图.

python interactive

100
推荐指数
5
解决办法
4万
查看次数

Python与Ruby的元编程

我目前主要是D程序员,我希望在我的工具箱中添加另一种语言,最好是支持元编程黑客的语言,而这些语言无法用静态编译的语言完成.

我已经阅读了一点Lisp,我很想找到一种语言,允许Lisp做的一些很酷的东西,但没有Lisp的奇怪语法等.我不想开始语言火焰战,我确信Ruby和Python都有他们的权衡,所以我将列出对我个人来说重要的事情.请告诉我Ruby,Python或其他语言是否最适合我.

重要:

  1. 好的元编程.能够在运行时创建类,方法,函数等.最好是代码和数据之间的最小区别,Lisp风格.
  2. 漂亮,干净,理智的语法和一致,直观的语义.基本上是一个深思熟虑,有趣的使用,现代语言.
  3. 多种范式.没有一个范例适用于每个项目,甚至是项目中的每个小子问题.
  4. 一种有趣的语言实际上影响了人们对编程的看法.

有一些重要:

  1. 性能.如果性能很好,那将是很好的,但是当性能是一个真正的优先级时,我将使用D代替.
  2. 充分证明.

不重要:

  1. 社区规模,图书馆可用性等.这些都不是语言本身的特征,而且所有这些都可以很快改变.
  2. 工作可用性.我不是一名全职的专业程序员.我是一名研究生,编程与我的研究相关.
  3. 任何主要针对非常大型项目设计的功能都会考虑到一百万个代码猴子.

ruby lisp python metaprogramming

89
推荐指数
12
解决办法
3万
查看次数

什么时候,如果循环展开仍然有用?

我一直试图通过循环展开来优化一些极其性能关键的代码(一种快速排序算法,在蒙特卡罗模拟中被称为数百万次).这是我试图加速的内循环:

// Search for elements to swap.
while(myArray[++index1] < pivot) {}
while(pivot < myArray[--index2]) {}
Run Code Online (Sandbox Code Playgroud)

我尝试展开类似的东西:

while(true) {
    if(myArray[++index1] < pivot) break;
    if(myArray[++index1] < pivot) break;
    // More unrolling
}


while(true) {
    if(pivot < myArray[--index2]) break;
    if(pivot < myArray[--index2]) break;
    // More unrolling
}
Run Code Online (Sandbox Code Playgroud)

这完全没有区别所以我把它改成了更易读的形式.我曾经尝试过循环展开,但我有类似的经历.鉴于现代硬件上的分支预测器的质量,何时(如果有的话)循环展开仍然是一个有用的优化?

language-agnostic optimization performance micro-optimization

88
推荐指数
3
解决办法
4万
查看次数

EBP帧指针寄存器的用途是什么?

我是汇编语言的初学者,并注意到编译器发出的x86代码通常在释放/优化模式下保持帧指针,当它可以使用EBP寄存器时.

我理解为什么帧指针可能使代码更容易调试,并且如果alloca()在函数内调用则可能是必要的.但是,x86只有很少的寄存器,并使用其中两个寄存器来保存堆栈帧的位置,当一个就足够了,对我来说没有意义.为什么即使在优化/发布版本中省略框架指针也是一个坏主意?

performance x86 assembly

87
推荐指数
3
解决办法
5万
查看次数

UTF-16有什么意义?

我从未明白UTF-16编码的重点.如果您需要能够将字符串视为随机访问(即代码点与代码单元相同),则需要UTF-32,因为UTF-16仍然是可变长度的.如果你不需要这个,那么与UTF-8相比,UTF-16似乎是一种巨大的空间浪费.UTF-16优于UTF-8和UTF-32有什么优势?为什么Windows和Java将它用作本机编码?

utf-8 utf-16 utf character-encoding utf-32

64
推荐指数
3
解决办法
1万
查看次数

Shebang表示法:Windows和Linux上的Python脚本?

我有一些用Python编写的小实用程序脚本,我想在Windows和Linux上都可以使用.我想避免显式调用Python解释器.有没有一种简单的方法可以将shebang符号指向Windows和Linux上的正确位置?如果没有,是否有另一种方法允许在Windows和Linux上隐式调用Python解释器,而不必在操作系统之间进行转换时修改脚本?

编辑:Windows上的shebang支持是Cygwin提供的,但我想在Windows上使用本机Windows Python解释器,而不是Cygwin.

编辑#2:似乎shebang符号覆盖了Cygwin终端中的文件关联.我想我可以将Cygwin Python和symlink/usr/bin/python卸载到Windows原生Python.

python linux windows shebang

60
推荐指数
3
解决办法
5万
查看次数

C++ 11编译器:最接近标准和接近程度如何?

我很感兴趣,因为C++ 11显然已被批准,因此我更加彻底地学习C++.什么编译器当前实现了最完整的C++ 11支持可用的东西?说编译器有多接近完全支持?是否仍然缺少主要功能或只是语言律师细节?

c++ compiler-construction standards c++11

48
推荐指数
4
解决办法
3万
查看次数