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

     C语言已死? 这个论题成为CSDN博客们的热点.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: [email protected]
*/
#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

 

一个dos下的简单图形函数库

 

/*
=============0x13h display mode version 1.1 Header
=============CopyRight (C) LiGungcun
=============QQ:66855618
=============E-Mail: [email protected]
--------Compiler is Borland TC++3.0 for DOS 
---------The last modification 08/02/2004 
*/
#ifndef __V_13__
#define  __V_13__
/* ===========head file include============ */
#include 
< stdio.h >
#include 
< dos.h >
#include 
< stdlib.h >
#include 
< mem.h >
#include 
< math.h >
#include 
< stdarg.h >
#include 
< process.h >
#include 
< bios.h >
/* ===========macro defined================ */

/* ===========globe variable=============== */
unsigned 
char  g_current_color;     // setcolor current color for draw
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 30
    评论
### 回答1: 您好,我是AI语言助手,以下是对您的回复: 20201022-成信大-c语言程序设计-20201学期《c语言程序设计b》是一门面向大学生的C语言程序设计课程,主要教授C语言的基础知识和编程技巧,包括数据类型、运算符、流程控制语句、函数、指针、数组、结构体等内容。通过本课程的学习,学生可以掌握C语言的基本语法和编程思想,提高编程能力和解决问题的能力,为以后的编程学习和工作打下坚实的基础。 ### 回答2: 20201学期的《c语言程序设计b》是一个深入学习C语言的课程,教授的是C语言的高级应用。在本次课程中,学生将会进一步学习C语言的语法、程序设计思路以及具体的编码实践。 首先,学生将会学习C语言中的函数、指针、结构体、联合体、枚举等高级概念。这些概念是C语言面向对象编程中至关重要的概念,也是学生在日后编写复杂程序时所必须了解的内容。此外,在学习这些概念的同时,学生还将学习如何使用宏定义和预编译指令来进一步优化程序性能。 其次,学生将会进行具体的编码实践,包括基于C语言的数据结构设计和实现、字符串处理、文件操作、网络编程等等。这些项目和实践将会提供给学生大量的机会来将所学的概念应用到具体的场景中,帮助学生更深入地理解C语言的应用。 此外,学生还将参加课堂讨论、代码评审等活动,通过这些活动来提高自己的编程能力、代码质量和团队协作能力。教师也将会给学生提供详细的反馈,帮助他们改善自己的问题和提高自己的能力。 总之,《c语言程序设计b》是一门非常重要的课程,对于学生日后从事计算机编程工作具有非常重要的意义。通过学习这门课程,学生将会大幅提高自己的编程能力、透彻理解C语言并将其应用到实际工作中。 ### 回答3: 成信大-20201学期《c语言程序设计b》是一门针对深入学习C语言的高级课程,内容涵盖了高级数据结构、算法设计、动态内存分配、文件操作等等。 在这门课程中,学生将通过实践和理论学习,掌握C语言的高级编程技巧和策略。课程的重点之一是高级数据结构,包括链表、树、哈希表、图等等,学生将深入理解数据结构的实现和应用。 除此之外,课程还将涉及算法设计和分析,学生将学习如何设计出高效的算法,并进行时间和空间复杂度分析。动态内存分配和文件操作也是这门课程的重点,这些技术对于C语言程序设计来说非常重要。 学生在课程中还将开展实践项目,以实现理论学习。通过项目实践,学生将在实际中应用学到的技术,发现其中存在的问题并解决。 总之,成信大-20201学期《c语言程序设计b》是一门非常高级的、面向深度学习的课程。通过系统学习和实践的方式,学生将深入掌握C语言的高级编程技巧。这门课程对于想要深入学习C语言的学生来说是非常重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 30
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值