学习了一学期的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 语言真的可以开发出很多东西吗?相关推荐

  1. cshop是什么开发语言_学会了 C 语言真的可以开发出很多东西吗?

    马里奥碰到花朵就变身. 什么是马里奥?一个装着 16 × 32 个小色块的长方形,其中一些色块填着颜色,另一些没有.什么是花?一个 16 × 16 的正方形.什么是「变身」?把马里奥这个方块里面代表衣 ...

  2. 学会c语言开发出很多,学会了C语言可以开发出很多东西吗?

    C语言相比其他高级语言,就像内功和剑法一样.只会C语言可能并不能写出一个看起来就很厉害的程序,但C语言是你学好其他一切语言的基础.有了C语言的底子,再学别的语言就很容易上手了. 你能想到的,C语言都能 ...

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

    C语言相比其他高级语言,就像内功和剑法一样.只会C语言可能并不能写出一个看起来就很厉害的程序,但C语言是你学好其他一切语言的基础.有了C语言的底子,再学别的语言就很容易上手了. 你能想到的,C语言都能 ...

  4. 学会了C语言究竟能干什么呢?

    学会了C语言究竟能干什么呢? 真的可以开发出很多东西吗? c语言也许"只能"做数学题.可是,绝大多数游戏的运行过程就是不停的做数学题,而所谓编写游戏,也就是把游戏的规则和游戏的效果 ...

  5. 计算机游戏制作零基础教程,一个人、零基础,一天内学会独立开发出电脑和手机游戏?视频教学...

    原标题:一个人.零基础,一天内学会独立开发出电脑和手机游戏?视频教学 现在喜欢玩游戏的人很多,喜欢自己看动画的人也很多. 很多人在玩游戏或者看动画的时候,总会冒出一些非常有想法的点子,比如想自己做一个 ...

  6. 学会了C语言你可以独立开发这些项目。。。。

    C语言可以做什么? 从最简单的.最熟悉的说起吧,毕竟我们在学校学习的时候,老师几乎都会让我们去开发: 一.C语言可以实现一些常见的应用 以下几个几乎是我们学习C语言到一定阶段之后必开发的一个小项目了, ...

  7. 初学者如何开发出一个高质量的J2EE系统

    J2EE学习者越来越多,J2EE本身技术不断在发展,涌现出各种概念,本文章试图从一种容易理解的角度对这些概念向初学者进行解释,以便掌握学习J2EE学习方向. 首先我们需要知道Java和J2EE是两个不 ...

  8. 银行HR讲述实习生转正故事:寒门真的再难出贵子

    本文是一位银行的HR写的,他工作了10年,接待了一群到银行实习的实习生,然后观察他们发生的一系列的故事.像小说,但比我们看过的小说更精彩;像现实,但比我们了解的现实更残酷.文章中的寒门,还不是家庭贫困 ...

  9. 如何开发出一个高质量的J2EE(转载)

    如何开发出一个高质量的J2EE系统板桥里人 http://www.jdon.com 2005/06/20 J2EE学习者越来越多,J2EE本身技术不断在发展,涌现出各种概念,本文章试图从一种容易理解的 ...

  10. 82岁的老奶奶开发出了老年人App

    收到一个小伙伴的疑惑: (头像马赛克) 我也无法明确的告诉他"来得及"还是"来不及"了,那就来跟大家分享一下真实案例吧! 案例 互联网时代,万物剧变,不少人年纪 ...

最新文章

  1. “用手机就能访问卫星” 软件定义升级卫星智能
  2. fullcaledar日历插件
  3. 全球及中国霍乱菌苗行业模式分析及前景发展规划建议报告2022-2027年版
  4. 《机器学习实战》chapter 11 使用apriori算法进行关联分析
  5. 固定顶部指定div不滑动
  6. 【算法竞赛学习】二手车交易价格预测-Task1赛题理解
  7. api 规则定义_API有规则,而且功能强大
  8. hdu 5017 Ellipsoid(西安网络赛 1011)
  9. VMware虚拟机运行虚拟系统时显示“内部错误”的解决方法
  10. 阿里云CentOS服务器搭建静态网站(零基础)
  11. 境外服务器网站能挂支付宝么,支付宝如何境外改为境内?在国外可以使用吗?...
  12. LMS151-10100单线激光雷达与RealSense双目相机的联合标定
  13. linux基础09——nl
  14. 如何解决Visual Studio编译错误,即“处理器体系结构之间的不匹配”?
  15. Server-2008-R2中nslookup解析不出服务器名称
  16. pinyin去掉声调
  17. 无法加载xxx.dll文件,找不到指定的模块(异常来自HRESULT:0x8007007E)解决
  18. html 布局-相对位置及绝对位置
  19. java 设置其他程序焦点_设置焦点的问题
  20. MySQL5.7免安装版图文教程

热门文章

  1. windows下载安装adb(极其简单)
  2. matlab plot颜色
  3. 【各学校通用】5分钟刷完天津科技大学雨课堂视频
  4. 2020年中国地质灾害和地震发生数量、受灾人数和经济损失现状,防护和治理至关重要「图」
  5. 牛人自述模拟电路学习历程
  6. 写出调试c语言程序的基本操作步骤,C语言程序设计基本步骤
  7. C#学习笔记-WPF框架(MvvmLight)
  8. C# 替换Word文档中的书签内容【详细步骤】
  9. 互换性与技术测量教材pdf_《互换性与技术测量》赵燕【pdf】
  10. cd JAVA系统找不到指定路径_SDK Manager 打不开, 系统找不到指定路径 Unable to access jarfile lib\archquery.jar问题的解决办法...