• Ruby 3 将有类型系统了 at 2019年04月29日

    我也是这么想的

    Swift 就有一套方法针对这个

  • 用 Go、Rust 都是爱好,当然 Go 解决了 C++ 的存在的问题,但是 Go 对于 micro controllers 不利呀,把 unsafe 列为禁忌的语言,你看哪个 bootloader 不是 ld 占据固定某片区的。

    如果谈爱好当然 including Ruby,其实很多项目如果有了 rb 根本就不需要 C 写得太多 code 了,而且更美观、简短和灵活,灵活我觉得是最重要的,这是能不能加速的重要条件,把 performance 交给 C,把 logic 交给 ruby。

    写代码,ruby 和 C 更配哦

  • 顺便路过

  • 看标题太吸引人了,所以进来冒个泡,撒西不理

  • Why Sometimes I Write WET Code at 2018年09月14日

    认可这个看法,我着手了一年多静态语言之后,虽然 eval / mm / reflect 很灵活,现在反过来就不再爱这些 EMR 了。

    如果是在小公司呆着,而且自己写项目,后者小团队,大家互相不干扰干活,是挺好的。

    如果碰到是华为、外包、要求严格的企业,他们就不让这么干了,因为他们崇尚 接口设计,而且也不允许使用灵活的语言。

    接口定义得良好,实现烂一点影响范围也有限,并且容易重构过来。

    不过对于 Python,我建议 @hooopo尤其是 Ruby、Python这样动态语言, 在没那么熟悉业务的情况下 删掉 Python,因为 Python 其实是一门很不灵活的语言。

    Python 的 private 根本不是大众口味的面向对象继承的,更像是 C++ 的 private 继承,到了后面的类没法好好取出来,只能通过 Parent_method,因此我觉得 Python 是怪味的,一开始就不旨意你去 call parent private。

    C++ 有 public 也有 protected 也有 private 继承模式,组合起来应对各种变态的场景,但是我觉得 Python 学到了它的坏处,同时在动态语言中多重继承。

    Python 这么做是为了让 object plain (扁平)得成个 dict,所有 object 都是 meta-table,而且还要是 C-flavor 的 map。

    怎么评价呢,反正个人的观点是认为 Python 就是模仿着强类型静态的模式和论调去进行动态编程,然而最终编码和行为一定是诡异的。

    所以 Python 的 object 让人用起来很刻板,写起来也感觉很死板。

    不像 Ruby,Ruby 从语法上光扬了 EMR,更偏向于 Java 真正将 object 当成有血有肉的 object 的 flavor。

    但是 Python 的刻板和死板好处就是对于数据结构初学者有好处,刚学计算机、编程的也很好接受基本类型,是字典就是字典,类就是个字典,对象也是个字典,数据结构就是 struct 套 struct,加上 Python 很少的语法糖,可以让新手很好入门。不用想太多。

    Ruby Java 适合进阶玩家,已经有了一套体系,在明白了基础之后,再去带有感性、抽象思维去使用才会好用。

    EMR 就是充斥了大量的 感性,就像人编码往往带有个性,这时候不是所有 team member 都理解自己的 imagination,这时候就会带来维护的困难,甚至自己也不记得当初 how to imagine this design 而维护困难。

    所以很多公司选择 Python 而不是 Ruby,也有这方面的原因。

    如果说:

    可读性 > 可扩展 > 优雅

    那么,Ruby EMR 之后产生了 DSL,是很优雅,很抽象,但是很可能别人是看不懂的,跟读唐诗文言文一样,得背负着可能无法读懂的框架的问题。DSL 赞扬了个性与隐晦,对于扩展与可读性也是不好下手的事情。

    作为企业,企业要尽可能考虑快速生产、迭代、编辑维护(Edit),在经济极端时刻必须极力消灭隐晦,宁可让你去写着从头到尾过程编程,连类(class)都不写,从一个又一个 file module import a import b 变量,跟 C 一样这里那里 extern,甚至干脆全局变量的无脑的 Python,也不会让你去 OOP,让你去 EMR,因为 EMR 是他们的大敌。

    所以 Ruby 是一门很可怜的语言,企业不敢用,尤其在现在霜月时刻(涉及敏感 ZZ 问题,不讨论)。

    同时,看到最近 Python 在拼命招人,感觉对编码越来越没兴趣了,感觉社会趋向变成了网站编辑、没智商的调包侠的世界了。

  • 小农思想害死人 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++ 编译之后出来的机器码具体运算算法并不是最优的,有些大神喜欢用自己手工优化的汇编来将无法优化或编译器优化得不够极致但是需要效率的地方。

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

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

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

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