C/C++短小 精悍 源代码学习推荐

2019-10-02 00:26:56 +08:00
 52coder

堂弟学计算机,大三了,有些 C 语言基础,毕业后想从事 C/C++方面的开发工作,问我有什么短小且经典的开源代码推荐给他,我这块不是很熟,有用过一些 redis 的,发现 redis 源代码可能有几万行的样子,不适合作为入门学习,请教各位大佬,有没有哪些 c/c++的经典开源代码,代码量越小越好,以便快速入门,增加自信心。

我在 github 上找到几个,不知道有没有更好的选择。

Tinyhttpd cJSON

经典却不太适合的 lua redis nginx linux

10544 次点击
所在节点    程序员
37 条回复
arloor
2019-10-03 11:28:25 +08:00
redis 源码好呀
yushi17
2019-10-03 19:02:29 +08:00
tinyXML
52coder
2019-10-05 11:33:21 +08:00
@arloor 恩,确实,我之前学的时候看过一些,但量稍微有点大
52coder
2019-10-05 11:34:12 +08:00
@cyhone 多谢大佬,国庆刚浪回来,我先学习下。
pursuer
2019-10-05 11:52:12 +08:00
有闲心可以看看 TinyCC,代码质量一般,应用场景比较有意思,我也希望这个项目能持续有人维护(或重构?)下去,原作者不再维护了,现在还有其他人在 https://repo.or.cz/tinycc.git 上更新
sadhen
2019-10-06 00:27:39 +08:00
可以看看这个项目:

https://github.com/texmacs/kernel

都是一些很基础的东西,基础的数据结构。比如 List/HashMap/String 等的实现。
crutin
2019-10-06 01:07:35 +08:00
C++写写 Qt 吧,实现一些简单计算器,音乐播放器等小项目。
printese
2019-10-06 18:48:33 +08:00
上面都是推荐上层纯应用方面的
我来推荐一个嵌入式方面的,STM32 的官方的库,配合官方手册食用更佳
52coder
2019-10-06 22:12:31 +08:00
@sadhen 多谢,这个不错,适合表弟这种即将要找工作的人,夯实基础。
52coder
2019-10-06 22:13:30 +08:00
@crutin 多谢推荐,个人认为先让表弟整点 跟数据结构 算法相关的基础的东西,Qt 这个太局限。
52coder
2019-10-06 22:13:54 +08:00
@printese 这个也是一个方向,有点偏门了,哈哈哈
52coder
2019-10-07 09:48:00 +08:00
国庆后,整理发出来收集到的个人认为比较好的库。
qinyusen
2019-10-07 17:06:49 +08:00
C 和 C++虽然长得像,但是本质不是一个事儿,设计理念都不太一样。
先明确一下到底是 C 还是 C++。
简单说,要面向过程写代码(虽然也能强行面向对象,但是图个啥。。。)还是面向过程。
或者说要去写嵌入式还是要去互联网公司写后台?
52coder
2019-10-07 17:32:26 +08:00
@qinyusen 先看看面向过程的 C,学习和理解面向过程的编程,后面再让他学习面向对象的 C++,如果开始就搞 c++,不利于夯实基础,大三马上大四找工作,我个人认为还是要搞搞基础,比如 c 实现 hashtable list 各种排序算法等,如果使用了 c++可能会直接用了 stl,不利于对基础的掌握。
qinyusen
2019-10-07 22:26:09 +08:00
@52coder 讲道理,如果这样,我其实更推荐先草草的学一下操作系统编译原理计算机体系结构之后,学完 C,直接学 JAVA,然后从 JAVA 过度到 C++。就是很多 JAVA 的语言特性,其实只要在 C++里人为的做一下映射就 OK 了,另外,讲道理啊,C++的开发工作,本科能做,但是天花板很容易被困住,语言的特性导致了,主要是算法和性能优先的一些任务需要使用 C++,绝大多数这类工作,都是有入职门槛的。。也就是其实是要偏算法一些。 与其这样,是不是 java 更好一些。CURD 理解 OOP,然后后台如果有高并发需求,转一下 go 和 C++,其实还是很快的。。。很多时候语言本身不是问题,而是背后的设计思想这些东西,比较需要时间来磨合。
52coder
2019-10-07 22:51:06 +08:00
@qinyusen 恩,操作系统编译原理等本科课程他学校有开设,我之前也推荐他学 JAVA,他就认准了一个方向 C/C++,所以我建议他先学 C 面向过程部分,这部分基本上也是 C++所必须要掌握的,扎实这部分基础,然后学 C++ 面向对象的一些特性。后面工作可以分两个方向,一个是基于 linux c 的系统编程,另一个就是面向对象的 c++。
Chenamy2017
2019-10-08 10:11:34 +08:00
cJSON

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/605937

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX