The free-programming-books-langs.md file provides language-specific book indexing with 200+ programming language sections. Each section contains markdown list entries with standardized metadata: title links, author attribution, format indicators (PDF, HTML, EPUB), license tags (CC BY-SA), and status markers (:construction:, :card_file_box:).
Language-agnostic content (algorithms, databases, architecture) lives in free-programming-books-subjects.md (see section 3.2). Cross-reference exists at books/free-programming-books-langs.md122
Sources: books/free-programming-books-langs.md1-122
Diagram: Document Structure of free-programming-books-langs.md
Sources: books/free-programming-books-langs.md1-1373
The system categorizes books across multiple language paradigms and domains:
| Category | Example Languages | Line Ranges | Notable Characteristics |
|---|---|---|---|
| Systems Languages | C, C++, Rust, Go | 438-482, 515-559, 192, 813-846 | Low-level control, performance |
| Enterprise/OOP | Java, C#, Kotlin | 1051-1141, 484-513, 121 | Framework-heavy, multiple subsections |
| Web Frontend | JavaScript, TypeScript | 1143-1420, 217-220 | Extensive framework coverage (12+ subsections for JS) |
| Web Backend | PHP, Ruby, Python | 157-164, 188-192, 171-180 | Framework subsections (Laravel, Rails, Django) |
| Functional | Haskell, Elixir, F#, Clojure | 906-929, 705-728, 743-751, 573-592 | Academic resources, category theory |
| Mobile | Android, iOS, Swift | 264-276, 1011-1022, 210-212 | Platform-specific |
| Scientific | Julia, MATLAB, R | 1430-1437, 136, 182 | Data science oriented |
| Embedded | Arduino, Assembly | 293-306, 333-360 | Hardware-specific |
| Legacy/Niche | COBOL, Forth, Pascal | 601-611, 781-789, 155 | Smaller collections |
Sources: books/free-programming-books-langs.md8-232
Diagram: Markdown Entry Components
Line 446 - Standard entry:
Line 269 - Access requirement:
Line 563 - Status marker:
Line 345 - Archived resource:
Sources: books/free-programming-books-langs.md269-563
Diagram: Hierarchical Subsection Structure for Major Languages
| Language | Total Entries | Subsections | Line Range |
|---|---|---|---|
| JavaScript | ~70 | 20 | 1153-1430 |
| Java | ~55 | 7 | 1060-1150 |
| Python | ~40 | 9 | 171-180 (index) |
| PHP | ~20 | 7 | 157-164 (index) |
| Elixir | ~10 | 2 | 712-734 |
| Ruby | ~25 | 3 | 189-192 (index) |
| Groovy | ~15 | 3 | 69-72 (index) |
Sources: books/free-programming-books-langs.md69-1430
Diagram: Anchor Link Resolution in Index
| Language | Index Anchor | HTML Anchor ID | Line |
|---|---|---|---|
| C | #c | ### C | 440 |
| C# | #csharp | <a id="csharp"></a>C# | 486 |
| C++ | #cpp | <a id="cpp"></a>C++ | 518 |
| F# | #f-sharp | ### F Sharp | 750 |
| .NET Core | #net-core | ### .NET Core / .NET | 142 |
| Node.js | #nodejs | #### Node.js | 1341 |
| React Native | #react-native | #### React Native | 1403 |
Sources: books/free-programming-books-langs.md8-1403
The file explicitly separates language-specific content from general programming topics:
Note from file header (lines 3-5):
"Originally, this list included a section called 'Language Agnostic' for books about programming subjects not restricted to a specific programming language. That section got so big, we decided to split it into its own file, the BY SUBJECT file."
Sources: books/free-programming-books-langs.md1-122 books/free-programming-books-subjects.md1-4
The depth and type of resources vary significantly by language popularity and ecosystem maturity:
| Language | Total Entries | Subsections | Typical Resource Types | Notable Patterns |
|---|---|---|---|---|
| JavaScript | ~70 entries | 13 | Tutorials, framework guides, reference docs | Most subsections; covers full stack |
| Java | ~50 entries | 7 | Enterprise guides, framework docs, patterns | Heavy Spring ecosystem coverage |
| Python | ~40 entries | 8 | Scientific computing, web frameworks, tutorials | Data science focus with NumPy/Pandas |
| C/C++ | ~40/~45 entries | 0/0 | Standards, low-level guides, optimization | Many PDF specifications |
| C# | ~30 entries | 0 | .NET framework, Xamarin, design patterns | Microsoft ecosystem focus |
| Go | ~35 entries | 0 | Concurrency, web services, tutorials | Modern cloud-native focus |
| Ruby | ~25 entries | 3 | Rails guides, tutorials, testing (RSpec) | Heavy Rails presence |
| PHP | ~20 entries | 6 | CMS (Drupal), frameworks (Laravel, Symfony) | Framework-dominated |
| Haskell | ~25 entries | 0 | Theory, functional programming, type systems | Academic resources |
| Rust | ~15 entries | 0 | Systems programming, safety, tutorials | Modern systems focus |
| Smaller languages | 1-10 entries | 0-1 | Introductory tutorials, reference manuals | Basic coverage |
Sources: books/free-programming-books-langs.md157-1420
Book entries include standardized format and accessibility metadata:
Common patterns:
:card_file_box: indicatorSources: books/free-programming-books-langs.md266-691
The C family languages have substantial standalone sections without framework subsections, focusing on fundamentals and advanced topics:
C Section (Lines 438-482):
C++ Section (Lines 515-559):
Sources: books/free-programming-books-langs.md438-559
The JavaScript section is the most extensive, with 13 subsections covering the full web development stack:
Main JavaScript Section (Lines 1143-1213):
React Subsection (Lines 1360-1388):
Node.js Subsection (Lines 1328-1348):
Sources: books/free-programming-books-langs.md1143-1420
Java section emphasizes enterprise development with Spring framework dominance:
Spring Subsections Structure:
#### Spring (Lines 1113-1120)
- General Spring Framework books
- Dependency injection, AOP concepts
#### Spring Boot (Lines 1122-1126)
- Microservices with Spring Boot
- Vaadin integration guides
#### Spring Data (Lines 1128-1131)
- JPA integration documentation
- Repository patterns
#### Spring Security (Lines 1133-1136)
- Authentication and authorization
- Security reference documentation
Sources: books/free-programming-books-langs.md1113-1136
While this file itself doesn't contain validation logic, it's subject to automated checks from the CI/CD system:
Ordering requirement: Within each language section, books must be listed in alphabetical order by title.
Sources: .github/workflows/fpb-lint.yml1-35 .github/workflows/check-urls.yml1-120
The English free-programming-books-langs.md serves as the template for 40+ translated versions:
| Language Code | File Name | Example Languages Covered |
|---|---|---|
-zh | Chinese | Similar structure to English |
-ru | Russian | Cyrillic script, Russian resources |
-es | Spanish | Latin American and Spain resources |
-ko | Korean | Korean language books |
-pt_BR | Portuguese (Brazil) | Brazilian tech resources |
-ar | Arabic | RTL text direction |
-de | German | German language resources |
-fr | French | French resources |
-ja | Japanese | Japanese resources |
-it | Italian | Italian resources |
Each translation follows the same organizational structure but may have different coverage depths depending on resource availability in that language.
Sources: books/free-programming-books-langs.md1-5 README references to language editions
Diagram: Automated Validation Pipeline for Book Entries
fpb-lint checks (from .github/workflows/fpb-lint.yml):
* <FileRef file-url="https://github.com/EbookFoundation/free-programming-books/blob/6a7d2f47/Title" undefined file-path="Title">Hii</FileRef>)check-urls checks (from .github/workflows/check-urls.yml):
Sources: .github/workflows/fpb-lint.yml1-40 .github/workflows/check-urls.yml1-120 .github/workflows/comment-pr.yml1-46
The free-programming-books-langs.md file serves as a comprehensive, community-curated index of free programming books organized by language. Its key characteristics:
The file is maintained through a combination of automated validation and human curation, ensuring both technical correctness and content quality.
Refresh this wiki