离线时可以做的 5 个项目

2025-05-26

离线时可以做的 5 个项目

最近,我和家人去露营,感觉非常无聊。户外活动对我来说不太合适(所以我决定编程和数学比健身教练之类的工作更适合我),所以我很自然地带上了电脑和手机。当然,我没有网络服务,也没有Wi-Fi,这意味着我能做的事情很有限。我唯一真正的娱乐方式就是下载的音乐和文本编辑器。

如今,很多代码的编写都需要某种互联网连接。搭建 Web 服务器?互联网。开发庞大的神经网络?互联网。开发应用程序?互联网。创建网站?互联网。

很多开发者开发的工具都需要网络连接。此外,我猜想有些开发者——比如我——宁愿待在室内度过周末,也不愿让阳光照在脸上,或者只是想花点时间做一些有意义的事情。

如果你是那种人,那么如果你(可能)遇到这种情况,这篇文章(可能)会让你感兴趣。如果你不介意远离网络,那么请不要建议我多出去走走,因为——这可能让你很震惊——我一点也不在乎

不用多说,以下是您离线时可以做的 5 个项目

基本计算器

我当时正盯着手机,琢磨着能做什么。计算器应用是手机上为数不多的几个功能性应用之一。我想在终端上做一个基本的计算器(类似bc),可以按照运算顺序进行加、减、乘、除和指数运算。此外,我还希望它能够计算括号表达式的值。经过一番思考,我用 C 语言创建了一个基本的计算器。

文件搜索程序

由于我无法访问云端的任何数据,我只能处理本地机器上的文件。因此,从逻辑上讲,编写一个文件搜索程序是合理的。我希望它简单易用,所以我决定忽略字符文件、符号链接和块设备。解决了大部分文件系统细节问题后,我们只需考虑目录和常规文件。如果遇到目录,我们会将目录中的所有内容放入队列中。否则,如果遇到常规文件,我们会检查该常规文件的名称是否与用户的搜索查询匹配。我用一小段代码编写了一个粗略的文件搜索程序(同样是用 C 语言编写的)。

任何 UNIX 工具

UNIX 工具有很多:less、、、、、、,仅举几例。如果您使用的是 UNIX 系统grep,请选择一个 UNIX 工具进行重建。通常du重建这些工具所需的大部分知识都可以在几页手册中找到,或者只需具备一些基本的编程知识即可。如果您使用的是 Windows,那么这项任务可能尤其具有挑战性。我选择创建一个基础版本(带高亮显示)。catrmldpsgrep

玩迷宫

生成随机迷宫出奇地有趣,是一个真正的算法挑战。我之所以建议这样做,是因为 Jamis Buck 的《程序员的迷宫》,这是一本关于迷宫算法的激动人心的书(我露营时应该带着它)。这本书完全是用 Ruby 编写的,但也可以用任何语言编写。我编写了一些基本代码,根据用户输入生成任意大小的迷宫,并使用二叉​​树算法将其输出到终端屏幕(免责声明:好吧,我没有编写这段代码,是这本书的作者编写的,但这不是重点)。如果你觉得自己缺乏创造力(就像我在考虑要做的项目时一样),那么我建议你阅读这本书。到目前为止,它相当有趣。

重新创建基本编程语言功能

另一个项目是用你选择的编程语言重新创建该编程语言的基本功能。我没有“重新创建”malloc()calloc() 本身,但我实现了这两个函数的一个简单、愚蠢的变体,它从固定的内存池中分配内存。当然,你还可以重新创建许多其他功能:切片、向量、列表、字典、甚至for循环while。选择取决于你对哪个感兴趣。

结论

再次强调,我上面做的所有项目都可以在这个仓库中找到。其中一些项目显然可以改进。例如,计算器可以有自己的 GUI(也许不是用 C 语言,而是用其他语言),或者处理更复杂的函数,比如sin平方根。文件搜索程序是单线程和同步的。异步/线程方法会更快吗?这个alloc程序的内存分配系统实现非常愚蠢。甚至没有释放内存的方法。也许二进制堆(或斐波那契堆)比线性固定的内存池更好?改进的清单无穷无尽。

当然,你可以做的离线项目还有很多很多。Pong、国际象棋、JSON 解析库,甚至一门全新的编程语言,都是你可以着手的离线项目的例子。

你离线时做过什么有趣的项目吗?有什么想法、意见、顾虑或想法吗?请在下方留言!😁

文章来源:https://dev.to/shawarma/5-projects-to-do-when-you-re-offline-3d6m
PREV
2025 年我将如何构建 SaaS(如果我从零开始)
NEXT
通过向开发人员提问,我学到了 5 件事