`
buliedian
  • 浏览: 1250376 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论
阅读更多

进入大学第一门要学习的专业课程就是C语言。大一那时候学的C语言基本上就是讲讲语法,没有任何其它内容。

晃荡了一年半之后,大二下学期来了一门重量级的课程--数据结构。其实学习数据结构的时候C语言基本的内容就已经忘记差不多了,没办法只能重新学。连C语言语法如此简单的语言都会忘记,那只能说明当初学习的不够深入。这时候带着使用C语言的目的去学习,让我进步的非常快。其实数据结构中,除了一些简单的算法知识,主要是对指针的运用。特别是链表和二叉树这两种数据结构。指针这东西,我在一开始写链表的程序时候就非常疑惑。为什么一个结构体的内部可以有指向这个结构体的指针,这不是有点进入先有蛋还是先有鸡的死循环中吗?另外一个让人困惑的就是函数指针。一个变量有指针这很容易理解,表示的是这个变量的地址。那为什么函数也有指针?函数不就是源程序中的一个代码块吗,那么它的指针表示的是这块代码的地址吗?

我带着一系列的问题学习着数据结构,当我在开学两个月后看完教材的时候发现这本科并不能解释任何问题。它只是不厌其烦得讲解着各种算法,各种数据结构的运用场合。教材最后几章一直在讲各种排序和查找算法,我承认那些那些算法更精妙也很重要,但是一个连指针是什么都没弄清楚的人这些东西又有什么用呢?我不应该再继续往算法方向学习下去了。

我开始学习汇编。我看的书是王爽的《汇编语言》。不得不提一下这一本绝对是学习计算机人士必备书籍。用了一个月时间看完了这本书,也完成了书上大部分的联系,也写了书上所有要求的汇编程序。一次又一次的使用mov, add, sub, loop, jmp,cmp等指令,我不知道从什么时候开始突然明白了指针的本质。指针就是内存中的数据数据单元,和int, char等数据类型并没有本质的不同,定义了指针类型的变量和普通类型的变量都是在内存中开辟了一定的空间。指针和普通类型不同的地方就是它并不直接表示一个变量值,而需要处理器经过二次运算才能找到对应的值。在intel 32位处理器下,指针一般都是4个字节。学习了汇编之后才能明白原来程序运行流程不是按照一个函数一个函数进行跳转的,使用jmp指令可以让程序跳转到任何地方。甚至用机器码写一段指令,让程序跳转到这个位置。在汇编语言和机器语言的级别上根本没有int, float, double, char的类型含义,有的只有字节,字和双字。CPU根据指令从内存中拿取不同的数据,这里让人有点不适应的就是intel 机器放在内存的数据使用大端模式。在这个层次上像C语言这种高级语言的一部分语义就消失了。

因此,之前的疑问就很容易理清楚了。在一个结构体中定义指向这个结构体的指针还这么让人不可理喻吗?不是的,很容易理解。编译器碰到这种定义只需要给这个成员变量4个字节的空间就行了,因为在CPU指令级别上并不包含指针类型这种东西,需要的只是一定大小的占位符。编译器还需要在源文件中检查对这个指针的赋值是不是指向这个结构体的地址。可以这么说,我的这个问题其实就是来源于C语言引入的变量类型系统,当真正弄清楚C语言的类型和真正的CPU指令的关系后,一切就豁然开朗了。

大二的暑假我开始学习C++。C++是一门非常复杂的语言,和C的简洁截然不同。C++对于C语言在编译器级别上做了相当多的改进。当定义一个类的实例时,编译器自动在这里调用这个类的构造函数。对于每个类的成员函数,C++编译器不仅仅修改了函数名,还对函数的参数做了修改,在每个函数参数列表的最后都增加了一个指向自己这个类的指针。C++实现多态的原理就是根据每个函数参数列表类型修改函数名,因此在源代码级别上产生了调用同名函数的错觉。C++还会修改每个类的内存模型,如果类中没有定义虚函数,那么这个类的内存模型将和定义同样成员变量的结构体一致。如果定义了虚函数,那么会在每个类的开头分配4个字节指向虚函数地址的指针。正事由于这个特点,C++就实现了多态和子类的动态绑定。

大三这一年可以说是我在大学收获最多的一年。大三的课程也是最多的,有操作系统,数据库,微机原理,计算机通信和多媒体基础。网络上关于大学计算机专业的课程有多么没用的评论到处都是,这写文章我也看了很多。但是我一直不同意这样的观点,因为学校的课程对我的帮助非常大,特别是大三这一年。

微机原理介绍了各种可编程的芯片,并且使用的是我非常熟悉汇编语言。我那时候开始就对单片机,ARM等嵌入式设备感兴趣。遗憾的是我到现在都还没有实践的经验。计算机通信让我对网络编程有了基本的了解,并且是从下之上一层一层的理解互联网的运作原理。学习了各种协议基本结构和各种网络设备的用途的原理。也许学校里学习的知识不能马上投入使用,但是从长远来看这些才是计算机科学的核心,不管是ASP, JSP,PHP等网络应用层的编程都是在这些基础之上的。

大三的暑假我和一个同学留在学校里没有回家。我们每天中午12点起床去实验室,然后晚上10点回寝室。这样的日子整整持续了两个月,这是我第一次暑假没回温州,这才感受到杭州的夏天是多么的炎热。每天从寝室到学校C区的612,需要半小时左右,到那里已经满头大汗了。而晚上睡觉时候寝室又没有空调,真是惨不忍睹。

但是这个暑假我学到了很多关于Web的知识。在这个数据学习了JAVA,HTML, CSS,JAVASCRIPT等,大大拓展了我的视野。学习了这些使用的技术后才对现实世界中使用的软件,浏览的网站有了更清晰的认识。对它们不再感觉神秘。在初学习C语言的时候,对于windows下面的图形化的软件感觉是可望而不可及的。学习了windows下编程之后才能知道这些界面是如何做出来了,才会对计算机技术有个更深刻的认识。同样学习了浏览器对HTML,CSS,JS是如何解释的之后,才会理解绚丽多彩的网页是怎么产生的。所以我始终认为在平时工作和学习中不能局限于自己熟悉的技术。windows程序开发人员也应该了解一下linux的开发方式。写桌面应用的人员也应该了解一下网络程序的开发。

慢慢我开始对计算机有一些更本质的认识。如今在图形界面下的程序已经不是简单的数据+算法了,应该是数据+算法+显示。其实网络给浏览器传输的是一些文本数据,之所以能向用户展示页面是由于浏览起对HTML标签做了特殊的解释。也就是说屏幕上显示的画面和实际的数据并没有直接联系,只是人们发挥主观能动性,让屏幕上显示的画面和内存中的数据产生联系。就好像一个HTML文件用记事本打开,它就是含有一堆标签的文本,如果用浏览器打开那么就是一张漂亮的页面。这种思想在计算机内部随处可见。计算机只有一种内存,但是内存中却又三种类型的数据:地址,指令和数值。内存存放这三种数据的时候并没有任何区别,都是二进制数据。这三种数据的区别体现在CPU对这些数据的解释。

如今,已经大学毕业了,我在大学期间学习的知识和技能虽然现在能应付工作的需要,但是我并不因此满足。计算机肯定还有更有趣,更深奥的东西需要理解和学习:

关系数据库已经在全是风行了几十年,近期为了解决大型网站可拓展性的需要又出现了NoSQL数据库。

Python为什么这么流行?它有什么优先?动态类型的解释性语言。

函数式语言越来越重要,应该挑一门函数语言来学习。

Linux内核。

嵌入式开发。

GPU编程。

windows 驱动开发。

。。。。

Stay Hungry. Stay Foolish.

分享到:
评论

相关推荐

    电子信息工程的大学四年之感悟

    ### 电子信息工程大学四年感悟与心得 在大学四年的学习生涯中,电子信息工程专业的学习之路充满了挑战与收获。本文将从个人经历出发,分享在这一过程中的一些感悟与建议,希望能够为后来者提供一定的参考。 #### ...

    给大学四年后自己的一封信.docx

    【知识点详解】 ...总结:大学四年的时光是塑造个人未来的关键阶段,要充分利用这段时间进行自我提升,学习专业知识,锻炼各种能力,形成独立人格,同时要有明确的人生规划,不断挑战自我,以实现自己的梦想。

    自动化学习经验怎样好好利用大学四年学习

    自动化学习在大学四年的规划与应用 自动化专业的学习是一个深入且广泛的领域,涵盖了电子、控制、计算机等多个方面。大学四年是奠定专业基础、提升技能的关键时期。以下将详细阐述如何在大学期间有效利用时间,积累...

    软件工程大学四年规划书范文1600字.docx

    软件工程大学四年规划书范文1600字.docx

    电子商务大学四年学习规划书参考.doc

    电子商务大学四年学习规划书参考.doc

    大学四年项目管理报告.docx

    大学四年项目管理报告

    大学四年的7个永恒瞬间.txt

    根据给定文件的部分内容,我们可以提炼出大学四年经历中的几个关键知识点。虽然原文存在不少语法错误和难以理解之处,但还是能够从中抽取出一些有价值的信息片段,并围绕这些内容进行阐述。 ### 大学生活的初体验 ...

    运用系统工程方法论规划大学四年生活实用.pdf

    大学四年的生活规划是一项复杂的任务,涉及到个人发展、学术成就、职业规划等多个方面。系统工程方法论提供了一种系统化、有序化的思考方式,帮助我们理解和处理这一问题。系统工程的核心在于通过系统思维、系统分析...

    会计专业大学四年规划范文.doc

    会计专业大学四年规划范文.doc

    大学四年学习总结.pdf

    大学四年学习总结 一、大学四年学习总结概述 大学四年学习总结是对四年大学学习经历的总结和反思。作者通过回忆大学四年的学习和生活经历,总结出了一些有价值的经验和教训。文章分为三个部分,分别是大学四年的...

    大学四年毕业个人自我鉴定总结(精选多篇).pdf

    大学四年毕业个人自我鉴定总结(精选多篇).pdf大学四年毕业个人自我鉴定总结(精选多篇).pdf大学四年毕业个人自我鉴定总结(精选多篇).pdf大学四年毕业个人自我鉴定总结(精选多篇).pdf大学四年毕业个人自我鉴定总结...

    郭天祥--我的大学四年.doc

    身处大学的第八个学期,眼睁睁看着我大学四年最后的时光一点点逝去,再看看身边很多学生一天天的把时间就这样白白的荒费掉,我在内心里替他们惋惜,在即将结束我的大学本科生涯之际,在这里将我的大学四年生活与大家...

    大学生德育论文 四年感悟

    大学生德育论文,大学四年时光回顾及感悟……

    [大学四年规划书]大学四年规划书1000字.docx

    以下是对这个大学四年规划书内容的详细解读: 首先,规划书强调了提升语言能力的重要性。在汉语方面,计划考取普通话二级甲等证书。普通话作为中国的官方语言,对于求职者来说是一项基本技能。通过制定明确的备考...

    大学四年自我鉴定300-大学四年的学习生活的自我鉴定.docx

    这篇文档是关于大学四年自我鉴定的,主要涵盖了思想道德素质、科学文化素质以及身体、心理素质三个方面。以下是对这些内容的详细解读: 首先,在思想道德素质方面,作者强调了自己良好的道德修养,坚决拥护党的领导...

    大学四年规划.docx

    本文将详细介绍大学四年规划的各个阶段,让每个大学生都能有的放矢地规划自己的大学生活。 **大一:自由探索期** 从紧张的高中生活步入大学,大一是新鲜感和探索精神最为旺盛的时期。这一时期,学生们的首要任务是...

    大学四年规划怎么写.docx

    大学四年,是人生中最为关键的转折期之一,如何有效地规划这四年的学习和生活,是每一位大学生都需要面对的问题。本文将具体探讨如何制定一个行之有效的大学四年规划,以期帮助大学生们更好地规划未来,实现自己的...

    大学四年学习总结材料.docx

    【大学四年学习规划】 大学是人生的关键阶段,它为我们提供了宝贵的时间来探索自我、发展技能和建立未来职业生涯的基础。在大学四年的学习过程中,每个阶段都有其特定的目标和重点。 **大一:打基础,适应新环境**...

Global site tag (gtag.js) - Google Analytics