>_ DevTrendszh

语言

首页

语言

板块

前端 后端 移动端 DevOps AI / ML 游戏开发 区块链 嵌入式 安全
Unknown

停止无休止地学习理论,终于构建出令人印象深刻的作品集

听起来很熟悉吧?你已经学会了一门新语言的语法,搞清楚了装饰器或指针,但真要动手的时候,脑子却一片空白?"我应该做什么?"——这个问题比午夜构建失败更能扼杀动力。你可以第一百次做一个待办事项列表,或者你可以去看看一个仓库,它已经成为那些想要通过真实任务获得实践经验的程序员的真正圣经。

今天我们要介绍的是 karan/Projects——一个庞大的开发创意列表,在 GitHub 上已经获得了超过 47,000 颗星。这不仅仅是一个"练习集合"——而是一个结构化的编程世界指南,从简单的计算到网络协议和图形都有涉及。

为什么这个列表成为了传奇

大多数学习课程的主要问题是它们给你工具但不给你上下文。你知道 for 循环如何工作,但你不理解为什么在机票预订系统的上下文中需要它。

Karan Goel 的项目解决了这个问题。作者收集了数十个可以在任何编程语言中实现的实用任务。无论你是在学习 Rust、Python,还是试图弄清楚汇编——这些任务都是通用的。

顺便说一句,这个项目还有一个单独的解决方案仓库,你可以在这里查看其他开发者如何在 C++、Java、Go 或 Haskell 中实现相同的任务。这是一种比较不同语言的方法和惯用法的绝佳方式。

里面有什么:从数学到安全

整个列表被分成逻辑类别。让我们浏览一下最有趣的一些,了解它们可以教你什么。

1. 数字与经典算法

这里是迈出第一步的地方。但不是无聊的"打印 Pi 的值",而是要求你创建一个抵押贷款计算器或货币转换器。

  • 为什么有用: 你将学会处理数据类型、计算精度(你好,JS 中的 0.1 + 0.2),以及基本逻辑。
  • 示例: 编写一个程序,根据给定面积计算地板瓷砖的成本,考虑每单位的价格。看起来很简单?加上考虑切割瓷砖和不同房间形状——现在你有了一个有用的微服务。

2. 文本处理 (Text)

文本是网络的基础。在这一部分,任务从经典的 Fizz Buzz 到创建你自己的类似 Notepad 的文本编辑器。

  • 有趣的任务: 凯撒密码和维吉尼亚密码。这是密码学的基础。通过实现它们,你会理解最简单的数据保护算法是如何工作的,以及为什么它们如此容易被破解。

3. 网络与 Web (Networking & Web)

对于那些目标是后端或 DevOps 的人来说,这可能是最"有肉"的部分。

  • 你可以构建什么: 端口扫描器、Whois 工具,或一个按计划检查网站可用性的程序。
  • 实用价值: 你将理解套接字、HTTP 请求,以及数据如何在计算机之间实际移动。例如,编写你自己的页面抓取工具将教你解析 HTML 和使用正则表达式。

4. 类与面向对象设计 (Classes)

如果你对继承和多态感到困惑,这一部分就是为你准备的。不是抽象的"动物"和"狗",而是要求你设计:

  • 产品库存管理系统。
  • 公司员工层级(经理、小时工、高管)。
  • 酒店预订系统。
  • 关键是什么: 在这里,你将在实践中理解为什么组合通常比继承更好,以及如何正确设计应用程序架构,这样当你添加新功能时它不会崩溃。

对开发者的技术价值

这个项目不强制指定技术栈。这些是"白标"任务。在我的实践中,当我需要快速学习一个新框架时,我经常使用这个列表。想学 FastAPI?从数据库部分构建一个"Budget Tracker"的 API。想理解 Go 中的多线程?从线程部分实现"Bulk Thumbnail Creator"。

示例:这如何提升你的技能

让我们以"信用卡验证器"任务为例。

  1. 你需要学习 Luhn 算法(校验和)。
  2. 实现输入处理(字符串验证)。
  3. 为不同卡类型(Visa、Mastercard)编写测试。最终,一个小任务变成一个包含逻辑、测试和文档的完整迷你项目。

如何明智地使用这个仓库

不要试图一次解决所有问题。以下是我关于如何充分利用它的建议:

  1. Fork 这个仓库。 这将成为你的个人检查清单。
  2. 选择一个 最接近你的类别(例如,如果你想进入 Web 领域,从网络部分开始)。
  3. 增加复杂性。 如果一个任务看起来太简单,添加一个 GUI、一个用于存储结果的数据库,或者将所有东西打包到 Docker 容器中。
  4. 查看他人的解决方案。 写完代码后,去看看 Projects-Solutions,看看别人是怎么做的。这会让你看到很多细微之处。

总结:值得花时间吗?

绝对是值得的。在这个每个人都从 YouTube 教程复制项目的世界里,独立解决这个列表中的任务会让你在其他初级和中级开发者中脱颖而出。这是构建一个你不羞于向雇主展示的作品集的好方法,因为每个项目背后都是你的逻辑和你的架构决策。

如果你陷入了"学习循环",不知道下一步该去哪里——就从"经典算法"或"数据库"部分随便选一个任务开始编码吧。GitHub 上见!

相关项目