51CTO.COM 独家特稿: 为什么每个 程序员 都应该学习C 语言? 51CTO.COM 独家特稿: 每个程序员都应该学习C 语言?我可不这么认为 51CTO.COM 独家特稿: C 语言已经死了,5 个需要忘却它的理由 Java 替代C 语言的可能性" name="description" />

我--曾经的C语言痴迷者,就算C死了,也永远活在我心里(1)

发表于:2007-06-11来源:作者:点击数: 标签:
相关文章链接: MI LY: 楷体_GB2312"> 51CTO.COM 独家特稿: 为什么每个 程序员 都应该学习C 语言? 51CTO.COM 独家特稿: 每个程序员都应该学习C 语言?我可不这么认为 51CTO.COM 独家特稿: C 语言已经死了,5 个需要忘却它的理由 Java 替代C 语言的可能性

相关文章链接:

MILY: 楷体_GB2312">

51CTO.COM独家特稿:为什么每个程序员都应该学习C语言?

51CTO.COM独家特稿:每个程序员都应该学习C语言?我可不这么认为

51CTO.COM独家特稿:C语言已经死了,5个需要忘却它的理由

Java替代C语言的可能性

如果没有C语言,世界将会怎样?——有感于C语言已死

C语言的确死了

更多网友讨论内容,请进入专题“C语言是否该扔进垃圾桶”专题

02年我进入大学计算机系,作为一个只会用QQ聊天的电脑白痴,我内心对计算机充满了崇拜和向往,我心里想,我要通过我的学习成为一个黑客,因为在我心里黑客就是计算机高手,能够用代码来实现自由的梦想。那时通过一些文章了解到真正的高手都是用底层的语言,比如汇编,比如C,甚至是机器码(现在看起来这些观点其实很可笑),所以我的目标就是先学好这些语言。大一我们开了C语言课,我认真的学习C的每一个特性,指针,指针的指针,结构,联合,动态分配内存,每个现在看来很简单的东西都让我觉得很神秘,就这样整个大一就在C的特性上度过了,当同学们都在接受更加神奇的VF,VB时,我仍然在dos下看着枯燥的TEXT方式(我学的时TC),有些同学不解的问我,“C语言可以象Windows程序那样有漂亮的界面,和图象吗?”,面对这些问题和质疑,我也开始动摇,为什么我学了几乎所有见到的C的特性还是不能构造界面,还是不能绘制图形,网络更遥不可及。这些疑问一直伴随我到了大二。

大二,我知道了编程这东西不是靠各种技巧,而是要靠编程思想,和算法,因为我们开始学了数据结构,令我开心的是数据结构老师让我用TC去构造各种结构,而不是VF,VB,这些,同学们开始一筹莫展,而我却得意于积累下来的C的良好基础迅速的实现并接受了数组,链表,树,栈...等等这些结构,我发现我不再苦恼于我的程序结构的不堪,不再沉迷于C的精巧,而是真正开始感受编程的乐趣,不得不说的是这中间我的C语言基础给我带来的成就感是我学习数据结构的一个很重要的动力...当我可以熟练的应用大部分数据结构(课本上)的时候,寝室的一个哥们问我“为什么老师总让我们在dos下用TC做程序呢?只能实现字符模式太没意思了”...当时我并没有想到老师的真正目的(应该是撇开其他应用专著于数据结构和算法的目的),而是坚信C语言的强大,我相信dos一样可以给我缤纷的世界,就在这时开了汇编,也正好让我更加坚信dos实际上可以更加多彩(我们学的8086,16位),学过汇编的朋友可能还记得有一张dos系统和bios系统调用的表,里面可以对显示器,对串口,对键盘鼠标,这些硬件进行操作,对显示器的操作更是让我眼前一亮,因为我看到在显示器上显示彩色点的功能,从第一个点被打印出来我便深深的陷入其中...

我拿着自己写的打印彩色点的C语言函数(TC里提供汇编接口),向别的同学的请教怎样才能打印一条线出来,结果那个经典的直线算法就在我们的讨论中诞生了(算法名字忘记了,下面附带的程序里有),当我兴高采烈的那着我彩色的直线去找老师请教(其实是想让她表扬我)的时候老师竟然问我图形学课本还没发你提前买了吗?她认为我是看了课本。打击啊...呵呵,但是让我高兴的是我知道了还有图形学这门课,接下来就是飞快的跑到图书馆借到书,是清华大学孙家广的那本,就这样我的编程学习真正的进入的正规,图形学,就是我的算法启蒙领域....

现在我从事的工作仍然是图形程序的开发,大学的日子早已远去,学习C语言的痴迷也早已不在,但我知道C一定还在她擅长的领域发挥着领导作用,我知道在我内心深处仍怀念着她那令人琢磨不定的神秘.如果有一天真的不需要底层开发了,或者底层不在用C了,如果C真的死了,我还是愿意让她永远留在我心里...

大二时写的代码:

一个dos用的定时器:

//没什么注释,见笑了..呵呵
/*
=============DOS TIMER  Head File
=============CopyRight (C) LGc
=============QQ:66855618
=============E-Mail: hoya-lee@sohu.com
*/
#ifndef _TIMER
#define _TIMER
/*===========head file include============*/
#if     !defined(__DOS_DEF_)
#include <dos.h>
#endif
#include <math.h>
/*===========macro defined================*/
#define TIMER (0x1c)        //dos timer interrupt
/*===========globe variable===============*/
int timer_counter=0;
//be used for save old interrupt function pointer for restore interrupt
void interrupt (*old_interrupt)()=NULL;     
/*===========data structure===============*/
/*===========function declare=============*/
void interrupt new_interrupt();   //set this function beto new 0x1c interrupt 
what call next function
void set_timer(void interrupt (*interrupt_fun)());    
//set 0x1c interrupt (look last function)
void kill_timer();        //restore old 0x1c interrupt
void delay_ms(int ms);
/*===========function implement===========*/
void interrupt new_interrupt(){
    timer_counter++;
    return ;
}
void set_timer(void interrupt (*interrupt_fun)()){
    timer_counter=0;
    old_interrupt=getvect(TIMER);    //get one interrupt vector
    if(interrupt_fun==NULL) return ;
    disable();
    setvect(TIMER,interrupt_fun);    //set one interrupt vector
    enable();
}
void kill_timer(){
    if(old_interrupt==NULL) return ;
    disable();
    setvect(TIMER,old_interrupt);
    enable();
}
void delay_ms(int ms){
    int t_timer=timer_counter;
    set_timer(new_interrupt);
    while(1)
        if(ms==(abs(timer_counter-t_timer)*100)){
            kill_timer();
            return ;
        }
}
/*===========END==========================*/
#endif


共2页: 1 [2] 下一页

原文转自:http://www.ltesting.net

...