What is Programming Language?

    Big family of grammars abstracted from basic machine operation to formal language, based on math, logic, and natural language, tool for efficiently creating human-readable rigid logic.

    Abstract levels graph: [WIP]

    Could also be good metaphor on understanding many things.

    Tips on Learning

    Learn English

    For multilingual readers, if you don't know or not fammiliar with English, that's the first thing you should learn before any programming language since this is the origin of almost all programming languages it's also the default language in naming things, writing documents, and discussion in most cases in real-world development.

    P.S: Some quirky languages like brainfuck use symbol instead of natural language as the code, but they are still indirectly based on the logic of natural languages though.

    Know Math

    Set theory and logic also helps you a lot to understand the essence of value, functions and why are they meaningful in the realworld, I'd recommend to read the 1st chapter of James R. Munkres's Topology, I'll also write a more simpler chapter about that in the future as one of the very first chapters of my book.

    Go fast

    Programming languages are based on math and computer structure, they may have differences on design, performance, popularity, but as a human, the first thing you need when stepping into a new region is to get a basic sense (cognitive module) of those unfamiliar concepts, and learn some common concepts of the whole family and the underlying principles in its root: math.

    Start easy

    Don't directly jump to complex things with a bunch of special concepts like C++/Java/Rust even that's exactly what you wanna learn, keep your start point clean and ellegant with only the essential concepts before learning those fancy or strange features. Insteadly, start from something simple and close to natural language or easy math notations, e.g: C/Python/Javascript.

    Learning Resources

    First contact

    Brilliant's computer science series based on Python, interactive and easy to try, and one of the few serious things you can do on a phone.

    Ground-Up Computer Science by Yin Wang [WIP] (It's in an blog written in Chinese, but English book inside).

    Malloc by Code Aesthetic about C programming language [WIP].

    Archlinux, one of the best distribution for linux beginners with detailed wiki.

    Advance

    After you got some basic knwoledge about programming and computer system, you can start chasing some aspects that matters to you:

    Ellegant

    CodeAesthetic's video series.

    The Art of Unix Programming for system structure.

    Clean Code for code simplicity.

    Robust

    The Rust Programming Language, A language that prevents many bug in compiling stage with default high-performance and memory safety.

    NixOS, the most efficient distribution for life-long linux user and product environment, Nix pills recommended for beginners.

    Project-level

    Mythical Man-Month, precious experience on software engineering.