编程切忌“盖空中楼阁”,学习切忌“囫囵吞枣”软件的编程,在我理解为有2层含义: 一是设计,二是敲代码。例如,“学生成绩管理系统”,很多老师都喜欢作为课程设计或实验的题目,甚至作为毕业设计。 题目虽好,但是70%~80%的结果都是令人失望的。因为大多数交上来的“作品”都是用代码堆砌的,没有任何“设计思想”可言。 好的软件,靠的是“设计”,而不是代码。 从我的个人经历来看,如果一个不懂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来学习开发http://blog.csdn.net/ex_net/article/details/7251664 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和服务程序通讯完成关机了。
。。。罗罗嗦说了这么多。。。 其实就想告诉大家2个观点 观点1:“对待技术一定要【广】,当你知道的知识越【广】,你解决问题的思路就越【宽】。你解决问题的能力就越高” 观点2:“不要认为过时的技术就没用”,技术是不会过时的,而是换了个地方应用。
计算机从z80、8086、80286、80386、80486、80586、奔腾、奔腾4、酷睿。。。。。一路走来。 如果学电子的同学有没有去对比 z80、8086 和 C51、S51这些单片机的,如果你去对比,你会发现原来单片机与最早最早的计算机是惊人的相似!
|
|小黑屋|手机版|知行技术社区 ( 湘ICP备11020288号-1 )
GMT+8, 2021-6-3 23:54 , Processed in 0.021766 second(s), 8 queries , Redis On.
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.