总结了以下几点:
(1)重视“需求分析”,学过计算机软件工程、系统工程的同学都会背这一篇。
(2)多多查阅资料,面对一个项目(问题)时,多用google、百度查找相关资料。主要是查找别人对该问题的“解决方案”、“系统架构资料”
(3)学会“画图”比学会“语言”重要,尤其是绘制系统架构图。
例如,我最近正在计划开发的一个系统平台。
![](https://img-my.csdn.net/uploads/201205/20/1337444058_9197.png)
良好的绘图基础是成功的开始。(当然,我现在还没有成功,可能没有资格这么说。但是我相信,将来的某一天我成功了,那么这句话一定是“至理名言”)
(4)对待技术,要学会“浅尝辄止”,因为IT行业是高风险行业,每天都会有新技术产生。你不可能每天都去跟随新技术跑的。尤其新技术往往带有“厂商”利益。
例如: symbian 、Android、IOS之争,谁能笑到最后?
谁都不好确定,既然无法确定,作为小角色的我们,怎么办呢?
(5)万变不离其宗
软件无论怎么变,单机变多机,C /S变 B/S,但是核心都是为人民提供服务,只要可以提供服务,满足用户的需求。没有人会管你是用什么技术开发的!
可能会有些人吹嘘:“你看我们的软件是采用了xxx 技术,xxxx平台,最新最强的 xxxx平台”,这一切都是广告语。用户关心的只是,能不能用?好不好用!
而我们要做的就是,选择自己最熟悉的技术、最稳定的方法,完成用户的需求。
软件开发在我看来,就是解决用户需求的过程!编程(敲代码)仅仅是这项活动中的体力活而已!
编程切忌“盖空中楼阁”,学习切忌“囫囵吞枣”
软件的编程,在我理解为有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和服务程序通讯完成关机了。