游戏开发论坛

 找回密码
 立即注册
搜索
楼主: seer

转型的困惑……

[复制链接]

103

主题

1432

帖子

1458

积分

金牌会员

Rank: 6Rank: 6

积分
1458
QQ
发表于 2005-2-1 18:11:00 | 显示全部楼层

Re:转型的困惑……

建议用c#,让你不得不用类.

对于对象编程,最重要的就是封装性。
过程开发方法,什么都是公共的,没有私有的概念。
为什么要有私有?
为了保护数据,或者称之为规范化数据的操作。
类型是一个规范,而通过函数所制定的规范更细致。

这在使用c 的人来说,应该比较好理解的吧。

对象编程还有很多好处,比如更好的归类,这点就像c中的结构,将数据类型联系起来,只是已经扩展成将函数也能联系起来。这样一来,程序结构就更清晰了,更加模块化了。

最后是扩展容易,这是上面的发展结果。比如支持继承,继承是什么?就是对基础类型的扩展,也就是补充对数据的操作。还有支持函数重载,同一个函数名,支持新的参数。

这些,都是为了提供一个更加清晰的程序结构。作为语言,其本质不是追求这个么。
当然因为处理器和编译器的关系,这对他们来说也许没有什么益处吧,所以相同功能(这是对消费者而言),性能就有所不如了(架构消耗一部分)。


4

主题

32

帖子

32

积分

注册会员

Rank: 2

积分
32
发表于 2005-2-1 19:03:00 | 显示全部楼层

Re:转型的困惑……

不推荐用C#,那样会变得越来越懒
C++的书推荐<<C++ Primer Plus>>,讲得非常简单,不过就是太厚了,要花不少时间看
C++并不是那么难,不过就是语法比较多比较繁罢了,完全不用那么畏惧,呵呵,真的

27

主题

93

帖子

106

积分

注册会员

Rank: 2

积分
106
发表于 2005-2-1 20:38:00 | 显示全部楼层

Re:转型的困惑……

c和C++用习惯了都一样

31

主题

630

帖子

635

积分

高级会员

Rank: 4

积分
635
发表于 2005-2-1 21:01:00 | 显示全部楼层

Re:转型的困惑……

c++的问题不在于难,而在于混乱。
C#很好啊,付出同样的劳动,C#可以实现更多的功能。

30

主题

276

帖子

276

积分

中级会员

Rank: 3Rank: 3

积分
276
发表于 2005-2-1 21:35:00 | 显示全部楼层

Re:转型的困惑……

在多大粒度上划成对象,多大的粒度划到过程,现在所有人都不知道,只有一些固定的模式是可以固定参照的,但是没有理论。现在不是外国人都在吹嘘良好的完成一个大项目需要的不仅仅是知识,还要有多年的经验和超越常人的远见么。
特别是对于游戏,这个问题真的不好说的,做游戏 性能是一个主要因素,虽然理论上都是说编译器可以把复杂的面对对象代码编译到和直接 顺序写的代码一样有效率,可是实际上现在的编译器还是都有明显的速度差。
然后,其实C++和C真的有那么大区别么?C还不是一样能写出linux(可能我写错字了)。

38

主题

96

帖子

148

积分

注册会员

Rank: 2

积分
148
发表于 2005-2-1 23:06:00 | 显示全部楼层

Re:转型的困惑……

不必要的事,不用必要的去做。 你就是在不习惯中习惯, 不用担心。根本不是困难,当你问这个问题时,你所要做的事就是继续保持感觉困难,如果你继续感觉不习惯,那就对了。你只需要不把这个问题当问题,它让你怎么做,你就怎么做就可以了。

不习惯不习惯, 1000个不习惯就习惯了,哈哈。

你可以保留大部分C代码, 只是很少一点功能用了类。 慢慢你发现类的好处就可以了。

13

主题

978

帖子

978

积分

高级会员

Rank: 4

积分
978
 楼主| 发表于 2005-2-1 23:53:00 | 显示全部楼层

Re:转型的困惑……

汗!刚说了别人语言混乱,发现我自己也没交代清楚…………
1。我用的是pascal,不是c。
2。我已经把c++primer(不是c++primer plus)看完了,对于c++的入门书可以免去介绍……thanks all the same。
3。强烈bs14楼的,你不觉得用c#写出的代码效率很低吗?对于一般应用是没什么,但是对于游戏这种“榨干硬件的最后一滴血”的程序,用c#是不是太奢侈了一点?——又不是网络开发,那种**编辑器的东西vb也做的来,根本没有学c#的必要。

103

主题

1432

帖子

1458

积分

金牌会员

Rank: 6Rank: 6

积分
1458
QQ
发表于 2005-2-2 02:53:00 | 显示全部楼层

Re:转型的困惑……

楼上太过绝对。
c#有它的好处。他的好处让他牺牲一点效率也在所不惜,微软认为这样做得到的比失去的要好太多。这是很多国人没有认识到的,已先入为主,认定这是个损失。

微软为c#提供了多媒体开发库,这不是简单的提供一种让c#也能用上的做法,而是彻底的为其开发了相关的内容。
微软为c#实现多媒体开发作了很多基础性工作,其目的就是吸引到程序员使用c#开发多媒体程序。
难道微软不清楚C#的实力吗?难道微软不知道c#”效率“低下吗?

每一种语言都有其局限性,c#的小小缺点会让其在某些应用上受到限制。
比如越小的程序越不适合用c#开发。
C++ , c, asm这三种语言,从高到低,都是越低级越适合开发小程序。

不是所有的高级语言都一定遵从这个规律,
比如vb就比c++还要高级,可是vb制作大型程序往往力不从心。
vb是一个以快捷为理念的开发语言,如何实现快捷?
只有针对不同的情况来做优化。vb是能很好的分别作好特定的工作,是个偏向专业应用的语言,这和通用的c++是不同的。
而大型项目需要的是通用性高,协调好的语言担当主力。

c#是程序员的语言,为讨好程序员而设计,而不是讨好编译器。
大型程序需要的是程序员,是人。

游戏是不是大型程序呢?
大部分赚钱的都是。

只有单纯的用户才只会想到FPS。

C#有制作大型程序的素质,可是游戏不是普通的大型程序,他有自己的特点。
也就是对系统要求高。
图形是很耗时。
除了图形部分,还有内部逻辑也是不断循环,分秒必争。

据不完全统计,c#的图形效率是c++的80%以上,因为主要都是调用系统的图形功能,没有分别。而内部的计算,差别就很大了,60%已经算好的了,有些项目还不到10%。

总的来说,c#的游戏在同等级显示性能的要求下,对cpu,内存的要求都要高不少。
不过游戏的内部逻辑虽然复杂,但是和图形子系统比起来,对效率的影响还是很小的。
只是游戏程序可能并不是完全通过系统来实现图形部分。
这个时候c#可能要借助其他语言来实现效率的关键部分吧。不过一个成熟的通用语言,已经能很好的和各种运行环境协作,这是正是c#的最大优点。




31

主题

630

帖子

635

积分

高级会员

Rank: 4

积分
635
发表于 2005-2-2 10:09:00 | 显示全部楼层

Re:转型的困惑……

过去类似C#和Java这样的语言的性能问题主要是因为他们属于动态类型语言,这样总得转换类型。.Net2.0已经在虚拟机层次上支持范型,这样C#就有了类似C++摸版的功能。所以两者性能会很接近的。
如果不是VB老手的话,现在不建议新学VB。为了和过去的Basic和QB兼容,VB的语法也早就乱了。他和C++是半斤八两啊。为什么奥赛用Delphi,因为它清晰。
完全可以用C++进行面向过程的编程,因为它的设计目标就是为了适应多种编程方式的混合应用。不过,面向对象有很多优势。

过程是运行调用层次的,对象是功能变更划分层次的。我的观点不一定对。

37

主题

727

帖子

740

积分

高级会员

Rank: 4

积分
740
发表于 2005-2-2 11:46:00 | 显示全部楼层

Re:转型的困惑……

说话太绝对小心遭天谴~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-12-24 06:50

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表