知行社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

知行社区 门户 技术 查看内容

计算机专业学生如何让自己强大起来(计算机、电子方向)

2012-5-23 01:29| 发布者: 知行| 查看: 1483| 评论: 1

摘要: 近日有一位同学发了个信息来问我关于大学生如何强大起来。原文如下:大学期间c++等专业课,一定要学的十分牛吗?会影响你在以后的发展吗?怎幺能是自己变的强大起来?谢谢我是大一的学生希望前辈给些建议其实,关于这 ...
 

编程切忌“盖空中楼阁”,学习切忌“囫囵吞枣”

       软件的编程,在我理解为有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这些单片机的,如果你去对比,你会发现原来单片机与最早最早的计算机是惊人的相似!

 

 

1

鲜花

握手

雷人

路过

鸡蛋

刚表态过的朋友 (1 人)

发表评论

最新评论

Apple 2012-8-3 11:23
wonderful

查看全部评论(1)

相关分类



QQ|小黑屋|手机版|知行技术社区 ( 湘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.

返回顶部