s*****n 发帖数: 5488 | |
a****l 发帖数: 8211 | 2 真的神仙用其实也挺好,问题就处在谭浩强,让一大堆凡人都用,然后就玩火自焚了。
我觉得,没有十年以上的经验的人不要学C,能减少很多问题。
【在 s*****n 的大作中提到】 : 太不容易用对了。死了也好。
|
d****i 发帖数: 4809 | 3 他说的是C++, C还是挺容易的吧,谭浩强的书确实有点误人子弟,看看K&R的经典书足
够对付了。
【在 a****l 的大作中提到】 : 真的神仙用其实也挺好,问题就处在谭浩强,让一大堆凡人都用,然后就玩火自焚了。 : 我觉得,没有十年以上的经验的人不要学C,能减少很多问题。
|
a*w 发帖数: 4495 | 4 K&R里也有不少错误,估计科尼汉老汉也是萝卜快了不洗泥。例程
只在脑袋里推演一下,根本没在电脑上跑。
http://cm.bell-labs.com/cm/cs/cbook/2ediffs.html
谭浩强抄袭了K&R,然后有些人就说那些错误也是他原创的。
我见过另一个人抄袭谭浩强的,只是把章节顺序改了。
【在 d****i 的大作中提到】 : 他说的是C++, C还是挺容易的吧,谭浩强的书确实有点误人子弟,看看K&R的经典书足 : 够对付了。
|
s*****n 发帖数: 5488 | 5 C语言啊。
C++里面陷阱太多了,一会引用一会指针的。在来来parent son cast一下,
很容易就出bug了。
【在 a*w 的大作中提到】 : K&R里也有不少错误,估计科尼汉老汉也是萝卜快了不洗泥。例程 : 只在脑袋里推演一下,根本没在电脑上跑。 : http://cm.bell-labs.com/cm/cs/cbook/2ediffs.html : 谭浩强抄袭了K&R,然后有些人就说那些错误也是他原创的。 : 我见过另一个人抄袭谭浩强的,只是把章节顺序改了。
|
r*******n 发帖数: 3020 | 6 C++向后兼容,当然也兼容之前的各种不好的设计。
像++,--之类的也应该剔除。
写c++时刻要清楚写的程序是在栈里还是在堆里运行
【在 s*****n 的大作中提到】 : 太不容易用对了。死了也好。
|
r*********r 发帖数: 3195 | |
r*********r 发帖数: 3195 | 8 c++ 里指针被各种包装隐藏起来了,一般写写代码也不太用到指针。 |
W*******e 发帖数: 1268 | 9 C的指针也很多,GCC的代码往下走几层到处都是指针函数互相调用,以前Borland和VC
开放的部件代码很多也是这样的。好像用指针函数和指针对象除了灵活以外,同时能有
效的减少obj文件大小。我读过一些牛人写的程序,编译后的目标代码比源程序还小。
【在 r*********r 的大作中提到】 : c++ 里指针被各种包装隐藏起来了,一般写写代码也不太用到指针。
|
r*********r 发帖数: 3195 | 10 C 可以作为第二语言学。 学体系结构,操作系统这些课,指针是第一重要的。
也只有学过这些课,才有可能深刻理解指针。 |
|
|
s*****n 发帖数: 5488 | 11 因为有了指针,可以随便改来该去。好吧,解决它,我们来定义const.
一堆const. non-const.你说把指针去了不就是完事大吉了?
const又引出一堆的问题,const-cast啊。
然后指针导致无法正确的回收,都是一堆的解决方案,smart pointer了什么啊。
所以我说,做加法永远不如做减法,咔嚓一刀,指针切掉,世界安静了。
【在 r*********r 的大作中提到】 : c++ 里指针被各种包装隐藏起来了,一般写写代码也不太用到指针。
|
S**I 发帖数: 15689 | 12 系统底层开发不用指针是不可能的。
【在 s*****n 的大作中提到】 : 因为有了指针,可以随便改来该去。好吧,解决它,我们来定义const. : 一堆const. non-const.你说把指针去了不就是完事大吉了? : const又引出一堆的问题,const-cast啊。 : 然后指针导致无法正确的回收,都是一堆的解决方案,smart pointer了什么啊。 : 所以我说,做加法永远不如做减法,咔嚓一刀,指针切掉,世界安静了。
|
d**********x 发帖数: 4083 | 13 机器人?
【在 s*****n 的大作中提到】 : 因为有了指针,可以随便改来该去。好吧,解决它,我们来定义const. : 一堆const. non-const.你说把指针去了不就是完事大吉了? : const又引出一堆的问题,const-cast啊。 : 然后指针导致无法正确的回收,都是一堆的解决方案,smart pointer了什么啊。 : 所以我说,做加法永远不如做减法,咔嚓一刀,指针切掉,世界安静了。
|
r*********r 发帖数: 3195 | 14 then it's not C++, it's C--, isn't it?
【在 s*****n 的大作中提到】 : 因为有了指针,可以随便改来该去。好吧,解决它,我们来定义const. : 一堆const. non-const.你说把指针去了不就是完事大吉了? : const又引出一堆的问题,const-cast啊。 : 然后指针导致无法正确的回收,都是一堆的解决方案,smart pointer了什么啊。 : 所以我说,做加法永远不如做减法,咔嚓一刀,指针切掉,世界安静了。
|
S**I 发帖数: 15689 | 15 no, it's Java.
【在 r*********r 的大作中提到】 : then it's not C++, it's C--, isn't it?
|
t*****n 发帖数: 4908 | 16 微软的无数开发都是C++的。
【在 s*****n 的大作中提到】 : 太不容易用对了。死了也好。
|
h*******s 发帖数: 8454 | 17 欲练神功
【在 s*****n 的大作中提到】 : 因为有了指针,可以随便改来该去。好吧,解决它,我们来定义const. : 一堆const. non-const.你说把指针去了不就是完事大吉了? : const又引出一堆的问题,const-cast啊。 : 然后指针导致无法正确的回收,都是一堆的解决方案,smart pointer了什么啊。 : 所以我说,做加法永远不如做减法,咔嚓一刀,指针切掉,世界安静了。
|
s*****n 发帖数: 5488 | 18 我软的程序我老也不是没有看过。
用C++写C程序和基于对象的语言而已。
真的全面对象化,要死人的。
【在 t*****n 的大作中提到】 : 微软的无数开发都是C++的。
|
s*****n 发帖数: 5488 | 19 现在看,面向对象的几大好处。第一封装,降低耦合,这个貌似不是很成立。因为类的
个数会因此爆炸,虽然降低了耦合,但是程序变得很难懂,很大,很长。也就更加难以
维护。特别是C++正确实现变得十分tricky.还不如大智若愚,就是用C.什么问题都摆在
台面上。
第二重用,这个更加搞笑,这应该是C++第一卖点了。事实上,由于技术的进步,几乎
没有见过那个包能用上20年的。特别是公司里面,总的有点事情做啊,于是C++程序整
个丢掉,改用java,C#不是少数。
所以我看来,C++面向对象编程的性价比实在太低了。真的不如改用C写底层,高层用
javascript, ruby,shell,什么的快速开发语言好了。 |
l*********s 发帖数: 5409 | 20 c is most likely going to be more cumbersome because you have to reinvent
stl container, exception, abstract data type etc. etc..
【在 s*****n 的大作中提到】 : 现在看,面向对象的几大好处。第一封装,降低耦合,这个貌似不是很成立。因为类的 : 个数会因此爆炸,虽然降低了耦合,但是程序变得很难懂,很大,很长。也就更加难以 : 维护。特别是C++正确实现变得十分tricky.还不如大智若愚,就是用C.什么问题都摆在 : 台面上。 : 第二重用,这个更加搞笑,这应该是C++第一卖点了。事实上,由于技术的进步,几乎 : 没有见过那个包能用上20年的。特别是公司里面,总的有点事情做啊,于是C++程序整 : 个丢掉,改用java,C#不是少数。 : 所以我看来,C++面向对象编程的性价比实在太低了。真的不如改用C写底层,高层用 : javascript, ruby,shell,什么的快速开发语言好了。
|
|
|
t*****n 发帖数: 4908 | 21 但是底层代码也不少。某30年的程序,C代码有1.5M。照你的方案,没有哪个公司愿意
花这个钱。只能是C->C++慢慢改。估计最后代码量在0.8M左右。
现实和理想差距很大。30年前根本就没java/javascipt啥的。 |
d****i 发帖数: 4809 | 22 纯C写不是不可以,但是就像楼上说的,C++提供了很多container, 你觉得你喜欢哪样
的函数?
pure C:
void foo(float **matrix, int M, int N)
还是
C++ style C:
void foo(vector>& matrix)
【在 s*****n 的大作中提到】 : 现在看,面向对象的几大好处。第一封装,降低耦合,这个貌似不是很成立。因为类的 : 个数会因此爆炸,虽然降低了耦合,但是程序变得很难懂,很大,很长。也就更加难以 : 维护。特别是C++正确实现变得十分tricky.还不如大智若愚,就是用C.什么问题都摆在 : 台面上。 : 第二重用,这个更加搞笑,这应该是C++第一卖点了。事实上,由于技术的进步,几乎 : 没有见过那个包能用上20年的。特别是公司里面,总的有点事情做啊,于是C++程序整 : 个丢掉,改用java,C#不是少数。 : 所以我看来,C++面向对象编程的性价比实在太低了。真的不如改用C写底层,高层用 : javascript, ruby,shell,什么的快速开发语言好了。
|
s***o 发帖数: 6934 | 23 比较practical的模式是限定一个很小的c++的scope来用,作为整个project的标准。
c++的问题是language很大但是程序员良莠不齐,thrust那样的难招到,也贵,人力资
源上难scale。所以Torvalds那个著名吐槽还是有一定道理的。
【在 d****i 的大作中提到】 : 纯C写不是不可以,但是就像楼上说的,C++提供了很多container, 你觉得你喜欢哪样 : 的函数? : pure C: : void foo(float **matrix, int M, int N) : 还是 : C++ style C: : void foo(vector>& matrix)
|
S**I 发帖数: 15689 | 24 大部分情况下前人一般都已经造好了轮子。
【在 l*********s 的大作中提到】 : c is most likely going to be more cumbersome because you have to reinvent : stl container, exception, abstract data type etc. etc..
|
l*********s 发帖数: 5409 | 25 but they are certainly not as robust and expressive as C++.
【在 S**I 的大作中提到】 : 大部分情况下前人一般都已经造好了轮子。
|
d****i 发帖数: 4809 | 26 Linus的那个吐槽主要是他觉得C++不应该用来写kernel的代码,这个他是对的,我读了
一些RTOS的kernel代码以后觉得同意他的看法。
【在 s***o 的大作中提到】 : 比较practical的模式是限定一个很小的c++的scope来用,作为整个project的标准。 : c++的问题是language很大但是程序员良莠不齐,thrust那样的难招到,也贵,人力资 : 源上难scale。所以Torvalds那个著名吐槽还是有一定道理的。
|
s*****n 发帖数: 5488 | 27 我会选择方案1.
因为我知道我很危险。
如果是2的话,我以为很安全,其实到底怎么样?谁知道?
1.的话,我可以自己写一堆测试代码,而且是现成的检测内存泄露什么。fault
injection, trace,dump什么都简单。代码写得长点嘛,无所谓,好想还多干活了。
2.的话,我的所有代码必须改成c++,我不是自己给自己找麻烦。生活中修个bug还不是
随便找条狗就来,你知道刚招的小弟什么水平。
【在 d****i 的大作中提到】 : 纯C写不是不可以,但是就像楼上说的,C++提供了很多container, 你觉得你喜欢哪样 : 的函数? : pure C: : void foo(float **matrix, int M, int N) : 还是 : C++ style C: : void foo(vector>& matrix)
|
S**I 发帖数: 15689 | 28 这个基本上是共识吧;Windows和Mac OS X的内核基本上也都是C,有限地使用一些C++
的feature。若干年前微软的一篇研究文章也说不建议用C++做内核开发。
【在 d****i 的大作中提到】 : Linus的那个吐槽主要是他觉得C++不应该用来写kernel的代码,这个他是对的,我读了 : 一些RTOS的kernel代码以后觉得同意他的看法。
|
m*********t 发帖数: 527 | 29 You can ask the question:
Why the game industry switched to C++ (not idiomatic C)?
【在 s*****n 的大作中提到】 : 我会选择方案1. : 因为我知道我很危险。 : 如果是2的话,我以为很安全,其实到底怎么样?谁知道? : 1.的话,我可以自己写一堆测试代码,而且是现成的检测内存泄露什么。fault : injection, trace,dump什么都简单。代码写得长点嘛,无所谓,好想还多干活了。 : 2.的话,我的所有代码必须改成c++,我不是自己给自己找麻烦。生活中修个bug还不是 : 随便找条狗就来,你知道刚招的小弟什么水平。
|
s*****n 发帖数: 5488 | 30 游戏业的未来是webgl+ js. 切切就是低耦合的跨语言的组合。
至于犯傻,那个行业没有发生过。没有java的话,微软可能还全转C++呢,跟风嘛。
后来还是从实践中反思。
【在 m*********t 的大作中提到】 : You can ask the question: : Why the game industry switched to C++ (not idiomatic C)?
|
|
|
g*****g 发帖数: 34805 | 31 webgl做游戏的主要问题在于数据,数据现传再渲染可能来不及。
【在 s*****n 的大作中提到】 : 游戏业的未来是webgl+ js. 切切就是低耦合的跨语言的组合。 : 至于犯傻,那个行业没有发生过。没有java的话,微软可能还全转C++呢,跟风嘛。 : 后来还是从实践中反思。
|
m*********t 发帖数: 527 | 32 哇,指点江山啊。
我觉得呢,你抱怨难用不会用和一门语言在什么行业什么地方用是两回事。毕竟谁管你
说话算不算数啊。。。。
【在 s*****n 的大作中提到】 : 游戏业的未来是webgl+ js. 切切就是低耦合的跨语言的组合。 : 至于犯傻,那个行业没有发生过。没有java的话,微软可能还全转C++呢,跟风嘛。 : 后来还是从实践中反思。
|
d***a 发帖数: 13752 | 33 严格地说,能熟练地写汇编程序后,才能完全理解指针。
以前学程序语言的次序大致是这样的:Pascal, 汇编和机器语言,C,C++。
【在 r*********r 的大作中提到】 : C 可以作为第二语言学。 学体系结构,操作系统这些课,指针是第一重要的。 : 也只有学过这些课,才有可能深刻理解指针。
|
F********g 发帖数: 475 | 34 C,汇编,c++
【在 d***a 的大作中提到】 : 严格地说,能熟练地写汇编程序后,才能完全理解指针。 : 以前学程序语言的次序大致是这样的:Pascal, 汇编和机器语言,C,C++。
|
a****a 发帖数: 5763 | 35 STL是标准的垃圾。如果只是为了RAD和复用。不关心效率。那么完全可以用java之类的
语言。开发更快。如果是为了效率。那么很悲剧的一点是STL真正的运行时的资源开销
是不可控的
换句话说。STL只能用在那种需要快速开发但是对资源开销不太关心的中小型项目才有用
问题是这种的抄个别的旧代码也不是多难的事情 |
b***i 发帖数: 3043 | 36 BASIC,机器语言,C
【在 F********g 的大作中提到】 : C,汇编,c++
|
k**********g 发帖数: 989 | 37
没有GameTools的八十後人生是不完整滴
BBC MICRO BASIC
LOGO
KOEI games ... (SANGOKU3)
GWBASIC
GameTools V3.23 <-----------------
x86 assembly <---
Turbo Pascal 6.0
FreePascal 0.99.8 - 1.0
C (used ACM UVa online judge to compile)
Java
Verilog
Perl
C++
【在 b***i 的大作中提到】 : BASIC,机器语言,C
|
r****y 发帖数: 26819 | 38 Gamebuster,PCTools和FPE呢?
【在 k**********g 的大作中提到】 : : 没有GameTools的八十後人生是不完整滴 : BBC MICRO BASIC : LOGO : KOEI games ... (SANGOKU3) : GWBASIC : GameTools V3.23 <----------------- : x86 assembly <--- : Turbo Pascal 6.0 : FreePascal 0.99.8 - 1.0
|
c****r 发帖数: 576 | 39 My case, engineering major: C, Assembly, C++
【在 d***a 的大作中提到】 : 严格地说,能熟练地写汇编程序后,才能完全理解指针。 : 以前学程序语言的次序大致是这样的:Pascal, 汇编和机器语言,C,C++。
|
t********e 发帖数: 880 | 40 u know nothing about stl
有用
【在 a****a 的大作中提到】 : STL是标准的垃圾。如果只是为了RAD和复用。不关心效率。那么完全可以用java之类的 : 语言。开发更快。如果是为了效率。那么很悲剧的一点是STL真正的运行时的资源开销 : 是不可控的 : 换句话说。STL只能用在那种需要快速开发但是对资源开销不太关心的中小型项目才有用 : 问题是这种的抄个别的旧代码也不是多难的事情
|
|
|
r****r 发帖数: 1693 | 41 Verilog这硬件描述语言怎么也混进来了?
【在 k**********g 的大作中提到】 : : 没有GameTools的八十後人生是不完整滴 : BBC MICRO BASIC : LOGO : KOEI games ... (SANGOKU3) : GWBASIC : GameTools V3.23 <----------------- : x86 assembly <--- : Turbo Pascal 6.0 : FreePascal 0.99.8 - 1.0
|
k**********g 发帖数: 989 | 42
These don't allow one to edit the assembly in a running program. GameTools
is what motivated me to learn x86 assembly.
【在 r****y 的大作中提到】 : Gamebuster,PCTools和FPE呢?
|
k**********g 发帖数: 989 | 43
Most of bit twiddling (e.g. Hacker's delight) is trivial knowledge (either
that, or new research area) to those who have taken 2-3 years of logic
design courses.
【在 r****r 的大作中提到】 : Verilog这硬件描述语言怎么也混进来了?
|
m********5 发帖数: 17667 | 44 much much higher productivity
for non-kernel, performance critical project, I'd rather use C++ + ASM.
For non-critical project, I'd rather use Python/Java + C++
But they were right, for legacy project maintenance, it is better to stick
with original language. And most of them were using C, that is why C is more
popular in some companies.
【在 m*********t 的大作中提到】 : You can ask the question: : Why the game industry switched to C++ (not idiomatic C)?
|