堂弟学计算机,大三了,有些 C 语言基础,毕业后想从事 C/C++方面的开发工作,问我有什么短小且经典的开源代码推荐给他,我这块不是很熟,有用过一些 redis 的,发现 redis 源代码可能有几万行的样子,不适合作为入门学习,请教各位大佬,有没有哪些 c/c++的经典开源代码,代码量越小越好,以便快速入门,增加自信心。
我在 github 上找到几个,不知道有没有更好的选择。
Tinyhttpd cJSON
经典却不太适合的 lua redis nginx linux
1
ZRS 2019-10-02 00:30:54 +08:00
STL ?
|
2
catror 2019-10-02 01:16:44 +08:00 via Android
C - boa, hiredis
C++ - leveldb |
3
nevin47 2019-10-02 04:14:41 +08:00 via Android
cJSON 可以,但是里面坑挺多,需要自己慢慢甄别。最好配合 commit 记录食用
|
4
rayhy 2019-10-02 08:27:18 +08:00 via Android
|
5
bobuick 2019-10-02 09:33:35 +08:00
json 解析和序列化, 能写出来的话肯定会具有不错的计算机基础了。 听上去都不是什么高端算法和技术, 实际上去写就知道了,能优化的细节可以很多
|
6
inhzus 2019-10-02 09:44:14 +08:00 via Android 1
最近在看 muduo,几千行的代码量,涉及到网络和多线程,我觉得如果能理解完还是会很有提升的
|
7
cabing 2019-10-02 09:49:27 +08:00 1
单纯看源码没啥意义,因为你的练习太少。
我觉得你应该是快速使用 cpp 做一些业务。然后看下框架源码啥的。 当然是推荐一个简单的框架。https://github.com/weiboad/adbase 可以开发常用的服务。 |
8
salamanderMH 2019-10-02 10:14:05 +08:00 via Android
STL 挺好的
|
9
zjsxwc 2019-10-02 11:01:37 +08:00 via Android
|
11
rainmakeroly 2019-10-02 16:24:01 +08:00 via Android
redis git 第一个版本的行数好像都不多。
|
13
52coder OP @nevin47 我之前学 c 的时候看 github 上有个腾讯的大佬有个系列是一步一步写 json 解析器。收获不少。
|
14
52coder OP @rainmakeroly redis 的一些资料之类的,相对,第一个版本比较少。
|
15
rainmakeroly 2019-10-02 16:50:05 +08:00 via Android
@52coder 先说下我没看过。但是 google code 是有 0.1 的版本代码的,除了测试 tcl 应该不超过 1 万行。官方的文档也很详细,一直想看但又不想碰 C
|
16
blender2017 2019-10-02 17:49:47 +08:00
|
17
52coder OP @blender2017 是不是有点太难了,哈哈哈
|
18
yadam 2019-10-02 21:15:45 +08:00
推荐一个 seastar, 很飘逸
|
20
cyhone 2019-10-03 10:00:14 +08:00 1
muduo、coroutine、libco 等,代码都不算太多。
我也维护了一个我自己阅读这些代码做的注释版,地址在 https://github.com/chenyahui/AnnotatedCode 欢迎 star - coroutine 只有 200 多行,是云风大佬的作品,具备了一个有栈协程的基本功能。可以同时参考 http://www.cyhone.com/articles/analysis-of-cloudwu-coroutine/ 进行阅读 - libco 只有几千行,是微信内部使用的协程库,实现了协程的自动切换等功能。 - muduo 是陈硕大佬写的 tcp 网络库,具备了一个网络库的最佳实践,而且实际上也很优雅。可同时参考 http://www.cyhone.com/articles/analysis-of-muduo/进行阅读 |
21
arloor 2019-10-03 11:28:25 +08:00 via iPad
redis 源码好呀
|
22
yushi17 2019-10-03 19:02:29 +08:00 via Android
tinyXML
|
25
pursuer 2019-10-05 11:52:12 +08:00
有闲心可以看看 TinyCC,代码质量一般,应用场景比较有意思,我也希望这个项目能持续有人维护(或重构?)下去,原作者不再维护了,现在还有其他人在 https://repo.or.cz/tinycc.git 上更新
|
26
sadhen 2019-10-06 00:27:39 +08:00
|
27
crutin 2019-10-06 01:07:35 +08:00 via iPhone
C++写写 Qt 吧,实现一些简单计算器,音乐播放器等小项目。
|
28
printese 2019-10-06 18:48:33 +08:00
上面都是推荐上层纯应用方面的
我来推荐一个嵌入式方面的,STM32 的官方的库,配合官方手册食用更佳 |
32
52coder OP 国庆后,整理发出来收集到的个人认为比较好的库。
|
33
qinyusen 2019-10-07 17:06:49 +08:00
C 和 C++虽然长得像,但是本质不是一个事儿,设计理念都不太一样。
先明确一下到底是 C 还是 C++。 简单说,要面向过程写代码(虽然也能强行面向对象,但是图个啥。。。)还是面向过程。 或者说要去写嵌入式还是要去互联网公司写后台? |
34
52coder OP @qinyusen 先看看面向过程的 C,学习和理解面向过程的编程,后面再让他学习面向对象的 C++,如果开始就搞 c++,不利于夯实基础,大三马上大四找工作,我个人认为还是要搞搞基础,比如 c 实现 hashtable list 各种排序算法等,如果使用了 c++可能会直接用了 stl,不利于对基础的掌握。
|
35
qinyusen 2019-10-07 22:26:09 +08:00
@52coder 讲道理,如果这样,我其实更推荐先草草的学一下操作系统编译原理计算机体系结构之后,学完 C,直接学 JAVA,然后从 JAVA 过度到 C++。就是很多 JAVA 的语言特性,其实只要在 C++里人为的做一下映射就 OK 了,另外,讲道理啊,C++的开发工作,本科能做,但是天花板很容易被困住,语言的特性导致了,主要是算法和性能优先的一些任务需要使用 C++,绝大多数这类工作,都是有入职门槛的。。也就是其实是要偏算法一些。 与其这样,是不是 java 更好一些。CURD 理解 OOP,然后后台如果有高并发需求,转一下 go 和 C++,其实还是很快的。。。很多时候语言本身不是问题,而是背后的设计思想这些东西,比较需要时间来磨合。
|
36
52coder OP @qinyusen 恩,操作系统编译原理等本科课程他学校有开设,我之前也推荐他学 JAVA,他就认准了一个方向 C/C++,所以我建议他先学 C 面向过程部分,这部分基本上也是 C++所必须要掌握的,扎实这部分基础,然后学 C++ 面向对象的一些特性。后面工作可以分两个方向,一个是基于 linux c 的系统编程,另一个就是面向对象的 c++。
|
37
Chenamy2017 2019-10-08 10:11:34 +08:00
cJSON
|