Cloud Computing - The Spring Semester - 2017 (云计算,春季,2017)

lblabs
Cloud Computing - The Spring Semester - 2017 (云计算,春季,2017)

为什么不能进行云编程? 李冰 bing.li@asu.edu 在当代云计算被炒得天翻地覆的情况下,一个尴尬的事实是,程序员并不能对云系统进行编程。 为了帮助程序员快速开发云计算系统,当前的软件工程技术产生了三个发展方向。第一,通过为特定计算环境建立基础架构系统,从而大大减轻开发人员的代价。这些基础架构系统力图通过软件工程技术把复杂的计算环境开发细节隐藏起来,即代替用户解决这些庞杂的技术问题;同时,向开发人员提供一套脚本语言或者利用现有面向对象技术,描述具体应用需求。这样,在整个开发过程中,开发人员完全不需要关心互联网计算环境的细节,只要掌握基本单机或者简单网络环境下的逻辑描述方法,就可以完成互联网环境中的软件开发。当前,这种方法被普遍采用;学术界和工业界都有众多上述架构存在;新的架构也在不断被提出。云计算系统作为一个互联网环境中的特殊软件,主要就是通过这种方法来开发的。这种方法的优点很明显,那就是通过软件虚拟方法把复杂计算环境抽象成了简单环境,从而降低开发成本。不过,它的缺点也很明显。在整个开发过程中,开发人员完全依赖于已有架构,他们的主动开发能力完全被束缚,失去对软件系统级别上的控制能力。另外,每一个基础架构通常只能针对一种特殊环境来进行虚拟化,几乎不可能存在把互联网这样复杂系统中所有计算细节都隐藏起来的架构。因此,如果在一个具体计算环境中没有对应架构存在,开发人员开发代价将大大提高,甚至无法进行开发。 根据我前面对云计算编程的定义,由于这个方法开发人员无需了解互联网复杂计算环境知识,并且完全依赖某个特殊环境中的虚拟基础架构,无法自由构造出满足各种特殊需求的云计算系统,这种开发方式不能叫做对云计算系统进行编程。 第二种方法就是提出新的应用程序接口和设计模式,并且以开放代码的方式帮助程序员开发互联网系统。由于互联网系统的复杂性,必然要求软件工程研究人员提出大量新的程序接口以及组合这些接口的设计模式。利用这些接口和设计模式,可以针对不同互联网计算环境灵活开发出各种可能的计算系统。在这个过程中,互联网计算环境中的技术细节对开发人员并不是完全透明的,程序员必须对互联网计算环境有所了解;同时由于应用程序接口和代码级成熟设计模式的使用,开发代价并不高。这种方式克服了利用成熟架构开发时开发人员完全被动的地位,给他们提供了利用自己的能力主动适应各种计算环境的可能性。更进一步,如果采取开放代码的方式,开发人员还可以对具体应用程序接口和设计模式进行修改,从而更加积极灵活地面对各种不同互联网计算环境的要求。这种方式的缺陷是对于开发人员的要求明显高于利用虚拟基础架构的方法。但是,根据我的定义,大家可以看出,这种方法初步为程序员提供了对云计算系统进行编程的能力。我的开发环境GreatFree当前的工作就是沿着这个方向进行的。 第三,为互联网计算系统开发环境提出新的编程语言。这当然是最直接的解决方案。Java在起初被提出时,号称是互联网语言。相对于C或者C++,它确实前进了一大步。但是,互联网计算环境发展速度远远超出当时设计者的认识。当前,几乎没有人敢于用Java标准版(Java SE)来开发互联网系统软件了。换言之,传统程序语言已经难以适应互联网系统开发;这也是大量基础架构产生的直接原因。Java以及其他传

About

为什么不能进行云编程? 李冰 bing.li@asu.edu 在当代云计算被炒得天翻地覆的情况下,一个尴尬的事实是,程序员并不能对云系统进行编程。 为了帮助程序员快速开发云计算系统,当前的软件工程技术产生了三个发展方向。第一,通过为特定计算环境建立基础架构系统,从而大大减轻开发人员的代价。这些基础架构系统力图通过软件工程技术把复杂的计算环境开发细节隐藏起来,即代替用户解决这些庞杂的技术问题;同时,向开发人员提供一套脚本语言或者利用现有面向对象技术,描述具体应用需求。这样,在整个开发过程中,开发人员完全不需要关心互联网计算环境的细节,只要掌握基本单机或者简单网络环境下的逻辑描述方法,就可以完成互联网环境中的软件开发。当前,这种方法被普遍采用;学术界和工业界都有众多上述架构存在;新的架构也在不断被提出。云计算系统作为一个互联网环境中的特殊软件,主要就是通过这种方法来开发的。这种方法的优点很明显,那就是通过软件虚拟方法把复杂计算环境抽象成了简单环境,从而降低开发成本。不过,它的缺点也很明显。在整个开发过程中,开发人员完全依赖于已有架构,他们的主动开发能力完全被束缚,失去对软件系统级别上的控制能力。另外,每一个基础架构通常只能针对一种特殊环境来进行虚拟化,几乎不可能存在把互联网这样复杂系统中所有计算细节都隐藏起来的架构。因此,如果在一个具体计算环境中没有对应架构存在,开发人员开发代价将大大提高,甚至无法进行开发。 根据我前面对云计算编程的定义,由于这个方法开发人员无需了解互联网复杂计算环境知识,并且完全依赖某个特殊环境中的虚拟基础架构,无法自由构造出满足各种特殊需求的云计算系统,这种开发方式不能叫做对云计算系统进行编程。 第二种方法就是提出新的应用程序接口和设计模式,并且以开放代码的方式帮助程序员开发互联网系统。由于互联网系统的复杂性,必然要求软件工程研究人员提出大量新的程序接口以及组合这些接口的设计模式。利用这些接口和设计模式,可以针对不同互联网计算环境灵活开发出各种可能的计算系统。在这个过程中,互联网计算环境中的技术细节对开发人员并不是完全透明的,程序员必须对互联网计算环境有所了解;同时由于应用程序接口和代码级成熟设计模式的使用,开发代价并不高。这种方式克服了利用成熟架构开发时开发人员完全被动的地位,给他们提供了利用自己的能力主动适应各种计算环境的可能性。更进一步,如果采取开放代码的方式,开发人员还可以对具体应用程序接口和设计模式进行修改,从而更加积极灵活地面对各种不同互联网计算环境的要求。这种方式的缺陷是对于开发人员的要求明显高于利用虚拟基础架构的方法。但是,根据我的定义,大家可以看出,这种方法初步为程序员提供了对云计算系统进行编程的能力。我的开发环境GreatFree当前的工作就是沿着这个方向进行的。 第三,为互联网计算系统开发环境提出新的编程语言。这当然是最直接的解决方案。Java在起初被提出时,号称是互联网语言。相对于C或者C++,它确实前进了一大步。但是,互联网计算环境发展速度远远超出当时设计者的认识。当前,几乎没有人敢于用Java标准版(Java SE)来开发互联网系统软件了。换言之,传统程序语言已经难以适应互联网系统开发;这也是大量基础架构产生的直接原因。Java以及其他传

To listen to explicit episodes, sign in.

Stay up to date with this show

Sign in or sign up to follow shows, save episodes and get the latest updates.

Select a country or region

Africa, Middle East, and India

Asia Pacific

Europe

Latin America and the Caribbean

The United States and Canada