CSP++ 计划书

t10599762 2009-01-17 10:46:55
CSP++ 计划书
CSP++ 是C++Server Page的简称,没听说过?那是肯定的,这是我准备发起的一个C++开源项目,本项目致力于开发一个以C++为基础的Web 应用程序开发体系。C++是一个强大的语言,但是却没有一个基于C++的Web 应用程序开发体系,有的只是JSP,ASP.NET,这些都是基于解释语言的。C++是一种高效的语言,而服务器需要高效的程序,但是为什么C++却没有在其中发挥其应有的作用列?我想主要原因有两个,一个是厂商的策略(这个我们管不了),一个是安全原因。确实C++是个强大的语言,以致不会有人让人随意上传代码到服务器,然后让服务器去编译执行。那我们是不是可以让这段代码编译后安全的在服务器运行列?我想答案是可以的,首先因为我的目标是操作系统和平台的可移植性,所以所有的代码都是平台无关,操作系统无关,也就是说我只是用最基本的C++语言元素(不支持头文件和与操作系统相关的函数,仅有基本的库可供链接)和一些像JSP,ASP.NET一样的内置对象,总之就是在保证安全的基础上提供尽可能强大的功能。当然只是这样还是不够的,所以我的目标还要把这段代码放在虚拟机(不是解释运行的那种,而是使用CPU直接运行的那种)中运行。这个虚拟机运行一个极小化的操作系统,视需要仅提供有限的文件访问,或者是不能进行文件访问,提供中介的数据库访问能力,不模拟任何硬件,也就是说在这个编译后的程序的内存空间中除了一些可以保证安全的公共链接库以外,就不让他存在其他任何东西(就我的安全知识而言,这样应该可以保证安全的)。通过这些机制我们可以提供操作系统和平台的可移植性,在相同平台下仅改变操作系统时我们甚至可以不用重新编译。

我对本项目的计划如下,对于编译器方面长远目标是开发针对本项目优化的编译器,近期目标是开发一个针对本项目的语法检查器,对C++源文件进行一些相关检查后就把C++源文件送给已有的智能C++编译器。对于虚拟机方面先开发个满足最小集合的Web 应用程序需要的简单虚拟机,长远是实现个可扩展的,可定制的与本项目紧密结合的高效虚拟机,在Web服务器方面近期也是使用已有的。

以上是本项目的基本思想,由于本人的能力,精力有限。现在公布我的整体思想,以寻求各位高手的参与,大家共同努力先搞一个在X86平台,WIN32操作系统上的实现。欢迎各位有志之士多多联系我,t10599762@163.com。玩C++的高手多,大家共同努力为C++做点贡献吧!以上仅是我个人的思想,肯定存在很多不足,希望大家共同努力首先把本项目的基本思想先做个优化。我个人认为这个方案有很多优点,需求也不小,是值得我们为他付出的。
...全文
241 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
t10599762 2009-02-14
  • 打赏
  • 举报
回复
my god!my sky!
t10599762 2009-01-24
  • 打赏
  • 举报
回复
开发与维护?我发现不知你说的是那方面?C++Web 应用程序,还是这个平台。不太明白你想说什么
t10599762 2009-01-24
  • 打赏
  • 举报
回复
开发与维护?我发现不知你说的是那方面?C++Web 应用程序,还是这个平台。不太明白你想说什么
zenny_chen 2009-01-23
  • 打赏
  • 举报
回复
哦。原来如此。
t10599762 2009-01-23
  • 打赏
  • 举报
回复
这个虚拟机运行一个极小化的操作系统 ,安全呀,标准化,好处较多。
想问下这里怎么修改呀?我想传个附件?(我些了个将csp++转化为C++源码的程序,想大家帮我看看。提提意见)
易开发性和维护性,都是可以作到的(不过我难作到,我都没实践过这些东西)有没意义不重要,过程重要,我现在的任务就是学习
zenny_chen 2009-01-22
  • 打赏
  • 举报
回复
嗯。不过对于用户来说,除了安全以外还有易开发性和维护性。如果没有这两点的话,那么意义也不是很大。
t10599762 2009-01-21
  • 打赏
  • 举报
回复
有人说到了前途,这个很难说,我想这个技术是有前途的,毕竟人家intel都有专门的技术支持虚拟机了。不要说intel 会支持落后的技术哦(本系统不仅使用先进的CPU技术,还使用先进的专有的CPU技术)!不过想通过开源项目开发个可以商业运营的产品,这个前途是不明朗的,我们不要要求过高呀(我甚至悲观的想过如果这是很火的技术,中国的公司又能分多少羹呢?)我首先只是想做个技术验证(其他以后再说),希望这个技术可行,并且有很大的市场,因为这个技术是模块化的,所以我想Borland可能会做个编译器,VMware可能会做个虚拟机(当然人家是不是开源就不知道了)。不过看到现在的反应,技术验证下也是不明朗的,也许我就不应该过分高估别人的热情,这样的做法也许本来就是错误的。
hhyttppd 2009-01-21
  • 打赏
  • 举报
回复
学习。。。
t10599762 2009-01-21
  • 打赏
  • 举报
回复
我说的平台无关只不过是说int 是32位, long 是64位。如果平台相关的话我想int和long在64位平台上将都是64位的,因为C++标准没有规定这些东西(有些东西是有必要向JSP,ASP.NET学习的),楼上并没有明白我的意图,不同的平台有不同的编译器,当然就会针对平台优化,但这是优化编译器的问题了(JAVA不管怎么优化引擎 CSP++ 和JSP差别就像C++程序和JAVA程序),另外我想告诉楼上二进制码都是平台相关的,如果你换了个平台的话,系统就会知道已有的程序已经失效,并重新编译。除了安全方面我没有完全的把握外,我想这个系统在很多方面会拥有比JSP,ASP.NET更多的优点。
herman~~ 2009-01-21
  • 打赏
  • 举报
回复
这个虚拟机运行一个极小化的操作系统

不太明白为何要实现成这样的形式
zenny_chen 2009-01-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 t10599762 的回复:]
我说的平台无关只不过是说int 是32位, long 是64位。如果平台相关的话我想int和long在64位平台上将都是64位的,因为C++标准没有规定这些东西(有些东西是有必要向JSP,ASP.NET学习的),楼上并没有明白我的意图,不同的平台有不同的编译器,当然就会针对平台优化,但这是优化编译器的问题了(JAVA不管怎么优化引擎 CSP++ 和JSP差别就像C++程序和JAVA程序),另外我想告诉楼上二进制码都是平台相关的,如果你换了个平台的话,系统就…
[/Quote]

呵呵,在IA-32架构下的C/C++编译器,目前都是将int和long的字节长度指定为4个字节吧。Java确实是将long作为64字节的。如果在64位编译环境下,理论上应该将int作为64位长度计算。因为int类型在标准中是不定义具体长度的。它表示一个机器一般可容纳的字节长度(32位下就是4个字节,尽管有些特殊寄存器可以直接做64位及128位的计算)。而如果使用特定平台,比如x86,那么Intel提出了一个Intel64架构技术,EM64T,它是对64位存储器访问的扩充,在兼容模式下int仍然为32位的。因此,如果要用64位长度的话,基本上仍然要用扩展基本类型,比如微软的__int64以及比较通用的long long。不过考虑到兼容性,我想此时,即使在64位模式下应该也是如此吧。不过我没用过64位环境,目前还无法正式确定。

不过我一开始确实有些误解。现在考虑到你所谓的将C/C++代码直接通过CPU上执行都是在服务器端上开发中进行的,那么这是可行的。我一开始以为是客户端上传自己的C/C++代码到服务器端运行,呵呵。

那么这样的话也可以在CSP++中弄些脚本之类的,然后在运行前先编译为二进制文件,然后连接、加载执行。这确实也是可行的。不过这样的运行对于运行时的一些动态处理能力会大大降低,如果你的目标是执行速度的话,那么有些运行时动态特性可以不去考虑。

总的来说还是具有可行性的。看看做出来会是什么东东,呵呵。
Oversense 2009-01-20
  • 打赏
  • 举报
回复
努力。。。
maldini20040607 2009-01-20
  • 打赏
  • 举报
回复
我也是能力有限啊,算我一个了
lbh2001 2009-01-20
  • 打赏
  • 举报
回复
C++ Server Pages ----> 很早已经有人做了,而且好有引擎
http://stdcpp.cn/html/12/12/0512/97.htm
gbb21 2009-01-20
  • 打赏
  • 举报
回复
这个帖子不火的主要原因是,大家觉得这个没有潜力~
t10599762 2009-01-20
  • 打赏
  • 举报
回复
本人已有个技术验证方案,可是我没有服务器,希望关心本计划的人好心提供资源,
zenny_chen 2009-01-20
  • 打赏
  • 举报
回复
不是我想泼冷水,不过如果是这样一个意图的话恐怕效率不会比JSP或ASP高到哪里去。
将用户二进制代码直接在CPU上运行,这看似会比传统的解释程序速度更快。但是楼住偏偏忽略了当今处理器的一些更为先进的一些技术,使得很多处理如果有针对性优化的话,速度将会快很多(8倍甚至10倍都有可能)。所以本人认为平台无关性本身将是降低CPU执行效率的一个关键点。

第一点:使用SIMD做暴力计算上的优化。如果用户提供的程序是平台无关的,那么当他们在写一些基于暴力计算的算法时就不应该使用平台特定的计算单元对算法进行优化处理,而这往往会降低CPU执行效率。比如做多媒体处理时。

第二点:基于多核的并行计算以及超线程技术的优化。作为平台无关性,用户当然不关心自己的程序是否被多核并行计算了,不过服务器此时该如何处理呢?强大的服务器往往会有超强的行能,但是这能被挖掘多少?

第三点:64位技术。这个技术近年来以及开始逐渐普及。但是我们现在写的程序都是基于32位的。拥有64位技术的服务器如何将这些32位的程序做64位的优化呢?当然,Intel64技术(EM64T)兼容32位模式,此时一个进程可以由操作系统指定在哪种模式下执行。但是对于一般32位程序而言,基于64位的优化将会有更大的获益。

当然,除了上面三点外还有其它一些特性,不过上面三点也是近年来主流技术。

因此,个人认为已当前处理器先进的技术,将一个平台无关的二进制代码直接拿去运行的效率并不会很高。可以使用类似于Java的字节码形式,利于解析并进行优化,然后即时进行编译执行。根据不同的目标机器可以发布不同版本的引擎,尽可能地发掘处理器的机能。

所以我的答案是JIT。
xiaoyisnail 2009-01-17
  • 打赏
  • 举报
回复

自己实现虚拟机啊,顶~
waizqfor 2009-01-17
  • 打赏
  • 举报
回复
好多啊 看了一般 能力有限啊 帮顶

65,211

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧