关于 C 语言的相关问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Canglin
V2EX    C

关于 C 语言的相关问题

  •  1
     
  •   Canglin 2024-06-02 21:20:27 +08:00 4870 次点击
    这是一个创建于 543 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我是一个初学者,目前已经看完了 C primer plus ,但是感觉什么都做不了,想问问朋友们想学习 C 的网络、多线程、数据库、GUI 相关内容应该看点什么书
    第 1 条附言    2024-06-02 21:53:06 +08:00
    不好意,我补充一下,目前已经上班了,工作方向会转移至实时计算方面的工作,所以想学习 C ,目前第三方工具用的就是纯 C 写的,所以目前不考虑其他语言,就是想问问 C 的学习路径是什么,或者说 C 的看书路径,谢谢大家
    33 条回复    2024-06-03 21:08:02 +08:00
    BeautifulSoap
        1
    BeautifulSoap  
       2024-06-02 21:23:48 +08:00 via Android
    虽然但是,一个没什么特定需求驱动的人,初学真不应该学 c ,c 艹
    0o0O0o0O0o
        2
    0o0O0o0O0o  
       2024-06-02 21:26:42 +08:00 via iPhone
    该学第二三四五六七八门语言了
    crysislinux
        3
    crysislinux  
       2024-06-02 21:28:10 +08:00 via Android
    搞这些见效慢,可以买块板子搞嵌入式,lvgl gui 一写,感觉立马就来了。
    Canglin
        4
    Canglin  
    OP
       2024-06-02 21:29:08 +08:00
    @BeautifulSoap #1 单位有相关需求,大概就是类似 flink 数据抽取方面的,目前一直都是用的第三方公司的,我也想学习一下,可能以后会抛弃第三方公司
    Canglin
        5
    Canglin  
    OP
       2024-06-02 21:29:21 +08:00
    @0o0O0o0O0o #2 会点 Java 跟 Python
    KMpAn8Obw1QhPoEP
        6
    KMpAn8Obw1QhPoEP  
       2024-06-02 21:29:48 +08:00 via Android
    @BeautifulSoap 初学从 C 入门是科班路线嘛 后面跟着的必然是计算机组成原理跟操作系统 没啥问题
    Canglin
        7
    Canglin  
    OP
       2024-06-02 21:29:52 +08:00
    @crysislinux #3 从业方向不是这些
    Canglin
        8
    Canglin  
    OP
       2024-06-02 21:30:27 +08:00
    @enchilada2020 #6 已经上班了,只是想跟一下单位的步伐
    smallboy19991231
        9
    smallboy19991231  
       2024-06-02 21:33:19 +08:00
    做完 C 程序言的你就有工作水平了,只是言方面
    KMpAn8Obw1QhPoEP
        10
    KMpAn8Obw1QhPoEP  
       2024-06-02 21:34:19 +08:00 via Android
    打扰了 原来不是学生 那讲究生产力想见效快的话建议直接 Python 就行了 C 不适合你
    smallboy19991231
        11
    smallboy19991231  
       2024-06-02 21:35:20 +08:00
    “目前已经看完了 C primer plus”
    如果你只是看完不,很重要,C 言搭配的算底知也需要再;
    最好 C 程序言+深入理解算系 本一起搭配看看
    Canglin
        12
    Canglin  
    OP
       2024-06-02 21:35:58 +08:00
    @enchilada2020 #10 主要是目前工作内容涉及实时计算这一块,python 不太适合
    Canglin
        13
    Canglin  
    OP
       2024-06-02 21:36:27 +08:00
    @smallboy19991231 #9 如果想学习高级知识呢,例如多线程与网络之类的
    javak
        14
    javak  
       2024-06-02 21:40:43 +08:00
    1. 咋会啥都做不了,写个命令行小工具肯定是可以的三。
    2. 下一本看「 UNIX 高级环境编程」和 「 UNIX 网络编程」
    GeruzoniAnsasu
        15
    GeruzoniAnsasu  
       2024-06-02 21:54:54 +08:00   2
    @Canglin

    首先 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 的时候不至于要写一大堆汇编
    Canglin
        16
    Canglin  
    OP
       2024-06-02 21:58:07 +08:00
    @GeruzoniAnsasu #15 学习了,我一直认为 C 的处境跟 Java 或者 Python 一样,只不过更贴近底层,没想到这么底层
    masterclock
        17
    masterclock  
       2024-06-02 21:58:21 +08:00
    类似 flink... 的情况下,为什么会学 C ?一点关联都没有
    实时计算是什么意思?
    Canglin
        18
    Canglin  
    OP
       2024-06-02 22:00:43 +08:00
    @masterclock #17 字面意思,就是实时计算业务
    cabing
        19
    cabing  
       2024-06-02 22:20:51 +08:00
    flink 搭个环境,找本书跑下,简单使用感觉还是挺容易的。。

    没有必要 c 吧。
    yfang
        20
    yfang  
       2024-06-02 22:55:23 +08:00
    除了嵌入式和操作系统底层和高性能场合外
    最好不要用 C 语言写什么

    最佳路径就是做项目
    henix
        21
    henix  
       2024-06-02 23:44:21 +08:00   4
    C 语言本身内容较少,而且抽象层次很低,属于“系统编程语言”,也就导致,网络、IO 、GUI 这些功能在其他编程语言中可能已经抽象到标准库中了,但 C 语言标准库不包含这些,要用的话应该学习操作系统提供的 API 。不同的操作系统提供的 API 是不同的,需要分别去学,或者使用一些别人封装好的跨平台库。

    Linux 推荐 Linux/UNIX 系统编程手册 https://book.douban.com/subject/25809330/
    Windows 推荐 Windows 系统编程 https://book.douban.com/subject/5323432/
    关于库的底层实现的 程序员自我修养 https://book.douban.com/subject/3652388/

    看了这些你能理解一些网络库的底层实现原理了,当然实际应用中可能更多会使用别人的开源库。比如 libuv 、mysql 的 C 接口、GTK 等等,那就去看具体的库的文档。
    BeautifulSoap
        22
    BeautifulSoap  
       2024-06-03 01:00:33 +08:00 via Android
    @enchilada2020 并不一定,哪怕是科班线路,也不一定要从 C 入门。我觉得 C 更应该被视为有一定编程基础和对计算机结构基础有了解之后的进阶知识。一上来就 C 只会打击学习热情
    比如麻省理工 CS 就是最早用 Python
    dayeye2006199
        23
    dayeye2006199  
       2024-06-03 02:12:42 +08:00   1
    https://build-your-own.org/

    编译器,关系数据库,KV 数据库,web 服务器。
    一般搞点具体的可以维持学习兴趣
    felixlong
        24
    felixlong  
       2024-06-03 09:53:04 +08:00
    @Canglin 学 C 最简单的就是用 C 去刷刷 leetcode 就行了。知道 C 指针/数组/函数基本上就会了。
    monkeyNik
        25
    monkeyNik  
       2024-06-03 10:30:41 +08:00
    系统、网络相关的去看:《 UNIX 环境高级编程》和《 UNIX 网络编程》
    算法:就算法导论吧
    数据库:直接看对应数据库的 C API
    GUI:不太清楚了,去参考一下其他贴吧

    顺便自荐一下 C 轮子开源项目: https://github.com/Water-Melon/Melon
    araraloren
        26
    araraloren  
       2024-06-03 10:40:52 +08:00
    @Canglin 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.
    smallboy19991231
        27
    smallboy19991231  
       2024-06-03 11:58:57 +08:00
    @Canglin 深入那本最後三章就是系和路程和程入足了
    sjkdsfkkfd
        28
    sjkdsfkkfd  
       2024-06-03 12:39:42 +08:00
    《 UNIX 环境高级编程》 +1
    《 Object-Oriented Programming With ANSI-C 》,这本可以看看,毕竟大项目即使是 c 语言也还是会有很多面向对象的设计的

    然后你之后工作搞啥你就看看相关的开源项目
    424778940
        29
    424778940  
       2024-06-03 14:48:02 +08:00
    不同意楼上某些观点
    嵌入式领域, 针对单片机来讲, 很多就算封装过的也是 c 库, cpp 的并不多
    c 是很底层的语言, 跟文件/网络之类的东西可以做但现在都不会用 c 来写一般, 除非是特定环境需求
    对于 c 语言我的建议是所有语法相关的东西看完就可以了, 针对*inx/win 的 api 没有什么折腾的必要
    楼主做"实时计算"方向具体是什么平台和需求呢? 我所接触到的更多的是 rtos 之类的场景, 比如 freertos 或者 zephyr 之类的, 这类是 c 强需求的场景
    如果只是希望提升一般分时系统下的程序性能, 用 c 实现不一定是最优解
    Canglin
        30
    Canglin  
    OP
       2024-06-03 15:30:13 +08:00 via Android
    @424778940 谢谢你,你很专业,但是我不够专业,你说的我没一个接触过,是金融行业,看来我可以学完 C 直接转 CPP/JAVA/Python 了
    ysc3839
        31
    ysc3839  
       2024-06-03 16:19:11 +08:00 via Android
    我的建议是别只学 C ,应该学 C++,实际写项目也更推荐 C++
    Canglin
        32
    Canglin  
    OP
       2024-06-03 20:31:59 +08:00
    @ysc3839 #31 C++看的我头疼
    LuckyPocketWatch
        33
    LuckyPocketWatch  
       2024-06-03 21:08:02 +08:00
    C primer plus 这本书讲的是基本的语法,看完了确实啥都写不了,我知道两条深入的路径

    一条是嵌入式,公司有小组专门做这个,但我不了解,只听他们整天说“烧板子,烧程序”,我每次听见都以为他们要放火。。

    另一条 unix/linux 系统级别开发,相关可以从《 UNIX 环境高级编程》和《 UNIX 网络编程》卷一和卷二看起,这个是 unix/linux 的接口以及开发,不过这个书的难度不是一般的大。。。。比如《 UNIX 环境高级编程》最后的大示例就是将你开发一款数据库。。。请谨慎入行
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5164 人在线   最高记录 6679   span class="snow">     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 05:53 PVG 13:53 LAX 21:53 JFK 00:53
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86