首页
/ free-programming-books 仓库乌尔都语编程课程清单解读:free-courses-ur.md 全量盘点、目录规范与 RTL/LTR 文本处理

free-programming-books 仓库乌尔都语编程课程清单解读:free-courses-ur.md 全量盘点、目录规范与 RTL/LTR 文本处理

2026-09-06 18:20:18作者:姚月梅Lane

本文围绕开源仓库 free-programming-books 中的 courses/free-courses-ur.md 展开,系统梳理该文件为乌尔都语(Urdu)与印地语(Hindi)学习者收录的全部免费编程课程:共 11 个技术主题、24 门 YouTube 播放列表课程,并逐一说明每门课程的主题覆盖与适用对象;同时结合 docs/CONTRIBUTING.mdscripts/rtl_ltr_linter.py 等仓库文件,解读这份清单背后的目录组织约定、收录审核规则,以及面向 RTL 语言的 ‏ / ‎ 双向文本渲染规范。读完本文,你将能高效检索并利用这份 Urdu/Hindi 免费课程资源,也能理解该仓库“课程清单类”文档从条目格式到质量校验的完整运作方式。

文件定位:Urdu 免费课程清单在仓库中的位置与入口

在 free-programming-books 仓库中,免费在线课程按语言分文件存放于 courses/ 目录。主 README.md 的 "Free Online Courses" 一节按语言给出入口,其中 Urdu(اردو)对应的就是 [Urdu / اردو](https://gitcode.com/GitHub_Trending/fr/free-programming-books/blob/a0894b14eaf3768b80a0746b4a23cff0c037d55c/courses/free-courses-ur.md?utm_source=gitcode_repo_files) 这一项。也就是说,想要快速跳转到这份清单,既可以直接打开 courses/free-courses-ur.md,也可以从仓库根 README 的课程索引里点入。

一个值得注意的语言归属现象是:该文件名为 ur(Urdu),但文件中绝大多数课程标题同时标注了 "Urdu/Hindi" 或 "Hindi/Urdu"——这是因为两门语言的口语与书面语在 YouTube 教学频道中高度互通。仓库的做法是为它们分别维护文件:Urdu 归入 courses/free-courses-ur.md,Hindi 则有独立的 courses/free-courses-hi.md,两个入口在 README 中并列出现,学习者可各取所需。

free-courses-ur.md 的文档组织与阅读方法

与仓库内其他语言清单一致,free-courses-ur.md 是一个“纯清单型”Markdown 文档:没有 H1 大标题与前言,文件开篇直接是导航。其结构遵守 docs/CONTRIBUTING.md 规定的格式约定:

  • 所有清单都以 Index 开始:文件第 1–13 行的 ### Index 把所有章节以锚点链接形式列出,并保持字母序;
  • 章节使用三级标题 ###:每个标题即一个技术主题分类;
  • 子目录锚点:对 GitHub 自动生成的 slug 可能不友好的标题,文件显式嵌入了 HTML 锚点,例如 C++ 用 ### <a id="cplusplus"></a>C++、C# 用 ### <a id="csharp"></a>C#&lrm;、HTML 与 CSS 用 ### <a id="html-and-css"></a>HTML and CSS。从结构看,这些显式 id 用于保证 Index 顶部 [C++](#cplusplus) 一类跳转在各类 Markdown 渲染器下稳定生效;
  • 条目行格式:每条资源为一行 * 标题 - 创作者 的无序列表项,创作者前用 - 分隔;同一主题的标题与创作者均直接取自资源自身的命名,不杜撰、不使用全大写、不含 emoji。

该文件当前覆盖 11 个分类,Index 锚点顺序为:Algorithms → Android → Assembly → C → C++ → C# → Figma → HTML and CSS → Java → Next.js → Python。阅读时可根据目标技术栈先查 Index,再跳到对应小节。

分主题课程全览(清单内容逐条继承)

以下按文件中各小节的原始顺序,逐条列出全部课程及其创作者,并在“从标题看”的范围内补充每门课程的适用场景说明。清单中每一条目的完整播放列表 URL 均保存在 courses/free-courses-ur.md 对应小节内(条目格式为 课程名 - 创作者),本仓库以“YouTube 创作者”作为署名主体而不是笼统写平台名。

Algorithms(算法)

该小节收录 1 门课程,面向计算机基础中的数据结构与算法分析:

  • Data Structures and Algorithms Analysis Complete Course in Hindi/Urdu | Data structures by Fahad Hussain | data structures and algorithms tutorial — Fahad Hussain

从标题的三段式描述可以推断,这门课以完整的(Complete)形式覆盖数据结构与算法分析,视频讲解使用 Hindi/Urdu 混合语言,适合需要系统补算法基础的初学者配合教材学习。

Android(安卓与移动开发)

该小节收录 4 门课程,覆盖面从原生 Android 到跨平台框架:

  • The complete Android Application Development Course in Hindi/Urdu | Android Development for Beginners in Hindi - Urdu | Android tutorial in Urdu — Fahad Hussain
  • Flutter App Development — Code With Dhruv
  • Flutter App Development Tutorial in Urdu / Hindi — The Tech Brothers
  • Mobile App Development Tutorial Series using React Native in Urdu / Hindi — Perfect Web Solutions

从标题看,这里既有面向零基础的完整 Android 应用开发入门课(Fahad Hussain),也有两条 Flutter 路线(Code With Dhruv、The Tech Brothers)与一条 React Native 路线(Perfect Web Solutions)。想做原生 Android 可以取前者,想走跨平台开发则可以在 Flutter 与 React Native 之间按团队技术栈取舍。

Assembly(汇编语言)

该小节收录 1 门课程:

  • Assembly Language Programming Tutorials in Urdu / Hindi — Programology

该系列用于理解底层执行模型、寄存器与内存寻址,适合在学习操作系统、编译原理或逆向之前建立“机器视角”的入门铺垫。

C(C 语言)

该小节收录 3 门互为补充的 C 语言入门课:

  • C Language Tutorials (Urdu/Hindi) — AssadUllahCh
  • C language tutorial for beginners Urdu/Hindi — Fahad Hussain
  • C Programming for Beginners Urdu/Hindi — Super Learning

三者都面向初学者,但由不同创作者讲授、风格与案例侧重各异。若在某一门中遇到讲解不适配的情况,可直接在另两门间横向对比同一知识点。

C++(C++ 语言与面向对象)

该小节共 5 门,是本清单中条目最多的分类,覆盖面最全:

  • C++ Course Series for Beginner in Urdu/Hindi — Learning Point
  • C++ Free Course for Beginners in (Urdu /Hindi) — CodeMite
  • Programming Fundamentals With C++ Complete Course In urdu | Hindi — Kacs Learnings
  • Object Oriented Programming (OOP) Using C++ [Full Course] — Safdar Dogar
  • Object Oriented Programming with C++ (Urdu) — Recluze

从标题与命名看,前三条属于“编程基础 + C++ 入门”路线(Learning Point、CodeMite 面向 Beginner,Kacs Learnings 的条目强调 Programming Fundamentals 与 Complete),后两条则专门聚焦面向对象编程(OOP):Safdar Dogar 的课程标注为 [Full Course],Recluze 的课程则是单独的 OOP 主题课。入门阶段建议先取前三条之一建立语法基础,再进入后两条深化类、继承、多态等 OOP 概念。

C#(C# 语言)

该小节收录 2 门 C# 入门课:

  • C# Tutorial For Beginners in Hindi/Urdu — Fahad Hussain
  • C# Tutorials In Urdu/Hindi — ProgramInUrdu

两门均以初学者为目标,可用于 .NET 平台与 Unity 游戏开发的语言起点。值得留意的是本小节标题写作 ### <a id="csharp"></a>C#&lrm;,其中 &lrm; 是用于修正 C# 这类“C 语言符号 + #”在 RTL 环境中显示顺序的方向性标记,相关细节见后文“RTL/LTR 规范”一节。

Figma(UI/UX 设计工具)

该小节收录 1 门设计类课程:

  • Figma Design Complete Course in Urdu | Hindi — Tutorials Town

这是清单中唯一一门非编程语言的技术课程,按标题为完整(Complete)的 Figma 设计课程,面向希望在写代码前先掌握界面设计、原型与切图协作流程的学习者。

HTML and CSS(Web 前端基础)

该小节收录 2 门 HTML5/CSS3 课程:

  • HTML5 & CSS3 Tutorials In Urdu and Hindi — ProgramInUrdu
  • HTML5 & CSS3 Tutorials in Urdu/Hindi — OnlineUstaad

两门课均对应 Web 开发的起点 HTML5 与 CSS3,适合零基础学习者对照学习;目录小节标题同样带有显式锚点 <a id="html-and-css"></a>,保证 Index 跳转稳定。

Java(Java 语言)

该小节收录 1 门 Java 课程:

  • Java Programming in Urdu/Hindi — OnlineUstaad

由 OnlineUstaad 频道提供,与上文的 HTML5/CSS3 课程出自同一位创作者,便于在同一频道的讲解风格下连续学习。

Next.js(React 全栈框架)

该小节收录 1 门以版本与完整度著称的课程:

  • Master Next JS 14: Complete Next JS 14 Tutorial from Basics to Advanced in Hindi/Urdu with Projects & Interview Prep — The Techzeen

从标题看,该课程明确面向 Next.js 14,覆盖 from Basics to Advanced 的全链路内容,并附带 Projects 与 Interview Prep(面试准备),适合已有 React 基础、希望系统掌握 Next.js 服务端渲染与全栈开发的学习者。

Python(Python 语言)

该小节收录 3 门形态各异的 Python 课程:

  • Python — Kawish - Urdu
  • Python_ka_chilla (python in 40 days in urdu/Hindi) — Codeanics
  • Python Tutorial For Beginners — Cyber Warriors - Urdu

三者互补性明显:Kawish 的频道名为 “Kawish - Urdu”,是一门以 Urdu 为主要讲解语言的 Python 系列;Codeanics 的 “Python_ka_chilla” 按标题是 40 天训练营式课程(python in 40 days),适合能投入连续周期的学习者;Cyber Warriors 的条目则明确标注 For Beginners。注意该小节条目创作者字段写作 “Kawish - Urdu”“Cyber Warriors - Urdu”,- Urdu 属于频道名称的组成部分,并非清单格式里的创作者分隔符。

从清单整体看选课特征

把上述 24 门课程放在一起,可以看出这份 Urdu 课程清单的几点整体特征:

  • 分级清晰:大量标题自带 Beginner / for Beginners / Fundamentals 字样,说明清单重点服务零基础与入门阶段学习者;需要进阶时可优先选择标注 Complete、OOP、Advanced 的条目。
  • 移动端与 Web 覆盖均衡:Android 分类同时给出原生(Android Application Development)与跨平台(Flutter ×2、React Native ×1)路线,Web 侧则覆盖 HTML/CSS、Java、Next.js。
  • 少量创作者贡献多条课程:例如 Fahad Hussain 同时在 Algorithms、Android、C、C# 四个小节出现,ProgramInUrdu、OnlineUstaad 也各贡献了不同主题的课程。对学习者而言,这意味着可以选择“同一频道、连续讲解风格”的多主题学习路径。
  • 清单条目均以 YouTube 播放列表为形态:这与仓库对课程类资源的收录口径一致——docs/CONTRIBUTING.md 明确:YouTube 播放列表形态的课程在条目中不把 “YouTube” 当作平台名列出,而是署 YouTube 创作者名;同时不收录单条短视频、不接受缩短链接(如 youtu.be 形式)。

RTL/LTR 显示规范:为什么清单行尾带着 ‏ 与 ‎

细心阅读 courses/free-courses-ur.md 会发现,绝大多数条目(共 24 行中的 21 行)在创作者名称之后紧跟着一个 &rlm; 实体(例如 - Fahad Hussain&rlm;),而 C# 小节标题写作 C#&lrm;。这些肉眼“看不见”的标记并非笔误,而是仓库为 Urdu 等 RTL 语言清单专门设计的显示修正方案。

在 free-programming-books 中,这一规范由 Python 实现的 RTL/LTR Markdown 检查器落地,即 scripts/rtl_ltr_linter.py 与其配套配置 scripts/rtl_ltr_linter_config.yml。与本文档直接相关的实现事实包括:

  • 文件名决定上下文方向is_rtl_filename()scripts/rtl_ltr_linter.py)通过文件名后缀识别 RTL 语言清单,其中显式包含 -ur.md;因此 free-courses-ur.md 整文件被判定为 RTL 基座上下文。
  • 按 Markdown 列表项逐行解析:linter 用正则识别列表项(LIST_ITEM_RE)与“标题 + URL + 创作者 + 元信息”的条目格式(BOOK_ITEM_RE,见 scripts/rtl_ltr_linter.py),这与本文件 * 标题 - 创作者&rlm; 的条目结构一一对应。
  • 关键词/符号分级检查:配置文件把 HTML、CSS、Java、Python、JavaScript、Android 等常见编程名词列入 ltr_keywords,把 C#、C++、.NET、Next.js、Node.js 等列入 ltr_symbols(见 scripts/rtl_ltr_linter_config.yml)。在 RTL 上下文中,两类文本的处理规则不同:docs/CONTRIBUTING.md 的 "Fixing RTL/LTR linter errors" 一节规定:RTL 文本中的 LTR 单词(如 HTML、JavaScript)应在其后追加 &rlm;;而 LTR 符号(如 C#、C++)应在其后追加 &lrm;。本文件 C# 小节标题 C#&lrm; 正是后者的直接实例。
  • 纯 LTR 创作者名提示:linter 对 RTL 上下文中的“纯 LTR 文本段”会输出 “may need trailing '‏' marker” 提示(见 scripts/rtl_ltr_linter.py),并按 bidi_mismatch / keyword / symbol / pure_ltr / author_meta 分类给出 error / warning / notice 不同严重级别(scripts/rtl_ltr_linter_config.yml)。这就是为什么本清单大多数条目在英文创作者名后都补了 &rlm;,以保证 RTL 渲染时名字与后文/上下文之间的视觉顺序不被打乱。

如果要在本地复现这份校验,可在安装 PyYAMLpython-bidi 依赖后运行:

python3 scripts/rtl_ltr_linter.py courses/free-courses-ur.md

检查结果会以 ::warning file=... line=... / ::notice ... 形式的 GitHub Actions 注解输出到日志文件,便于对照条目行号定位需要补方向性标记的位置。该脚本同时支持 --changed-files 参数,可配合 git diff origin/main... 只对 PR 中实际改动的行做注释(见 scripts/rtl_ltr_linter.pyscripts/rtl_ltr_linter.py)。

清单如何保持可信:收录口径与自动化校验

free-courses-ur.md 之所以能长期作为 Urdu 免费课程入口,依赖仓库层面的两条机制(详见 docs/CONTRIBUTING.md):

  • 收录口径严格:只收录真正免费的课程;要求课程不是“限时免费”、不要求提供邮箱才能访问,并且不接受托管于 Google Drive、Dropbox 等上传平台的链接;URL 优先 https、禁止短链、不使用跟踪型第三方托管,条目尽量选用最具权威性的来源。对于课程类资源,平台说明要放在括号中,YouTube 播放列表则以创作者署名(详见 docs/CONTRIBUTING.md)。
  • 自动化把关:仓库通过 GitHub Actions 对清单运行格式与字母序测试,保证 Index 与小节内部按字母序排列、条目格式(无多余空格、- 分隔创作者等)合规,并可用提交信息触发 URL 有效性检查(见 docs/CONTRIBUTING.md)。这意味着本文件每增加一门课程,都会经历“格式 + 排序 + 链接可用性”三重检查后才能合入。

此外,docs/CONTRIBUTING.md 对字母序给出明确判定规则:同一字母开头时继续比较第二位;one two 排在 onetwo 之前。这解释了为何 Index 中各主题之间、以及各小节内部的排列看起来是“严格字典序”。

小结:一份可直接用于检索与二次引用的 Urdu 免费课程资源表

courses/free-courses-ur.md 本质上是仓库为 Urdu/Hindi 受众维护的一张“免费课程目录表”,全部事实信息(课程名、创作者、分类归属、完整播放列表链接)都内联在文件中,便于人工浏览、自动化脚本解析与全文检索。学习者的推荐使用路径是:先按本文的 11 个分类快速定位目标技术栈,再从对应小节(各小节的行号区间已在文中给出)直接获取播放列表;维护者或研究者的路径则是:对照本文“收录口径”“格式约定”“RTL/LTR 标记”三节的内容,以 docs/CONTRIBUTING.mdscripts/rtl_ltr_linter.pyscripts/rtl_ltr_linter_config.yml 为规范依据,评估任何一条新增或待修复的清单条目。

登录后查看全文
热门项目推荐
相关项目推荐