C语言有啥用,学C语言能干啥?(小白必读)

如果你只学 C 语言,那很尴尬,只能编写一些没有界面的控制台程序,其他啥也干不了。

C语言仅仅是一个工具,它的标准库也很简单,只提供了最基本的功能,如果希望开发出实用的程序,必须再学习其他方面的知识。

C语言也是一门通用性的语言,并没有针对某个领域进行优化,就目前而言,它可以进行以下几种类型的开发。

C语言是我学的第一门编程语言,如果你没有编程基础,想快速入门 C 语言,可以看我之前学习用的一套 C 语言教程,语言通俗易懂,知识点全面、丰富,非常适合初学者。

C语言基础教程(适合小白)

1) 单片机/嵌入式开发

这是目前使用C语言最广泛的一个领域,尤其是单片机开发,基本被C语言霸占了。

嵌入式开发是一个比较广泛的概念,通常来说包含两个方向:

① 单片机开发:由于硬件资源有限,通常不使用操作系统,让代码跑在裸机上;或者,仅仅安装一个简单的实时操作系统(RTOS),比如 FreeRTOS、µC/OS、RT-Thread 等。

② 一个是基于复杂操作系统之上的开发,比如 Linux、Windows、Android 等。当然,这些操作系统都要针对嵌入式环境进行裁剪和优化,形成专门的嵌入式版本,以减少对资源的占用。这个才是通常所讲的嵌入式开发。

也就是说,单片机开发是嵌入式开发的一个分支,或者一个子集,或者一个分支。

走这个方向,你必须熟练掌握 C 语言,然后去学习单片机(51、32、freeRtos),学嵌入式开发的话还需要学 Linux,最后可以学一些界面开发的技术,比如 C++ Qt。

2) 桌面软件开发

也叫 GUI 开发或者 PC 软件开发。

在实际应用中,C语言通常用来开发某些关键模块或者效率模块,而不是开发一个完整的软件。这些模块一般对性能有着很高的要求,同时也关注资源消耗情况,除了C语言也没有其它更好的选择了。

几个例子:

① Office早期版本使用C实现核心功能

② PS早期版本使用C实现核心功能

③ CAD和3D建模软件使用C实现渲染和计算功能

④ Notepad++、Sublime Text使用C实现核心的编辑功能

⑤ MySQL Workbench和SQL Server Management Studio数据库客户端软件,使用C语言来实现数据库连接、查询、管理和界面

如果你想开发一个完整的桌面软件,那么可以使用以下的解决方案/技术栈/技术选型(以 Windows 为例说明):

① 基于 .NET 平台的 Windows Forms、WPF、UWP,可以使用 C#/VB.NET 编程。

② 基于 C++ 的 GUI 框架/库,比如 Qt、MFC、wxWidgets、GTK。

③ 基于 Java 的 Swing、JavaFX。

④ 基于 Python 的 Tkinter、PyQt。

⑤ 基于 Web 技术(HTML、CSS 和 JavaScript)的 Electron 框架,VS Code、GitHub 客户端、Discord 就是用 Electron 开发。

⑥ 基于 Dart 的 Flutter,跨平台,支持 Windows、Linux、macOS、Android、iOS、网站。

3) 系统组件开发

基础组件、核心算法、硬件驱动、通信协议的实现,都离不开C语言。

C语言底层开发举例:

① 基础组件:文件系统、进程管理、用户界面(CLI+GUI)

② 核心算法:加密/安全算法(MD5、SHA、AES、RSA、SSL)、调度算法(线程/进程调度、内存页面置换)、LZ压缩算法、CRC和海明码等数据校验算法、随机数生成算法(又细分为多种方式)

③ 硬件驱动:声卡驱动、显卡驱动、网卡驱动、蓝牙驱动、键鼠驱动、扫描仪/打印机驱动、USB驱动

④ 通信协议:TCP/IP协议族(UDP、DNS、路由选择)、HTTP/HTTPS、SMTP/POP3/IMAP、FTP、SNMP、Bluetooth、NFC

4) 音视频处理

C语言的速度非常快,能够快速地对音频和视频数据进行处理。音频和视频数据通常比较大,需要高效的算法和数据结构来处理,而C语言运行速度非常快,能够及时处理这些数据。

C语言提供了丰富的底层库和工具,如 FFmpeg、OpenCV 等,这些库和工具可以方便地对音频和视频数据进行编码、解码、剪辑、处理和转换等操作。

C语言支持指针和位运算等底层操作,这些操作可以对音频和视频数据进行高效的操作,如数据拷贝、移位、变换等。这些操作对于实现一些高级算法和数据结构非常有帮助。

几个例子:

① 音频编解码:MP3、AAC、WAV

② 视频编解码:H.264、H.265、VP9

③ 音频处理:音频滤波、均衡器、混响、降噪、语音识别、音频合成

④ 视频处理:图像滤波、色彩空间转换、运动估计、视频编辑

⑤ 媒体库:FFmpeg 和 OpenCV 可以用于编解码、格式转换、滤波、图像处理等

总结一下,虽然C语言的开发场景看起来很多,但是如果总结一下的话,无非就是:底层/系统开发 +关键组件/模块的开发 + 贴近硬件的开发,这些开发场景非常关注运行效率,或者响应时间,或者硬件资源。

C语言方向,如果对应到工作岗位的话,大概有以下几种:

① 单片机/嵌入式工程师:可以开发应用程序、驱动、固件、标准库/运行库,甚至适配操作系统。

② 系统软件开发工程:可以开发操作系统内核、编译器、文件系统等底层软件;随着云计算和物联网的兴起,优化和定制操作系统的需求不断增长。

③ 应用程序开发工程师:设计和实现应用程序中的某些模块,尤其是那些对运行效率和响应时间有着极高要求的场景,比如金融领域的高频交易软件(HFT)。

④ 游戏开发工程师:负责实现游戏引擎的核心功能,比如 2D/3D图形渲染、物理模拟等。

⑤ 网络编程工程师:开发网络工具(比如类似 Nginx 的服务器),或者通信协议(类似 UART、I2C 的协议),实现数据的交互。

⑥ 数据库开发工程师:一些高性能数据库系统,比如 MySQL、Redis,其核心部分使用C语言编写。

以上岗位虽然会使用C语言,但也不一定完全使用C语言,还会用到其他的编程语言,很多场景都会用 C++。

C语言和 C++ 都是非常高效的语言,它们往往是不分家的,所以才被称为 C/C++。学完 C 语言之后,你可以继续学习 C++。掌握了 C++,你就可以开发比较大型比较复杂的项目了,不但你的工资会增加,就业范围也会拓宽,比如:

① C++ 后台开发:也叫 C++ 服务器开发。面向业务的网站后台主要使用 Java、PHP、Python、C# 等语言开发,但是那些非常注重运算性能、响应时间,或者大数据量、高并发量的后台,就可以使用 C++,比如高频交易软件(HFT)服务器、游戏服务器、分布式文件系统、分布式计算、云计算、大数据、负载均衡 SLB、网络分发 CDN 等。

② C++ 客户端开发:也叫桌面软件开发,或者 GUI 软件开发,也就是开发在 Windows/Linux 上使用的带界面的软件,比如 QQ、微信、迅雷、WPS、火绒等。

C语言基础教程(适合小白)

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

推荐阅读更多精彩内容