学习了一学期的C语言,最后发现还是在黑框框终端写东西,只是简单的写一些输入,输出,感觉索然无味。

C语言怎么系统化的高效学习?

那么为什么大家会困在这里,这里说个主要的原因,就是,你没有使用界面库。

没有界面库,就没有更丰富的操作性,以及显示。而C语言的界面库有吗?有的。

VS 下面的 MFC 开发,以及 Linux 下面的 GTK+ ,还有 CodeBlocks 下面的 EGE库,DOS下也是可以图形化开发,比如 eCGUI ,这些都是我们在学习C语言的时候,会忽略的一个环节。

这个环节是迈向真正有商业价值,方便操作的一步,也是你最终认可C,能够做出华丽的界面的关键。

那么,在画面之下,我想说说更为重要的一个东西,就是抽象能力,很多人开发,想不明白这点,所以一直迷迷糊糊。

不管哪种语言,其实都分为两个部分,一个是业务逻辑,一个是显示。当然有些是没有显示,也就是我们看到的一个运算器这类。

有些是有显示,但是很粗糙,就像我们的终端界面。

一个桌面应用,一般由业务逻辑,以及对应的界面展示组成。这个典型的框架就是MVC。

M = Model

V = View

C = Control

简单理解就是,我们使用 C ,作用在 M 上,最终在 V 上让用户直观的看到变化。

那么,去掉界面显示这个环节,就是核心的两点,M 和 C,那么 M 代表什么:数据模型,其实就是数据结构。C 代表控制,也就是操作,其实就可以算是算法了。

比如这个游戏:该由哪几部分组成呢?

我们这里简单拆解下:

元素分几类:

1 砖头,砖头也分能否顶,是否有蘑菇,道具产生

2 主角玛丽,大小,是否能发子弹,这个是主要控制的,由遥控器指定方向和跳跃

3 背景,山,草,都是不做障碍,只是显示而已,云朵也是

4 下水管道,障碍,是否可以向下穿

5 地面,判断玛丽是否能够掉下去的关键因素,实际中只需要判断玛丽的竖向坐标(Y),比如小于0,就代表跑出画面,意味着从空隙掉下去了。

简单把元素归类,剩下的就是地图的生成,展开,以及里面的怪物的移动,奖励机制,时间的倒计时,这些不断地填充进来,完成所谓的游戏开发。

所有的游戏,都是这个框架,一个主要的推动器,要么是主动的,超级玛丽就是,要么是被动的,像雷电,两种的区别就是,是否需要自己主动的向前进。

一般而言,大家停留在的只是课本上的东西,那个太过简单,也没有太复杂的业务,没有熟悉界面开发,所以显得C语言没啥用。

但是,C语言真正的灵魂是,让你打牢基础,将底层的硬件理解得更加透彻,显存位置,中断位置,直接绘制,都是在底层操作的。

做过嵌入式开发的,都应该用过GUI,虽然比较丑,用的点阵,但也是经常使用的,比如这种:

我们现在使用的GUI,有非常炫酷的效果,特效,使用OpenGL ,或者Vulcan ,渲染引擎,快速的做出高质量的画面。

但万变不离其宗。C语言是灵魂,当你把C语言吃透,至少打通了一个关键环节,就是 与硬件的连接,上层的界面库,以及应用,都会信手拈来,对于所谓的Java python 都是轻松搞定,学习效率大增。

计算机的世界,是现实的映射,如果你不会描述,不会抽象,那么会陷入在不能创造的这个困境,遇见新的事物,不会表征它,描述它,这是计入计算机时间的最大障碍。

描述一只鸟,描述一个汽车,描述一个人,一个保龄球,用结构来描述它,完成了这个步骤,剩下的就是如何变化,静态的数据,需要动态的算法驱动,才能形成程序。

这里给一些代码:

C语言写的 超级玛丽

https://github.wuyanzheshui.workers.dev/jubalh/raymario

下来最后我们再来说下,为什么用C现在开发界面不怎么流行?主要是大众的接受度,以及技术的成熟度。

之前在汇编,机器语言开发的时候,C叫做高级语言,现在Java Python 这类语言的出现,同时加上当前很多场合不需要太高性能。C语言现在在嵌入式还是主力,因为实时性非常关键。

所以,一般而言,市场大量的开发,是C#,Java ,Python的这类上层开发,但是真正要交互,用到底层硬件的,还是C,这个势必可避免的,比如路由器,比如驱动开发,只是这类的需求,就如同创造出五颜六色一样,剩下的就是交给大家去创造,搭建不同的工具,界面。

C语言完成非常关键的一个环节,底层抽象,上层可以高效开发。

说透了就非常简单,每个语言都是能够快速上手,适应项目的。因为主要就掌握几点,如何用,有哪些用法,剩下的就是如何描述需求,实现,有哪些封装库,高效开发。

比如你现在去写Java语言,字符串拼接,过滤,替换,以及正则表达,网络请求都是用的封装库。

而C的因为它依赖平台,硬件,所以它不通用,是一套零散的接口,但是功能大同小异,所以没有所谓的标准API,不过Linux 下是有C的标准库,可以去使用,实际开发,各个平台的叫法不一,写法不一,这或许就是C最灵活的地方,也是你一直摸不透的原因。

最后汇总一下,C语言可以开发出很多东西,只是你没有注意,大多时候它没有界面,变成了其他语言的支撑。地基。

如果说哪门语言学会,计算机就算是进阶了,那么只会是C,只能是C。

--end--

今天分享一些整理的书单,关于C语言的,看这些书就足够学懂C语言了。关于操作系统相关内容,我们后续再来分享。

获取方式, 后台回复 我要学C语言  ,领取链接。

C语言练习项目源码:

获取方式, 后台回复 我要学C语言  ,领取链接。

抖音项目,全集100T内容,各类玩法,拍摄技巧,网络整理搜集!

计算机书籍一网打尽

热门文章

零基础新手自学Python编程教程入门精通学习资料网站大全

自学编程C语言不迷路,我私藏的书单分享给你!

零基础新手学习算法Leetcode刷题指南

程序员码农IT工程师自学编程计算机入门进阶学习网站大全

程序员面试题宝典以及相关书籍下载!

计算机类常用电子书整理大全

职场老鸟,互联网十年从业生涯,分享 [Java,Python,安卓,AI,爬虫] 技术文章,学习资料, 热点趣闻等。关注回复 1024 Python 电子书大全 面试资料,给你一份私藏的程序员好礼,永远更新中!赶紧来关注哦!

我的微信 code_gg_boy 。

更多推荐

学会了 C 语言真的可以开发出很多东西吗?