[合集]请问用C编的大数阶乘最多能算多大的

[复制链接]
查看11 | 回复0 | 2021-1-29 05:17:05 | 显示全部楼层 |阅读模式
───────────────────────────────────────
作者greatxycome(木头),信区:AlgoDesign
标题请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月04日23:54:32星期三),站内信件
───────────────────────────────────────
理论上有上限吗?谢谢!
───────────────────────────────────────
作者sunzx(CYPU-3years...),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月04日23:55:28星期三),转信
───────────────────────────────────────
如果你模拟乘法/加法的话理论上空间上限只和你的编译器限制的内存有关greatxycome (木头) 在 ta 的帖子中提到:理论上有上限吗?谢谢!
───────────────────────────────────────
作者bobjones(bobjones),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月05日02:10:56星期四),转信
───────────────────────────────────────
我算到37861就不行了sunzx (CYPU-3years...) 在 ta 的帖子中提到:如果你模拟乘法/加法的话理论上空间上限只和你的编译器限制的内存有关
───────────────────────────────────────
作者kingchar(偶是笨小孩),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月05日08:55:59星期四),站内信件
───────────────────────────────────────
为什么,我只写过10000以内的,不过可以改为100000以内的(没有试)到37861是什么不行了?bobjones (bobjones) 在 ta 的帖子中提到:我算到37861就不行了
───────────────────────────────────────
作者greatxycome(木头),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月05日11:44:48星期四),站内信件
───────────────────────────────────────
为什么是37861呢?数字这么怪异,能发到我站内邮箱里么?好让我也琢磨琢磨谢谢了我编的估计只能算到20000(算19999还能算出,算20000就不见机子有反应了)bobjones (bobjones) 在 ta 的帖子中提到:我算到37861就不行了
───────────────────────────────────────
作者yuanxiaoxu(流星),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月05日16:57:41星期四),站内信件
───────────────────────────────────────
我算到100000花了5分bobjones (bobjones) 在 ta 的帖子中提到:我算到37861就不行了
───────────────────────────────────────
作者bobjones(bobjones),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月05日18:27:41星期四),转信
───────────────────────────────────────
因为只有64K内存呀,如果没有内存限制,理论上可以算到1E9kingchar (偶是笨小孩) 在 ta 的帖子中提到:为什么,我只写过10000以内的,不过可以改为100000以内的(没有试)到37861是什么不行了?
───────────────────────────────────────
作者bobjones(bobjones),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月05日18:28:25星期四),转信
───────────────────────────────────────
这么强?你怎么算的?也是在64K内存限制下?
yuanxiaoxu (流星) 在 ta 的帖子中提到:我算到100000花了5分
───────────────────────────────────────
作者kingchar(偶是笨小孩),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月05日19:17:28星期四),站内信件
───────────────────────────────────────
bobjones (bobjones) 在 ta 的帖子中提到:因为只有64K内存呀,如果没有内存限制,理论上可以算到1E9~~~~~~~~~~~~~~~~~没有限制的话,是不是可以算到任意数?
───────────────────────────────────────
作者kingchar(偶是笨小孩),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月05日19:20:17星期四),站内信件
───────────────────────────────────────
贴出来看看?bobjones (bobjones) 在 ta 的帖子中提到:这么强?你怎么算的?也是在64K内存限制下?
───────────────────────────────────────
作者bobjones(bobjones),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月05日20:16:35星期四),转信
───────────────────────────────────────
是呀,至少说说思路,我真的很怀疑100000!5分!嗯~~~~~~~~~kingchar (偶是笨小孩) 在 ta 的帖子中提到:贴出来看看?
───────────────────────────────────────
作者sunzx(CYPU-3years...),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月06日01:29:40星期五),转信
───────────────────────────────────────
你用保护模式的编译器(biruvc或者freepascal)写啊这就木有限制了
用实模式的编译器的话可以用堆内存的
bobjones (bobjones) 在 ta 的帖子中提到:因为只有64K内存呀,如果没有内存限制,理论上可以算到1E9
───────────────────────────────────────
作者nankaiwolf(南开狼),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月07日22:20:36星期六),站内信件
───────────────────────────────────────
我来解释为什么他急着要这个结果,因为写出来就可以免试数据结构了。哈哈哈哈哈~~~~~
但是诸位大哥把这个问题越讲越复杂,越来越深入,我怕把他给讲旷了……
来来来,继续讨论。那个30000多的那个程序是在tc2.0下面用微型编译模式编译出来的,所以有那么大。但如果进入windows,那我们现在所学到的内容就有些排不上用场,特别是说到了不同编译模式和内存的使用方法。诸位可以去翻阅一下我的那篇论文——这么幼稚的论文已经是我们系里面的最高水平了。主要是还不知道一些内存管理方面比较深入的技术。能不能请高人简单讲一讲这方面的技术呢?那篇论文已经交给刘老爷子了,现在我是单纯的对这个问题很有兴趣,在这里先谢谢各位大哥了!
反正课程马上就要结束了,呵呵……
sunzx (CYPU-3years...) 在 ta 的帖子中提到:你用保护模式的编译器(biruvc或者freepascal)写啊这就木有限制了用实模式的编译器的话可以用堆内存的
───────────────────────────────────────
作者sunzx(CYPU-3years...),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月07日22:28:12星期六),转信
───────────────────────────────────────
一般的C的编译器里面你可以用三种内存公共数据区,就是你开全局变量的内存堆内存,就是你用malloc()和free()分配的内存栈内存,就是你开局部变量的内存关于编译模式可以去查编译器的帮助或者ProgrammingManual之类的东东
nankaiwolf (南开狼) 在 ta 的帖子中提到:我来解释为什么他急着要这个结果,因为写出来就可以免试数据结构了。哈哈哈哈哈~~~~~但是诸位大哥把这个问题越讲越复杂,越来越深入,我怕把他给讲旷了……来来来,继续讨论。那个30000多的那个程序是在tc2.0下面用微型编译模式编译出来的,所以有那么大。但如果进入windows,那我们现在所学到的内容就有些排不上用场,特别是说到了不同编译模式和内存的使用方法。诸位可以去翻阅一下我的那篇论文——这么幼稚的论文已经是我们系里面的最高水平了。主要是还不知道一些内存管理方面比较深入的技术。能不能请高人简单讲一讲这方面的技术呢?那篇论文已经交给刘老爷子了,现在我是单纯的对这个问题很有兴趣,在这里先谢谢各位大哥了!反正课程马上就要结束了,呵呵……...........................
───────────────────────────────────────
作者randa(离开水的鱼),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月10日10:21:33星期二),站内信件
───────────────────────────────────────
请问能不能告诉我那论文怎么写呀,就是大致的形式拉,我没头绪呀,谢谢:)nankaiwolf (南开狼) 在 ta 的帖子中提到:我来解释为什么他急着要这个结果,因为写出来就可以免试数据结构了。哈哈哈哈哈~~~~~但是诸位大哥把这个问题越讲越复杂,越来越深入,我怕把他给讲旷了……来来来,继续讨论。那个30000多的那个程序是在tc2.0下面用微型编译模式编译出来的,所以有那么大。但如果进入windows,那我们现在所学到的内容就有些排不上用场,特别是说到了不同编译模式和内存的使用方法。诸位可以去翻阅一下我的那篇论文——这么幼稚的论文已经是我们系里面的最高水平了。主要是还不知道一些内存管理方面比较深入的技术。能不能请高人简单讲一讲这方面的技术呢?那篇论文已经交给刘老爷子了,现在我是单纯的对这个问题很有兴趣,在这里先谢谢各位大哥了!反正课程马上就要结束了,呵呵……
───────────────────────────────────────
作者randa(离开水的鱼),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月10日10:22:33星期二),站内信件
───────────────────────────────────────
谁能帮我写一篇呀,呵呵sunzx (CYPU-3years...) 在 ta 的帖子中提到:你用保护模式的编译器(biruvc或者freepascal)写啊这就木有限制了用实模式的编译器的话可以用堆内存的
───────────────────────────────────────
作者sunzx(CYPU-3years...),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月10日17:17:19星期二),转信
───────────────────────────────────────
哼唧,找枪手请去secondhand版有问题问的话热心人会回答的但是让别人给你写...这个不太好吧...
randa (离开水的鱼) 在 ta 的帖子中提到:谁能帮我写一篇呀,呵呵
───────────────────────────────────────
作者nankaiwolf(南开狼),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日12:04:43星期三),站内信件
───────────────────────────────────────
tc里面只能给你64k的内存量,这64k里面还包括了程序占用的空间。而且您说的这三种内存是动态分配的还是有自己固定的分配量?我从我那个程序上看似乎是动态分配的吧。而且如果再vc下面编写就要涉及到windows的内存分配,这个该怎么考虑呢?
sunzx (CYPU-3years...) 在 ta 的帖子中提到:一般的C的编译器里面你可以用三种内存公共数据区,就是你开全局变量的内存堆内存,就是你用malloc()和free()分配的内存栈内存,就是你开局部变量的内存关于编译模式可以去查编译器的帮助或者ProgrammingManual之类的东东~~如果和内面的...........................
───────────────────────────────────────
作者sunzx(CYPU-3years...),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日15:20:43星期三),转信
───────────────────────────────────────
你说的是tc的tiny模式吧...公用数据区是静态的,堆内存和栈内存都是动态的vc下你只管分配就木有问题了,好像可以到2G的说当然new之后用完了最好要delete
nankaiwolf (南开狼) 在 ta 的帖子中提到:tc里面只能给你64k的内存量,这64k里面还包括了程序占用的空间。而且您说的这三种内存是动态分配的还是有自己固定的分配量?我从我那个程序上看似乎是动态分配的吧。而且如果再vc下面编写就要涉及到windows的内存分配,这个该怎么考虑呢?
───────────────────────────────────────
作者nankaiwolf(南开狼),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日19:10:35星期三),站内信件
───────────────────────────────────────
天哪!你看我这脑袋!我又把tc的编译模式给忘了!
new和delete怎么用?我先去查一查,没有实战经验……似乎的确是,我的一个同学说他分配空间分配了3000000的int数组就分配不动了,但是他有128的内存呢!这是怎么一回事呢?是不是说分配数组和用new分配不一样?
sunzx (CYPU-3years...) 在 ta 的帖子中提到:你说的是tc的tiny模式吧...公用数据区是静态的,堆内存和栈内存都是动态的vc下你只管分配就木有问题了,好像可以到2G的说当然new之后用完了最好要delete乎是
───────────────────────────────────────
作者sunzx(CYPU-3years...),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日19:12:18星期三),转信
───────────────────────────────────────
嗯局部数组开在栈里,有限制的new和delete是c++的东东,运算符C里面与之等价的是malloc()和free(),好像在memory.h还是什么头文件里面
nankaiwolf (南开狼) 在 ta 的帖子中提到:天哪!你看我这脑袋!我又把tc的编译模式给忘了!new和delete怎么用?我先去查一查,没有实战经验……似乎的确是,我的一个同学说他分配空间分配了3000000的int数组就分配不动了,但是他有128的内存呢!这是怎么一回事呢?是不是说分配数组和用new分配不一样?
───────────────────────────────────────
作者nankaiwolf(南开狼),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日19:15:47星期三),站内信件
───────────────────────────────────────
是在stdlib.h里面好像但是malloc和free不能控制大于64k的内存。就是说new和delete可以任意开吗?
sunzx (CYPU-3years...) 在 ta 的帖子中提到:嗯局部数组开在栈里,有限制的new和delete是c++的东东,运算符C里面与之等价的是malloc()和free(),好像在memory.h还是什么头文件里面他有
───────────────────────────────────────
作者sunzx(CYPU-3years...),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日19:30:41星期三),转信
───────────────────────────────────────
嗯.在Windows下的C++编译器里.nankaiwolf (南开狼) 在 ta 的帖子中提到:是在stdlib.h里面好像但是malloc和free不能控制大于64k的内存。就是说new和delete可以任意开吗?
───────────────────────────────────────
作者nankaiwolf(南开狼),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日19:45:32星期三),站内信件
───────────────────────────────────────
那理论上岂不是只受内存大小的限制?是吗?
sunzx (CYPU-3years...) 在 ta 的帖子中提到:嗯.在Windows下的C++编译器里.
───────────────────────────────────────
作者kingchar(偶是笨小孩),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日20:09:20星期三),转信
───────────────────────────────────────
对new开辟内存是堆内存可以任意开,只要在系统寻址范围内都可以,内存用光了系统从缓存里拿,但是数组不一样,是nankaiwolf (南开狼) 在 ta 的帖子中提到:天哪!你看我这脑袋!我又把tc的编译模式给忘了!new和delete怎么用?我先去查一查,没有实战经验……似乎的确是,我的一个同学说他分配空间分配了3000000的int数组就分配不动了,但是他有128的内存呢!这是怎么一回事呢?是不是说分配数组和用new分配不一样?
───────────────────────────────────────
作者sunzx(CYPU-3years...),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日20:15:20星期三),转信
───────────────────────────────────────
(局部)数组是在栈里面开的用全局数组理论上也是可以任意开不过要考虑Windows的2G限制kingchar (偶是笨小孩) 在 ta 的帖子中提到:对new开辟内存是堆内存可以任意开,只要在系统寻址范围内都可以,内存用光了系统从缓存里拿,但是数组不一样,是他有
───────────────────────────────────────
作者sunzx(CYPU-3years...),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日20:16:28星期三),转信
───────────────────────────────────────
内存大小不是问题Windows有虚拟内存的nankaiwolf (南开狼) 在 ta 的帖子中提到:那理论上岂不是只受内存大小的限制?是吗?
───────────────────────────────────────
作者nankaiwolf(南开狼),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日20:20:49星期三),站内信件
───────────────────────────────────────
那Windows的2G限制是什么?vc的指针型变量有多少位?是不是具备32位的访问能力呢?tc那个应该就是16位64k的访问能力限制吧?
sunzx (CYPU-3years...) 在 ta 的帖子中提到:(局部)数组是在栈里面开的用全局数组理论上也是可以任意开不过要考虑Windows的2G限制缓
───────────────────────────────────────
作者sunzx(CYPU-3years...),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日20:21:52星期三),转信
───────────────────────────────────────
tc可以跨段吧...偶不清楚...
VC的指针是四个字节的,理论上可以4G但是Windows把高2G保留了
nankaiwolf (南开狼) 在 ta 的帖子中提到:那Windows的2G限制是什么?vc的指针型变量有多少位?是不是具备32位的访问能力呢?tc那个应该就是16位64k的访问能力限制吧?
───────────────────────────────────────
作者nankaiwolf(南开狼),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日20:26:09星期三),站内信件
───────────────────────────────────────
啊~~~~~果然如我所料,要不然windows哪里会那么牛。那要算阶乘的最大数值岂不要算几天几夜???
还有就是文件输出,能不能支持如此大的输出文件呢?是用输入输出流来控制,还是用文件输入输出函数来控制?
sunzx (CYPU-3years...) 在 ta 的帖子中提到:tc可以跨段吧...偶不清楚...VC的指针是四个字节的,理论上可以4G但是Windows把高2G保留了问能
───────────────────────────────────────
作者sunzx(CYPU-3years...),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日20:53:08星期三),转信
───────────────────────────────────────
文件理论上说只受Windows系统的限制吧,还有文件指针大小的问题用输入/输出流的话和控制台输入/输出应该是一样的
nankaiwolf (南开狼) 在 ta 的帖子中提到:啊~~~~~果然如我所料,要不然windows哪里会那么牛。那要算阶乘的最大数值岂不要算几天几夜???还有就是文件输出,能不能支持如此大的输出文件呢?是用输入输出流来控制,还是用文件输入输出函数来控制?
───────────────────────────────────────
作者nankaiwolf(南开狼),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日20:57:56星期三),站内信件
───────────────────────────────────────
就是说输入输出流可以直接输入文件是吧?我没用过c++,别笑……其他的倒是能解决了,现在觉得也不太难……
行了,等考完时,我在来把它搞定!
sunzx (CYPU-3years...) 在 ta 的帖子中提到:文件理论上说只受Windows系统的限制吧,还有文件指针大小的问题用输入/输出流的话和控制台输入/输出应该是一样的文件
───────────────────────────────────────
作者sunzx(CYPU-3years...),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日21:09:51星期三),转信
───────────────────────────────────────
嗯,如果只想了解一些最基本的东西然后就开始用的话可以看钱能的C++程序设计教程,清华出版社出的
C++发明者BjarneStroustrup的TheC++ProgrammingLnaguage当手册看不错据说那个什么C++Premier还是什么来着也不错
nankaiwolf (南开狼) 在 ta 的帖子中提到:就是说输入输出流可以直接输入文件是吧?我没用过c++,别笑……其他的倒是能解决了,现在觉得也不太难……行了,等考完时,我在来把它搞定!
───────────────────────────────────────
作者nankaiwolf(南开狼),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日21:14:16星期三),站内信件
───────────────────────────────────────
图书馆里都有吧?有空借来看看……业余爱好啊……我正在看潜能哪本呢。觉得还可以。只是一看到有关c++的数据结构的书就翻云。倒不是看不懂数据结构,而是看不懂语法呀!
sunzx (CYPU-3years...) 在 ta 的帖子中提到:嗯,如果只想了解一些最基本的东西然后就开始用的话可以看钱能的C++程序设计教程,清华出版社出的C++发明者BjarneStroustrup的TheC++ProgrammingLnaguage当手册看不错据说那个什么C++Premier还是什么来着也不错
───────────────────────────────────────
作者sunzx(CYPU-3years...),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日21:15:32星期三),转信
───────────────────────────────────────
数据结构用什么语言描述不都还是一样:)nankaiwolf (南开狼) 在 ta 的帖子中提到:图书馆里都有吧?有空借来看看……业余爱好啊……我正在看潜能哪本呢。觉得还可以。只是一看到有关c++的数据结构的书就翻云。倒不是看不懂数据结构,而是看不懂语法呀!
───────────────────────────────────────
作者nankaiwolf(南开狼),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日21:17:22星期三),站内信件
───────────────────────────────────────
nodnodnod只是看着class犯晕……
sunzx (CYPU-3years...) 在 ta 的帖子中提到:数据结构用什么语言描述不都还是一样:)看不
───────────────────────────────────────
作者sunzx(CYPU-3years...),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日21:20:39星期三),转信
───────────────────────────────────────
hoho看看c++的书吧实际c++的class是面向对象的程序设计方法向传统的程序设计方法妥协的产物
nankaiwolf (南开狼) 在 ta 的帖子中提到:nodnodnod只是看着class犯晕……
───────────────────────────────────────
作者nankaiwolf(南开狼),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日21:24:44星期三),站内信件
───────────────────────────────────────
其实我觉得c++的思想挺好的,就是语法相对复杂了点……
sunzx (CYPU-3years...) 在 ta 的帖子中提到:hoho看看c++的书吧实际c++的class是面向对象的程序设计方法向传统的程序设计方法妥协的产物
───────────────────────────────────────
作者sunzx(CYPU-3years...),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日21:26:52星期三),转信
───────────────────────────────────────
这个是EricRaymond评论C和C++的文字出自http://www.catb.org/~esr/writings/taoup/html/ch14s04.html#c_language
C虽说C语言在内存管理方面存在严重的缺陷,不过它还是在某些应用领域里称王称霸。对于那些要求最高的效率,良好的实时性,或者与操作系统内核紧密关联的程序来说,C仍然是很好的选择。
C良好的可移植性也为它加了分。不过现在很多其他的语言可移植性越来越好,C在这方面的优势可能会逐渐丧失。
现有的很多程序可以产生非常棒的C代码,比如语法分析器、GUIBuilder等,这时候C语言也是有吸引力的,因为你所需要编写的代码只是整个程序的一小部分。
再有,我们当然应该认识道,C语言对于程序员来说具有无可替代的价值。就我这里讨论的每一种语言而论,只要你发掘的足够深,到最后你会看到它们的内核都是用纯正的、可移植的C写成的。
到了今天这个时候,我们最好把C看成是UNIX虚拟机上的高级汇编语言。
就算是其他的高级语言完全可以满足你的工作需要,抽出时间来学习C语言也仍然有益,它能帮助你在硬件体系的层次上思考问题。
即使到了今天,最好的C语言教程仍然是1988年出版的KR第二版TheCProgrammingLanguage.
总结:C最出色的地方在于其高效和贴近机器,最糟糕的地方在它的内存管理地狱。
C++C++最初发布于1980年代中期,当时面向对象语言被认为是解决软件复杂性问题的银弹。C++的面向对象特性看相去使其全面超越了C,支持者认为C++将迅速把上一代语言挤到陈列馆里去。
但是历史并非如此。究其原因,至少有一部分归咎于C++本身。为了与C兼容,C++被迫作出了很多重大的设计妥协,结果导致语言过分华丽,过分复杂。为了与C兼容,C++并没有采用自动内存管理的策略,从而丧失了修正C最严重问题的机会。
另外一部分原因,恐怕要算到面向对象身上。看起来OO并没有很好的达成人们当年的预期。我就这个问题调研过,我发现使用OO方法导致组件之间出现很厚的粘合层,并且带来了严重的可维护性问题。今天让我们来看看开放源码社区,你会发现C++的应用还是集中在GUI,游戏和多媒体工具包这些方面,在其他地方很少用到。要知道,面向对象也只是在这些领域被证明非常成功,而开放源码社区的选择,很大程度上体现了程序员的自由意志,而不是公司管理层的胡乱指挥。
也许C++实现OO的方法有问题。有证据表明C++程序在整个生命周期的开销高于相应的C,Fortran和Ada程序。不过,究竟这是否应该归咎与C++的OO实现上,还不清楚。
最近几年,C++加入了很多非OO的思想,其异常思想类似Lisp,STL的出现是非常了不起的。
其实C++最根本的问题在于,它基本上只不过是另一种传统的语言。STL中的内存管理比先前的new/delete和C的方案要好的多,但是还是没有解决问题。对于很多应用程序而言,其OO特性并不明显,相比与C,除了增加复杂度之外没有获得很多好处。
总结:C++优点在于作为编译型语言,把效率与泛型和面向对象特性结合起来,其缺点在于过于华丽复杂,倾向于鼓励程过分复杂的设计。nankaiwolf (南开狼) 在 ta 的帖子中提到:其实我觉得c++的思想挺好的,就是语法相对复杂了点……
───────────────────────────────────────
作者nankaiwolf(南开狼),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日21:29:31星期三),站内信件
───────────────────────────────────────
c++的评论比较赞同,但是内存管理地狱是什么意思?
sunzx (CYPU-3years...) 在 ta 的帖子中提到:这个是EricRaymond评论C和C++的文字虽说C语言在内存管理方面存在严重的缺陷,不过它还是在某些应用领域里称王称霸。对于那些要求最高的效率,良好的实时性,或者与操作系统内核紧密关联的程序来说,C仍然是C良好的可移植性也为它加了分。不过现在很多其他的语言可移植性越来越好,C在这方面现有的很多程序可以产生非常棒的C代码,比如语法分析器、GUIBuilder等,这时候C语言再有,我们当然应该认识道,C语言对于程序员来说具有无可替代的价值。就我这里讨论的每一种语言而论,只要你发掘的足够深,到最后你会看到它们的内核都是用纯正的、可移就算是其他的高级语言完全可以满足你的工作需要,抽出时间来学习C语言也仍然有益,它C++最初发布于1980年代中期,当时面向对象语言被认为是解决软件复杂性问题的银弹。C++的面向对象特性看相去使其全面超越了C,支持者认为C++将迅速把上一代语言挤到陈列馆...........................
───────────────────────────────────────
作者sunzx(CYPU-3years...),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日21:30:22星期三),转信
───────────────────────────────────────
就是说你new了对象必须把它delete了就像c++里面malloc了必须free一样没有自动的垃圾回收,像Java那样的nankaiwolf (南开狼) 在 ta 的帖子中提到:c++的评论比较赞同,但是内存管理地狱是什么意思?
───────────────────────────────────────
作者nankaiwolf(南开狼),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日21:32:52星期三),站内信件
───────────────────────────────────────
对堆堆堆堆,想起来了,new除了可以对一个数据类型开辟,还可以对一个class开辟事吧?
sunzx (CYPU-3years...) 在 ta 的帖子中提到:就是说你new了对象必须把它delete了就像c++里面malloc了必须free一样没有自动的垃圾回收,像Java那样的
───────────────────────────────────────
作者sunzx(CYPU-3years...),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日21:33:11星期三),转信
───────────────────────────────────────
对啊~:)nankaiwolf (南开狼) 在 ta 的帖子中提到:对堆堆堆堆,想起来了,new除了可以对一个数据类型开辟,还可以对一个class开辟事吧?
───────────────────────────────────────
作者nankaiwolf(南开狼),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日21:37:14星期三),站内信件
───────────────────────────────────────
果然比较方便上次我们一个作业做约瑟夫问题,结果就有一个家伙赵清华的人帮忙些,然后我就看不懂了……全市class!
sunzx (CYPU-3years...) 在 ta 的帖子中提到:对啊~:)吧?
───────────────────────────────────────
作者sunzx(CYPU-3years...),信区:AlgoDesign
标题Re:请问用C编的大数阶乘最多能算多大的数?
时间北大未名站(2003年06月11日21:38:30星期三),转信
───────────────────────────────────────
^_^
nankaiwolf (南开狼) 在 ta 的帖子中提到:果然比较方便上次我们一个作业做约瑟夫问题,结果就有一个家伙赵清华的人帮忙些,然后我就看不懂了……全市class!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行