百科问答小站 logo
百科问答小站 font logo



电脑发展史上有哪些伟大的思想和技术? 第1页

  

user avatar   lan-se-52-30 网友的相关建议: 
      

抽象,Abstraction.

Lampson也在图灵奖获奖演讲时曾说过一句话:Any problem in computer science can be solved with another level of indirection. (有人也说是David Wheeler说的)。 如由于计算机体系结构与资源是“赤裸丑陋”的,于是抽象出来一层操作系统进行计算机资源的管理与操作。而为了与操作系统交互,于是抽象出来了Runtime Library层,方式是System Call。而浏览器、编译器、Office等上层应用则仅需Runtime Library层交互即可,方式是Operating System API。

                Application            |            |  OS API          Runtime Library            |              | System Call           OS            |            | Hardware Specification            Hardware     

清晰、简洁、漂亮!

而在程序语言的发展中,抽象的思想也是无处不在,如C++17的Concept就是一个很好的例子。在如今的模板当中,我们的模板参数T没有任何语意,所以出错信息总是那么的长。

       template<typename R, typename T> bool exist(const R& range, const T& value) { for (const auto& x : range)   if (x == value)        return true;   return false; } vector<string> vec {}; exist(vec, 47); // BUG!      

GCC 5.2的报错信息长达180多行。既然如此,那么我们就为C++模板参数增加约束,抽象出来一个Concept (概念),对类型参数赋予类型约束。

       template<typename R, typename T>          requires Equality_comparable<T, Value_type<R>>() bool exist(const R& range, const T& value) {   for (const auto& x : range)    if (x == value)        return true;    return false; } vector<string> vec {}; exist(vec, 47); // BUG!      

使用Concept的GCC报错信息只有3行!

可参考我在GitHub的演讲PDF查看相关Concept的定义:

presentation/pdf at master · FrozenGene/presentation · GitHub

清晰、简洁、漂亮!

而抽象的思想也体现在已经广为流传的面向对象思想,在真实世界与程序世界之间,桥梁即抽象。如想表达女朋友的概念,提取出相关条件,然后进行程序表达即可

       class GirlFriend {   public:   bool hasLongHair() const {//...}   private:   std::string name_;   unsigned age_;   //... };     

清晰、简洁、漂亮!


user avatar   mayne 网友的相关建议: 
      

香农在1938年发表的伟大论文

A Symbolic Analysis of Relay and Switching Circuits

(《对继电器和开关电路中的符号分析》)将开关、继电器、二进制、布尔代数联系起来。




  

相关话题

  在网吧写代码是怎样一种体验? 
  如何用一段简单的代码讲述一个悲伤的故事? 
  清华大学计算机专业本科这位在「自己写的 CPU 上运行自己写的操作系统」的同学是什么水平? 
  未来会不会有一种方式,可以使一部蓝光电影压缩到几Mb甚至几Kb? 
  如何看待艾隆.马斯克开办的Ad Astra高中取消了传统高中的外语,音乐等课程? 
  为什么 AI 发展到今天,围棋能下过李世石、柯洁,仍不能完成帮人类洗衣物、做饭这种简单的事? 
  如何捕获一种名为程序员的呆萌生物? 
  为什么计算机刚开机就要转散热风扇? 
  给RISC-V设计自定义指令,有什么需要注意的事情吗? 
  和程序猿谈恋爱是种怎样的体验? 

前一个讨论
如何挽救这幅画?
下一个讨论
如果宗教中的「神」其实是外星生物,会对宗教有何影响?





© 2024-05-15 - tinynew.org. All Rights Reserved.
© 2024-05-15 - tinynew.org. 保留所有权利