为什么Adobe Soundbooth仅限英特尔?

上周,Adobe发布了针对Mac OS X和Windows的新声音编辑应用程序的公开测试版,Soundbooth的奇怪的是,Mac版本只有在基于Intel的Mac上运行。

非开发人员的技术背景,以解释多个计算机体系结构的开发难度为目标,但将保持相对简短,因为维基百科在这一切都有优秀的条目

计算机处理器读取并执行指令机器代码一条指令可能会存储在一个特定的值寄存器(一个寄存器是少量的非常快的内存),或添加两个寄存器的值Modern processors execute billions of instructions每秒

即使对于大多数程序员来说,机器代码也是难以理解的几乎没有人写机器代码,即使机器代码只有计算机处理器接受的东西作为输入。汇编语言是一种低级语言,或多或少,是一种更加人性化的机器代码语法Today, very few programmers write assembly language, but it仍然用于需要每一盎司效率的代码。

汇编语言是很难的一个问题即使你是一个有天赋的程序员,你也不觉得它很难,但这肯定很乏味 - 没有什么便利或捷径,也没有抽象另一个问题是,每一个家庭的电脑处理器使用不同指令集的机器代码,因此,一个不同的汇编语言因此,例如,摩托罗拉680×0系列处理器 - 原始Macintosh使用的处理器 - 了解其自有品牌的机器代码机器代码68000处理器可以运行在68020年和68030年,但是它不能运行,从英特尔x86处理器家族。1

但大多数程序员不编写汇编语言,他们使用C,C ++和Objective-C等高级语言编写一个编译器是将C代码转换为机器代码的原因如果您编写可移植C,其中“可移植”是指不依赖于专有或非标准API的代码,您只需使用不同的编译器重新编译相同的代码即可为不同的处理器生成机器代码实际上,这就是大多数Unix软件的工作方式你下载的存档C代码,编译它,它应该“工作”,无论哪种类型的处理器系统使用。

通用二进制文件的技巧是Xcode核心的GCC编译器现在能够生成包含的可执行文件这两个PowerPC和x86机器代码,Mac OS X内核知道哪个通用二进制的一半是一个适合你的电脑。

另一个低级问题是字节序阅读维基百科条目细节,但将能够很好地满足我们的概括描述有些处理器架构大端法,包括PowerPC和摩托罗拉68000个家庭其他人则低位优先,尤其是英特尔x86家族The difference is the order in which bytes are arranged in a multi-byte sequence; on a big-endian system bytes are ordered from most to least significant; on a little-endian system, they’re ordered from least to most significant维基百科使用了从左到右语言(如英语)和从右到左语言(如希伯来语)之间差异的类比 - 两者都不比另一种更有效,它只是一个随意的决定。

但处理与字节序相关的问题是棘手的 - 不像英语和希伯来语,一目了然很容易识别,字节只是1和0的序列你不能只看一个块的字节和知道他们的字节顺序In some ways it’s more like telling the difference between ambiguous date formats — “1/2/2006” means 2 January 2006 in the U.S., but means 1 February 2006 in Europe你不能告诉什么目的只是通过观察“1/2/2006”。

字节顺序的差异会导致一系列问题,当软件会假设字节顺序如果您的软件采用big-endian字节顺序,并且您为x86等小端架构重新编译,则该软件将无法按预期工作。

Apple从PowerPC切换到Intel处理器意味着Mac开发人员必须处理这两个问题:软件机器代码的新指令集和不同的字节顺序当苹果从PowerPC 68000处理器在90年代,开发人员只需要处理新的指令集,这两种架构大端法。

关于Soundbooth和制作通用二进制文件的难度

一些Mac开发人员面临的问题(在某些值得注意的情况下,仍然面临着)转向通用二进制文件的一个问题是您需要使用GCC作为编译器大型软件产品使用CodeWarrior不能被编译为编写通用二进制文件,他们首先需要从CodeWarrior Xcode迁移等大型项目,微软Office和Adobe Creative Suite,这种迁移,就其本身而言,是一项艰巨的任务。

其他潜在问题包括字节序问题和特定于处理器的汇编代码在大多数情况下,您可以简单地重新编译C代码以生成不同指令集的机器代码,但您必须完全重写任何汇编代码(针对特定于处理器的扩展(如PowerPC)的代码也是如此。AltiVec技术)。2

So, Mac developers who were already using Xcode, and whose code made few, if any, assumptions about endianness, were generally able to produce universal binary versions of their software in short order: a few days for something beta quality, a few weeks for something tested and vetted仍在使用CodeWarrior的开发人员在他们面前的时间更长。

But these are the problems facing developers of现有PowerPC-only Mac软件的开发人员软件,开始在WWDC 2005英特尔宣布后,已经知道这笔交易:使用Xcode,不要假设底层的处理器架构Apple编写通用二进制文件的方式与苹果公司的方式相比,继续生成通用二进制文件并不比为单一体系结构生成二进制文件要多得多。

这就是让Soundbooth仅使用英特尔处理器的要求所以好奇我所知道的其他仅限英特尔的Mac应用程序就是这样的相似的桌面,很明显为什么只能适用于基于英特尔处理器的mac电脑上相似之处——它是主机、虚拟机,其他操作系统,编译这个处理器。

几个Adobe员工提供了解释,但没有一个是令人满意的。在论坛帖子中,Adobe音频应用程序项目经理Peter Green写道:

It actually would have been very expensive for us to support both PPC and Intel MacWe would have no application to show today had we decided to do this.

From a coding standpoint, the architectures and environments needed nearly double the time it takes to write, build, integrate, and test.

From a testing standpoint, again, the time is nearly doubled to check everything in both platforms.

编写、构建和测试非常不同的任务它花两倍的时间来构建(或称编译)通用二进制,因为编译器需要生成机器代码的架构但是,在开发过程中,使用Xcode的程序员可以编译开发构建,而不是用于分发,仅针对其本机架构即苹果笔记本电脑如果你写的代码,您可以编译开发构建,只有包含Intel-specific代码编译软件的生产版本时,只需要编译完整的通用二进制文件。

简而言之,增加构建时间似乎并没有其他Mac开发者的问题一个小小的不便,在最坏的情况。

测试一个通用二进制也需要更多的时间比测试一个单一架构的二进制一个好的测试过程应该包括一些检查endianness-related缺陷,例如但? No developers I know agree with this assessment.

然后是编写代码如果Soundbooth完全是用标准C或c++编写,和他们使用GCC,没有额外的写作是必要的:同样的C代码可以编译为架构。

那是两个大的如果但是,我最好的猜测是Soundbooth完全用标准C或c++编写的,但是,这部分都写在x86汇编和/或部分矢量化,专门为英特尔C编写的代码SSE指令集(SSE英特尔的大致相当于PowerPC的AltiVec——相同的基本想法,和适合相同的一般问题,但完全不同于编程源代码级别。)

x86汇编和SSE-specific C代码不能为PowerPC只是重新编译。

不过,如果它不是,它是,因为开发通用二进制文件需要两倍的简单的解释,甚至几乎两倍的时间,并不适用于大多数应用程序。

Adobe的解释

我见过最糟糕的解释关于Soundbooth Adobe的缺乏PowerPC支持来自Adobe项目经理约翰•纳写了一篇关于这个主题的博客文章

Here’s the reality: Apple’s migration to Intel chips means that it’s easier to develop for both Mac and Windows, because instead of splitting development resources optimizing for two different chip architectures, you can focus on just one.  That’s all good, and it makes Mac development more attractive.

容易跨平台开发感兴趣的当然是Adobe,但它不是大多数Mac用户关心的事情这意味着“我们太懒了”我不认为是这样,Adobe的工程师太懒惰了——但这就是这个理由听起来像。

Now, if you were Adobe and had started developing a new application at exactly the time when Apple told you, “This other chip architecture is dead to us,” would you rather put your efforts into developing for that platform, or would you focus elsewhere?

也许Nack应该问Lightroom团队?

我不想很可爱,但是,认真——纳克的言论似乎暗示这是一个明显的决定Adobe开发一个全新的media-editing Mac应用程序仅使用英特尔处理器,当Lightroom——这是一个普遍的二进制——在这里存在相反的证据Lightroom还驳斥了Nack的观点,即Adobe客户对于期望新软件仍然支持PowerPC是不合理的。

我也认为这是有点言不由衷地说,苹果公司的PowerPC是“死他们”他们通过今年8月销售powerpc系统了我不认为PowerPC对于苹果公司来说比G3更加“死”,当他们转向全G4阵容时我不是说苹果计划很快跳回PowerPC——但我不认为这是完全不可能的,我认为Apple试图向开发人员传授的教训是把Mac或Mac OS X,是针对一个单一的计算机体系结构。

纳写道:

If you’re a Mac user, I think it’s important to ask yourself, “Would I rather encourage software developers to bring their titles to the Mac, or would I rather jump down their throats given any opportunity?  If Adobe were to bring other Windows-only apps to the Mac, would I be happy about that, or would I rather give them hell for focusing on features & functionality rather than a discontinued chip architecture?”

如果你问我,这有点侮辱 - 而且是防御性的首先,一开始就是一个典型稻草人论点明显比其他选项”鼓励软件开发者将他们的头衔Mac”和“跳下来他们的喉咙给任何机会”这有点接近“如果你不和我们在一起,你就是在反对我们。”

其次,这意味着Mac用户应该感谢Adobe正在开发Mac软件新闻快讯:Mac是做的很好你要么看到价值在发展中Mac软件或你不,但Mac用户不会感谢你开发Mac软件。

第三,将PowerPC称为“已停产的芯片架构”并非虚假,但它肯定是倾斜的把它称为“几个月前我买的3000美元Power Mac G5”也是如此现在,它不像G5-based权力mac燃烧了2006年销量排行榜,但他们销售相当体面地,考虑到写在墙上。

具有讽刺意味的是,很多人购买这些最近的Power Mac G5都是因为他们是富有创造力的专业人士谁使用Adobe软件- 软件不能在英特尔硬件上本机运行,直到2007年某个时候才会运行I.e., Adobe, more than any other software developer, is responsible for creative professionals buying late-model high-end PowerPC hardware.

的消息,苹果是切换到英特尔x86处理器是一年半是老的亲但是有优秀、高端权力mac销量就在几个月前对拥有PowerPC的Mac用户,特别是那些拥有G5的Mac用户来说,期望他们的计算机在未来几年内保持完全可行性并不是一点荒谬。

关键不在于Adobe责任在Soundbooth中包含PowerPC支持 - 但要问为什么不这样做肯定是不合理的。

另一方面,Adobe迄今为止的最佳答案来自Soundbooth产品经理Hart ShaferShafer回应了Nack网络日志条目的评论者,他想知道为什么Adobe不能只是“翻转Xcode中的复选框”来生成通用二进制文件,他写道:

As I said originally, we really wanted to make a PPC version but the “make universal” checkbox simply wouldn’t work for usIf it would I’d be in there yelling for our engineers to check it and get me a PPC version — I’m not in the habit of passing up potential customers! However, as has been pointed out elsewhere we have buckets of Intel-specific code for modules in Soundbooth that would all have to be re-written to work on PPC chipsThe spectral view and the edits you can do there are a good example of something that could work on the PPC but would be so dog slow as to be worthless without this kind of workWe leverage this sort of Intel expertise all over the application.

Shafer isn’t saying what exactly it is about this code that is “Intel-specific”, but the plain statement that they have “buckets” of existing Intel-specific code that would have to be rewritten to achieve non-“dog-slow” performance on PowerPC suggests that it’s not an issue of code that makes assumptions about the endianness of the underlying architecture这意味着x86汇编代码,SSE矢量代码或两者我的猜测是上交所代码,但这只是一种猜测。

[更新:Soundbooth is apparently based in large part upon code from Audition, Adobe’s Windows-only sound editing application, and whose系统需求清楚地表明,它需要一个SSE-enabled处理器。)

谢弗继续:

Even if we could check the box to produce a PPC version, and dedicate engineers to re-write all that Intel-specific code, most people don’t consider the impact that has on testing and quality assurance — which is a non-trivial part of getting a release out. (Just ask our QA team who worked through the weekend tracking down issues to get the public beta out last week)A different chip architecture means a different test bed, which in turn means a lot of additional testing time.

两点:(a)这似乎并没有阻止其他人制作通用二进制文件,包括Apple自己的音频编辑器Soundtrack Pro(1300美元最终剪辑工作室)的一部分客户级编辑流氓变形虫32美元的裂变; and (b) it doesn’t seem to be stopping any other teams at Adobe from producing universal binaries.

The question is, what’s different about Soundbooth than Lightroom? They’re both new, they’re both cross-platform, and they both deal with computationally intensive media一个区别是音频具有严格的实时要求 - 您可以在显示或处理照片时暂停或打嗝,但在播放音频时却无法让我们给他们是无辜的,假设Soundbooth需要低级Lightroom并不特定于体系结构的优化。

Well, so what? I’m not saying there isn’t hard work involvedIsn’t that Adobe’s job? Or, rather, isn’t that the job of Adobe’s engineers? To write difficult code? All these excuses about how much extra work PowerPC support would entail might resonate more deeply if it weren’t for the fact that Adobe’s Soundbooth team is the only one making them.

我问过Rogue Amoeba Software的“CEO / Lackey”Paul Kafasis,让Fission成为通用二进制文件需要做多少工作他说,“我们都有PowerPC代码被重写,但事实并非如此很难,这只是耗时流氓变形虫有六个人,我们设法从一个平台到另一个端口Adobe有将近6000人,他们无法将其拉下来?“

你可能认为比较裂变Soundbooth是不公平的——裂变,作为一个消费者,或者low-end-prosumer-level iApp-ish应用,远不如Soundbooth复杂或密集但是我认为这种比较是完全公平的:然而,不那么复杂的裂变比Soundbooth更能弥补Adobe公司比Rogue Amoeba多大的影响。(我还认为设计一个使音频编辑看起来很简单的应用程序很困难。)

深仇,这是一个市场营销决定,但纳的解释和沙佛是试图在技术术语。We have so much existing Intel-optimized code! We’d have to do more QA testing! It would take a few more weeks before we could ship!它可以归结为:Adobe看不到力量Mac G5用户是值得支持我们不是在谈论支持旧的PowerPC systems, or even not-really-that-old but comparatively slow G4 systems, such as PowerBooks; we’re talking about support for the G5 systems that are indisputably capable of providing good performance for professional audio editing.

Kafasis说:“从一个尖尖的老板角度来看,我可以看到你怎么可能只是简单地说'放弃PowerPC支持' - 它每天都在失去用户,因为英特尔获得了它们但是,如果你对Mac平台一无所知,那么做它还为时尚早你从创造普遍性中获得(或者至少,不会失败)的善意,不仅仅是支付支持PowerPC所花费的时间和精力。“

我认为这不仅仅是善意,这就好也是这就是让这个决定如此令人困惑的原因:如果没有足够的G5用户让Adobe为Soundbooth添加PowerPC支持是值得的,为什么有这么多人抱怨它呢?


  1. 然而,反过来并不一定正确编写的代码专门为新处理器,如68030年,可能包含旧处理器中可用的新指示,不像68020年和68000年Like with modern apps that will run on a G5 or G4, but not on a G3. ↩︎

  2. 同样值得指出的是,当编译器从一个到另一个地方,喜欢说,从CodeWarrior GCC编译器,您可能无法简单地重新编译您的C / c++代码,Different compilers support mildly different variations of C and C++ syntax; wise programmers tend to write code that should pass through任何compiler without warnings and avoid compiler-specific language extensions. ↩︎