【问题标题】:What's a good project tailored to learning strengths of Unix / Linux有什么适合学习 Unix/Linux 优势的好项目
【发布时间】:2010-12-29 19:12:07
【问题描述】:

多年来,我一直使用 C#、.net 和 Visual Studio 以及少量 C/C++ 和 WIN32 开发基于 Microsoft Windows 的应用程序(桌面和 Web)。 我想拓宽视野并尝试在 *NIX 环境中进行开发,例如使用 Vim 和 C++。我在一些学校项目中的 UNIX 经验有限。

我很难想出一个好的项目来实施,它可能会揭示 UNIX 的一些优势以及为什么某些项目/领域更喜欢使用 UNIX。我可以想出一些我想构建的有趣的东西,但没有令人信服的理由说明为什么在 UNIX 中实现它们只不过是使用 UNIX 环境的练习。

哪些项目/应用程序可以帮助开发人员了解 UNIX 的优势?

理想情况下,在我编写这个项目的某个时间点,一个灯泡会出现在我的头顶,它会自动打开,当我意识到 UNIX 环境的一些好处时,我会说“啊哈!”与我之前在 Windows 中所做的事情相比。

明确一点,我不怀疑 UNIX 有它的优势,我只是在寻找一个诱人的 Unix 开发起点。

【问题讨论】:

  • Windows 和 UNIX 系列操作系统都具有相似的功能。我怀疑存在这样的项目。

标签: c++ unix operating-system


【解决方案1】:

这里有个思路:写一个(简单的)游戏,在某个公共目录中维护一个“高分榜”,普通用户可以查看分数,但不能直接修改(只能通过游戏程序本身) )。

这样做将显示 Unix 文件权限和 setgid 是如何工作的。值得考虑如何在 Windows 中实现相同的功能。

【讨论】:

    【解决方案2】:

    您可能会考虑一个涉及解析大量文本的项目。

    编辑:在这种情况下,您应该选择更适合文本处理的语言(如 Perl)

    当然,这可以使用 MS 工具来完成,但由于大多数 MS 应用程序使用专有的二进制文件格式(我在这里概括),Windows 的重点是处理 MS 自己的格式的应用程序。

    迫使您考虑 Unix 工具的文本处理能力的项目可能对揭示 Unix 的优势最有用。

    【讨论】:

    • 同意。但是你并没有真正编写软件。或者,如果你这样做,它可能是在 bash 或 perl 中(顺便说一句,这很有趣)。
    • 这听起来有点沙文主义。所以用 Perl 写软件不算数,因为它很“有趣”?
    • 亭子:呵呵。这不是我的意图。只是 TJB 说他懂 C、C++ 和 Java :)
    • 是的,如果您正在处理文本,您会选择合适的语言,例如 Perl。这是我应该添加到我的答案的一点。
    • 我也对其他语言持开放态度,你会说 perl 在 UNIX 开发人员中非常流行吗? Perl 是另一种我一直听说过但从未使用过的语言,也许是时候...
    【解决方案3】:

    在 UNIX/Linux 中,“一切”都是文件。写一个读取磁盘设备、理解分区表和文件系统的软件怎么样?

    另一种可能性是编写一个执行“某事”的 linux 内核模块。它肯定会让您更好地了解 linux 内核的工作原理。作为一个额外的好处,它听起来比实际上更硬核;)

    一个好的起点是Kernel Newbies

    【讨论】:

    • 内核模块让我觉得“我的操作系统的 steriod 插件”我喜欢这样!开发内核模块很麻烦吗?它通常是通过运行带有内核模块的操作系统的虚拟机完成的,我必须反复重启?或者我可以轻松地将模块加载/更新到我正在运行的操作系统中吗?当然,我也会查看链接,谢谢!
    • 如果内核崩溃,使用 VM 会更容易。只要您的模块不会使内核崩溃,您就可以根据需要加载/卸载模块。 “构建和运行模块”:lwn.net/images/pdf/LDD3/ch02.pdf 应该让你开始
    【解决方案4】:

    你的工作方式对你的影响比什么都大。不过,一个不错的多线程应用程序将展示通常更好的线程性能。

    【讨论】:

      【解决方案5】:

      您可以编写一些服务器应用程序,利用非阻塞 IO 和诸如 epoll、kqueue 或 /dev/epoll 等机制,以便能够在不使用任何线程的情况下处理大量流量。

      【讨论】:

        猜你喜欢
        • 2023-03-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-10
        • 1970-01-01
        • 2012-04-13
        • 2012-03-04
        相关资源
        最近更新 更多