重新学习 c 语言(4)- 库和宿主实现(一)概论

(一)概论

C语言的特性相对比较少,其他类c语言也是一样.OO的语言中的class可以看做一个特殊的struct,对象的方法其实就是函数(只是要求有一个默认的指向其对象的地址作为参数,比如this).用c现有的元素也可以模拟许多OO的特性,比如interface,多态等等.我见过一些纯c程序,也使用了后绑定,interface等特性降低程序的耦合以及其他优良的特性.

知道c语言的语言特性,就可以编程了吗?当然可以,但仅仅是语言本身除了学习之外,好像还没有别的什么用途!

那么,真正的软件开发需要哪些知识呢?

先扯点题外话

看上去好像与软件开发无关,其实却是软件开发成功决定性的一个概念: “软件工程”
人类似乎总是遭到天神的嘲弄,比如给了人类了解”天意”的智慧,却没有给予足够的时间,人类连自己也搞不清楚,却要去”改造大自然”.软件行业也是一个典型,现代自动化和高科技支撑产业的软件行业,却是几千年前就存在的”手工业作坊”,知识工具变成了键盘,鼠标.
一个软件的成功有许多环境,包括可行性研究,需求分析,设计,开发,测试,发布,维护等等,软件的开发只是其中一部分,随着需求的复杂度的提升,”开发”这个”过程”对于软件工程成功与否的重要性在逐渐降低!

好了先不管其他东西,只是软件开发,在我们熟悉了一门语言之后还需要了解什么呢?

当然不同的软件工程需要不同的知识体系,但计算机的基本知识体系大概是差不多的!

无论是服务器软件,还是桌面应用,或者是嵌入式开发都离不开计算机本身,记得我的计算机启蒙老师说过一句话(1996年,当时win95盛行,我们学习还是在Novell环境和dos下学习汇编)”别说是win95,就是将来有了win2000(后来真的有了)也是在计算机上运行的,不是天上飘的”.潜台词是让我们充分了解计算机原理.

好了,接下来我要讲开发软件可能会涉及到的几个重要概念,许多与计算机(c语言的宿主)打交道的东西,c语言通过库的形式提供.另外,我选择Linux和GCC环境,或许这是学习c语言的最好的环境了(虽然我是个windows程序员).

  1. 第一个概念,库本身是通过什么载体提供的?计算机中可执行的程序是什么样子?
    这里面涉及到可执行文件的格式,静态链接和动态链接的概念,(进程的概念在并发中提及)
    当然每一个概念都涉及到很多内容,我只是做简单的讲述,需要深入的地方,另外大部分概念都是最终由操作系统提供服务的,OS的概念太大,庐山太大,还是先认识花草吧!
  2. 第二个重要的概念是c语言中似乎缺少的语言特性,程序级异常,当然c是通过库函数提供的,功能可以用,还在乎什么是否是”语言特性”.
  3. 第三个也是语言相关的,关于动态内存分配.在c++/Delphi等OO语言,动态内存分配扮演着重要的角色,OO中的”对象”一般是用户掌握生存期的,而动态内存分配符合这个特性.
  4. 第四个是windows下最得意的部分,关于UI,用户接口(用户界面),当然用户界面一直是以Unix的命令行界面和Mac的GUI界面两个方向,本来没有什么技术的优劣,只是不同的资源和用途决定的,你不觉的地铁门上面只有一行的LED指示牌有什么不好吧!
  5. 第五个就是程序运行和并发!进程,线程,还有其他的吗?并发和内存的动态分配一直是大多数程序员困扰的问题.为什么呢?
  6. 第六个概念是几乎所有计算机书上都讲的IO! File的概念或许和进程的概念一样,是计算机领域最重要的概念之一.在Unix/Linux世界里,大多数设备都是靠”打开,读,写,控制,关闭”这五个概念操作的,能用这五个概念操作的都可以叫IO!键盘,显示器,磁盘文件(光盘什么的也一样),串口,并口,红外,USB,网络.Windows里其实也一样!
  7. 第七个概念是IO的一部分(或叫做延伸,internet可以算作是你硬盘的延伸):网络.未来的软件,应该总是围绕网络的.不是在提供服务,就是在请求服务,或者兼而有之!
  8. 第八个概念属于应用范畴了:数据库.做应用软件似乎离不开数据库的概念,数据库是一个存储,传输,数据分析等等综合的概念.

当然,或许还有许多重要的概念! 不同领域的软件开发遇到的问题差异很大,但上面的概念或多或少要涉及到!我也是在不断的学习领悟,欢迎拍砖!

现在进入话题! 等等先说点题外话!

大三的时候我突然喜欢上计算机,一个偶然的机缘,我参加了一个计算机原理(汇编语言)的学习班(70学时,每学时3块钱,这么贵的培训,可见我是下了很大的勇气的).掌握了一些微机的基本知识,某日在机房看到几个同学用debug (dos上最有用的工具了)调试一段报纸上抄的程序,功能是用程序实现重启计算机,搞了很久,我过去看了看,只写了一行代码 jmp FFFF:0

然后w存盘,大概只有5个字节的.com执行文件,运行后那台386重启了,当时我那种神气的表情恐怕日后很难再有了!

我讲这个故事是为了说明:理解原理更重要! 就现在来说,能够轻松在百度,google搜索到的所谓技巧等等只能算是”九阴白骨爪”,用得到的时候再查也不迟,那些需要你不断实践从中感悟到的东西才是真正的”九阳真经”.

下面的内容如果在实践中碰到问题需要了解,大家可以深入研究相关的领域,没必要先练好所有武功再出道,有了一定的基础,然后不断的实践再学习效果会更好!如果某些知识今后的实践中用不到,就等用的时候再了解也不迟!但一些原理性的东西还是需要掌握,需要的时候就知道从哪个方向入手,否则永远是一头雾水!

下一篇:重新学习 c 语言(4)- 库和宿主实现(二) 程序如何运行
前一篇:重新学习 c 语言(3)- c语言特性(三)函数和程序结构

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,440评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,814评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,427评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,710评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,625评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,014评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,511评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,162评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,311评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,262评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,278评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,989评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,583评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,664评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,904评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,274评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,856评论 2 339

推荐阅读更多精彩内容