软件的编程,在我理解为有2层含义: 一是设计,二是敲代码。
因为大多数“作品”都是用代码堆砌的,没有任何“设计思想”可言。
好的软件,靠的是“设计”,而不是代码。
如果一个不懂DOS、不懂DEBUG调试技术的人,是很难写出高水准的程序的。就算能写出“代码”也只能是皮毛。任何技术的发展,都是传承在此之前的“优秀技术”总和。
由于DOS是一个黑暗的时代,因此“苹果”开创了“桌面”操作时代,当然可能很多人为认为windows是微软公司发明的。其实究竟是“乔布斯”还是“比尔盖茨”都不重用了,重用的是DOS到Windows的转变,将电脑的“使用难度”降低了。这就是一个设计理念的改变,计算机不再是“科学家”的玩物。
当然,Windows的出现,也改变了“编程”。Basic语言被冠上了 Visual,C++语言被冠上了Visual。
没有“Visual 可视”的年代,就算是最基本、最简单的 Basic编程,你也得懂“DOS命令”、懂计算机中断地址。
可能有人会问 学DOS命令有什么好处呢?
至少在没有杀毒软件时,中了“ARP攻击”你还可以临时拯救哈计算机。呵呵
在DOS时代,bat(批处理)技术也是一门高深的“编程技术”。如果把DOS学会掌握了,那么Linux的Shell编程,也会事半功倍!
Linux下,一直没有一个Visual Studio 航母级的集成开发环境,大量的软件编译、配置、安装都还依赖于shell,因此很多初学者往往很难入门。
如果你对 Linux C/C++编程感兴趣,也可以在Linux下用 Eclipse来学习开发.
DOS时代,所有的程序都可以通过DOS中断、BIOS中断获取到计算机的控制权。但是在Windows 2000/XP 下就很难这么操作了。
如果编程是从Windows XP环境下 C++ 起步,那么可能对 windows API这个东西会觉得莫名其妙的。
如果编程是从Windows XP环境下 C# 或 Java起步,那么可能对 windows API 是什么都可能不知道了!
那么windows API 这个东西有必要掌握吗?对于打算从事计算机软件设计、编程的同学来说,是很有必要的。通过windows API学习,你的软件设计思想可以拓宽了很多,你将不在受制了语言的约束。
举个例子:
Q1、编写一个程序,将计算机在某一个时刻关机。
给你5分钟,你可以想到办法吗?(C语言、C++、JAVA。。。。凡是能看到的语言,你都可以选择)
Q2、编写一个程序,可以在Linux或Windows 下将计算机在“某”一个时刻关机。
给你5分钟,你可以想到办法来实现吗?
以上这2个问题,解决的办法至少有几十种。你可以写出几种?但是无论你怎么写,怎么编程,怎么去实现它,最终的核心编程思想都是一样。
(1)调用DOS中断关机
(2)调用操作系统API接口关机
例如: windows:
BOOL ExitWindowsEx( UINT uFlags, // 关闭参数
DWORD dwReserved // 系统保留,一般取0
);
(3)调用操作系统 Shell,调用程序关机
Linux : system("halt") 或 system("init 0")
windows: shell(c:/windows/system32/shutdown.exe)
以上代码或方法仅仅适用于C / C++, 如果是C# 或 Java 那么怎么办呢?
在C#下, 可以通过调用API函数来完成,仅仅比VC多一个操作,就是要把Windows API函数进行封装
在Java下, 稍微有点麻烦。 得通过JNI调用了。首先将关机的函数封装在C代码里, 然后用 gcc 或 g++编译。然后再在Java里进行本地调用。实际上Java仅仅充当了GUI作用,而所有的操作代码均在C程序里完成了。
当然,这么做,很可能还无法实现,因为可能遇到C程序没有权限。那么怎么办呢?
换个思路,用VC写一个后台服务程序负责关机,然后采用 Socket编程,监听本机的某一个端口(例如8000),至于协议(TCP、UDP)随便了。
这样做后,其实无所谓客户端程序了, Java、C#、只要是可以提供Socket访问的语言,都可以通过TCP或UDP和服务程序通讯完成关机了。