摘要:
我认为,JS最精彩的思想是突破了当时 OOP 的局限性,把object而不是class变成了一等公明(Eich 的1,4,5三条都是这一思想的展现)。
C++,Java,C#等语言其实是class-oriented,强调type,没有作为个体的object的支持,只有“共性”而没有“个性”。JavaScript作为一“动态语言”,理所当然地支持动态地创建object,支持动态地修改object. 阅读全文
摘要:
理解C++变量的六大属性,是深入理解C++变量,也是C++语义的重要一环。由于“总分性”的概念不为专家强调,这里专门著文小序,以期抛砖引玉。 阅读全文
摘要:
C++ 11 的lambda expression(简称LB),在可以保证和inline expression同样性能的条件下,增加了参数功能和闭包功能,是我们写出简洁,明了,易维护代码的绝佳工具。应用时,为了避免代码重复和增加隐身类的数量,可用有名无型的LB变量。LB也可以赋值于std::function,当作函数指针使用,但是性能不及简单地inline使用。 阅读全文
摘要:
C++ built-in array对class object的支持是十分重要的语言构造,它是C++把class object和原始变量同样对待的又一反映,它大大增加了C++的附加值。
然而我们一如既往,需要对C++这一语言构造的语义深入了解。以便正确使用C++ built-in array。 阅读全文
摘要:
异常处理是C++中具有重要附加值的语言构造,为安全可靠的应用程序提供了基石。
但是它也同时具有时空两方面的代价(trade off),我们在应用时要清楚这个方面。异常应该在“异常时”用 (好像是废话,其实是设计思想和模式的重要一环),不要把它当作方便的“控制构造 control construct”来用。如果应用容许,也要尽可能减少“热点”,减小热点列表。 阅读全文
摘要:
C++ 11加了许多新的功能。其中对C++性能和我们设计class的constructor或assignment可能产生重大影响的非 rvalue reference 莫属!我看了不少资料,能说清它的不多。下面我企图用简单的例子来说明,希望读者能够理解并应用这一重要的语言构造。 阅读全文
摘要:
在应用inheritance时,除去基类里无用的constructor,对大量构造的object的性能来说,会有明显的影响。不幸的是,微软的__declspec(novtable) class modifier对解决这个问题没有提供任何帮助。在设计海量存储的object的应用中,我们应该尽量用POD来做其基类,避免上面CTest类那样明显的性能漏洞。 阅读全文
摘要:
我的上篇博客标题不对,造成一些误解。我认为博客的宗旨不是背教科书,而是分享研发心得。我的上篇标题因该改成“JavaScript 闭包的一个议题:它对outer scope 的影响”,因为我没有严格地去分析闭包的定义,而是分析了实现闭包的其中一个语义问题。网友“穆己”的“scope chaining”的确是比较接近闭包的实质,但也不全面。我只好抛砖引玉,再做一次企图。
闭包的含义包含了下列三个主要概念 阅读全文
摘要:
在JavaScripot函数闭包的定义中,一般都有一个outer 函数,一个inner函数。那么“闭包”到底是指outer函数呢,还是指inner函数?
从官方定义来看,并不清楚:A closure is a combination of a code block and data of a context in which this code block is created. 阅读全文
摘要:
通常认为,性能的改进是90 ~ 10 规则, 即10%的代码要对90%的性能问题负责。做过大型软件工程的程序员一般都知道这个概念 阅读全文