信件

作者:Staff

信件

硬件是否正在赶上 Java?

在上个月,我领导的开发团队和我一起经历了相同的搜索,寻找合适的语言或 SDK,以便编写注定在多核系统(在我的例子中,来自 Raza Microelectronics 的 8 核/32 线程处理器以及未来的英特尔 8 核 CPU)以及单核系统上运行的软件。

因此,Nicholas Petreley 在 2007 年 11 月刊中发表的文章“硬件是否正在赶上 Java?”引起了我的极大兴趣,尽管最终我们得出了不同的结论。

尼古拉斯选择了 Java,因为它内置了一些多线程支持,尽管他承认这远非解决垃圾回收问题的灵丹妙药。

我不认为 GC 的实现是最重要的。我认为最重要的是能够编写多线程软件,使其错误尽可能少,就像单线程软件一样。在我的经验中,一旦您超越了可以在单独线程上运行的简单、大规模的软件部分,您就会遇到瓶颈。例如,在服务器软件中,通常很容易在不同的线程中运行每个客户端的请求。这很容易,因为两个客户端线程交互的位置数量以及它们共享的数据量是有限且明确定义的。(好吧,如果不是这样,它就会崩溃。)

但是,您如何超越这一点,并执行诸如并行运行 for 循环(在 C 或 Java 中)之类的操作,并知道实现是正确的,并且在未来五年内随着新的软件开发人员更改软件的其余部分,它将保持正确?

Java 在这方面无法帮助您,不会比 C、C++ 或 Python 更多,因为它们都有一个共同点:共享状态。在所有这些语言中,默认情况下数据是共享的。任何线程都可以写入它具有指针的任何内容。除了文档和代码审查以及未来开发人员的良好意图之外,没有保证您的线程使用的数据不会以导致它们崩溃的方式发生更改。

我的搜索结论是,多核软件的正确语言是单赋值语言:Erlang 或 Haskell。在这些语言中,默认情况下,软件在赋值后无法更改值。因此,可以在线程之间共享数据结构,而无需制定关于如何使用或不使用它的规则(锁、无锁算法等等)。在这些语言中,像普通 Java 或 C 变量一样工作的变量是例外,并且与其余变量的定义不同。事实上,在 Haskell 中,它们被非常明确地标记出来——以至于任何访问它们的函数(即使是读取)也被标记出来。

最后,我们决定用 Haskell 开发,使用它的 C 接口将其与我们现有的 C 代码连接起来。我以前与推崇 Erlang 的开发人员合作过(当时认为我们用 C++ 编码是疯了)。

PS. 您提到了 Python。Python(更准确地说,是 CPython 解释器,即每个人都在使用的解释器,我们拥有所有优秀的插件和工具支持)有一个致命弱点:全局解释器锁 (GIL)。它可能是多线程的,并且 Stackless Python 非常适合多线程服务器软件。但是,GIL 意味着 Python 代码无法在多个核心上运行。

——
Nicolas Dade

数字 77

我认识 Dave Taylor 很多年了,曾在各种 USENIX 会议上与他互动。他在“Work the Shell”专栏中对 shell 编程的讨论对我们所有人都有用。

不幸的是,对于他在 2008 年 1 月刊的Linux Journal上的最新文章,他应该选择另一个应用领域,而不是命理学。通过撰写此类文章,更多人被引导相信传统命理学是有效的。事实并非如此。

另一方面,系统学(www.systematics.org)是由 John Bennett 和其他人开发的一门学科,它断言数字实际上具有“定性意义”。Dave 本可以不“将数字与字母关联”,而是展示一个 shell 脚本,例如,枚举系统学主要“系统”(单子、二元、三元、四元、五元等等)中每个系统的各种“内部连接”。

让我们不要通过发表涉及无用、不真实的“学科”的文章来鼓励它们。Linux Journal应该关注真实且有价值的东西。

——
Kenneth Hood Jacker

Dave Taylor 回复: 有趣...你的名字中有 17 个字母,字母加起来是 77。当我开始编程时,我学习的语言之一是 Fortran 77。巧合吗?也许不是。无论如何,感谢您的来信,Kenneth。

X 服务器糟透了

关于这个问题,我有一个更新[参见LJ 2008 年 4 月刊的“信件”]。我终于厌倦了旧笔记本电脑内存不足,并迁移到了新的联想电脑。我目前主要使用一个工作区,所有窗口都重叠,我似乎和我妻子讨厌可平移虚拟桌面一样讨厌它。最近在家用台式机上重新安装了 Linux(从 Red Hat 9 升级到 Ubuntu 7.10)后,我体验了 Compiz 及其所有花哨的功能。这让我怀疑为什么在联想电脑上,Compiz 不允许我启用任何视觉效果。

事实证明,这又是英特尔 X 服务器糟透了的又一个例子。似乎在这种 X 服务器下,您可以选择 Xv 加速视频播放或 Compiz。Ubuntu 通过将英特尔 X 服务器列入黑名单“解决”了这个问题。我发现我可以通过添加以下内容来绕过此黑名单SKIP_CHECKS=yes到 /etc/xdg/compiz/compiz-manager,但是下次我尝试播放视频文件时,我发现我无法播放。有一些解决方法,配置各种视频播放器应用程序以使用默认值 (Xv) 以外的东西进行视频输出,但这些方法会导致速度较慢或错误较多(视频始终在最前面)的行为。

有人建议运行 i810 X 服务器而不是较新的英特尔 X 服务器,但当我尝试这样做时,X 根本无法运行。

如果我早知道这款视频芯片组的 X 服务器支持有多糟糕,我在购买新笔记本电脑时就会将使用它的机器列入黑名单。

我仍在等待 Xi 从英特尔获得必要的编程信息,以便他们可以生产一款希望不会那么糟糕的英特尔 X 服务器。

顺便提一下,ASUS Eee PC 也使用了类似的英特尔视频芯片组,并且也遇到了所有这些相同的问题。我最近在工作中获得了一台 Eee,那块小屏幕简直乞求一个虚拟/可平移桌面。可惜它使用了英特尔 X 服务器。经常会有窗口弹出,必须将它们部分移出屏幕(Alt-click-drag)才能访问上面的按钮。这些事情对于 Eee 来说没有那么重要,因为我主要想要它作为路由器配置终端和“随处可去”的便携式互联网终端,并且在订购之前我就知道我对屏幕不会满意。如果 Eee 稍微大一点(使键盘不那么拥挤),屏幕分辨率和尺寸更大一点,当然,还有一个不那么糟糕的非英特尔视频芯片组的 X 服务器,那就太好了。

——
Jon Lewis

更多商业内容?

关于 Nick Couchman 在 2008 年 3 月LJ上发表的“请提供更多商业内容”的信件,我部分同意 Nick 的观点,但必须表示他可能错过了某些文章的商业方面。就像他说的那样,关于学校 LTSP 等的文章很棒,但他有没有考虑过将其用作 VDI 的免费(啤酒)连接代理?以 XP 许可证作为唯一的付费产品,我使用 LTSP 通过 Etherboot 或 PXE 将旧机器启动到指向该人的 VMware 服务器上的 XP 虚拟机的 rdesktop 屏幕中。Linux 一直延伸到 VM。我还想提请注意 Dave Richards 的博客 (davelargo.blogspot.com)。他在佛罗里达州拉戈市部署了 500 多台瘦客户端。整个城市运营都运行 Linux、Evolution、OpenOffice.org——非常棒。

我希望看到更多与商业相关的文章,例如在 VMware 服务器或 ESX 环境中使用 Coraid 的 AoE 产品。但是,部分乐趣在于能够阅读一篇LJ文章,并思考“嘿!我可以将其应用于我的业务。”

——
Chris Turner

帮助他

我写信是为了回应 Dan Sawyer 在 2008 年 3 月刊LJ上发表的题为“桌面必备软件”的文章。

首先,我想说这篇文章很棒,文笔流畅,非常清晰。我对 Sawyer 先生在文章中所说的任何内容都没有异议,并且同意他对优秀 Linux 桌面应用程序的许多选择。

就我个人而言,从我的 Mac OS X 平台迁移到 Linux 作为桌面时遇到的问题是专业音频领域。我还没有看到任何程序可以替代我的三四个“必备”应用程序。我正在了解到可能存在替代品,如果我能找到一个适合我需求的替代品,我将用一台不错的 Core Duo Intel 盒子替换我的 Mac,很可能运行 Debian。我需要替换的应用程序是 Logic Express 或另一个音频软件包,如 Adobe Audition 2 (Cool Edit),用于多轨录音,以及 MegaSeg(这是一款 DJ 软件,www.megaseg.com)。这些是我最大的阻碍。我一直不太热衷于 iTunes 的替代产品,但不得不承认自 2006 年以来我没有看过任何项目。

我的职业是 Web 开发,我确实使用 *AMP。在 Linux 上,我发现 Bluefish Editor 是我的首选编辑器,并且可以完成我 Web 开发的大部分需求。我也非常愿意使用 GIMP 或 Krita,正如 Sawyer 先生指出的那样,但我没有切换的主要原因是因为 GIMP 缺少我一直使用的插件的第三方插件支持,即 Alien Skin Software。如果他们为 GIMP 编写 Xenofex,我将立即使用它。是的,从 Photoshop 过渡到 GIMP 有点曲线,只是因为你必须学习 GIMP 的作者如何称呼你最喜欢的工具。一旦你过去了这一点,你应该能够在 GIMP 中完成你在 Photoshop 中所做的一切(在我看来),除了前面提到的插件,到目前为止我还没有弄清楚如何在没有它们的情况下产生这些效果。此外,Photoshop 中的图层样式似乎在开源对应物中缺失。

卖掉我的 Mac 并完全转向 Linux(我的 Debian)会很不错,但我仍然不相信我所做的一切都涵盖了,至少到 2006 年是这样。

——
J. Mike Needham

不要抨击 Ada

Dave Taylor 在他 2008 年 3 月的文章“理解 Shell 脚本速记”中说,Ada 使程序员可以轻松地缩写他们的代码(“缩写他们的代码以使其更短”!好吧,是的,Dave,确实如此!)以至于变得晦涩难懂。

我从未(在 25 年里)遇到过一位 Ada 程序员认为编写难以理解的代码是聪明、有趣或男子气概的。事实上,该语言的设计者拒绝了“简洁”的结构,这些结构可能会使代码更容易编写,但如果他们认为这些结构会使代码更难阅读,则会被拒绝。

——
Simon Wright

每月照片

有照片想与LJ读者分享吗?请将您的投稿发送至 publisher@linuxjournal.com。如果我们在杂志上刊登,我们将免费赠送您一件 T 恤。

Letters

Natuba.com 的 Cory Wright

加载 Disqus 评论