• #13 楼 @PrideChung 道德绑架比地震更恐怖 +1

  • 王垠谈编辑器与 IDE at April 22, 2013

    Notepad++ 也不错,至少比 Win 自带的 Notepad 好太多了,编辑小文件啥的也很方便。

  • 王垠谈编辑器与 IDE at April 22, 2013

    #31 楼 @jinleileiking 是 吕 不是 刘;)

  • #70 楼 @bhuztez 如果是个人来学习的话,OK。如果是代替 C++来作我们公司开发语言的话,那老板就抓狂了!呵呵;)

  • #66 楼 @jasl 嗯 是阿。 在 weibo 上,他与其他 C++牛的相互辩论也很有看头。只有思想的碰撞才会擦出耀眼的花火。象楼主这个帖子,给观众带来的收获就很大啦,各种观点的交流和沟通,比单纯的一个技术帖,收获还要多;)

  • #56 楼 @jasl 可以说是坑,也可以说不是坑。如果认真按照对的规则来写 C++的话,C++ 依然是生产力较高的语言。

    我想说的是:有些规则太趋于细节,很多新手不注意的话,就会载进去。在公司,想凑齐一队 C++ 水平不错且相当的人马,很难啊 Orz。

    C++ 的入门曲线较陡,成长过程中,被碰出好几个脓包是很平常的 哈哈。但是如果跨过那个坎,后面就好很多了。只是跨坎的时间可能长点。平均来说,用 C++ 两年经验,只能算入门 ;(

    我很同意游戏圈 云风 的一个观点:当项目是一个人做,用什么语言都可以,只要你能掌握好就可以。但是如果项目是多个人合作,那么找齐一批 C++水平相当的高手可不容易。

    我们公司有个项目有 近百万行(70 万行以上是有的)的 C++ 代码,有的模块实现的质量很高,有的模块却惨不忍睹。这就跟人跟团队的水平有关了。无奈阿。(当然,其他语言,当项目大了,人多了,差不多也是这个状况)

    4 月份,我一直在做公司的培训,又负责 Effective C++的培训。我是真心的想把 C++的各个需要注意的坑都讲给他们,但是效果一般啦,有些坑是需要自己跌过之后才记得住的,直接灌输,如果不经常练习,很快就会忘的。

    我一直觉得 C++ 是一门很不错的语言,只是在一个公司内你很难找到和你一起来战斗的队友。在开源界就很好多了,C++ 高手很多的。可以互相学习和提高。

    如果你爱一个人,就让他去学 C++,因为那里是天堂;如果你恨一个人,就让他学 C++,因为那里是地狱。泪奔啦。~~~

  • #55 楼 @jasl 对于 C++ 来说,string 只是 标准库的一个组件,不属于语言的内建类型,仅仅从语言层面来说,string 与其他自定义的 class 来说,无啥高低之分。Ruby 的 String 则是 Ruby Core 的一部分。

  • #41 楼 @hhuai C/C++ 有一个很重要的优点:当标准库提供的某些组件在性能上不能满足需要时,我们可以再实现一个高效的 ;)

  • 现在失去了斗志了。 at April 20, 2013

    #71 楼 @bydmm 嗯,这个很有深意阿 嘿嘿

  • #28 楼 @luikore 嗯 确实如此。std::string 的坑大是出了名的啦。@_@

  • 楼主 这个帖子也是在说明网络上一些所谓的 benchmark 是没什么具体意义的。 尤其是用不同的语言,却使用雷同的写法,这样就更不准确了(网上这类的 benchmark 太多了)。因为每个语言的特性都不一样,应该是按各自语言合理高效的写法,而不是用雷同的写法。

    比如: Ruby 代码:

    
    def orz(s)
      .......
    end
    10000000.times{ orz(s) }
    

    C++ 代码:

    void orz(string s){
      ......
    }
    for(size_t i; i < 10000000; ++i){ orz(s) }
    

    看似两个代码类似,实际上,这对 C++ 来说是并不高效的,因为 orz(string s)是按值传递参数,这样每次调用orz都会多生产一份儿 s 的拷贝副本,在循环次数多,字符串较长的时候,副作用会更明显。如果改为引用的形式 orz(string & s)orz(const string & s), 这样 s 就是按引用传递,不会产生多余的副本,性能也能提高。

    还有一个例子: C++ 中的new和 Java 中的new 是不一样的(虽然摸样一样 @_@)。以前看过一个 benchmark,他是将 java 代码基本原样翻成了 C++代码。完全违背了 C++的高效写法。所以,benchmark 的结果可想而知。

    我想说的是:不同的语言,雷同的写法也会带来误导的结果

    最近,在批改新员工作业时,有一个 C 语言 作业运行约 15 秒,我修改掉其中的 2 行代码,结果运行时间只花了 0.3 秒,差距巨大。如果对语言掌握的不扎实,很有可能会写出很慢很慢的程序。

    to @luikore @bhuztez @wendal 我觉得这篇帖子的意义非常好:要扎实的掌握你所掌握语言,才能“扬长避短”,最大发挥语言的效能。如果再能掌握一些底层知识和 VM 的相关知识,就能更好的避开一些语言的陷阱了。也会更明白一些所谓的 benchmark 只是...... 呵呵。

  • 扬长避短 才是这个帖子要说明的真谛:)

  • 现在失去了斗志了。 at April 19, 2013

    #49 楼 @1272729223 佛教可没说消极避世。话说回来,无论何种思想,或中或西,或唯物或唯心...... ,都是方法而已,关键还看你自己。一往无悔前行。加油!

  • #10 楼 @luikore 嗯,Ruby 的复杂度远大于 JavaScript.

  • 现在失去了斗志了。 at April 19, 2013

    @1272729223 看佛教的书挺不错,尤其是大乘流派,会从中学到很多,比如包容,慈悲,平等,尊重一切生命。这些都是正能量;)

  • 现在失去了斗志了。 at April 19, 2013

    这是.......? 遇到什么事情了吗?

  • 记得以前看过一个性能评测,即使是 lua-jit 也没能干过 V8,呵呵,当然更别说 Python 和 Ruby 了。 这也是有原因的: 比如 Ruby 和 Python 都有历史包袱问题等,完全从头另起炉灶实现 VM 阻力较大。 另外大多数 VM 性能极好的语言,背后都有强大的支持(财力和人力),比如:V8 是 Google, .Net 是微软,Java 以前是 Sun,现在是 Oracle。而 社区推动的语言 如:Ruby 的核心团队就是那几个 Orz。

  • #2 楼 @defmacro 也还是有一定的参考价值的;)

  • 国内的地图数据生产商 主要有:四维,高德,瑞图... . 我们公司使用的地图 一般是向图商购买,或是与图商 有合作。

    OpenStreetMap 的数据可以免费下载。楼主可以试试;)

  • 估计就这样了。还是自己翻看 CRuby 的 source code 吧

  • 这个帖子现在竟然还活着 Orz。直接关了吧。

  • 几个著名的技术作家 at April 17, 2013

    #5 楼 @huobazi 我知道你是在吐槽;)

  • 真诚求教 at April 15, 2013

    多多实践是正确的方法。比如像 @Rei 说的写个 Blog。 Ruby 的知识要系统的学的话,有两本书(可以二选一,也可以全看)是你必须要面对的:

    1. 双飞燕
    2. 镐头书
  • #12 楼 @chenge 喔,有时间的话,我再补充一下相关代码的说明吧。

  • #10 楼 @chenge 你的帖子里引用的原作者的文章就很明了啊。具体是 parse 过程 还是 eval 过程?

  • #6 楼 @iBachue 呵呵 有时间就会往下搞。 现在的 ScmRb 主要就是为了 @chenge 的那篇帖子而诞生的,目的就是复制 Lispy。而 Lispy 本身就不是一个完整的 Scheme 解释器 ;)

  • #3 楼 @iBachue 还有就是 如: + - * / 等,只支持两个参数。像 (+ 1 2 3) 这样的也不支持。与 Lispy 高度一致。呵呵

  • #3 楼 @iBachue 呵呵 这只是一个 Lispy 的复制版本,Lispy 不支持的,ScmRb 也不支持啦。

  • #11 楼 @ywjno 嗯 有可能是大家对 windows 有个先入为主的观念吧,觉得难配置。现在有 mingw 和 cygwin 的帮助下,大多数的开源项目都能编译运行,没有想象的那么难。另外,在捣鼓的过程中也练习了动手能力和思考能力。呵呵;) 还有我也是菜鸟啦,共同交流学习吧!