游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2136|回复: 6

编程

[复制链接]

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
发表于 2008-9-19 15:17:00 | 显示全部楼层 |阅读模式
过程式: 适合历时,不适合共时,如适合:人机对话,剧情控制,向导界面,流程控制
函数式: 适合共时,不适合历时,如适合:平行架构,规则制定,内容描述,并行仿真

过程式初衷是流程控制,直观易懂----但随着GUI系统的出现,开始超出适合的应用范围
----转向----并行的系统,如软件的窗体内部结构,游戏的逻辑/物理引擎----这些本适合用函数式语言描述

然后,软件开发,从直观易懂,变得极其复杂而困难----面向对象出现----仍未从根本上解决软件开发的难度

任务:2者的健壮,通用,易用的结合。

----------------------------------------------------------------------------

我的一个看法是(对于过程式语言的编程):

program和软件开发无直接关系
program的目的是“用过程步骤来操纵某个东西”

我们为机器编写program,就是用program操纵机器。
我们为网页编写script,就是用program操纵网页。
我们编写win批处理文件,就是用program操纵OS环境。

我们在通用计算机平台编写程序,就是用程序控制数学演算的过程;
而这个数学演算系统,仿真了一个软件系统(比如Internet Explorer)

(而我们也可以用script控制Internet Explorer以及其中的网页)

这就是说,
现在的大型软件/游戏(剧情不算!)开发,直接地看,是系统仿真,而不是编程!
(只不过间接地,仿真的数学演算过程还是得用program去控制)

图解就是:  程序 ----> 数学逻辑 :::::: 软件系统

而网页脚本,批处理,工业控制,剧情脚本,机器人控制...这些才是纯粹的program!

图解就是:  程序 ----> 网页/OS环境/游戏/机床/机器人

(其中“---->”表示“操纵”;“::::::”表示“仿真”)

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-9-19 15:59:00 | 显示全部楼层

Re:编程

Q 为什么不能说,软件开发,是使用program操纵软件系统呢?即为什么不是这样的图形:

程序 ----> 软件系统

A 很简单,程序不能操纵不存在的东西。比如我要开发一个浏览器,那我操纵什么呢?难道用程序操纵浏览器吗?----显然不能,因为浏览器还没开发出来----那么,你可以说,操作CPU,操纵操作系统,这么说也可以,但是,我不想讨论平台差异,所以理想地认为,program操纵一个数学系统。

不过,纯粹的API调用程序,我们可以看作是和批处理文件本质上一样,即:

纯粹的API调用程序 ----> OS环境

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-9-19 16:45:00 | 显示全部楼层

Re:编程

我们看到:

程序 ----> 数学 :::::: 软件系统

难度在于,用程序操纵数学,同时又要用数学simulate一个软件系统。

而我认为使用函数型语言(如 F#),可以是这么一个图形:

数学 :::::: 软件系统

因为函数型语言一般不推荐用过程式的思想方法,所以基本不存在“通过程序操纵数学”这个过程。

149

主题

4981

帖子

5033

积分

论坛元老

Rank: 8Rank: 8

积分
5033
QQ
发表于 2008-9-19 17:48:00 | 显示全部楼层

Re:编程

最讨厌老把程序和数学扯到一起……数学对一些人可以是信仰,但对另一些人也可以只是工具。

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-9-19 18:50:00 | 显示全部楼层

Re: Re:编程

sjinny: Re:编程

最讨厌老把程序和数学扯到一起……数学对一些人可以是信仰,但对另一些人也可以只是工具。


也可以表示为:

程序 ----> 计算机环境 :::::: 软件系统

但是,当关闭计算机,在思维中研究软件开发时,或者不考虑硬件平台时,“计算机环境”这个词就不太恰当了,所以理想化地,改用“数学逻辑”这个词

本文要讨论的并不是什么数学,而是说明:

现在的“编程”和很早以前的“编程”不是一个概念

0

主题

769

帖子

1052

积分

金牌会员

Rank: 6Rank: 6

积分
1052
发表于 2008-9-20 22:21:00 | 显示全部楼层

Re:编程

编程中可以有数学,但不代表一旦编程就一定要用到数学

362

主题

3023

帖子

3553

积分

论坛元老

Rank: 8Rank: 8

积分
3553
 楼主| 发表于 2008-9-27 20:44:00 | 显示全部楼层

Re: Re:编程

无名剑: Re:编程

编程中可以有数学,但不代表一旦编程就一定要用到数学


我后来改了用词,说的很清楚:
是“数学逻辑”。

实际上,你可以不用数学逻辑,但程序操纵的就是数学逻辑。

换句话说:

你 可 以 不 学 习 生 物 学 而 生 活 在 世 界 上 , 但 你 的 人 体 是 符 合 生物 学 原 理 运 转 的 。

以上均不是本文的目的,好吧,你说不用数学那就不用数学,行了吧?这根本无所谓

---------------------------------------------------------------

本文旨在:

程序 ----> 数学逻辑 :::::: 软件系统

现在的软件开发,绝大部分都是这个图,之所以用“数学逻辑”一词,是因为本文不想??碌靥致凼裁?latform问题,you know?

而很久以前的编程是:

程序 ----> 数学逻辑

到数学逻辑这里,就终止了!因为我们只是用程序作计算,或逻辑判断,而不需要进行系统仿真。所以以往的编程很简单,而现在的大型软件系统很复杂。

大型软件系统的复杂,不是因为不知道如何编写程序代码(很明显不是吗!?)
而是如何仿真所需要的软件系统。

PS.另一方面,脚本语言,如网页脚本,游戏脚本,一般不存在系统仿真这个复杂问题,
只需要简单地用程序去控制网页或游戏世界即可,所以相对比较简单易学(难道不是吗?)


总而言之:

以往的编程,以及脚本编写,涉及到:
程序编写

大型软件系统开发,涉及到:
程序编写(简单)
系统仿真(重点)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2026-1-21 05:58

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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