C 程序员进阶之路常备口袋的 10 个宝藏

虽然 Java 和 Python 等更现代的语言公认容易学习,但 C 基本上都是大学计算机类相关课程的入门语言。为什么?这。。。

C 语言的重要性,有很多理由可以说服你。最重要的还是因为学习 C 是以后学习更高级语言的良好基础,绝大部分现代编程语言都是基于 C 语言来实现的。

当你使用其他语言做一些事情的时候,如果你了解 C 语言甚至更底层的汇编语言,你可以更好地了解你写的代码背地里到底干了什么勾当。另一个现实是,它也被广泛地使用于你离不开的各种基础软件系统,比如 Windows、Linux、MacOS、数据库、嵌入式软件等内部绝大部分代码都是用它编写。

算起来 C 语言差不多 50 岁高龄了,还很能干嘛!

如果你是刚学完 C 语言基础的入门者,或者刚从其它语言转过来,有些非常优秀的学习资料,进阶之路上,八戒希望你不错过它们。下面八戒将给大家介绍 10 个宝藏级的资源,无论是书籍、参考资料、开源项目等,都值得你收藏!

《C 编程语言》

书籍 / 在线, 作者:Kernighan and Ritchie

很久之前开始,《C编程语言》(或K&W书,有时被称为K&W书)一直被推荐为C程序员的参考手册。第一版于 1978 年发布,由 C 的原创设计人员共同编写,为了涵盖(当时新的)ANSI C,十年后发布了更新版本。

这本书无论阅读风格,或者现代性都强差人意,但在权威性上无可挑剔。如果你打算继续往 C 编程之路进发,真的应该把这本电子书下载到你的电脑上,或者买一本放在床头。

《现代 C 语言》

书籍 / 在线, 作者:Jens Gustedt

这本书比《C 编程语言》风格要明显容易阅读,而且是免费的,其中涵盖了现代 C 编程,提供的参考资料截至于 2018 年。书里内容分为几个级别,从入门到高级都有。在你使用 C 语言升级打怪积攒经验的路上,看看书中描述的初次相遇、相识和认知水平,可以拨云见日。

CS50x 计算机科学导论课

在线课程,作者:哈佛大学

这门由哈佛大学教授的在线课程,非常受欢迎,介绍了一系列计算机科学主题,包括相当多的 C 语言知识。

课程是免费提供的,包括九个长作业,需要动手实际操作完成,以及最终的一个实践项目。课程结束后,可以获得哈佛大学提供的签名证书,是不是很有面子?

基于项目的 C 语言教程

开源项目,作者:rby90

作为初学者,相信大多数的你都是通过直接看书或者研究示例代码段来学习 C 语言,这和实际项目开发还是有很大的差异。

正好,作者 rby90 开源了这个项目集合,包括基于项目的教程的分类列表,允许你构建小游戏、操作系统、编程语言、视频播放器等。

这些项目听起来有点令人不知所措,don’t panic,也有很多非常容易上手的项目包含在其中。

CodeTriage

在线网站 作者:理查德·施尼曼(Richard Schneeman)

和学习绝大部分知识一样,学习 C 语言的最好方法同样是实际编写真实的项目。心理准备好了,身体还在偷懒,八戒也懂,如果你没有开始的行动,可以尝试参与 CodeTriage。

CodeTriage 是个简单的网站,将你指向需要你帮助的各种开源项目。你可以在上面找到一个看一眼就知道是专为你而设计的项目(或者闭上眼随意点击一下),查看它的问题列表,并尝试解决 bug 并回答问题。你的答案可能有错误,但是在一个更大的项目中积累实际动手的经验,真的很有启发性。

comp.lang.c 常见问题

在线网站

comp.lang.c 是一个问答列表,上面有很多老手 C 程序员提出的各种标准和有趣的奇怪问题,而且可读性非常好。

你可能会发现二十年前的 C 语言学习者就已经遇到了与现代学生相同的问题,真的太令人宽慰了。

《C 专业人士注意事项》

电子书,作者:彼得·拉涅利

这本免费公开的电子书,作为参考书内容非常详细,引导你了解从初级 C 程序员到高级工程师的各种主题,比如线程、原子、内存管理、常见 C 编程习惯用语、开发实践和陷阱的部分等。最初是基于 Stack Overflow 内容的汇编。

非常建议你将这本书放在电脑旁,可以经常翻阅。

Linux 内核编码风格

在线电子书,作者:Linus Torvalds

既然你都关注了八戒,不妨和八戒一起仰仗一下 Linux 内核的创建者 Linus Torvalds 吧。

Linus Torvalds 公开了一份电子文档《Linux Kernel Coding Style》,里边描述了长期以来流行的 C 语言代码编写风格,你可以据此和自己的代码作比较,文档里边概述的风格更具可读性,值得学习!

代码大战

项目

Codewars 是一个非常有趣的创意,把编程当成玩游戏,你接受其他学生的挑战来完成挑战,这些挑战被称呼为 kata,最终积累分数提高 kyu 的排名。除了支持 C 语言之外,还提供了多种其它语言。

《使用 GNU Make 管理项目》

书籍 / 在线电子档, 作者:梅克伦堡

入门的第一课一般都是教你使用编译器 gcc 直接编译写好的 main.c 文件,但很快随着编写代码的积累,全靠手动构建会越来越消耗精力,所以到了 makefile 派上用场的阶段。

《使用 GNU Make 管理项目》是一本关于巨著,里边事无巨细地介绍各种元素,对于掌握 C 或者其它语言都是颇有裨益的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/295958.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

mysql5.7安装-windows安装版本

下载地址 官网地址:https://www.mysql.com/官网下载地址:https://dev.mysql.com/downloads/mysql/阿里云镜像站下载:https://mirrors.aliyun.com/mysql/华为云镜像站地址:https://mirrors.huaweicloud.com/home华为云镜像站下载:https://mirrors.huaweicloud.com/mysql/Downlo…

如何实现安卓端与苹果端互通的多种方案

随着移动设备用户的爆炸性增长,跨平台应用开发变得尤为重要。在Android与iOS之间实现互通对于推广应用、增加用户覆盖面和提升用户体验有至关重要的作用。以下是实现Android与iOS互通的多种方案,以及每种方案的实现方法、细节注意点、适合团队的规模和建…

大数据Doris(五十):数据导出的其他导出案例参考

文章目录 数据导出的其他导出案例参考 一、​​​​​

macosx编译qgroundcontrol源码(Qt6.7)

1.克隆源码: clone --recursive http://github.com/mavlink/qgroundcontrol.git 克隆成功 3.编译 编译环境要求: 编译方法: 使用QtCreator编译 使用命令行编译 打开QGroundControl.pro并编译IOS版本 旧版本使用Qt 5.15.2 run qmake 新版本使用Qt 6.6或者更高 IOS工程输出要…

模板模式实现分布式锁实战

前言 分布式锁相信大家都有用过,常见的分布式锁实现方式例如redis、zookeeper、数据库都可以实现,而我们代码中强引用这些分布式锁的代码,那么当我们以后想替换分布式锁的实现方式时,需要修改代码的成本会很高,于是我…

[足式机器人]Part2 Dr. CAN学习笔记-动态系统建模与分析 Ch02-6频率响应与滤波器

本文仅供学习使用 本文参考: B站:DR_CAN Dr. CAN学习笔记-动态系统建模与分析 Ch02-6频率响应与滤波器 1st order system 一阶系统 低通滤波器——Loss Pass Filter

stm32学习笔记:TIM-输出比较

四部分讲解内容,本文是第二部分 输出比较主要用于PWM波形的控制电机(驱动电机的必要条件) 1、定时器基本定时,定一个时间,然后让定时器每隔一段时间产生一个中断,来实现每隔一个固定时间执行一段程序的目…

oracle 补齐数字长度 to_char踩坑

oracle的to_char网上找到的说明如下 (1)用作日期转换: to_char(date,格式); select to_date(2005-01-01 ,yyyy-MM-dd) from dual; select to_char(sysdate,yyyy-MM-dd HH24:mi:ss) from dual; (2)处理数字&#xf…

SwiftUI之深入解析如何使用accessibilityChartDescriptor视图修饰符为视图构建音频图表

一、DataPoint 结构体 在 SwiftUI 中构建一个简单的条形图视图开始,该视图使用垂直条形显示一组数据点。如下所示,有一个 DataPoint 结构,用于描述条形图视图中的条形,它具有 id、标签、数值和填充颜色: struct Data…

Unity添加所有场景到BuildSettings

Unity添加所有场景到BuildSettings using UnityEngine; using UnityEditor; using System.Collections.Generic; using System.IO; public class Tools : Editor {[MenuItem("Tools/添加所有场景到BuildSettings")]static void CheckSceneSetting(){List<string&…

docker 部署haproxy cpu占用特别高

在部署mysql 主主高可用时&#xff0c;使用haproxy进行负载&#xff0c;在服务部使用的情况下发现服务器cpu占比高&#xff0c;负载也高&#xff0c;因此急需解决这个问题。 1.解决前现状 1.1 部署配置文件 cat > haproxy.cfg << EOF globalmaxconn 4000nbthrea…

简易机器学习笔记(十)Windows下 PaddlePaddle配置CUDA加速环境

前言 大伙既然都来做这个了&#xff0c;那配个CUDA环境肯定是必不可少的了吧&#xff08;笑&#xff09; 最前面的最前面&#xff0c; 流程 确定当前设备支持的CUDA版本安装CUDA Toolkit 和 GPU版的Paddlepaddle下载cuDNN Archive手动放置配套的cuDNN到指定文件夹测试 1.确…

HDU - 2063 过山车(Java JS Python C)

题目来源 Problem - 2063 (hdu.edu.cn) 题目描述 RPG girls今天和大家一起去游乐场玩&#xff0c;终于可以坐上梦寐以求的过山车了。 可是&#xff0c;过山车的每一排只有两个座位&#xff0c;而且还有条不成文的规矩&#xff0c;就是每个女生必须找个男生做partner和她同坐…

使用STM32微控制器驱动LCD1602显示器

驱动LCD1602显示器是嵌入式系统常见的任务之一&#xff0c;而STM32微控制器因其灵活性和丰富的外设而成为了广泛采用的解决方案。在这篇文章中&#xff0c;我们将探讨如何使用STM32微控制器来驱动LCD1602显示器。我们将从STM32的GPIO配置、延时函数以及LCD1602的初始化和写入数…

【数值分析】非线性方程求根,牛顿法,牛顿下山法,matlab实现

4. 牛顿法 收敛时牛顿法的收敛速度是二阶的&#xff0c;不低于二阶。如果函数有重根&#xff0c;牛顿法一般不是二阶收敛的。 x k 1 x k − f ( x k ) f ′ ( x k ) x_{k1}x_k- \frac{f(x_k)}{f(x_k)} xk1​xk​−f′(xk​)f(xk​)​ matlab实现 %% 牛顿迭代例子 f (x) x…

【信息论与编码】习题-填空题

目录 填空题1.克劳夫特不等式是判断&#xff08; &#xff09;的充要条件。2.无失真信源编码的中心任务是编码后的信息率压缩接近到&#xff08;&#xff09;限失真压缩中心任务是在给定的失真度条件下&#xff0c;信息率压缩接近到&#xff08; &#xff09;。3.常用的检纠错方…

使用 KubeSphere 与极狐GitLab 打造云原生持续交付系统

极狐GitLab 简介 极狐GitLab 是一个一体化的 DevOps 平台&#xff0c;可以简单理解为 GitLab 在国内的“发行版”。是由极狐(GitLab)公司推出的产品&#xff08;极狐(GitLab)公司是以“中外合资3.0”模式成立的公司&#xff0c;在国内独立运营&#xff0c;为国内用户提供适合本…

CSS 实现两个圆圈重叠部分颜色不同

这是期望实现的效果&#xff0c;由图可知&#xff0c;圆圈底图透明度是0.4&#xff0c;左侧要求重叠部分透明度是0.7&#xff0c;所以不能通过简单的透明度叠加来实现最右侧的效果。 这就需要另外新建一个图层来叠加在两个圆圈重叠上方。 直接看代码 .circle_hight {width: 1…

模版匹配历劫之路1-匹配点太多如何解决

1测试图片 2初步推测是否是提取的点太多而导致匹配时间很长 2.1通过canny的算法来提取检测点 import numpy as np import cv2 import time import matplotlib.pyplot as pltclass GeoMatch:def __init__(self):self.noOfCordinates0 # 坐标数组中元素的个数self.cordinates…

2024年某书最新x-s-common签名算法分析以及点赞api接口测试nodejs(2024-01-05)

2024年某书又更新了x-s-common算法&#xff0c;现在的版本是&#xff1a;3.6.8。这个签名算法现在是越来越重要了&#xff0c;许多接口都要用到。比如&#xff1a;评论&#xff0c;点赞等接口&#xff0c;没有这个算法采集不到数据。 一、chrome逆向x-s-common算法 1、x-s-comm…