free-programming-books 德语版书单深度解析:36 个主题分节、126 条免费资源的标注规范与自动化质检体系
【免费下载链接】free-programming-books:books: Freely available programming books项目地址: https://gitcode.com/GitHub_Trending/fr/free-programming-books
本文以 德语版免费编程书籍清单 为主体,系统梳理这份 288 行文档的完整分节结构、条目标注语法(格式标记、译者标注、归档与在编状态)以及背后的排序与排版规则;结合仓库中的贡献规范与 CI 工作流源码,说明该清单如何通过 Lint 自动化保证长期可维护性。读完后,你将能够准确检索德语免费编程学习资源,理解并遵循该仓库贡献资源时全部格式约定。
1. 文档定位:多语言书单体系中的一员
free-programming-books 是 Free Ebook Foundation 维护的开源免费学习资源聚合仓库,按资源类型分为四大目录:书籍(books/)、在线课程(courses/)、播客与屏幕录像(casts/)、其他资源如速查表与交互式教程(more/)。README.md 在 “Other Languages” 一栏中通过相对路径 books/free-programming-books-de.md 将本文档注册为 “German / Deutsch” 条目,与英文主清单 books/free-programming-books-en.md 并列。
仓库根目录的 _config.yml 表明该仓库本身是一个 Jekyll 静态站点:使用remote_theme: pages-themes/minimal@v0.2.0主题、kramdown作为 Markdown 转换引擎,并启用jekyll-relative-links插件使列表间的相对链接可直接渲染为站点内跳转。这意味着德语清单不仅是一份可阅读文档,更是可被静态站点整体发布的页面之一。
2. 完整目录结构:36 个 H3 分节与 4 个 H4 子节
文档开篇是一个覆盖全部分节的 Index 目录(第 1–42 行),随后每个主题使用三级标题(###)分节。全文经统计包含 36 个 H3 分节、4 个 H4 子节(React、Joomla、Symfony、Django)、126 条资源条目。分节整体按字母序排列,目录中可见的完整骨架如下:
| 分节 | 类型 | 备注 |
|---|---|---|
| ABAP | H3 | SAP 体系 |
| Action Script | H3 | 含 Flash 时代资源 |
| Android | H3 | 大学讲义 PDF |
| Assembly Language | H3 | 含逆向工程入门 |
| C | H3 | 4 条 |
| C#(C#) | H3 | 使用<a id="csharp"></a>锚点规避#的锚点冲突 |
| C++ | H3 | 使用<a id="cpp"></a>锚点 |
| Component Pascal | H3 | 单一 PDF 资源 |
| Delphi | H3 | 已归档(archived) |
| Git | H3 | 3 本经典 Git 书 |
| Go | H3 | 含社区翻译项目 |
| Groovy | H3 | |
| HTML and CSS | H3 | |
| iOS | H3 | |
| Java | H3 | 11 条,全清单最丰富分节 |
| JavaScript | H3 | 含 React 子节(H4) |
| LaTeX | H3 | 含大学系列讲义 |
| Linux | H3 | |
| Meta-Lists | H3 | 指向 openbook 聚合站 |
| MySQL | H3 | |
| Neo4j | H3 | 需邮箱申请的资源 |
| PHP | H3 | 含 Joomla、Symfony 两个 H4 子节 |
| Python | H3 | 含 Django 子节(H4) |
| R | H3 | |
| Ruby on Rails | H3 | 5 条,含 1 条 archived |
| Rust | H3 | 官方书社区德语版 |
| Sage | H3 | 数学计算 |
| Scilab | H3 | 已归档 PDF |
| Scratch | H3 | 青少年编程 |
| Shell | H3 | |
| UML | H3 | |
| Unabhängig von der Programmiersprache | H3 | 语言无关主题(Clean Code、Scrum/XP) |
| Unix | H3 | |
| VHDL | H3 | |
| Visual Basic | H3 |
两个细节值得关注:其一,C# 与 C++ 这类含特殊字符(#、+)的标题在目录锚点上无法直接用 GFM 自动生成可靠的 slug,文档改用显式锚点<a id="csharp"></a>/<a id="cpp"></a>嵌入标题行(见 books/free-programming-books-de.md 第 75、82 行),目录链接因此指向#csharp、#cpp而非自动生成的 slug。其二,目录本身也遵循仓库统一的“字母序”规则,Unabhängig...按德语拼写排在 UML 与 Unix 之间。
3. 全部分节内容盘点
以下按文档顺序逐节盘点。每个分节给出代表性条目(含链接、作者与格式标记),并保留原文档的状态标注;完整 126 条清单请直接查阅 books/free-programming-books-de.md。
3.1 语言类分节
- ABAP:《Einstieg in ABAP》(Karl-Heinz Kühnhauser, Thorsten Franz,Online);SAP 官方的 Clean ABAP 代码风格指南(CleanABAP 德语版)。
- Action Script:《ActionScript 1 und 2》(Sascha Wolter)与《Einstieg in ActionScript》(Christian Wenz 等,Online),均为 openbook 系列。
- Android:《Einführung in die Entwicklung von Apps für Android 8》(Bernhard Baltes-Götz,PDF),特里尔大学讲义。
- Assembly Language:Paul A. Carter 的《PC Assembly Language》;《Reverse Engineering für Einsteiger》(Dennis Yurichev 原著,Dennis Siekmeier、Julius Angres、Dirk Loser、Clemens Tamme、Philipp Schweinzer 等德语合译,PDF)。
- C:C-HowTo(Elias Fischer,HTML);Wikibooks 的 C-Programmierung;《C von A bis Z》(Jürgen Wolf,Online);Klaus Schmaranz 的《Softwareentwicklung in C》(PDF,Wayback 归档链接)。
- C#:《Einführung in das Programmieren mit C#》(Bernhard Baltes-Götz,PDF);highscore.de 的 C# 入门;《Visual C# 2012》(Andreas Kühnel,Online)。
- C++:Boris Schäling 的《Die Boost C++ Bibliotheken》;《Lean Testing für C++-Programmierer (2018)》(Andreas Spillner, Ulrich Breymann,PDF)——注意标题中内嵌出版年份,这正是 CONTRIBUTING 要求的“旧书把年份写进标题”规范;highscore.de 的 C++ 入门/进阶两篇。
- Component Pascal:Karlheinz Hug 的《Module, Klassen, Verträge》(PDF)。
- Delphi:《Delphi-Starter》(Florian Hämmerle 等 4 位作者,PDF),标注
*( :card_file_box: archived)*,说明原始链接已失效,条目经由 Wayback Machine 归档链接保留。 - Git:《Das Git-Buch》(Valentin Haenel, Julius Plenz,PDF/EPUB);Git Magic(Ben Lynn 原著,
trl.:Benjamin Bellee、trl.:Armin Stebich,HTML/PDF);Pro Git(Scott Chacon, Ben Straub,trl.:Ben Straub,HTML/PDF/EPUB/Kindle)。 - Go:Effektiv Go 官方文档德文版;《Eine Tour durch Go》(go-tour 社区翻译);《Erstelle Webanwendungen mit Go》(Build Web Application with Go 德文版);The Little Go Book(Karl Seguin 原著,
trl.:Aaron Ebnöther,HTML)。 - Groovy:《Groovy für Java-Entwickler》(Jörg Staudemeyer,PDF)。
- HTML and CSS:Peter Kropff 的 CSS 与 HTML 系列;《Das kleine Buch der HTML-/CSS-Frameworks》(Jens Oliver Meiert);HTML5-Handbuch(wikidot);Self HTML。
- iOS:《Apps programmieren für iPhone und iPad》(Klaus M. Rodewig, Clemens Wagner,Online);iOS-Rezepte(O'Reilly openbooks);iPad-Programmierung(Daniel H. Steinberg, Eric T. Freeman,PDF)。
- Java(11 条,清单中最丰富分节):《Einführung in das Programmieren mit Java》(Bernhard Baltes-Götz, Johannes Götz,PDF);《EJB 3 für Umsteiger》(Heiko W. Rupp);Ullenboom 三部曲《Java 7 Mehr als eine Insel》《Java ist auch eine Insel》《Java SE 8 Standard-Bibliothek》(均 Online);Wikibooks 的 Java Standard(HTML);《Java Tutorial》(Björn und Britta Petri,archived);《Nebenläufige Programmierung mit Java》(Jörg Hettel und Manh Tien Tran,PDF);highscore.de 的 Java 入门/进阶(Boris Schäling);《Testgetriebene Entwicklung mit JUnit & FIT》(Frank Westphal,PDF)。
- JavaScript:Peter Kropff 的 JavaScript(Grundlagen、AJAX、DOM、OOP);《JavaScript und AJAX》(Christian Wenz,Online);highscore.de 的《Webseiten erstellen mit Javascript》。
- React(H4 子节):《React lernen und verstehen》(Manuel Bieh,HTML)。
- LaTeX:Fernuni Hagen 的两册讲义《LaTeX - eine Einführung und ein bisschen mehr ...》与《LaTeX - Fortgeschrittene Anwendungen (oder: Neues von den Hobbits)》(Manuela Jürgens, Thomas Feuerstack,PDF);Herbert Voß 的 LaTeX 环境/宏/长度/计数器参考手册(PDF)。
- Linux:《Debian GNU/Linux Anwenderhandbuch》(Frank Ronneburg,HTML);《Linux - Das umfassende Handbuch》(Johannes Plötner, Steffen Wendzel,HTML)。
- Meta-Lists:Galileo Computing - openbook(Rheinwerk Verlag 的开源书聚合页),作为“清单的清单”单列。
- MySQL:Peter Kropff 的 MySQL 教程(Online, PDF)。
- Neo4j:《Neo4j 2.0 – Eine Graphdatenbank für alle》(Michael Hunger,PDF),标注
*(email requested)*——按贡献规范,下载前需填邮箱时须加此类访问说明。 - PHP:Peter Kropff 的 PHP(Grundlagen、OOP、MySQLi、PDO);《PHP PEAR》(Carsten Möhrke,Online);《Praktischer Einstieg in MySQL mit PHP》(Sascha Kersken,PDF)。
- Joomla(H4 子节):《Joomla! 3 - Das umfassende Handbuch》(Richard Eisenmenger)。
- Symfony(H4 子节):Symfony 官方文档的德语快速入门(The Fast Track)。
- Python:《A Byte of Python - Einführung in Python》(Swaroop C H 原著,Bernd Hengelein 等 4 人合译,PDF);Programmiereinführung mit Python(OpenTechSchool);《PyQt und PySide》(Peter Bouda, Michael Palmer, Dr. Markus Wirz,TeX + PDF 双链接,标注
*( :construction: in Bearbeitung)*表示在编);《Python 3 - Das umfassende Handbuch》(Johannes Ernesti, Peter Kaiser,Online)。- Django(H4 子节):Django Girls Tutorial 德语版(1.11,HTML,in Bearbeitung)。
- R:《Einführung in R》(Andrew Ellis, Boris Mayer,HTML)。
- Ruby on Rails:《Praxiswissen Ruby》(Sascha Kersken,PDF,archived);《Praxiswissen Ruby On Rails》(Denny Carl,PDF);《Rails Kochbuch》(Rob Orsini,PDF);《Ruby on Rails 2》(Hussein Morsy, Tanja Otto,Online);《Ruby on Rails 3.2 für Ein-, Um- und Quereinsteiger》(Online)。
- Rust:官方 The Rust Book 社区德文版《Die Programmiersprache Rust》(Steve Klabnik, Carol Nichols,Rust-Gemeinschaft 翻译)。
- Sage:《Rechnen mit SageMath》(Paul Zimmermann, et al.,PDF)——作者列表以
et al.收尾,对应规范中“作者列表可用 et al. 省略”的约定。 - Scilab:《Einführung in Scilab/Xcos 5.4》(Helmut Büch,PDF,Wayback 归档)。
- Scratch:《Kreative Informatik mit Scratch》(诺伊基希大学)。
- Shell:《Shell-Programmierung》(Jürgen Wolf,openbook)。
3.2 方法/平台类分节
- UML:《Der moderne Softwareentwicklungsprozess mit UML》(Boris Schäling,HTML)。
- Unabhängig von der Programmiersprache(语言无关):Clean Code Developer 倡议站;《IT-Handbuch für Fachinformatiker》(Sascha Kersken,Online);《Objektorientierte Programmierung》(Bernhard Lahres, Gregor Rayman,Online);Henrik Kniberg 的《Scrum und XP im harten Projektalltag》(PDF,InfoQ 资源)。
- Unix:《Linux-UNIX-Programmierung》(Jürgen Wolf,Online);《Shell-Programmierung》(同上);《Wie werde ich Unix Guru?》(Arnold Willemer,Online)。
- VHDL:Wikibooks 的 VHDL-Tutorium(HTML)。
- Visual Basic:《Einstieg in Visual Basic 2012》(Thomas Theis,Online);《Visual Basic 2008》(Andreas Kuehnel, Stephan Leibbrandt,Online)。
统计维度上看:126 条条目中,31 条标注 Online、24 条标注 PDF、16 条标注 HTML,另有 3 条 archived、2 条 in Bearbeitung、3 处trl.:译者标注、1 处 email requested。这组数字本身也印证了 CONTRIBUTING 中“格式标记”“归档标注”“在编标注”“译者信用”等规则在真实文档中的落地方式。
4. 条目标注语法:一行链接背后的元数据体系
德语清单的每条资源都不是裸链接,而是遵循统一的行内语法。以原文档中三个真实条目为例:
* [The Little Go Book](https://github.com/Aaronmacaron/the-little-go-book-de) - Karl Seguin, `trl.:` Aaron Ebnöther (HTML) * [Delphi-Starter](https://web.archive.org/web/20170714162427/...) - Florian Hämmerle, ... (PDF) *( :card_file_box: archived)* * [PyQt und PySide: GUI und Anwendungsentwicklung mit Python und Qt](https://github.com/pbouda/pyqt-und-pyside-buch) - Peter Bouda, ... (TeX, PDF) *( :construction: in Bearbeitung)*逐层拆解,可归纳出 6 类标注要素,全部在 docs/CONTRIBUTING.md 中有对应规则条款:
- 链接本体:
标题,]与(之间禁止空格;优先https;拒绝缩短链接与文件托管平台(Dropbox、Google Drive 等)链接。 - 作者署名:以
-(两侧各一个空格的破折号)连接,作者之间用逗号分隔;多位作者可用et al.省略(如 Sage 分节)。规范明确禁止在作者前加 “Prof.”“Dr.” 等头衔。 - 译者信用:使用 MARC relator 码
`trl.:`标记译者,例如 Git 分节中 Pro Git 的德语译者 Ben Straub 即记为`trl.:` Ben Straub。这保证“原作者 + 译者”双重署名,是整份清单对翻译社区(Go 书、Rust 书、A Byte of Python 德文版)的致谢方式。 - 格式标记:
(PDF)、(HTML)、(Online)等,与链接之间空一格;同一资源存在多种格式时,每个格式一个独立链接并各带说明(如 PyQt 书的 TeX 源 + PDF 下载)。 - 状态标注:
*( :card_file_box: archived)*——原始资源下线,条目改挂 Internet Archive 的 Wayback Machine 链接(Delphi-Starter、Java Tutorial、Praxiswissen Ruby 共 3 处);*( :construction: in Bearbeitung)*——资源仍在持续更新,对应英文版的 “in process”(PyQt 书、Django Girls 教程共 2 处);*(email requested)*——下载需要邮箱但非强制注册(Neo4j 书 1 处)。
- 年份入题:年代较早的书籍把出版年份写进标题括号内,如
Lean Testing für C++-Programmierer (2018),而非缀在作者之后。
此外,docs/CONTRIBUTING.md 还规定:资源若以自由许可(CC BY、CC BY-SA、GFDL 等 7 种受支持许可)发布,应在格式标记后追加许可简码,如(PDF) (CC BY-SA);标题不得自创、不得全大写、不得使用 emoji。德语清单整体严格遵循了这些约定。
5. 排版与排序规则:让机器可校验的结构
docs/CONTRIBUTING.md 的 Formatting 一节定义了列表文件的行级结构,德语清单(以及同目录所有语言清单)均满足:
- 每个文件以 Index 目录开头,目录覆盖所有分节与子节且按字母序排列;
- 分节用
###(H3)、子节用####(H4); - 最后一条链接与新分节标题之间空 2 行;标题与该节第一条链接之间空 1 行;同节链接之间不空行;
- 每个
.md文件结尾保留 1 个空行; - 字母序规则细化到“同首字母按第二字母比较”“有空格的形式排在无空格形式之前”(
one two先于onetwo)。
这些规则并非仅靠自觉执行——仓库将格式校验完全自动化(见第 6 节)。对贡献者而言,这实际上给出了一份可操作的“自检清单”:修改 books/free-programming-books-de.md 后,逐条核对标题层级、空行数量、]/(空格、作者破折号与字母序即可预判 Lint 结果。
6. 自动化质检:从 Pull Request 到 Lint 门禁
docs/CONTRIBUTING.md 的 Automation 一节声明:所有 Pull Request 都会触发 GitHub Actions 运行格式 Linter 与 URL 校验。对应实现就在仓库的 .github/workflows/ 目录中:
格式 Lint(fpb-lint)。.github/workflows/fpb-lint.yml 在pull_request事件触发,工作流安装 Node.js 后全局安装free-programming-books-lint,然后对全部四个资源目录执行扫描:
fpb-lint books casts courses more &> output.log也就是说,任何改动 books/ 下德语清单的 PR 都会被这条工作流覆盖;Linter 会检查字母序、空行结构与行内格式规则,并把输出清理后上传为 PR 制品(artifact)供贡献者查看。docs/HOWTO.md 给新手的具体指引是:PR 提交后若检查未变绿,点开失败项的 “Details”,按 Linter 提示(包括“哪两行需要交换”)在新 commit 中修复。
URL 校验(awesome_bot)。贡献规范说明,URL 有效性校验由 awesome_bot 完成,触发方式是在 commit message 中写入特殊指令:
check_urls=free-programming-books-de.md可空格分隔指定多个文件;注意多文件时构建结果以最后一个文件为准,需自行查看完整构建日志。该机制由 .github/workflows/check-urls.yml 承载,对维护一份 126 条外部链接的清单(其中不乏 Wayback 归档链接)尤为关键。
RTL/LTR Linter 的边界。仓库 scripts/rtl_ltr_linter.py(配套配置 scripts/rtl_ltr_linter_config.yml,工作流为 .github/workflows/rtl-ltr-linter.yml)专门处理阿拉伯语、希伯来语等从右向左书写语言清单中的双向文本问题(‏/‎Unicode 标记、BIDI 视觉顺序校验)。从脚本文档字符串与 docs/CONTRIBUTING.md 的 “Fixing RTL/LTR linter errors” 一节看,其检查范围是*-ar.md、*-he.md、*-fa.md、*-ur.md等 RTL 语言文件——德语清单作为 LTR 文档不在该 Linter 的适用范围内,但其条目中的 LTR 技术词(HTML、C# 等)书写规范与之一脉相承。
7. 如何使用这份清单,以及如何贡献
检索路径。在仓库中,德语书籍清单的入口有两条:README.md 的 “Other Languages” 列表与目录索引 books/;若需要德语的配套资源,同仓库还提供 courses/free-courses-de.md(德语免费课程)、casts/free-podcasts-screencasts-de.md(德语播客/录屏)、more/free-programming-interactive-tutorials-de.md(德语交互式教程)与 more/free-programming-playgrounds-de.md(德语在线练习场),构成完整的德语学习资源矩阵。
贡献流程(以 docs/HOWTO.md 与 docs/CONTRIBUTING.md 为准):
- 确认资源确实免费,且不属于被排除类型(博客文章、单集视频、书籍章节、限时免费资源等);
- Fork 仓库,在正确的列表文件中按字母序插入一行,套用第 4 节所述的标注语法;
- 若链接需 Wayback 归档,加
archived标注;资源在编加in process/in Bearbeitung标注;翻译作品加`trl.:`译者标注; - 提交 PR 后等待 fpb-lint 工作流绿灯;必要时追加
check_urls=<文件相对路径>的 commit 触发 URL 校验; - 贡献即同意 LICENSE(CC BY 4.0)与 docs/CODE_OF_CONDUCT.md。
8. 小结
books/free-programming-books-de.md 表面上是一份按 36 个主题分节的德语免费编程书籍目录,实质上它是 free-programming-books 仓库“元数据规范 + 自动化质检”体系的一份高完成度样本:字母序分节与 Index 目录保证可检索性,trl.:/ archived / in Bearbeitung / 邮箱申请等标注保证元数据完整且对读者透明,而 docs/CONTRIBUTING.md 定义的行级排版规则与 .github/workflows/fpb-lint.yml 等工作流则把“规范”变成了可机器判定的门禁。理解了这套结构,无论是消费这份德语书单,还是向其中(或其他语言清单)贡献资源,都有明确的规则与工具可依。
【免费下载链接】free-programming-books:books: Freely available programming books项目地址: https://gitcode.com/GitHub_Trending/fr/free-programming-books
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考