|
sunx
初级用户
积分 38
发帖 17
注册 2006-1-16
状态 离线
|
『楼 主』:
近日DOS开发的一些预研成果
DOS编程是很熟的, 属于用debug.com 写程序的最早一代
但是多年没摸DOS了,
所以开工前曾经在这里发帖,想有经验的人推荐或者介绍几个现在比较成熟的DOS开发工具
但是很可惜, 没人回复, 只好自己一个个对比
我把我的一些结论供遇到类似问题的同行参考一下
我认为最优组合是 DJGPP + ALEGRO
原因如下:
DJGPP是32位的, 有经验的都懂为什么32bit代码比16bit代码容易写,这个不用多说
DJGPP是基于GCC的, 品质有保障, 不用浪费时间去熟悉语法特点
DJGPP是免费的,没有潜在的版权风险
ALEGRO已经有了通常需要的所有UI控件, checkbox, radiobox, text, list, 等, 并且可以非常容易的支持GB编码的中文 (说需要UNICODE格式那是外行的误解), 无需patch源代码就可以完美显示中文, 这也是比较重要的, 如果需要patch源代码那样以后随着alegro版本升级要不断维护自己的patch并且还不确定patch的原理是否仍然可行, 这会是个长期拖累
成熟的编译器 + 成熟的图形库, 开发产品和自己写个小程序玩玩是不一样的, 成熟这两个字的意义非常重要
IDE的话,rh不好用, 建议使用VC然后调用bat来实现整合
最后:
我强烈建议!!!!, 不要相信那些论坛经常看到推销的 xxx开发包 之类
我测试了所有能找到的, 压根就没一个好用的,不是年久失修就是编程环境恶劣,或者兼容性有问题
这种套件本来就不是1,2个人1,2年时间业余写写能搞好的
用这些没有经过严格测试, 没有专人维护, 缺乏技术支持, 缺乏实际应用的东西,等于让产品自杀
个人意见, 大家见仁见智
[ Last edited by sunx on 2007-7-26 at 11:03 AM ]
|
|
2007-7-26 10:56 |
|
|
zqlcch
初级用户
积分 178
发帖 85
注册 2006-7-6
状态 离线
|
『第
2 楼』:
但DJGPP+ALLEGRO目前发现一个缺点,编译出来的程序在AMD690芯片组或ATI早期的芯片组上键盘会失去响应,我试了4片(华硕、昂达)不同的主板,都有这种情况,楼主不妨有空验证一下或修正一下,年事已高,现在已经没有去找BUG的能力了。
如果要显示的内容少就直接改字体文件,100多个ASCII字符就用了,其实ALLEGRO的字体对应的是一幅图片,图片你要多大都成。
我强烈建议!!!!, 不要相信那些论坛经常看到推销的 xxx开发包之类。
这句话我反对,Winsail和ecurb2006的二进制开发包本身就是免费的,ecurb功能弱了一点,个人感觉winsail还是很方便的,我可不是winsail的托,以前用winsail写了好几个程序,都还不错。但像工控行业那种需要长时间稳定运行的环境我是没有试过。
[ Last edited by zqlcch on 2007-7-26 at 11:23 AM ]
|
|
2007-7-26 11:21 |
|
|
sunx
初级用户
积分 38
发帖 17
注册 2006-1-16
状态 离线
|
『第
3 楼』:
对于少数跑不起来的硬件,那当然也没办法
只要硬件支持, djgpp还是首选的东西
Winsail和ecurb2006, 如果用在商业产品中,是要收费的
ecurb2006 免费包现在只支持16bit
Winsail 我感觉是从一个几年没更新过的sourceforge项目改来的
这两者我的使用感觉是,都比较粗糙, 并且整体观感, 是从一个缺乏整体设计的东西层层patch出来的, 所以有很多凌乱的地方, 看着心里不舒坦
个人意见, 当中抵触到厂家的地方, 见谅
[ Last edited by sunx on 2007-7-26 at 01:23 PM ]
|
|
2007-7-26 13:10 |
|
|
windowsvesta
初级用户
积分 138
发帖 67
注册 2007-7-4 来自 云南
状态 离线
|
『第
4 楼』:
能用DJGPP的地方,为什么不直接使用Windows,我很不解!
楼主能解释一下吗?
我个人的感觉是“DJGPP是好东西,但生不逢时,它比WinCE编程更加复杂,群众基础还不是很好,几乎没有中文文档”!
[ Last edited by windowsvesta on 2007-7-26 at 02:12 PM ]
|
|
2007-7-26 14:02 |
|
|
firstsail
高级用户
积分 668
发帖 295
注册 2005-7-26 来自 广东深圳
状态 离线
|
『第
5 楼』:
WinSail 开发的目的是用于工业控制场合,它已经经过市场近十年的实际应用,安全、稳定、可靠,值得大家信赖!
界面一:
界面二:
界面三:
界面四:
界面五:
[ Last edited by firstsail on 2007-7-26 at 08:07 PM ]
|
|
2007-7-26 15:05 |
|
|
sunx
初级用户
积分 38
发帖 17
注册 2006-1-16
状态 离线
|
『第
6 楼』:
你似乎不知道DJGPP是什么
DJGPP是个编译器, 和TC,BC没本质区别
你竟然能把一个编译器和Windows来比, 无语
Quote: | Originally posted by windowsvesta at 2007-7-26 14:02:
能用DJGPP的地方,为什么不直接使用Windows,我很不解!
楼主能解释一下吗?
我个人的感觉是“DJGPP是好东西,但生不逢时,它比WinCE编程更加复杂, ... |
|
|
|
2007-7-27 04:15 |
|
|
firstsail
高级用户
积分 668
发帖 295
注册 2005-7-26 来自 广东深圳
状态 离线
|
『第
7 楼』:
我对DJGPP的看法,只能代表我个人的观点,不代表普便性!
我们常说,"DOS编程"、“windows编程”、“WinCE编程”这样的话,如果我们一定要咬文嚼字,一定要分析其语句的汉语语法,我们可以把这句话看成"根本无知的人才能说出的话".DOS是操作系统,它能编程吗?"windows"也是操作系统,它能编程吗?
我们常说的"DOS编程",泛指利用DOS下的编译器来编程,比如说Turboc C、Basic、BC31、Pascal、DJGPP等工具来编程.
我们常说的"Windows编程",泛指利用Windows下的编译器来编程,比如说Visual C++、Borland C++、Visual Basic、Visual Foxpro等工具来编程.
所以IT词汇,只要大家约定俗成即可!
"XXX开发包",它与DJGPP、它与Borland C++/Turboc C、它与Basic等等,并不是互斥关系,而是相互配合关系。比如说,将“开发包”的C++源代码放在DJGPP的编译器下编译后,至少95%以上的代码不作任何修改就可以成为DJGPP下的开发包。广义上说:"XXX开发包"是不依赖编译器的。
关于DOS下的C++编译器,我个人的观点,还是优先推荐Borland C++3.1,关于DOS下的C编译器,优先推荐Turboc C、关于DOS下的Basic编译器,优先推荐QBasic、关于DOS下的Pascal编译器,优先推荐Turboc Pascal。
我优先推荐Borland C++3.1,是因为:
(1)它集“编辑、编译、链接、调试”于一身。
(2)DOS下的C++程序员,至少90%以上都熟悉它,有广大的群众基础。
(3)DOS下的C++编程,至少95%的实际编程应用能够得到满足。
(4)在图书馆,现在(2007年)都还能买到关于“BC31/45"的函数库的书。
(5)汉语是单音节词汇,“BC31”只有“BC”两个字母,并且是连续的两个字母,很好记忆;而“DJGPP”是五个字母,并且字母是分散的,不好记忆。所以在名称上,以中国人的习惯,BC就优于DJGPP。
基于上面五点,DJGPP要超越BC31,还有很长的一段路要走,并且走得会相当艰难......。
[ Last edited by firstsail on 2007-7-27 at 11:42 AM ]
|
|
2007-7-27 10:01 |
|
|
sunx
初级用户
积分 38
发帖 17
注册 2006-1-16
状态 离线
|
『第
8 楼』:
不完全同意firstsail说的,
不过当中大部分和我的贴要讨论的东西不沾边, 这里我只辩论和主题有关的:
对于一个开发者, 总是在寻找更好用的开发工具
不是说能满足编程需要这个最低纲领就ok了
wps的第一个版本是用 debug.com 写出来的, 现在我们不可能再去干这样的事情, 因为时代在进步, 开发工具的发展在不断简化程序员工作. 但是就当时的特定时代,debug.com就是唯一的最好的开发工具
BC也一样, BC有他的辉煌业绩,在16bit纯dos开发范畴, BC是举世公认的最好
但是BC已经停止发展很多年, 这很多年中的新技术,BC都是没有支持的
1. BC不支持32bit, 写过很多dos程序的人,肯定都对 seg:ofs 和 64k最大内存段限制深怀无奈, 现在的产品,有个大点的数据表很正常吧, 在16bit下处理大数据,想想都烦躁
2. BC下缺乏强大的图形支持, 没办法, 你也说了,我们是中国人, 中国人要汉字就得和图形打交道, 有BGI图形, 有TV UI, 可惜没有 TV+BGI GUI
3. DJGPP的编译器就是GCC, 在现在来说 GCC的群众基础恐怕比BC大多了, 用windows的不一定会用BC, 但是用过linux的就肯定和GCC打过交道
4. 除非别无选择,否则还是不要使用一个已经停止发展的东西, 实际上BC的现状连一个开源工具都不如, borland公司不管他了,业余程序员想改进他也没法; 反之DJGPP/Alegro 一直都在发展, 你报个bug上去, 很快就会在下一个版本中改正
-----------------------------------------------------------------------------------------------------------
最后,我实在忍不住想说一句, 你的第五点实在是有点太无厘头了, 要不以后我们选东西就学周星驰好,带把尺量长度, 哈哈, 调侃一下,没什么恶意
|
|
2007-7-27 15:41 |
|
|
zqlcch
初级用户
积分 178
发帖 85
注册 2006-7-6
状态 离线
|
『第
9 楼』:
DJGPP在国外的使用范围非常广,像多平台模拟器mame都是用djgpp+allegro做的,反而的BC基本是消失也。。
由于母语的问题,DJGPP在中国使用的人非常少,这是中国人学习计算机的硬伤啊。
|
|
2007-7-27 18:34 |
|
|
windowsvesta
初级用户
积分 138
发帖 67
注册 2007-7-4 来自 云南
状态 离线
|
『第
10 楼』:
既然“DJGPP”基于DOS下的32位运行,有那么大的市场,为什么外国佬不把它发展成象Visual C++的样式,这是技术问题,还是开发投入与市场回报不成正比?
[ Last edited by windowsvesta on 2007-7-27 at 07:07 PM ]
|
|
2007-7-27 19:02 |
|
|
windowsvesta
初级用户
积分 138
发帖 67
注册 2007-7-4 来自 云南
状态 离线
|
『第
11 楼』:
我相信,只要Borland公司愿意,开发DOS下的32位的保护模式编译器,绝对是最好的32位的保护模式编译器!但是,Borland为什么不愿意将“BC”升级为32位的保护模式编译器呢?
我个人认为DOS下的32位的保护模式编译器不会掀起太大的波浪,只会在“特殊场合”上有所应用,并且主要限于“精英级的人”在使用!所以DJGPP天生就是“精英的、非大众化的”。
UNIX走精英之路,Windows走大众之路,谁输谁赢?
[ Last edited by windowsvesta on 2007-7-27 at 07:35 PM ]
|
|
2007-7-27 19:18 |
|
|
firstsail
高级用户
积分 668
发帖 295
注册 2005-7-26 来自 广东深圳
状态 离线
|
『第
12 楼』:
Quote: | “BC不支持32bit, 写过很多dos程序的人,肯定都对 seg:ofs 和 64k最大内存段限制深怀无奈”。 |
|
只有在汇编语言年代,才经常跟“Seg : Off”打交道,进入高级语言(如BC31)时代后,这样的交道,可以说是“千年等一回了”。
Quote: | 现在的产品,有个大点的数据表很正常吧, 在16bit下处理大数据,想想都烦躁 |
|
如果处理大量数据不怕“毫秒”级的滞后,完全可以用XMS扩展内存解决,并且XMS内部处理本身也是“保护模式”的。
Quote: | BC下缺乏强大的图形支持, 没办法, 你也说了,我们是中国人, 中国人要汉字就得和图形打交道, 有BGI图形, 有TV UI, 可惜没有 TV+BGI GUI。 |
|
其实BC31是DOS下所有编译器中,具有最强大的图形支持,只是没有GUI部份,所以我推出了WinSail的GUI部份,就是为了弥补它的不足,就如同Alegro弥补DJGPP的不足。
Quote: | DJGPP的编译器就是GCC, 在现在来说 GCC的群众基础恐怕比BC大多了, 用windows的不一定会用BC, 但是用过linux的就肯定和GCC打过交道 |
|
我不太认同,TCC、BCC、GCC这些工具,主要还是UNIX下编程的人,才会被迫使用它,从而熟悉它。有一个数据是:“过半的数据库应用是用Visual Basic”写出来的。所以说用xCC的人绝对是凤毛麟角!只有高手级的人物才会熟练地使用它。
Quote: | 除非别无选择,否则还是不要使用一个已经停止发展的东西, 实际上BC的现状连一个开源工具都不如, |
|
事实是:DJGPP也不可能提供源代码公开吧!Windows也没有提供源代码,老百姓不也同样用得欢!
Quote: | 最后,我实在忍不住想说一句, 你的第五点实在是有点太无厘头了, 要不以后我们选东西就学周星驰好,带把尺量长度, 哈哈, 调侃一下,没什么恶意。 |
|
SunX兄可不要低估了“英文名称”在中国人眼中的感受,“Alegro”这些词汇在"牛津字典"里面查不到吧,在"金山词霸"里面也找不到,总之到今天为止,我还无法将它拼读出来,看到不懂的"英文字母组合"就两眼昏花,不知道上帝为什么要创造"拉丁语系"。
看看现在的“名星”,大多数人都经过了“风水师”的改造,例如“成龙”呀、“王菲” 呀、还有“周星驰”等等。“风水学”,可是一本难以捉摸的科学!信之有,不信之无.
所以我认为"DJGPP"只有在UNIX下才有它的生命力!才有它发展的土壤.
[ Last edited by firstsail on 2007-7-27 at 09:33 PM ]
|
|
2007-7-27 21:01 |
|
|
netwinxp
高级用户
积分 741
发帖 366
注册 2007-7-25
状态 离线
|
『第
13 楼』:
现在计算机硬件发展太快了,我提一个疑问——据说intel下一代芯片组将砍掉LPT、COM、PCI,基于老内核的DOS恐怕很难再适应了,不知大家有何打算?
|
|
2007-7-27 22:23 |
|
|
netwinxp
高级用户
积分 741
发帖 366
注册 2007-7-25
状态 离线
|
『第
14 楼』:
至于工控方面,九几年的时候基于MSDOS、DRDOS的特多,这几年呢基于windows的则占了大多数,采用VB+AD/DA采集卡驱动程序的越来越多了(开发速度快),这一两年,甚至AD/DA卡也越来越少了,直接采用USB的开始逐步流行起来了。说起自由来,裸机最自由了,我们为什么要用操作系统呢?为的是调用它的功能,可是DOS能给我们的功能绝大部分只集中在DISK方面。
|
|
2007-7-27 23:30 |
|
|
sunx
初级用户
积分 38
发帖 17
注册 2006-1-16
状态 离线
|
『第
15 楼』:
工作是实实在在的, 没法建立在如果上
无论什么原因, bc没发展32位,没有了就是没有了, 我说borland当时是因为没有能力更新BC编译核心 (BC队伍散了, 并且delphi项目很紧迫), 很多人一定不愿意接受
至于32位好不好, 这个无需争论, 因为这是共识性的东西
-----------------------------------------------------------------------------------------
顺便对firstsail说一句, 你和我较劲没意义啊
因为作为开发者,我们需要的不仅仅是可用, 而是尽量好用
我当然明白 seg:ofs 也能满足使用, 当然也清楚 xms可以存数据, 但是这不能作为让我放着 32位平板寻址不用, 去靠调整段来访问超过64k的数据, 靠xms管理接口来来回拷贝切换内存的理由
就像, 明明我可以坐车去的地方, 你非要我走路去, 这是没有理由的
人的时间精力有限, 所以不得不在方法上作最优选择
同样原因, 从稳定性,从生命力考虑, 从长期成本, 我知道bc+winsail 也能用, 但是这不能作为要求我放着 djgpp+alegro 又开源又免费用户群又广泛, 这么优秀的东西不用的理由啊
另外,否定一个东西之前,应该先充分了解这个东西 , 这样你的判断才会有理有据.
DJGPP是开源的, 每个包的s结尾的版本就是源代码,
你还把GCC这个现在具有这么强大影响力的工具,说成是linux下人才会被迫使用的东西
论及 djgpp/gcc/linux, 你应该至少把那些都拿过来, 写上几个比hellworld 复杂点的程序, 那样才会有真实的观感
我对winsail又没什么仇, 如果东西好,我也一样会用
[ Last edited by sunx on 2007-7-28 at 01:33 AM ]
|
|
2007-7-28 01:12 |
|
|