我是一个初学者,目前已经看完了 C primer plus ,但是感觉什么都做不了,想问问朋友们想学习 C 的网络、多线程、数据库、GUI 相关内容应该看点什么书

不好意思,我补充一下,目前已经上班了,工作方向会转移至实时计算方面的工作,所以想学习 C ,目前第三方工具用的就是纯 C 写的,所以目前不考虑其他语言,就是想问问 C 的学习路径是什么,或者说 C 的看书路径,谢谢大家

虽然但是,一个没什么特定需求驱动的人,初学真不应该学 c ,c 艹

该学第二三四五六七八门语言了

搞这些见效慢,可以买块板子搞嵌入式,lvgl gui 一写,感觉立马就来了。

#1 单位有相关需求,大概就是类似 flink 数据抽取方面的,目前一直都是用的第三方公司的,我也想学习一下,可能以后会抛弃第三方公司

#2 会点 Java 跟 Python

初学从 C 入门是科班路线嘛 后面跟着的必然是计算机组成原理跟操作系统 没啥问题

#3 从业方向不是这些

#6 已经上班了,只是想跟一下单位的步伐

做完 C 程序設計語言的習題你就有工作水平了,只是語言方面

打扰了 原来不是学生 那讲究生产力想见效快的话建议直接 Python 就行了 C 不适合你

“目前已经看完了 C primer plus”如果你只是看完還不夠,習題很重要,C 語言搭配的計算機底層知識也需要再學;最好 C 程序設計語言+深入理解計算機系統 兩本書一起搭配看看

#10 主要是目前工作内容涉及实时计算这一块,python 不太适合

#9 如果想学习高级知识呢,例如多线程与网络之类的

  1. 咋会啥都做不了,写个命令行小工具肯定是可以的三。2. 下一本看「 UNIX 高级环境编程」和 「 UNIX 网络编程」

    首先 C 语言的标准库内容很少,很底层。 网络、多线程、数据库、GUI 全都跟标准库八竿子打不着一块然后 C 生态的必读进阶书是APUE (Advanced Programming in the UNIX Environment)这本书介绍了 nix 编程接口的方法面面,可以认为是《 windows 核心编程》的 nix 对标 —— 里面所有的程序都是 C 语言写的。但就算你啃完了这本书,你离 C 语言生态还是很远,因为 C 真正的应用场景是各种历史悠久的库和框架,比如 libevent/libev/libuv, YACC/Bison, GTK…… 以及诸如 Nginx 插件这种非常特定的领域。就算是嵌入式,但凡有点封装的也一定都有 C++的接口,C 的意义就是当你需要非常原始的机制 start from scratch 的时候不至于要写一大堆汇编

    #15 学习了,我一直认为 C 的处境跟 Java 或者 Python 一样,只不过更贴近底层,没想到这么底层

类似 flink... 的情况下,为什么会学 C ?一点关联都没有实时计算是什么意思?

#17 字面意思,就是实时计算业务

flink 搭个环境,找本书跑下,简单使用感觉还是挺容易的。。没有必要 c 吧。

除了嵌入式和操作系统底层和高性能场合外最好不要用 C 语言写什么最佳路径就是做项目

C 语言本身内容较少,而且抽象层次很低,属于“系统编程语言”,也就导致,网络、IO 、GUI 这些功能在其他编程语言中可能已经抽象到标准库中了,但 C 语言标准库不包含这些,要用的话应该学习操作系统提供的 API 。不同的操作系统提供的 API 是不同的,需要分别去学,或者使用一些别人封装好的跨平台库。Linux 推荐 Linux/UNIX 系统编程手册 book.douban.com/subject/25809330/Windows 推荐 Windows 系统编程 book.douban.com/subject/5323432/关于库的底层实现的 程序员的自我修养 book.douban.com/subject/3652388/看了这些你能理解一些网络库的底层实现原理了,当然实际应用中可能更多会使用别人的开源库。比如 libuv 、mysql 的 C 接口、GTK 等等,那就去看具体的库的文档。

并不一定,哪怕是科班线路,也不一定要从 C 入门。我觉得 C 更应该被视为有一定编程基础和对计算机结构基础有了解之后的进阶知识。一上来就 C 只会打击学习热情比如麻省理工 CS 就是最早用 Python

build-your-own.org/编译器,关系数据库,KV 数据库,web 服务器。一般搞点具体的可以维持学习兴趣

学 C 最简单的就是用 C 去刷刷 leetcode 就行了。知道 C 指针/数组/函数基本上就会了。

系统、网络相关的去看:《 UNIX 环境高级编程》和《 UNIX 网络编程》算法:就算法导论吧数据库:直接看对应数据库的 C APIGUI:不太清楚了,去参考一下其他贴吧顺便自荐一下 C 轮子开源项目: github.com/Water-Melon/Melon

You should choose a language base on your business. I don't think you should learn C just because the third-party tools are written in C.

深入那本書最後三章就是系統和網路編程和併發編程入門足夠了

《 UNIX 环境高级编程》 +1《 Object-Oriented Programming With ANSI-C 》,这本可以看看,毕竟大项目即使是 c 语言也还是会有很多面向对象的设计的然后你之后工作搞啥你就看看相关的开源项目

不同意楼上某些观点嵌入式领域, 针对单片机来讲, 很多就算封装过的也是 c 库, cpp 的并不多c 是很底层的语言, 跟文件/网络之类的东西可以做但现在都不会用 c 来写一般, 除非是特定环境需求对于 c 语言我的建议是所有语法相关的东西看完就可以了, 针对*inx/win 的 api 没有什么折腾的必要楼主做"实时计算"方向具体是什么平台和需求呢? 我所接触到的更多的是 rtos 之类的场景, 比如 freertos 或者 zephyr 之类的, 这类是 c 强需求的场景如果只是希望提升一般分时系统下的程序性能, 用 c 实现不一定是最优解

谢谢你,你很专业,但是我不够专业,你说的我没一个接触过,是金融行业,看来我可以学完 C 直接转 CPP/JAVA/Python 了

我的建议是别只学 C ,应该学 C++,实际写项目也更推荐 C++

#31 C++看的我头疼

C primer plus 这本书讲的是基本的语法,看完了确实啥都写不了,我知道两条深入的路径一条是嵌入式,公司有小组专门做这个,但我不了解,只听他们整天说“烧板子,烧程序”,我每次听见都以为他们要放火。。另一条 unix/linux 系统级别开发,相关可以从《 UNIX 环境高级编程》和《 UNIX 网络编程》卷一和卷二看起,这个是 unix/linux 的接口以及开发,不过这个书的难度不是一般的大。。。。比如《 UNIX 环境高级编程》最后的大示例就是将你开发一款数据库。。。请谨慎入行