中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS疑难解答 & 问题讨论 (解答室) » [讨论]批处理与编程语言的比较 抛砖
作者:
标题: [讨论]批处理与编程语言的比较 抛砖 上一主题 | 下一主题
foxandmonkey
初级用户

ProGamer


积分 129
发帖 23
注册 2005-4-14
状态 离线
『楼 主』:  [讨论]批处理与编程语言的比较 抛砖

     通常专门的编程语言需要特定的编译器甚至runtime,而批处理的编译器和运行时就是windows提供的cmd,省去了很多前者必要的条件,它甚至可以直接调用系统例程,比如shutdown,而这是在简单的编程语言里(如TC2)很难做到的,所以DOS有即写即运行的优势。写好的批处理也可以用bat2com、com2exe等程序编译成机器码,方便保护思路。
      命令行可以代替图形操作简单精确地完成事务性的操作,甚至处理一些简单的数值计算问题,比如经典的“汉诺塔”问题就可以仅在桌面用批处理求解而不必借助专门的语言。这一优点对在外临时遇到需要机算的问题时特别有意义。
      我想跟大家讨论一下DOS在编程上的能力到底有多强
我觉得编程语言应具备的要素:
1、变量    ----- DOS里可用 set 和 %c ,是否只能表示整数和字符串?...复杂数据结构 ---------数组、结构体。。。应该是没有吧
2、数学运算  -------- + - * / 逻辑 、移位
3、模块化  --------- 类似函数或过程的功能可用 goto实现,还算方便
4、库 ----- 这个太爽了!批处理的库就是所有DOS内外命令加path里那些,尤其是system32里   的,比高级语言调用系统例程方便得多
5、分支控制 --------- 是否只有 IF 、FOR这两个可用?
6、输入输出 ------ 我只知道命令行参数、choice、重定向、管道这3种,不知道还有没有别的比如输出到打印机或内存的
7、图形接口  -------- 不知道绘图功能、winform调用能不能在Dos里做到,我发现XP cmd里的tree命令很有趣,有点图形的意思
8、低级操作 ----- debug ,这个很强!不过在.bat里用得少,求资料ing
大概就想到这么多,请各位老师指正、补充
谢谢
      致敬

[此贴子已经被作者于2005-4-14 21:34:13编辑过]






I'm a progamer who work with windos
not a programmer with windows
2005-4-14 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
willsort
元老会员

Batchinger


积分 4432
发帖 1512
注册 2002-10-18
状态 离线
『第 2 楼』:  

Re foxandmonkey:  总结得非常不错,很难得能见到这样有见解的帖子,看了楼主下了不少工夫,向楼主致敬。  仅作少量的补充:  1、脚本语言:批处理也是脚本语言的一种,在脚本语言这个大家族中,其实地位并不是很高,UNIX类系统中SHELL就是此类语言的杰出代表,基本上已经和编译性高级语言很接近了;在网络上的脚本语言就更多了,js,vbs,perl,诸如此类,各有各的特点。但批处理胜在它存在大家都所熟知和常用中的DOS和Windows中,而且简单易学。所以,普及率要高得多。  2、关于变量:对于DOS或者Windows系统,所有的变量都是字符串,而不是整数,只有在特殊的命令和程序接口中,它才被转换为整型和其他类型的变量(比如for和set /a)。当然,如果想实现复杂的数据结构,就需要其它专用的数据程序。高级语言也只是将这些数据处理集成到编译器中了而已。  3、四则运算:在DOS系统中是不含有此项功能的,只有在NT下的set /a中有此实现。那么, 你所说的其它功能就需要第三方程序来实现了,DOS下比较有名的应该是eval了,支持多种运算和类型。  4、库的问题:你所说的应该是类似“标准库”和“系统库”吧,其实我们更常用的是当前路径下的“自定义库”,那就是第三方工具和程序了。而且,批处理中是可以使用API函数的,除了使用Rundll32之外,也可以通过动态创建微型PE程序来调用Rundll32无法调用的API。  5、图形接口:这个问题比较偏僻,大多数的实现都是准图形的,比如Wbat;早先的UCDOS中有特显功能,可以利用“转义序列”调用UCDOS SDK中的图形功能,不过我很少用到。另外,利用DOS自带Qbasic画图或者利用DEBUG来调用DirectX/OpenGL库,也是可以考虑的用法。不过,我很少见到这样的用法。



※ Batchinger 致 Bat Fans:请访问 [讨论]批处理编程的异类 ,欢迎交流与共享批处理编程心得!
2005-4-14 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
foxandmonkey
初级用户

ProGamer


积分 129
发帖 23
注册 2005-4-14
状态 离线
『第 3 楼』:  

我们现在在大学里已经很少有DOS的课程了,上次写个循环穷举排列组合的问题,图个好看,用C#写的,结果拿到目标机器上光运行环境就焦头烂额,那机器是98的,先是说要.NET框架,拷了个dotnetfx去又要IE5.5+ [em06]
用bat三个for就搞定了,返璞归真,随时随地[em01]

[此贴子已经被作者于2005-4-14 22:02:45编辑过]






I'm a progamer who work with windos
not a programmer with windows
2005-4-14 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
defrag
中级用户

痴迷DOS者


积分 456
发帖 570
注册 2004-10-9
状态 离线
『第 4 楼』:  

我喜欢用批处理遍外壳,用BASCOM2.0做内河,加上行号,即可实现图形四则运算变量问题低级操作等



DOS不是万能的,没有DOS是万万不能的
自古系统谁无死?留取胆清照汗青![upload=bmp]uploadImages/20035317345478982.png[/upload]
2005-5-22 00:00
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: