阅读分析消化吸收github开源项目的前置准备

为什么要阅读吸收github上的开源项目?

大家平常的知识来源都是社区,教程,文章,分享的视频,而github上全球优秀的大佬都在上面,他们的技术实力主要是以开源项目形式存在,高质量的内容和核心技术都在开源项目上。

当你有以下想法【情况】或或是目标的时候;

一、CRUD多年,技术长期停滞不前,技术遇到瓶颈

二、CRUD多年,简历上还是写着跟培训的新人一样做过XXX项目,熟悉XXX技术栈,同新人岗位竞争技术优势不是很明显

三、想做底层项目积累实力进大厂

四、想做开源项目积攒技术经验,构建个人技术力量,打造个人技术影响力和IP,寻找更多的机会

五、长期做业务CRUD技术力量发展薄弱,没有做过大量的底层项目

阅读C/C++为核心的开源项目的前置必备知识

为什么是C/C++项目呢,因为它是互联网领域的核心基石,也是最有技术含量的东西

一、熟悉/c/c++/asm

二、熟悉linux操作系统

三、学习内功修炼 即学习掌握X86汇编语言和GDB程序调试工具对于程序员来说是非常重要的_gdb 查看x86汇编-CSDN博客

四、内功修炼课程是基于LINUX环境为基础,作为程序员研究吸收消化以C/C/++/ASM为技术栈开源项目的核心必备前置知识,对于阅读和研究消化吸收以下开源项目是必备前置准备

五、学习掌握编译器和虚拟机的开发有哪些方面的好处_在虚拟机上进行程序开发的好处-CSDN博客

哪要阅读吸收哪种开源项目呢?

互联网的核心基石主要是C/C++/ASM,比如下面的开源项目

C/C++实现的编译器工具和框架

  1. GCC (GNU Compiler Collection)

    • GCC是GNU项目的一部分,包含了多个编译器前端,如GCC C、GCC C++、GCC Objective-C等。GCC是自由软件,广泛应用于Linux和其他类Unix系统中。
  2. Clang

    • Clang是LLVM项目的一部分,是一个C/C++/Objective-C编译器前端,旨在提供更快的编译速度和更好的诊断信息。它与LLVM后端一起工作,生成优化的机器码。
  3. LLVM

    • LLVM是一个模块化、可重用的编译器基础设施集合,包括一系列工具和库,如opt(优化器)、llc(后端编译器)、lld-link(链接器)等。LLVM被许多其他编译器项目所使用,如Clang和Apple的Xcode。【基于该工具实现的编程语言很多,比如宣称的某国产语言  php内核团队也有人参与了此项目的维护】
  4. Microsoft Visual C++ Compiler

    • 微软的Visual C++编译器是Visual Studio的一部分,提供了对现代C++标准的广泛支持。它也包含在Windows SDK中,用于Windows平台的开发。
  5. Intel C++ Compiler

    • Intel C++ Compiler是英特尔公司开发的,针对Intel架构进行优化,支持C++11至C++20标准,并提供了额外的并行和矢量化优化。
  6. GCCXML

    • GCCXML是一个为GCC编译器设计的XML输出插件,用于生成C++类和函数的XML描述文件,这有助于IDE和代码分析工具理解C++源代码。
  7. PCC (Portable C Compiler)

    • PCC是一个小型的C编译器,设计用于嵌入式系统,虽然功能有限,但在资源受限的环境中很有用。
  8. EDG (Evans & Sutherland's Design Group)

    • EDG提供了一个C/C++预处理器和前端解析器,被许多商业编译器和IDE采用,用于语法检查和代码分析。
  9. OpenWatcom

    • OpenWatcom是一个开源的C/C++编译器套件,特别适合用于老旧的DOS和Windows 9x系统上进行开发。
  10. CMAKE

    • 虽然本身不是一个编译器,但CMake是一个跨平台的自动化构建系统,用于管理多步骤的编译过程。它生成各种编译器的构建文件。
  11. MSYS2

    • MSYS2是一个为Windows系统提供的Unix-like shell环境,包含了一个完整的GCC编译工具链,用于在Windows上构建Unix-like源码。
  12. MinGW

    • MinGW(Minimalist GNU for Windows)是一个使GCC能够在Windows上运行的环境,用于生成原生的Windows可执行文件。
  13. GNU Binutils

    • Binutils是GCC的一部分,包括一系列工具,如as(汇编器)、ld(链接器)、objdump(二进制文件查看器)等。
  14. Flex & Bison

    • Flex是一个词法分析器生成器,Bison是一个语法分析器生成器,它们通常用于创建编译器的词法和语法解析部分。

这些工具和框架不仅用于编译C/C++代码,还经常用于构建其他语言的编译器和解释器以及数据库等。

AI 框架底层库

  • TensorFlow: 虽然主要使用 Python 接口,但 TensorFlow 的核心引擎是用 C++ 编写的。
  • Caffe: 专为计算机视觉设计,使用 C++ 和 CUDA 加速 GPU 计算。
  • Torch: 使用 Lua 脚本语言,但其底层库(如 THNN 和 THCUNN)使用 C 和 CUDA。
  • Dlib: 提供了机器学习算法,包括深度神经网络,主要使用 C++。
  • MLPack: 一个快速、灵活的机器学习库,使用 C++ 构建。

计算机视觉库

  • OpenCV: 广泛使用的计算机视觉库,支持图像和视频处理。
  • ITK (Insight Segmentation and Registration Toolkit): 主要用于医学图像处理。
  • VXL (Vision with Virtuality Library): 面向对象的计算机视觉库。
  • DenseOpticalFlow: 实现了不同的光流算法。
  • PCL (Point Cloud Library): 用于三维点云处理。

图形库

  • OpenGL: 基于 C 的 API,用于渲染 2D 和 3D 图形。
  • DirectX: 微软的多媒体库,虽然基于 COM 对象,但底层使用 C/C++。
  • SDL (Simple DirectMedia Layer): 用于游戏开发的多媒体库。
  • Vulkan: 一种低开销、跨平台的图形和计算 API。
  • AGG (Anti-Grain Geometry): 用于高质量抗锯齿图形渲染。

图像处理库

  • FreeImage: 支持多种图像格式的加载和保存。
  • IPL (Intel Image Processing Library): 与 IPP 相关,用于图像处理。
  • CxImage: 小型图像处理库,支持多种格式。
  • libpnglibjpeglibtifflibwebp: 分别用于 PNG、JPEG、TIFF 和 WebP 格式的图像处理。

音频处理库

  • OpenAL: 开放源代码的跨平台音频 API。
  • Opus: 高质量的音频编解码器。
  • Speex: 语音编解码器,现在已废弃,由 Opus 替代。
  • Tonic: C++ 音频和音乐数字信号处理库。
  • JUCE (Jules' Utility Class Extensions): 用于音频应用和跨平台 GUI 的框架。

视频处理库

  • FFmpeg: 强大的多媒体框架,用于编码、解码、转码、复用、分离、流、过滤和播放。
  • GStreamer: 可扩展的多媒体框架,用于构建各种媒体处理应用。
  • VLC: 除了媒体播放器外,VLC 的库可用于视频处理和流媒体。

C/C++量子计算库:

  1. Quantum++

    • 一个现代的C++11量子计算库,提供了量子比特、量子门、量子电路等的实现。它依赖于Eigen库,支持OpenMP,并且可以进行量子电路的合成、转换、优化和编译。
  2. Qulacs

    • 一个高性能的量子电路模拟器,支持多种量子门、噪声模型和GPU加速。Qulacs使用C++实现,并提供了并行计算的支持,适用于大规模量子电路的模拟。
  3. Staq

    • 一个现代C++17库,专注于量子电路的合成、转换、优化和编译。它可以作为二进制工具使用,也可以作为一个仅头文件的库,支持OpenQASM电路描述语言。
  4. Psi4

    • 虽然主要是一个量子化学软件包,但它的部分功能与量子计算相关,尤其是涉及到分子系统的量子力学模拟。Psi4使用C++实现。
  5. OpenFermion

    • OpenFermion的大部分功能是用Python实现的,但通过插件可以与C++/C实现的量子化学软件包(如Psi4)交互,从而在量子计算领域应用。
  6. Cirq

    • 虽然Cirq主要是一个Python库,但它的高性能核心部分可能使用C++来实现。Cirq由Google开发,用于量子计算编程。
  7. QubitSim

    • 一个简单的C++实现的量子位模拟器,适用于教学和基础量子计算概念的探索。
  8. Qpp (Quantum Programming Platform)

    • Qpp虽然可能提供多语言接口,但其核心模拟功能使用C++实现,用于编写、模拟和测试量子程序。
  9. Qiskit Terra

    • IBM的Qiskit虽然主要使用Python,但其内部某些高性能组件可能用C++实现,特别是在处理量子电路的优化和执行方面。

C/C++实现的重要编程语言的运行时系统或解释器:

  1. Python

    • CPython是Python的官方参考实现,使用C语言编写。
    • 其他Python实现如PyPy也使用了C语言作为部分实现的基础。
  2. Ruby

    • MRI (Matz's Ruby Interpreter),即标准的Ruby解释器,是由C语言编写的。
  3. PHP

    • PHP的主要实现也是用C语言编写的。
  4. Perl

    • Perl 5的实现主要基于C语言。
  5. Lua

    • Lua是一种轻量级的脚本语言,其标准实现是用C语言编写的。
  6. R

    • R语言的解释器部分用C和Fortran编写,以提高数值计算的性能。
  7. Node.js

    • Node.js的运行时环境是基于Google的V8 JavaScript引擎,该引擎用C++编写。
  8. Go

    • Go语言的编译器和标准库最初是用C语言实现的,但后来许多部分被重写为Go语言本身。
  9. Rust

    • Rust的编译器rustc最初是用C++实现的,但后来改用Rust语言自身来编写。
  10. Swift

    • Swift的编译器swiftc和运行时环境使用C++和Objective-C实现,并且与LLVM编译器基础设施紧密集成。
  11. Julia

    • Julia语言的编译器和核心库部分使用C语言实现,以利用其高性能特性。

C/C++实现的知名开源数据库和缓存项目:

数据库

  1. SQLite

    • 一个轻量级的嵌入式关系型数据库,不需要单独的服务器进程,广泛应用于各种应用程序和设备中。
  2. MariaDB

    • MySQL的一个分支,完全兼容MySQL,提供了额外的功能和性能改进,使用C/C++编写。
  3. PostgreSQL

    • 一个强大的开放源代码的对象关系数据库系统,用C语言编写,支持复杂查询和事务。
  4. MongoDB

    • 虽然MongoDB提供了多种语言的驱动,其核心是用C++实现的文档型数据库,适合大规模数据存储和快速查询。
  5. RocksDB

    • Facebook开发的一款嵌入式键值存储,特别适用于固态硬盘(SSD),提供高性能和持久化存储。
  6. LevelDB

    • Google开发的键值存储库,用C++编写,用于构建高性能的数据存储层。
  7. CouchDB

    • 一个面向文档的NoSQL数据库,使用Erlang语言编写,但Erlang底层的虚拟机BEAM是用C/C++编写的。
  8. Redis

    • Redis虽然主要使用ANSI C编写,但其简洁的API和高性能使其成为缓存和数据库的热门选择。

缓存

  1. Memcached

    • 一个高性能、分布式内存对象缓存系统,用于加速动态Web应用,减轻数据库负担。
  2. Redis

    • Redis不仅可以作为数据库使用,也经常作为缓存系统,支持多种数据结构,如字符串、哈希、列表和集合。
  3. Varnish Cache

    • 虽然Varnish主要用作HTTP加速器,但其核心功能之一就是缓存,可以显著提高网站响应速度。
  4. Squid

    • 一个广泛使用的代理服务器和缓存系统,用于Web内容缓存和过滤。
  5. Caffeine

    • 虽然Caffeine主要是一个Java库,但其灵感来自于Guava的缓存实现,可以启发C/C++开发者创建类似的缓存机制。

C/C++和CUDA实现的开源库

GPU/CUDA 开源库

  1. cuBLAS - CUDA Basic Linear Algebra Subprograms,用于GPU上的线性代数计算。

  2. cuFFT - CUDA Fast Fourier Transform,提供了快速傅立叶变换的GPU实现。

  3. cuSPARSE - CUDA Sparse Matrix Library,用于稀疏矩阵运算。

  4. cuDNN - NVIDIA Deep Neural Network library,优化了深度神经网络的训练和推理过程。

  5. cuRAND - CUDA Random Number Generation library,用于生成随机数。

  6. Boost.Compute - 基于OpenCL的C++库,也支持CUDA。

  7. Eigen - 一个高性能的矩阵和线性代数库,可以与CUDA配合使用。

  8. MatX - 由NVIDIA推出的,用于GPU加速的数值计算库。

  9. CV-CUDA - NVIDIA推出的用于计算机视觉的CUDA流处理库。

  10. Thrust - 类似于STL的并行算法库,专为CUDA设计。

  11. cuDNN-LSTM - 用于在GPU上实现长短期记忆(LSTM)网络的库。

  12. cuGraph - NVIDIA的图形分析库,基于CUDA。

  13. NPP (NVIDIA Performance Primitives) - 提供了图像处理和计算机视觉功能

AI机器人开源库

  1. ROS (Robot Operating System)

    • ROS是机器人软件开发的事实标准,提供了丰富的库和工具集,支持C++和Python。ROS2是ROS的最新版本,增强了实时性、安全性等特性。
  2. Robotics Library (RL)

    • RL是一个独立的C++库,专注于机器人动力学、运动规划和控制。
  3. FCL (Flexible Collision Library)

    • 用于碰撞检测和接近查询的通用库,适用于机器人学和游戏开发。
  4. Pinocchio

    • 用于高效机器人动力学计算的C++库,支持URDF和SDF文件导入。
  5. MRPT (Mobile Robot Programming Toolkit)

    • 面向移动机器人的C++库,包括SLAM、计算机视觉、运动规划等功能。
  6. mlpack

    • 快速、灵活的机器学习库,提供多种算法,如聚类、回归、分类等。
  7. DyNet (Dynamic Neural Networks)

    • 高性能神经网络库,支持动态计算图,适用于自然语言处理等领域。
  8. TensorFlow (C++ API)

    • 虽然TensorFlow主要是Python接口,但它也有C++API,可以用于高性能计算环境或嵌入式系统。
  9. Caffe

    • 用于深度学习的框架,特别适合计算机视觉应用,提供了C++接口。
  10. CNTK (Microsoft Cognitive Toolkit)

    • 微软的深度学习工具包,也提供了C++接口。
  11. OpenCV

    • 计算机视觉库,支持图像和视频分析,广泛用于机器人视觉系统。
  12. LeRobot (by Hugging Face)

    • 一个AI机器人工具包,虽然具体细节可能需要查阅最新的文档或GitHub页面。
  13. OpenRAVE

    • 机器人路径规划和仿真库,尽管最近更新较少,但依然在某些领域有应用。
  14. Bullet Physics Library

    • 物理模拟库,可以用于机器人运动模拟和碰撞检测

C/C++实现的游戏渲染开源库

  1. Raylib-CPP

    • 一个简单、高效的游戏和图形应用开发框架,基于原始的Raylib,但提供了更丰富的C++接口。
  2. Ilum

    • 一个基于C++的高级渲染库,提供现代图形学技术和工具,用于创建高质量、高性能的实时3D应用程序。
  3. LonganRenderer

    • 免费开源的C/C++图形渲染UI库,支持跨平台,包括Windows和Linux环境,属于软渲染库。
  4. OGRE 3D

    • 一个广泛使用的开源三维图形渲染库,适用于游戏开发和三维仿真项目。
  5. Dear ImGui

    • 虽然主要是一个即时模式的图形用户界面库,但它也常用于游戏开发中的调试视图和编辑器界面。
  6. Irrlicht Engine

    • 一个全功能的3D引擎,支持多种图形API,如OpenGL和Direct3D。
  7. Lumix Engine

    • 一个轻量级的3D游戏引擎,提供了渲染、物理、动画、音频等功能。
  8. RenderDoc

    • 虽然主要是一个图形调试工具,但其API允许在C++中捕获和调试图形管线。
  9. EnTT

    • 一个用于游戏开发的C++库,提供了实体组件系统(ECS)和更多功能,可以与各种渲染库结合使用。
  10. GFX

    • 一个现代的、可移植的C++图形库,用于构建跨平台的图形应用。
  11. Vulkan

    • 虽然Vulkan本身是一个低级别的图形API,但其官方和第三方库(如Vulkan-Hpp)提供了C++绑定。
  12. OpenGL

    • 虽然OpenGL不是一个库,但它是C/C++游戏开发者常用的图形API,有多种C++绑定和辅助库可用。
  13. Direct3D

    • 与OpenGL类似,Direct3D也是个API,但主要在Windows平台上使用,有C++绑定。
  14. EasyX

    • 一个简单的2D图形库,适合初学者和教学目的。

C/C++实现的开源嵌入式操作系统

  1. FreeRTOS

    • FreeRTOS 是一个小型、开源的实时操作系统内核,非常流行,适用于微控制器和嵌入式设备。
  2. μC/OS-II & μC/OS-III

    • 这是两个由Jean J. Labrosse开发的实时操作系统,支持多种微处理器架构。
  3. TinyOS

    • TinyOS 是一个专为无线传感器网络设计的开源操作系统,以其轻量级和低功耗而著称。
  4. Contiki-OS

    • Contiki 是一个针对物联网设备的小型、开源操作系统,支持多任务和IPv6。
  5. RIOT

    • RIOT(Friendly OS for the Internet of Things)是一个面向物联网设备的开源操作系统,支持多种微控制器和无线模块。
  6. LiteOS

    • 华为的LiteOS是一个轻量级的物联网操作系统,支持低功耗和实时特性。
  7. Zephyr RTOS

    • Zephyr 是一个由Linux基金会维护的实时操作系统,目标是为资源受限的设备提供可扩展性和安全性。
  8. FreeDOS

    • 尽管FreeDOS不是典型的嵌入式操作系统,但它是一个开源的DOS兼容系统,可用于某些嵌入式环境。
  9. eCos

    • eCos (Embedded Configurable Operating System) 是一个高度可配置的开源嵌入式操作系统。
  10. Nut/OS

    • Nut/OS 是一个面向嵌入式系统的免费实时操作系统,提供了多任务支持和中断处理。
  11. DJYOS

    • 都江堰操作系统,这是一个国内开发的开源嵌入式操作系统。
  12. klite

    • 一个简洁易用的嵌入式操作系统内核。
  13. lmosem

    • 一个完全从头开始编写的操作系统内核,基于ARM平台,支持多进程和多CPU。
  14. freenos

    • FreeNOS 是一个微内核操作系统,适用于嵌入式应用。
  15. Apache Mynewt

    • 由Apache软件基金会支持的一个嵌入式操作系统,专注于物联网应用,提供模块化和可扩展性。

基于Qt和C/C++实现的工具

  1. Qt Creator

    • 这是一个跨平台的IDE,可以用于开发基于Qt的GUI应用程序。虽然Qt Creator本身不直接针对单片机开发,但它可以与适当的编译器和工具链一起使用,以支持单片机上的Qt应用程序开发。
  2. Qt Embedded

    • Qt Embedded 是Qt的嵌入式版本,专门设计用于在资源受限的嵌入式设备上运行。这包括单片机和其他嵌入式系统。
  3. Qt for MCUs

    • 这是Qt专门为微控制器单元(MCUs)设计的解决方案,它允许在低功耗、资源受限的设备上运行GUI应用程序。
  4. QML for MCUs

    • QML是一种声明性的UI描述语言,用于构建Qt应用程序的用户界面。Qt for MCUs支持QML,使得在单片机上开发复杂的UI成为可能。
  5. Qt Design Studio

    • 这是一个设计和原型制作工具,用于创建和测试复杂的用户界面。虽然它主要用于桌面和移动设备,但它也可以与Qt for MCUs结合使用,为嵌入式设备设计界面。
  6. GCC/G++ for ARM

    • GNU Compiler Collection (GCC) 包含G++,这是C++的编译器。对于基于ARM的单片机,可以使用GCC/G++来编译C/C++代码。
  7. Keil MDK

    • Keil MDK 是一个流行的IDE,用于基于ARM Cortex-M微控制器的嵌入式软件开发。虽然它不直接使用Qt,但它可以与Qt结合使用,特别是在支持Qt的单片机上。
  8. IAR Embedded Workbench

    • 这是一个专业的IDE,用于基于ARM、MIPS、PowerPC和其他架构的微控制器的嵌入式软件开发。它也可以与Qt结合使用。
  9. Code::Blocks

    • Code::Blocks是一个免费的C/C++IDE,可以通过插件支持不同的编译器和工具链,从而适用于嵌入式开发。
  10. Eclipse

    • Eclipse 是一个多功能的IDE,通过插件可以支持各种嵌入式开发环境,包括那些基于Qt的应用。
  11. Visual Studio

    • Microsoft的Visual Studio,尤其是它的社区版,可以配置为支持嵌入式开发,包括使用C/C++和Qt。

C/C++实现的电路仿真模拟器和电路信号分析器

  1. Ngspice

    • Ngspice是Spice3f5的开源分支,是最常见的电路仿真器之一,使用C/C++编写,支持广泛的电路元件和分析类型。
  2. Qucs

    • Qucs(Quite Universal Circuit Simulator)是一个图形界面的电路仿真器,使用C++编写,支持直流、交流、瞬态和噪声分析。
  3. Xyce

    • Xyce是由美国桑迪亚国家实验室开发的高性能电路仿真器,主要用于大规模电路的仿真,使用C++编写。
  4. CirSim

    • CirSim是一个基于C++的电路模拟器,虽然不如上述工具那样知名,但也是一个值得探索的选项。
  5. GTKWave

    • 虽然主要是一个波形查看器,但GTKWave可以与电路仿真器配合使用,进行信号分析和可视化,使用C++编写。
  6. LTspice

    • LTspice虽然是使用C语言编写的,但其用户界面和一些后处理工具可能涉及C++,是一个非常流行的电路仿真软件,尤其擅长电源电路的分析。
  7. EveryCircuit

    • EveryCircuit是一个移动应用和网页应用的电路模拟器,使用C++作为其后端的一部分,提供直观的电路设计和分析功能。
  8. Proteus

    • Proteus是一个商业电路仿真软件,包含ISIS(原理图输入系统)和ARES(PCB布局系统),使用C++进行一些后端处理和工具开发。
  9. Multisim

    • Multisim是另一个商业软件,用于电路仿真和分析,虽然其核心可能使用其他语言,但其定制和插件开发可能涉及C/C++。
  10. GRC

    • GNU Radio Companion是一个图形界面工具,用于构建和仿真数字信号处理系统,使用C++和Python。
  11. Scilab

    • Scilab是一个用于数值计算的开源软件包,可以用于信号分析和处理,支持C/C++接口。
  12. Octave

    • Octave是一个与Matlab兼容的数值计算环境,可以用于信号分析,支持C/C++代码调用。
  13. Simulink

    • Simulink是MATLAB的一部分,用于建模、仿真和分析动态系统,虽然主要是MATLAB环境,但支持C/C++代码生成和接口。
  14. VHDL/Verilog Simulators

    • 虽然VHDL和Verilog是硬件描述语言,但许多仿真器(如ModelSim、VCS等)都支持C/C++接口,用于系统级的信号分析和验证。

其实基于C/C++做的东西很多,比如我们基于JAVA/PHP/GO/NODE/RUST做一个小程序电商系统,都会用到mysql/redis/linux操作系统,它们也是C/C++.ASM做的,可以说C/C++/ASM是互联网应用的核心基石。

  • 21
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北风之神Boreas

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值