和一个CMU的研究生,聊天所记录的东西。
程序员文章站
2022-07-04 21:09:18
...
下一代编程语言的发展和计算机系统的部署方式
我举个例子,分布式网络的设计和计算,在一学期过后,一般最差的学生,也该用cmu的模型分析工具作过一个以太网的架构设计,具体服务器,客户端接程序的类图设计,并且需要用Java,结合OSI模型第四层,和第三层的协议进行编程。大量的测试和调整网络的路由情况,尤其是局部的负载调整,自己模拟了路由器集群的工作,而这些不要照搬cisco的协议。完全自己分析,反复捕捉一个路由器,一个网络工作,需要哪些东西;比如说,一个第三层的路由协议要自己定义,一个第四层的传输协议要自己做。其实tcp/Ip协议远远不够好, 所以我们在OSI三,四层之间加入了一个物理端口层,这个好处,很直接:即便是2个局域网内都有机器在使用192.168.1.1这样的地址,我们仍然可以直接和它建立通信,而不需要仍和上层的软件客户端/服务器端。
所以,IPv6不一定是未来的主流,而分布式,我很强烈地感觉到是21世界IT的核心。我这是在做编译器,操作系统时得到的启示。而不是仅仅局限于研究网络模型。所以,一个有毅力的计算机研究人员,需要更多地去实践,更多地去关注许多领域的研究,这样才会发现交汇处的核心内容。跨学科大概也是这样,至少计算机领域的发展方向的预见,需要这样的条件。
过去的C语言是面向过程地,C++和java提出面向对象,这些传统语言的变化,实质上这是个数据聚合方式的对象在发生变化,C语言可以说是面向函数,也就是说它的数据聚合方式是以函数为节点,来实现自我进化和遗传的。C++则可以说是更加真实地模拟自然的属性,用类来实现数据的聚合和父系和子代的遗传。然而,有个最重要的问题,一直以来没有得到解决,那就是:无论是面向过程,还是对象,所有的数据聚合体都是被动调用的,这就是冯 若依曼结构的瓶颈。所有的程序执行,从编写,到编译,再到执行,都是调用在做线形运行体系下的非线性同步运行。比如说:进程,线程,包括可以在不同地址上移动的线程,实质上都是线性调用的,这个局面导致我们的程序很难有主动性,很难有自我意识,也就是说很难让它自己思考;至少,每个程序聚合体,如果程序员不指定它的调用机制和场合,它自己是永远不会去执行的。举个例子,我们写了个类,这个类实现了小狗“叫”的功能,如果去执行它,那么小狗就叫了。但是,我们什么时候执行它呢?程序员必须在其他类里面来指定,
比如说,“主人给骨头”这个类。而这个过程,实际上是程序员在一次次指定,来告诉“主人给骨头”这个类去调用“小狗叫”这个类 ,要不,“小狗叫”这个类,即便知道有骨头要叫,但也不会执行呀。因为我们的编译器不会把没有调用的程序安排进整个执行体。这就是用那种高级语言也无法解决的问题,简而言之,程序太笨了。
有些人会说,有必要去让程序便得能够自我激发吗,也就是自我执行?有,在网络的核心当中,处在第三层的路由器集群,每时每刻都在与周边的路由器进行联系,寻找路径,传输数据,并且判断是否有路由器吊线,已做出调整路由列表的决定,而这过过程,从来没有间断过。需要在每一个单一的路由器平台上运行的路由器协议,传输协议具备自我执行的能力。我举个例子:有一台路由器染了病毒,因为美国的黑客倾入,那么整个校园网某个出口上的数据无法送出。 这时下一级路由器需要去询问上级路由器:你到底怎么了?在线吗?能工作吗? 而这个染毒的路由器就像一个发高烧的人,基本上已经可以说是死掉了。它没有能力去回答,因为他的程序是被动去被下一级路由器调用的;等到下一级路由器去询问时(相当于调用),它已经没有能力做出回应了。即便让上一级路由器去主动告诉下一级,也不可能很好工作,因为在他发现自己应该告诉下一级路由器自己异常时,已经坏了。所以,当年在改进cisco公司的IIGRP协议时,首先是提出了划分邻居路由器的概念,而后我们小组提出需要将类的聚合机智智能化,让路由协议的每个类,每个小的agent都能够向小狗那样,知道自己什么时候该叫,什么时候该攻击,什么时候该发出信号,所有小的Agent聚合在不同的domain里。
这个概念,在微软的.Net平台上已经开始运用了。他们提出的C#语言就是这样的管理机制,里面就有线程管理域,但他们绝对不是原创。另外,为了更好地在以太网内建立通信,我指的通信是指在路由协议那一层,就像2个互联的局域网内有2台都使用同一个2级IP的机器,他们可以直接通过第四层协议就看到对方,互相通信。不需什么端口映射机制。这个项目里面有3个首要的问题:一个是编译器的从新构造,需要更多地去研究自然物体的能动属性,国际上叫做Agent,比如小狗有吃,叫,跑等等属性,但都属于反射属性;第二个是编程语言的数据聚合方式地从新设计,类很显然不可能摆脱被别的对象调用的命运,也不可能去主动给子代做遗传;第三个是改进OSI模型;七层很显然是不够了,而现成的tcp/ip协议很显然并不严谨。最后补充一点,就是这样做下来,由于语言原始智能化,2进制代码执行的效率越低,越是智能化,执行效率越低,所以传统的2进制很显然不可以再用。冯式的结构就自然不合适,所以,光电脑的研究也需要跟上;这在国外,越来越成熟,3进制作为光的自然属性,将有利于智能化的语言。
所以,最后归结出,21世纪,不是哪个公司有更多钱,目前低位多高,市场份额多大就可以占据头牌,而是在关键的技术上实现原始创造。这点,CMU一直做得很好;当然以上这些是我论文中很多次写到的,个人的预测。从编译器,语言的设计,结合到网络模型地改进,最后是计算机体系的更新。
而这些,我得出地最后结论是:分布式的计算机系统就是未来的核心。没有什么单纯意义上地网络公司,操作系统公司,系统软件公司。因为,整个互联网通过这种核心地改造——依赖于语言,计算机体系的更新,使得各个大型的路由器核心构成了一个庞大的智能网络。而所有的用户仍然可以用原始的2进制系统,你只需要一个转换设备,连接互联网,其他的处理功能,并不需要赋予个人机器,大家都是通过智能的网络核心来处理,得到你需要的信息。这就是为什么微软要急着推出.Net,他们提出:21世纪,软件的内涵是提供服务,你不需要知道这些东西怎样运作,只需要告诉网络,你需要什么信息,然后自能地给你提供;连数据在哪里,你都不用知道,当然,.Net是不可能完全做到的,因为微软就不怎么样。另外,核心的cisco把握了网络的基础。
作为一个异常热爱计算机的人,我这些感觉,大概形成也用了这么多年学习,实践所归纳的知识。所以,国内应该真正感到危机,我看了2005年国家计算机学科支柱的项目,各个大学的都有;但是没有设计我提到的这些领域。这是危险的开始,很快吧,20年左右,大家应该会发现C++等等不是你正在用的主流语言了。我们的那些研究?机遇应用的研究,基本上是不能长久地。西方人在想什么我不知道,但从那里走回来了,我深深体会到别人真地在做未来需要的科技 。
我举个例子,分布式网络的设计和计算,在一学期过后,一般最差的学生,也该用cmu的模型分析工具作过一个以太网的架构设计,具体服务器,客户端接程序的类图设计,并且需要用Java,结合OSI模型第四层,和第三层的协议进行编程。大量的测试和调整网络的路由情况,尤其是局部的负载调整,自己模拟了路由器集群的工作,而这些不要照搬cisco的协议。完全自己分析,反复捕捉一个路由器,一个网络工作,需要哪些东西;比如说,一个第三层的路由协议要自己定义,一个第四层的传输协议要自己做。其实tcp/Ip协议远远不够好, 所以我们在OSI三,四层之间加入了一个物理端口层,这个好处,很直接:即便是2个局域网内都有机器在使用192.168.1.1这样的地址,我们仍然可以直接和它建立通信,而不需要仍和上层的软件客户端/服务器端。
所以,IPv6不一定是未来的主流,而分布式,我很强烈地感觉到是21世界IT的核心。我这是在做编译器,操作系统时得到的启示。而不是仅仅局限于研究网络模型。所以,一个有毅力的计算机研究人员,需要更多地去实践,更多地去关注许多领域的研究,这样才会发现交汇处的核心内容。跨学科大概也是这样,至少计算机领域的发展方向的预见,需要这样的条件。
过去的C语言是面向过程地,C++和java提出面向对象,这些传统语言的变化,实质上这是个数据聚合方式的对象在发生变化,C语言可以说是面向函数,也就是说它的数据聚合方式是以函数为节点,来实现自我进化和遗传的。C++则可以说是更加真实地模拟自然的属性,用类来实现数据的聚合和父系和子代的遗传。然而,有个最重要的问题,一直以来没有得到解决,那就是:无论是面向过程,还是对象,所有的数据聚合体都是被动调用的,这就是冯 若依曼结构的瓶颈。所有的程序执行,从编写,到编译,再到执行,都是调用在做线形运行体系下的非线性同步运行。比如说:进程,线程,包括可以在不同地址上移动的线程,实质上都是线性调用的,这个局面导致我们的程序很难有主动性,很难有自我意识,也就是说很难让它自己思考;至少,每个程序聚合体,如果程序员不指定它的调用机制和场合,它自己是永远不会去执行的。举个例子,我们写了个类,这个类实现了小狗“叫”的功能,如果去执行它,那么小狗就叫了。但是,我们什么时候执行它呢?程序员必须在其他类里面来指定,
比如说,“主人给骨头”这个类。而这个过程,实际上是程序员在一次次指定,来告诉“主人给骨头”这个类去调用“小狗叫”这个类 ,要不,“小狗叫”这个类,即便知道有骨头要叫,但也不会执行呀。因为我们的编译器不会把没有调用的程序安排进整个执行体。这就是用那种高级语言也无法解决的问题,简而言之,程序太笨了。
有些人会说,有必要去让程序便得能够自我激发吗,也就是自我执行?有,在网络的核心当中,处在第三层的路由器集群,每时每刻都在与周边的路由器进行联系,寻找路径,传输数据,并且判断是否有路由器吊线,已做出调整路由列表的决定,而这过过程,从来没有间断过。需要在每一个单一的路由器平台上运行的路由器协议,传输协议具备自我执行的能力。我举个例子:有一台路由器染了病毒,因为美国的黑客倾入,那么整个校园网某个出口上的数据无法送出。 这时下一级路由器需要去询问上级路由器:你到底怎么了?在线吗?能工作吗? 而这个染毒的路由器就像一个发高烧的人,基本上已经可以说是死掉了。它没有能力去回答,因为他的程序是被动去被下一级路由器调用的;等到下一级路由器去询问时(相当于调用),它已经没有能力做出回应了。即便让上一级路由器去主动告诉下一级,也不可能很好工作,因为在他发现自己应该告诉下一级路由器自己异常时,已经坏了。所以,当年在改进cisco公司的IIGRP协议时,首先是提出了划分邻居路由器的概念,而后我们小组提出需要将类的聚合机智智能化,让路由协议的每个类,每个小的agent都能够向小狗那样,知道自己什么时候该叫,什么时候该攻击,什么时候该发出信号,所有小的Agent聚合在不同的domain里。
这个概念,在微软的.Net平台上已经开始运用了。他们提出的C#语言就是这样的管理机制,里面就有线程管理域,但他们绝对不是原创。另外,为了更好地在以太网内建立通信,我指的通信是指在路由协议那一层,就像2个互联的局域网内有2台都使用同一个2级IP的机器,他们可以直接通过第四层协议就看到对方,互相通信。不需什么端口映射机制。这个项目里面有3个首要的问题:一个是编译器的从新构造,需要更多地去研究自然物体的能动属性,国际上叫做Agent,比如小狗有吃,叫,跑等等属性,但都属于反射属性;第二个是编程语言的数据聚合方式地从新设计,类很显然不可能摆脱被别的对象调用的命运,也不可能去主动给子代做遗传;第三个是改进OSI模型;七层很显然是不够了,而现成的tcp/ip协议很显然并不严谨。最后补充一点,就是这样做下来,由于语言原始智能化,2进制代码执行的效率越低,越是智能化,执行效率越低,所以传统的2进制很显然不可以再用。冯式的结构就自然不合适,所以,光电脑的研究也需要跟上;这在国外,越来越成熟,3进制作为光的自然属性,将有利于智能化的语言。
所以,最后归结出,21世纪,不是哪个公司有更多钱,目前低位多高,市场份额多大就可以占据头牌,而是在关键的技术上实现原始创造。这点,CMU一直做得很好;当然以上这些是我论文中很多次写到的,个人的预测。从编译器,语言的设计,结合到网络模型地改进,最后是计算机体系的更新。
而这些,我得出地最后结论是:分布式的计算机系统就是未来的核心。没有什么单纯意义上地网络公司,操作系统公司,系统软件公司。因为,整个互联网通过这种核心地改造——依赖于语言,计算机体系的更新,使得各个大型的路由器核心构成了一个庞大的智能网络。而所有的用户仍然可以用原始的2进制系统,你只需要一个转换设备,连接互联网,其他的处理功能,并不需要赋予个人机器,大家都是通过智能的网络核心来处理,得到你需要的信息。这就是为什么微软要急着推出.Net,他们提出:21世纪,软件的内涵是提供服务,你不需要知道这些东西怎样运作,只需要告诉网络,你需要什么信息,然后自能地给你提供;连数据在哪里,你都不用知道,当然,.Net是不可能完全做到的,因为微软就不怎么样。另外,核心的cisco把握了网络的基础。
作为一个异常热爱计算机的人,我这些感觉,大概形成也用了这么多年学习,实践所归纳的知识。所以,国内应该真正感到危机,我看了2005年国家计算机学科支柱的项目,各个大学的都有;但是没有设计我提到的这些领域。这是危险的开始,很快吧,20年左右,大家应该会发现C++等等不是你正在用的主流语言了。我们的那些研究?机遇应用的研究,基本上是不能长久地。西方人在想什么我不知道,但从那里走回来了,我深深体会到别人真地在做未来需要的科技 。
推荐阅读