小编Gyö*_*sek的帖子

去做例子和习语

没有很多Go代码可以从中学习语言,我确信我不是唯一一个尝试使用它的人.所以,如果您发现了有关该语言的有趣内容,请在此处发布示例.

我也在找

  • 在Go中做事的惯用方法,
  • C/C++的思维方式"移植"到Go,
  • 关于语法的常见缺陷,
  • 有趣的,真的.

go

91
推荐指数
19
解决办法
3万
查看次数

知道C真的会伤害你用更高级语言编写的代码吗?

问题似乎已经解决,甚至被打死.聪明的人在这个问题上说过聪明的话.要成为一名优秀的程序员,您需要了解C语言.

或者你呢?

本周我开悟了两次.第一个让我意识到我的假设并不比我背后的知识更进一步,并且考虑到我的机器上运行的软件的复杂性,这几乎是不存在的.但真正开车回家的是Slashdot评论:

最终的结果是,我注意到传统C"裸机"程序员认为实现更高级语言的许多天真的方式.他们在他们影响的项目中做出错误的"优化"决策,因为他们不知道编译器是如何工作的,或者他们理解的天真宏汇编程序模型与良好的运行时系统有多么不同.

然后它击中了我:C只是一个抽象,就像所有其他人一样.即使是CPU本身也只是一种抽象!我从来没有看到它破裂,因为我没有测量它的工具.

我糊涂了.像Dijkstra谈到BASIC一样,我的思想是否已经被肢解,无法恢复?我是否处于不成熟的过早优化状态?对我来说有希望,现在我意识到我什么都不知道吗?有什么需要知道的吗?为什么它如此迷人,我在过去五年写的所有内容都可能是根本错误的?

总结一下:知道更多API文档告诉我的是否有任何价值?

编辑:制作CW.当然这也意味着你现在必须更好地发布解释器/运行时优化的例子:)

c language-agnostic optimization premature-optimization

35
推荐指数
5
解决办法
1989
查看次数

什么时候NULL宏不是0?

我隐约记得几年前读过这篇文章,但我在网上找不到任何参考.

你能给我一个NULL宏没有扩展到0的例子吗?

编辑清晰:今天,它扩展为((void *)0),(0)(0L).但是,有些架构早已被遗忘,而这种情况并非如此,并且NULL扩展到了不同的地址.就像是

#ifdef UNIVAC
     #define NULL (0xffff)
#endif
Run Code Online (Sandbox Code Playgroud)

我正在寻找这样一台机器的例子.

更新以解决问题:

我不是在现行标准的背景下提出这个问题,也不是用不正确的术语来扰乱人们.但是,我接受的答案证实了我的假设:

后来的模型使用了[blah],显然是对所有现存的写得不好的C代码的反应,这些代码做出了错误的假设.

有关当前标准中的空指针的讨论,请参阅此问题.

c macros null history

33
推荐指数
2
解决办法
1万
查看次数

究竟是什么-march = native呢?

Gentoo Wiki告诉我以下内容:

警告:GCC 4.2及以上版本支持-march = native.-march = native应用超出-march的其他设置,特定于CPU.除非您有特殊原因(例如,distcc交叉编译),否则您应该使用-march = native,而不是下面列出的任何内容.

那些额外的设置是什么?

c c++ gcc gcc4

19
推荐指数
1
解决办法
7680
查看次数

如何在没有"flags"包的情况下获取Go中的命令行参数?

我正在尝试为Go编写一个GNU风格的命令行解析器,因为该flags包还没有处理所有这些:

program -aAtGc --long-option-1 argument-to-1 --long-option-2 -- real-argument
Run Code Online (Sandbox Code Playgroud)

显然,我不想使用flags包,因为我正在尝试更换它.有没有其他方法可以进入命令行?

command-line go

18
推荐指数
1
解决办法
4658
查看次数

你会如何开始自动化我的工作?

在我的新工作中,我们出售进口的东西.为了能够出售所述物品,目前每件货物都需要进行以下操作:

  • 发票以电子邮件附件的形式到达Excel电子表格
  • Monkey打开发票,将三列的相关部分复制粘贴到电子表格模板的相关部分,在那里进行极其复杂的计算,例如 =B2*550
  • Monkey将这个新的电子表格发送给老板(如果幸运的话,发送电子邮件,否则打印机),他们设定零售价格
  • Monkey打开回复,然后使用客户端程序将数据输入到生产数据库中,该程序在很多级别上都无法使用,甚至不值得详细说明
  • Monkey启动HyperTerminal,键入"AT",断开连接
  • Monkey使用可怕的客户端程序的另一部分向客户发送文本消息和电子邮件,一次一个

我想Monkey尽可能地从自己变成软件.我以前从未写过任何与电子邮件,Excel,数据库或短信接口的东西,但我很乐意学习它是否能让我免于.

这是我没有受过教育的心愿单:

  • 猴子要求Thunderbird(邮件服务器?)作为附件
  • Monkey告诉Excel将电子表格转储为更像Jurily的格式,如CSV或其他东西
  • Monkey解析输出,进行复杂的计算
  • Monkey通过网络表单向老板发送链接,在那里他可以设置价格
  • Monkey连接数据库,插入数据
  • 猴子垃圾邮件客户

这一切都可行吗?如果是,我在哪里开始阅读?你会如何改进它?您认为哪种语言/框架对此非常理想?你会对老板做些什么?

database language-agnostic windows automation

14
推荐指数
1
解决办法
794
查看次数

现代硬件的算法?

再一次,我发现自己有一套破碎的假设.通过修改经验证的最优算法来考虑虚拟内存,文章本身的性能提升了10倍:

在一个现代多发出CPU上,以几千兆赫的时钟频率运行,最坏情况下每个VM页面故障损失近1000万条指令.如果您使用旋转磁盘运行,则该数字更像是1亿条指令.

如果这些操作导致页面错误和磁盘操作速度慢,那么O(log2(n))算法有什么用呢?对于大多数相关数据集,O(n)或甚至O(n ^ 2)算法可避免页面错误,它将围绕它运行圆圈.

周围有更多这样的算法吗?我们是否应该重新审视我们教育的所有基本组成部分?在编写自己的文章时还需要注意什么?

澄清:

所讨论的算法并不比经过验证的最佳算法快,因为Big-O符号存在缺陷或无意义.它更快,因为经过验证的最优算法依赖于在现代硬件/操作系统中不正确的假设,即所有内存访问都是相同且可互换的.

language-agnostic algorithm caching virtual-memory

13
推荐指数
2
解决办法
542
查看次数

`unsafePerformIO(newTVarIO 0)的安全性如何?

我在Data.Unique中注意到了这个习语:

uniqSource :: TVar Integer
uniqSource = unsafePerformIO (newTVarIO 0)
{-# NOINLINE uniqSource #-}
Run Code Online (Sandbox Code Playgroud)

保证只运行一次吗?

haskell stm

11
推荐指数
1
解决办法
412
查看次数

Qt GUI app:QObject :: connect()失败时会发出警告吗?

我最近将我的Qt项目从Linux迁移到Vista,现在我盲目地调试信号.

在Linux上,如果QObject :: connect()在调试版本中失败,我会在stderr上收到警告消息.在Windows上,GUI应用程序没有控制台输出,只有OutputDebugString调用.

我已经安装了DebugView,它很好地捕获了我自己的qDebug()输出,但仍然没有警告失败的信号.

一种可能的解决方案是使用QtCreator的自动完成信号,但我喜欢Eclipse,并且使用两者都是PITA.有关如何在运行时获取信号/插槽信息的任何想法?

编辑:我刚刚实现connect()返回bool,它解决了直接的问题,可能是丑陋的.但是,这并不能解决QMetaObject :: connectSlotsByName()失败的情况,而且这个小部件会自动运行.

c++ qt signals-slots

10
推荐指数
1
解决办法
3608
查看次数

我在哪里处理异步异常?

请考虑以下代码:

class Foo {
    // boring parts omitted

    private TcpClient socket;

    public void Connect(){
        socket.BeginConnect(Host, Port, new AsyncCallback(cbConnect), quux);
    }

    private void cbConnect(IAsyncResult result){
            // blah
    }
}
Run Code Online (Sandbox Code Playgroud)

如果socketBeginConnect返回之后抛出异常并且在cbConnect调用之前抛出异常,它会在哪里弹出?甚至允许扔在后台?

.net c# asynchronous exception-handling

9
推荐指数
1
解决办法
5955
查看次数