柏拉图和面向对象编程

18-12-27 banq
                   

面向对象编程代表了自计算机出现以来普遍存在的传统编程方法的范式转变。虽然今天的计算机科学家是很聪明的人,但从柏拉图的留下的对话著作中我们不难发现,实际上支持面向对象编程的内在概念已有近2500年的历史了!

现在,面向对象编程(OOP)的架构师是否意识到这些先前的概念还不能肯定,然而,柏拉图与后来的软件架构师的思维过程之间似乎存在显着的相关性,甚至在数千年间也是如此。

古希腊哲学

柏拉图出生于雅典,老师是苏格拉底(是西方哲学之父)。然而,柏拉图相比苏格拉底,前者却说是古希腊哲学家(如果不是所有哲学家)中最著名的,因为他通过他丰富的著作遗产对现代哲学产生了深远的影响; 35个对话和 13封信。

虽然柏拉图著作涵盖了许多哲学主题,但是在他的许多对话中发展出来的是他的激进的形而上学概念,这些概念在我们与面向对象编程的比较中特别有意义。从根本上说,柏拉图的形式理论直接类似于OOP的基础。

形式论

纵观他的形而上学的讨论中,柏拉图的“形式Form”是指模板或模式的抽象表示。

举例来说,为了解释形式的概念,柏拉图讨论了美的概念。一朵花是美丽的,一幅画也可以说是美丽的,但这个两个事物本身不是美的。柏拉图认为,真正美的形式独立于拥有美的物体而独立存在,因此我们可能有一个完美的“美”的概念,但却永远无法亲身体验它。

按照柏拉图的说法,一朵花被称为美的形式的分享者。它很美的,但我们从未看到真正的美(banq注:前面一个“美的”是形容词,这个形容词代表了形式,后面真正的“美”是名词)。花被认为是一种特殊的继承了形式的品质,其中之一就是美。

真正美丽的形式是不变的,不变的,而一朵花可能在一段时间内拥有美丽,但最终在它枯萎死亡时会失去它。作为抽象,形式独立于继承其品质的细节或现实世界对象。

电脑编程

1.传统方法

计算机程序本质上是计算机按照预先描述的顺序遵循的指令列表 ; 做A,然后做B等。有点像跟着烹饪食谱 一步一步。

随着计算机变得越来越先进,它们的相关软件程序也变得更加冗长和繁琐。通常,计算机需要一次又一次地运行相同的代码。因此,不是每次需要时都重写这段代码,而是将函数或过程写成半隔离的代码片段,只要需要它们就可以调用它们。这有助于软件以模块化方式开发,各个模块负责某些计算过程。

2.面向对象的编程

面向对象的编程模块,带向一个新的水平,通过使用模块成为一种自包含的代码调用的类。

一个类就是一段计算机程序作作为模板模式!(banq注:一朵花将美作为其形式或模板)

与柏拉图的分层形式系统类似,可以增强这些类或模板。可以创建扩展类,继承父类的所有属性,但是使用其他属性对其进行增强,以创建包含其所有父属性的新“子”类,以及更多自己的加载:

// //椅子的模板或完美形式
class Chair
{
 // //定义椅子的代码位于此处
}

// // 一种椅子类型的新模板,从完美的椅子形式继承其属性
 class OfficeChair extends Chair
 {
     // //办公椅的额外代码位于此处
  }
 
// /创建一个实际的对象,或特定的办公椅
 $objMyOfficeChair = new OfficeChair();

 // 创建另一个对象,或特定的办公椅
$objMyOtherOfficeChair = new OfficeChair();

这是一个极其简化的例子,但希望可以看到类和对象的概念及其与柏拉图形式和细节的相关类比。

没有什么是新的

因此,虽然我们可能认为我们是走在这个星球上的最聪明的一代,但是可能值得暂停一段时间以获得一点谦卑,因为我们可能经常只是采取新的旧观点而已。

在传道书1:9-10中,甚至圣经也承认这一点:

“在阳光下没有什么是新的。甚至我们所说的“看,这是新的!”已经存在于我们之前的时代。

过去伟大的科学家和思想家也承认了这一事实。甚至艾萨克·牛顿也向前人的灵感致敬:

“我只是站在巨人的肩膀上。”

寻求灵感

如果你正在努力想出一个不妥协的问题的答案,或想找到一种新的做事方式,也许你可能会比在经典教育中寻找灵感更糟糕。

通过研究历史,即使是在自己的不同学科中,您也可能会遇到一些想法,这些想法可以转移到您自己的专业领域,并带您前往您梦寐以求的方向。他们甚至有一个过程的名称,他们称之为思想的交叉施肥。

所以,下次你遇到问题时,你会转到哪里寻找灵感?柏拉图,亚里士多德......

                   

2