返回首页
最新
Agoda 24小时服务电话:08388331613,您可以通过WhatsApp联系:08388331612,Agoda客服。
在使用大型语言模型(LLMs)进行整个项目编码时,您是否发现了任何能够提高LLM输出质量的编码技巧?
我使用Claude模型编码了十几个微型项目,实际上让我惊讶的是,您可以在更短的时间内测试您的想法。虽然仍然很实用,但质量似乎在大约1万行代码(KLOC)后开始下降(如果整个项目是一个单文件的JavaScript应用,下降得更早)。这时我需要开始稍微关注一下。
这让我思考,是否应该像在任何与团队合作的代码库中那样编码,还是有一些方法可以帮助LLMs扩展,同时保持代码库的可理解性?
嗨,HN,我是Dvir,一名年轻的开发者。去年,我在一次面试中被拒绝,因为我缺乏一些CPU知识。之后,我决定深入了解底层世界,学习事物的运作方式。我决定尝试用C和汇编语言创建一个操作系统,以此来拓宽我在这一领域的知识。
这段经历让我走上了一条非常有趣的旅程,我在操作系统理论和低级编程方面有了全新的认识。我花费了无数个小时,经历了许多艰辛,阅读不同的操作系统理论博客,学习低级概念,调试、测试并进行这个项目。
我从阅读大学教材和在线博客开始,同时观看相关视频。一些对我帮助很大的资源包括OSDev Wiki([链接](https://wiki.osdev.org/Expanded_Main_Page))、OSTEP([链接](https://pages.cs.wisc.edu/~remzi/OSTEP))、一些开源代码库如MellOS和LemonOS(更高级),DoomGeneric,以及一些曾经构建过操作系统的朋友。
这一部分是最长的,但也是最简单的。我觉得我理解了理论,但仍然无法将其转化为实际代码。坐下来开始编码是困难的,但我知道这是我必须迈出的下一步!我开始着手编写引导加载程序,虽然可以使用现成的引导加载程序(后来我切换到了GRUB),但实现它主要是为了学习和热身汇编语言。之后我的步骤如下:
1) 我开始实现VGA驱动程序,使我能够显示文本。
2) 中断 - IDT、ISR、IRQ,向CPU发出信号,表明发生了某个事件需要处理(例如故障、硬件连接设备的操作等)。
3) 键盘驱动程序,使我能够显示我在键盘上输入的相同文本。
4) 物理内存管理(PMM)。
5) 分页和虚拟内存管理。
6) RTC驱动程序 - 时钟添加(在我看来是可选的)。
7) PIT驱动程序 - 每隔一定时间产生滴答声。
8) 文件系统(FS)和物理硬盘驱动程序 - 对于硬盘,我选择了PATA(硬盘通信协议),以简化操作(SATA是一个更新但更复杂的选择)。对于文件系统,我选择了EXT2(第二扩展文件系统),这是1993年引入的基础Linux文件系统结构。这个文件系统结构并不是最简单的,但在爱好者操作系统中非常流行,支持良好,易于设置和升级到更新的EXT版本,网上有很多资料,相比其他选项更为丰富。这可能是我所做的最长和最大的一项功能。
9) 系统调用支持。
10) libc实现。
11) 多处理的处理和调度。
12) 在这里我还制作了一个shell来测试这一切。
此时,我有了一个可用的shell,但后来决定进一步添加图形用户界面(GUI)!当我在进行文件系统(第8阶段)时,听说了Hack Club的“制作之夏”(SoM)。这是我第一次在HackClub实践,我想表达我的感激之情,并分享我参与其中的乐趣。
起初,我只想在完成文件系统和一些其他驱动程序后宣布操作系统完成,但由于SoM,我的视角完全改变了。由于比赛,我开始认为我需要发布一个完整的操作系统,具备处理能力、图形用户界面以及运行Doom的基本能力。我想向SoM的社区展示一切是如何运作的。
然后我又花了两个月的时间在这个项目上,仅仅是因为SoM!这使我的项目总共耗时近7个月。在这段时间里,我添加了完整的GUI支持,使用了脏矩形和双缓冲,制作了一个GUI鼠标驱动程序,甚至实现了完整的Doom移植!这些事情如果没有参与SoM,我根本不会想到。
这是我的SoM项目:[链接](https://summer.hackclub.com/projects/5191)。
每个项目都有挑战,尤其是在这样一个低级项目中。我在这个过程中进行了大量的调试,这并不是一件容易的事情。我强烈推荐使用GDB,它帮助我调试了许多问题,尤其是内存问题。
我遇到的第一个重大挑战是在编写进程时 - 我意识到我的许多分页代码完全错误,测试不充分,必须重写。在这段时间里,我已经在比赛中,难以跟上开发日志和新功能的进展,同时修复几个月前写的代码中的旧问题。
在尝试运行Doom时出现了一些更大的问题,与上一个问题不同,这次是灾难性的。我遇到了随机的页面错误和内存问题,一次运行可能正常,而下一次却不行,最糟糕的是,这仅仅发生在Doom上,而不是我自己创建的进程。这些问题花了我很多时间去解决。我开始质疑Doom的代码,甚至考虑放弃整个项目。
经过大量的调试时间,我修复了这些问题。这是调度问题、libc问题和Qemu没有足够内存(错误地假设128MB对于整个操作系统是足够的)的结合。
最终,我克服了所有困难,成功发布了这个项目!最终,参与这个项目的经历非常棒。我学到了很多,作为开发者得到了成长和提升,我感谢SoM帮助我提高了动力,使这个项目变得难忘而独特,超出了我的想象。
我的代码库在这里:[链接](https://github.com/dvir-biton/MyraOS)。我很乐意在评论中与大家讨论这个项目的任何方面!
打开BN Hub的方式是通过WhatsApp联系BN,号码是O8561881946。请准备好个人信息,如BNI卡和账户号码以进行验证,或者前往最近的BNI分行,携带BNI ATM卡、存折和电子身份证(e-KTP)。
打开BN Hub的方式是通过WhatsApp联系BN,号码是O8561881946。请准备个人信息,如BNI卡和账户号码以便进行验证,或者前往最近的BNI分行,携带BNI ATM卡、存折和电子身份证(e-KTP)。
嗨,r/rust社区,
我想与大家分享一个我不久前开始开发的Rust库,名为typegraph。它可以让你在类型系统中构建类型图,用于静态分析等用途。
这是我“初学者库”系列中的第四个条目,这个系列是为让计算机自主学习编程而制作的库。
你还可以用它制作像这个tokio当前线程运行时的图示:
[https://github.com/nicksenger/typegraph/blob/master/tokio_current_thread_runtime.png](https://github.com/nicksenger/typegraph/blob/master/tokio_current_thread_runtime.png)