Best of C ProgrammingSeptember 2024

  1. 1
    Article
    Avatar of tilThis is Learning·2y

    7 Open Source Projects You Should Know - C Edition ✔️

    Explore seven notable open source projects written in C, including LVGL, systemd, DOOM Retro, OBS Studio, raylib, Celluloid, and finit. Each project offers unique features and serves various purposes, from embedded graphics libraries and system management tools to video game programming and media playback.

  2. 2
    Article
    Avatar of evolvedevevolvedev·2y

    Creating a Real-Time Physics Engine with C++

    Learn to build a basic real-time physics engine in C++ with this step-by-step guide. The tutorial covers implementing vector operations, rigid body dynamics, and collision detection, making it ideal for game developers and simulation enthusiasts.

  3. 3
    Article
    Avatar of ml_aiML & AI·2y

    Under the Hood - 💯 One of the best resource 📖

    A comprehensive resource covering topics such as Machine Learning, Database Systems, C Programming, Memory Management, Advanced ML, and Operating Systems, curated by Mohit Mishra.

  4. 4
    Video
    Avatar of lowlevelgamedevLow Level Game Dev·2y

    Dear Beginners, Please Learn to use the DEBUGGER!

    The biggest mistake beginners make is not learning how to use a debugger. Debugging is crucial for narrowing down where problems in the code occur by checking each step in the process. The post provides practical examples of using debugging techniques and tools, emphasizing the importance of avoiding assumptions about where the bug is. Visual Studio debugger functionalities are explained, including setting breakpoints, stepping through code, and using the call stack window. Beginners are encouraged to install an IDE with a debugger to be more productive.

  5. 5
    Video
    Avatar of letsgetrustyLet's Get Rusty·2y

    Rust stole C++'s best features

    Rust incorporates C++'s resource management model (RAII), zero-cost abstractions, and generic programming, while addressing common pitfalls such as memory safety. However, Rust faces challenges in ecosystem growth and compatibility compared to the well-established C++.

  6. 6
    Article
    Avatar of bunBun·2y

    Compile and run C in JavaScript

    Bun v1.1.28 introduces experimental support for compiling and running native C from JavaScript. This method aims to overcome the complexities and performance hits associated with current practices like N-API and WebAssembly. By using TinyCC, Bun ensures fast compilation and near-zero call overhead, making it ideal for integrating C libraries and system APIs with JavaScript without a separate build step.

  7. 7
    Article
    Avatar of c_communityC/C++ Community·2y

    Ray Tracer with C++ !

    A detailed guide from setting up a CMake project to rendering your first image, ideal for aspiring graphics programmers or those curious about light simulation in computer graphics.

  8. 8
    Article
    Avatar of game_developersGame Developers·2y

    C# Or C++

    A discussion focusing on whether C++ or C# is better suited for game development, considering performance and compatibility with game engines.

  9. 9
    Article
    Avatar of hnHacker News·2y

    VadimBoev/FlappyBird

    The author shares their journey of creating a lightweight Flappy Bird clone for Android using C. Despite initial failures with C++ and significant APK size, they eventually succeeded by minimizing resource weights, using OpenSLES for sound, and upng for decoding PNG files. The game was developed with Visual Studio 2022 and Android Studio, emphasizing a final APK size of under 100 Kilobytes.

  10. 10
    Video
    Avatar of primeagenThePrimeTime·2y

    The Good And Bad Of C++ As A Rust Dev

    A Rust developer shares his experience delving into C++ to help his sister learn game programming. The post highlights the differences between Rust and C++, praising C++ for its freedom and object-oriented design while criticizing its complex build and error handling processes. Modern C++ features like unique and shared pointers are appreciated, but the lack of a standardized build system and package manager are significant pain points. The post concludes that while C++ has its drawbacks, it offers valuable insights and flexibility, especially in game development.

  11. 11
    Article
    Avatar of hnHacker News·2y

    microui+fenster=small gui

    fenster is a tiny 2D canvas library by Serge Zaitsev, designed for simple pixel drawing without the complexities of SDL or OpenGL. It supports WinAPI, Cocoa, and X11, as well as handling keyboard and mouse input. microui by rxi, another small library, translates GUI elements into a retargetable drawing bytecode and integrates with fenster, enabling the creation of GUIs with menus, buttons, and text input. A less than 250 LOC file binds microui to fenster, inspired by the SDL renderer demo.

  12. 12
    Video
    Avatar of lowlevellearningLow Level Learning·2y

    Why Rust is Better for Safety.

    Rust enhances safety by preventing common memory errors such as buffer overflow. Unlike C, Rust enforces strict checks at compile-time, ensuring that unsafe code doesn't run. This makes it harder to control the control flow illicitly, thereby reducing the risk of memory exploitation attacks.

  13. 13
    Article
    Avatar of lobstersLobsters·2y

    Why I Prefer Exceptions to Error Values

    The post discusses the preference for exceptions over error values in error handling, arguing that exceptions are easier to work with, result in better user-facing error messages, and are more performant. It compares functional-style error reporting in languages like Go and Rust with traditional exception handling in languages like C++ and mentions that explicit error handling can often lead to verbose and less efficient code.

  14. 14
    Article
    Avatar of omgubomg! ubuntu!·2y

    Fastfetch is the Perfect Replacement for Neofetch

    Fastfetch is a powerful system information tool that surpasses Neofetch, offering more features, faster performance, and Wayland support. It is highly customizable, with over 20 presets and a variety of modules for extensive tweaking. Installation on Ubuntu is straightforward, either through standard repositories or via a PPA for the latest version.

  15. 15
    Video
    Avatar of gamefromscratchGamefromscratch·2y

    Parkour in Godot with this Awesome Free Character Controller

    Explore an impressive parkour character controller for the Godot game engine, inspired by popular games like Mirror's Edge and Titanfall. The controller is free, open-source, and written primarily in C. Key features include first-person movement mechanics, crouching, sprinting, sliding, and advanced visual effects like lens flares and motion blur. It requires Godot 4.3 and the Mono version for usage. Created by YouTuber Underdog, this controller is a great starting point for developing parkour-based gameplay in Godot.

  16. 16
    Video
    Avatar of lowlevelgamedevLow Level Game Dev·2y

    How do shaders in my Minecraft C++ clone work?

    Discover how shaders work in a Minecraft C++ clone, focusing on rendering techniques like skyboxes, ambient occlusion, and texture packs. Learn how transparent geometry is handled efficiently, the day-night cycle's impact on lighting, and the intricate pipeline behind achieving realistic water effects. Also, explore ambient occlusion methods and support for texture packs, making the game highly customizable.

  17. 17
    Article
    Avatar of qtQt·2y

    Embedded Software Programming Languages: Pros, Cons, and Comparisons of Popular Languages

    Selecting the right programming language for an embedded system is crucial, with popular choices including C, C++, Python, MicroPython, and Java. Each language has its advantages and limitations, such as C's efficiency and Python's ease of learning. Experts suggest considering the system's requirements, such as memory and processing power, as well as the development team's expertise when choosing a language. Compiled languages like C and C++ offer speed and stability, whereas interpreted languages like Python provide portability and ease of use. Ada is recommended for systems requiring high security and reliability.

  18. 18
    Article
    Avatar of cpplibC++ LibHunt·2y

    Awesome C++ Weekly - Issue 429, Sep 05, 2024

    This week's highlights include a 5-minute CMake survival guide, the release of the Proxy 3 Library for dynamic polymorphism, visualizing boost::unordered_map in GDB, and a survey on Qt Creator. Additionally, it covers various trending C++ libraries and projects such as a Swiss Army Knife for PC gaming and a local neural text-to-speech system.

  19. 19
    Article
    Avatar of isocppC++·2y

    Opaque Pointer Pattern in C++

    The opaque pointer pattern, also known as the pointer-to-implementation idiom or compiler firewall, helps hide implementation details in C++ class designs to maintain stable interfaces during refactoring. This improves information hiding and reduces compilation dependencies. The post explains implementing this pattern with `std::unique_ptr` for automatic memory management and discusses potential advantages and drawbacks.

  20. 20
    Article
    Avatar of csharpcornerC# Corner·2y

    Layered (N-Tier) Architecture in .NET Core

    Layered (N-Tier) Architecture organizes an application into logical layers, each with a specific responsibility, improving separation of concerns, maintainability, testability, and extensibility. The post explains the roles of the Presentation, Application, Business Logic, and Data Access layers in building a Product and Order service in .NET Core. Code examples are provided for each layer, and the importance of Dependency Injection and Startup Configuration is highlighted.

  21. 21
    Article
    Avatar of phoronixPhoronix·2y

    Hyprland 0.43 Wayland Compositor Releases, Raises Build Requirements To C++26

    Hyprland 0.43 has been released, introducing animation improvements, new configuration options, and several fixes. This version raises build requirements to C++26, necessitating GCC 14+ or LLVM Clang 18+ compilers. Users can find the update and additional details on GitHub.