认清计算机(系课程)本质

By Snger on

一个有趣的系列,宅男程序员给老婆的计算机课程,起始篇认清本质中说到几个问题,老实说真不清楚,于是GOOGLE,列举些目前的了解,并将持续更新,用作记录。

1. 用500字讲述什么是Programming Methodology?

2012.5.17:比较常听到的编程的方法:

  • Procedural programming(程序编程,又称程序式编程、程序化编程、过程化编程,俗称面向过程),面向对象编程的思维就像日程安排或是作业流程图,主体流程是步进式的。

  • Object-oriented programming(面向对象程序设计);

    面向对象程序设计:指一种程序设计范型,同时也是一种程序开发的方法。它将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性。
    两者对比:
    面向对象程序设计可以被视作一种在程序中包含各种独立而又互相调用的单位和对象的思想,这与传统的思想刚好相反:传统的程序设计主张将程序看作一系列函数的集合,或者直接就是一系列对电脑下达的指令。面向对象程序设计中的每一个对象都应该能够接受数据、处理数据并将数据传达给其它对象,因此它们都可以被看作一个小型的“机器”,或者说是负有责任的角色。

  • Functional programming(函数式编程);

    它将电脑运算视为数学上的函数计算,并且避免状态以及可变资料。函数编程语言最重要的基础是 λ 演算(lambda calculus)。而且λ演算的函数可以接受函数当作输入(引数)和输出(传出值)。
    和指令式编程相比,函数式编程强调函数的计算比指令的执行重要。
    和程序编程相比,函数式编程里,函数的计算可随时调用。

  • 其他:去Programming paradigm(编程范型)查看更多。


2. 列举10种Data Structure.


3. 列举10种Algorithm.

Wikipedia:Algorithm算法;
经典算法集合:

  • 排序算法
  • 冒泡排序法
  • 起泡法
  • 鸡尾酒排序
  • 桶排序
  • 计数排序
  • 归并排序
  • 排序二叉树
  • 鸽巢排序
  • 基数排序

算法博客推荐:结构之法 算法之道

交流区