• 小农思想害死人 at 2018年06月22日

    你想说我吗

  • 进程死锁 at 2018年06月10日

    哈哈哈哈哈哈哈哈

    你的浏览器提交死循环了

    还是说你重复点了很多次?

    表示 jruby 我只敢用 1.7 的…… 估计是兼容性问题

    jdk?openjdk?6? 7? 8? 9?

  • 这一定是程序猿画的

  • 哈哈哈,“面向对象本身就快不起来”,嗯,怎么说吧,跟“面向对象”可能关系吧,个人觉得有点不太大(个人而已),Py Rb 的对象都是一块块有点体积的内存,相对于纯 C / C++ / Go writing 来说哈,我在 C / Cpp programming 的时候,ref 或 指针引用是高效的,其中 ref 是最高效的。 就拿字符串拷贝讨论,你从文件 read 一波数据,你的变量的内存得 copy 来 copy 去,C++ 的 vector 可以:

    auto data = new std::vector<char>();
    std::FILE* f = std::fopen("test.txt", "r");
    char * data_piece = new data_piece[4096];
    
    while (fin.eof()) {
        length = std::fread(& data_piece[0], sizeof(char), 1024, f);
        data.insert(data_piece, data_piece + length); // 重点在这一句
    }
    
    ...
    

    请不要吐槽这段代码,纯粹是随即编写的,就当作伪代码好了。

    C / C++ / Go 可以很好地重复利用一块内存其中的一部分,而且很好地自由地去利用它。因为反复内存分配(系统调用)是在 C++ 开发界普遍认为是很低效的。

    但是脚本语言让人遗忘了这些,反正 GC 会管理,写得痛快。

    所以之前就有人说,你要是用 JS 去处理 pack unpack 二进制,还得转 Array,总之就是不方便。

    另外,这也是当初我比较喜欢 ObjC 的原因,因为 ObjC 是面向对象的可半手动管理内存的语言,虽然 ObjC 有 ARC,但是很多场景你是可以高效利用内存的。

    要想在 AI 高效反复利用这些变量去进行快速而且高效的操作,那肯定还是这样的语言(C / C++)比较擅长。但是这还并不算最高效的,C / C++ 编译之后出来的机器码具体运算算法并不是最优的,有些大神喜欢用自己手工优化的汇编来将无法优化或编译器优化得不够极致但是需要效率的地方。

  • 吓得我赶紧把问题打勾了,免得更夸张的回复,有些时候只是为了陈述某种场景,很多时候没有遇见过的情况或者不同因人而异的想法,很容易引起别人另有想法。

    有时候网上很多新闻说的是父亲带着调皮的小孩因为闹眼子被打,父亲却露出笑容,然后结果一堆键盘侠的回复可能超出实际事件预期。

    有时候评论说说还好,但是别太认真。

    有时候他人不站在自己具体场合下去讨论具体情境,有时候说多了难免引起误会。

  • 谈谈我对 Python 的看法 at 2018年04月29日

    听到你的回复我已经安心了

  • 谈谈我对 Python 的看法 at 2018年04月29日

    你去看看是不是所有人都拿 jsonpath 来做这些的?你的前端给你传个 fomdata 你也去 jsonpath parsing 吗?

    另外,我们又不是审计局,我不做精算师,不是数据分析员

    做个小后端虽然只是增删改查,要不都把 matlab / R 也调进来 parse 一下某个 key value 吧,逼格更高一些

    要不我们别写代码了,让 AI 自动分析我们的代码 tab 缩进几个了然后自动化为业务 generate 代码吧

  • 谈谈我对 Python 的看法 at 2018年04月29日

    绕来绕去讨论好费劲……不想聊了,不回复了

    在最后最后,我举个极端的例子

    假如,你的 IDE 抽风了,把你的代码:

    if isinstance(result, list)
        if result == ...
          // code
    if isinstance(result, str)
        if result == ...
          if isinstance(result, int)
             if isinstance(result, int)
                if result == ...
                    // code
             if isinstance(result, int)
                 if result == ...
                     // code
    if isinstance(result, int)
        if result == ...
          // code
        ... 省略
    

    这样结构的,突然 IDE 一抽风,或者你不小心按 tab 加入了 shift 键盘,那么成了这样子:

    if isinstance(result, list)
    if result == ...
      // code
    if isinstance(result, str)
    if result == ...
      if isinstance(result, int)
         if isinstance(result, int)
            if result == ...
                // code
         if isinstance(result, int)
             if result == ...
                 // code
    if isinstance(result, int)
    if result == ...
      // code
    

    或者这样子:

    if isinstance(result, list)
    if result == ...
    // code
    if isinstance(result, str)
        if result == ...
    if isinstance(result, int)
    if isinstance(result, int)
        if result == ...
            // code
    if isinstance(result, int)
         if result == ...
             // code
    if isinstance(result, int)
            if result == ...
    // code
    

    或者这样子:

    if isinstance(result, list)
    if result == ...
    // code
    if isinstance(result, str)
    if result == ...
    if isinstance(result, int)
    if isinstance(result, int)
    if result == ...
    // code
    if isinstance(result, int)
    if result == ...
    // code
    if isinstance(result, int)
    if result == ...
    // code
    

    我这里是给了 // code 所以你看得出来,但是现实逻辑是残酷的……如果 IDE 还在抽风,你在撤销的时候并没有还原完整成了:

    if isinstance(result, list)
    if result == ...
    // code
    if isinstance(result, str)
        if result == ...
    if isinstance(result, int)
        if isinstance(result, int)
    if result == ...
            // code
        if isinstance(result, int)
        if result == ...
             // code
    if isinstance(result, int)
            if result == ...
    // code
    

    if 的先后顺序,逻辑都彻底不对了!

    当然大的变动可能性不大,小的有可能,比如你在 if 前面的空格不小心 backspace 错了,但是没察觉没在意,继续写代码,过后你发现逻辑出问题了

  • 谈谈我对 Python 的看法 at 2018年04月29日

    https://stackoverflow.com/questions/4043741/regexp-in-switch-statement

    Python 应该跟 PHP / Perl / Ruby / JavaScript 比,Java 不要拿进来说,Java 作为静态语言,天生编译时可以类型、行为直接检查完了,很多静态的优势,但是你要拿静态语言去跟脚本比灵活性没意义,所以 Python 应该跟 PHP / Perl / Ruby / JavaScript 比,但是比起 PHP / Perl / Ruby / JavaScript 没有任何优势,除了库比较大

    但是只要 Rubygems / npm 发展起来,我并不认为 Py 再有任何优势

    我觉得 Py 应该去接近 Ocaml / Haskell 去,因为大家没发现“普通人”用的语言都是 { },begin end,就 Python 拿 tab / space,就 Ocaml / Haskell 用各种函数式串式编程。总之就是 异类

  • 谈谈我对 Python 的看法 at 2018年04月29日

    无论怎么复杂,反正至少写起来顺手

    @lithium4010 说的:

    就是本来我可以简单描述的事物由于语言的限制我只能绕着说,这样就导致了不方便。