Home

The Art of UNIX Programming

[TOC] 列举几个例子加以理解. 设计原则 Modularity 模块性 如何能够真正实现 “不会直接调用其他模块的实现码” ? 实现模块化与解耦合是实际上不是一件那么容易的事情. 在面向对象编程中, 就目前的经验来看, 我会把API分成两大类: 一类是提供给他人使用, 不会对自身的状态产生影响. 这类比较简单, 直接提供接口即可. 另外一类是上希望对方在特定的地方调用, 或者是会对自身状态的产业影响的. 这些需要自己把API注册到对方的函数表上, 对方不知道这个函数是什么, 只需要知道在特定的事件调用的即可, 表现在汇编语言上即为间接跳转, 另一方面也体现着 把知识叠入数据的表示原则. 最佳模块大小是多少? 400-800物理行, 过多过...

Read more

Effective C++ Memorandum

[TOC] Reference Effective C++: 55 Specific Ways to Improve Your Programs and Designs (3rd Edition) Effective Modern C++: 42 Specific Ways to Improve Your Use of C++11 and C++14 为了充分利用C++的特性, 如何看待今天的C++的编程范式? 今天C++以及是一个强大的多重范式编程语言(multiparadigm programming language), 可以同时支持过程形式(procedural), 面向对象形式(object-oriented), 函数形式(functional), 范式形式...

Read more

Chisel Memorandum

最近看了一下Chisel Bootcamp,这里记录一下心得体会. [TOC] Scala Primer Chisel是一种基于Scala的高层次硬件描述语言. 而Scala的设计哲学即为集成面向对象编程和函数式编程, 非常适合用来作为硬件描述语言. Scala 运行在Java虚拟机上, 并兼容现有的Java程序. 作为基础我们必须先了解一些Scala的一些语法以及编程特性. Scala一门面向对象语言, 可以认为Scala程序是Object对象的集合. 顺便复习一下下面几个概念的关系: Object对象: 对象是类的实例 Class类: 类是对象的抽象 Method方法: 一个类可以包括多个方法 Field字段: 每个对象都有其唯一的实例化的变量集合, 即...

Read more