ARM 版的 Mac 对开发人员有不利吗?如果有,是在哪些方面呢?

本人计算机专业学生一枚,用过一段时间的 arm 版 linux,发现有些工具在 arm 平台没有。

在某闲聊 QQ 群看到有人说很期待 arm 版 mac,我说 arm 版 Mac 对开发人员不友好,因为有些开发工具在 arm 平台没有,然后就被狂喷,说我无知。

所以特来求证一下,arm 平台对开发人员有没有影响?

Click to rate this post!
[Total: 0 Average: 0]

相关文章

80 thoughts on “ARM 版的 Mac 对开发人员有不利吗?如果有,是在哪些方面呢?

  1. 如果是说 Xcode 的话那你没必要为 Apple 操心,反正就是封闭平台,开发 x86 应用交叉编译也不是啥问题

    不知道你说的可能的不方便点在哪里?

  2. 你既然敢说 arm 版对开发不友好,那你就说一下哪些不友好啊。怎么又来这里问 感觉就和只有论点没有论证一样

  3. 有很多三方库可能都没有 arm 版。。要么自己折腾,要么折腾交叉编译,反正都要折腾。

  4. 当然有影响,那些说没影响的,要么根本不是程序员,要么没做过 mac 下的开发,要么是个初学者,根本想不到这种源自底层的改变影响有多深远,只考虑到“都有源码都能自己编译”,根本考虑了多深多远,他们不知道,搞不好哪天哪个犄角旮旯里就有个坑把你坑死了。

  5. @himself65 我是来询问我的观点有无道理,不是摆出我的观点说这是对的。之前在 V2EX 里也看到一些讨论,大致是有些东西 arm 平台现在还没有,我自己用 arm 版 linux 时也有碰到这种情况,所以以我自己的看法我觉得 arm 现在作为开发工具不是很友好

  6. 我做过 win32 开发和一些 Windows 驱动编程都碰不到 CPU 指令集这些,编译器给啥用啥,操作系统给啥用啥,也没见换平台编译出过什么问题,遇到的 BUG 查出来从来都是自己代码没按规范写。我不信现在一堆写脚本语言做应用的互联网程序员天天围绕汇编语言 CPU 指令集打转?

  7. 都还没有产品给你用,有什么好讨论的?

    何况开发的领域那么多,有没有影响不能一概而论

  8. 如果更换 arm 兼容性不好的方面有两点:
    1 、非苹果生态的软件
    比如 mac 的桌面版 docker 。本来就是依赖 intel cpu 虚拟化开的 linux 虚拟机跑的 amd64 docker 。如果更换成 arm,没有处理器虚拟化支持,就只能头铁开全虚拟化的 linux 虚拟机,那要么 docker 废了,要么电池废了。
    2 、老软件
    mac 上有很多直接通过网站分发的工具软件,如果开发者不再更新,那么更换了平台你也别想用了。只能照替代。

    这两类软件对消费者用户来说无所谓,开发者服务苹果,寻找替代就可以了。反正苹果也是做消费电子的。

    但是拿来当生产力工具的软件从来都是操作系统服务软件的。所以至今在 intel + windows 平台都能找到当年 8086 + dos 的影子。想要兼容性还是赶紧跳坑把。

  9. @walsh 你只用到 windows 下,那当然没太大问题,如果说 win32 的兼容性第二没人敢说第一。
    *nix 下不一样,很多软件包、库是同时兼容 Linux 、BSD 、Solaris 系统甚至 Minix 系统的 X86 、AMD64 、ARM 、ARM64 、MIPS 等等指令集,而且有路径依赖,如果某个依赖没提供 ARM64 版本,你就编译不出 ARM64 的目标出来。

    而这些依赖,数量成千上万(说不准有几十万),有些早就无人维护了,碰到这种情况,要么换替代品(不一定有),要么自己动手修改代码移植,这难度可不小的。这些就是我上面 #6 楼里所说的“坑”。

  10. 对 windows 来说转 arm 可能有点坑,对苹果这种软硬一体封闭体系来说对一般人基本没影响。

    本 linuxer 希望以后能用上 arm linux 编程,不过可惜目前还没有类似 nuc 的存在,树莓派还是弱了些。

  11. @GM 苹果自己的 32 位说抛弃就抛弃,你还指望它拥抱开源 Linux ?唯唯诺诺最终就是做成 Windows 那样的屎山,它是主打消费市场不是 B2B 的,iPhone 就抛弃旧的东西全新开始才能成功的

  12. 我工作中大量使用 Docker,而且是 amd64 的 Docker 。ARM 机器想跑就虚拟指令集呗。然后你猜 ARM 虚拟 amd64 指令集会有多大效率损失?

    还有,装个 windows/虚拟机跑 windows,你是用兼容性垃圾的 arm 版 win 呢,还是虚拟指令集的普通 win 呢。

  13. CPU 从 power pc 换到 intel 苹果用了七八年,从 intel 换到 arm 也会是一个漫长的过程,应该也会是 5-10 年吧,大家不用这么急着担心某某软件用不了…..

  14. @stoneabc 写 Windows 的程序是最让我痛苦的,客户是爹,微软是爹,第三方也是爹,客户不愿升级,微软开一堆新坑,第三方也是坑,最终程序变成屎山,苹果程序员只要伺候好苹果这位爹,用户和第三方全被它搞定了,这就是我羡慕的地方

  15. @walsh
    我没说苹果自身,我也没指望他拥抱 Linux 。

    但是你要知道,苹果系统底层是 unix,有大量的第三方库是支持 *nix 类系统的,其中就包括苹果系统,大量,意思是成千上万,然后有大量的应用程序是依赖于这些库的。这么一切换,会导致非常多的第三方库用不了,接着就是大量的应用程序用不了。

    你说我不用这些库了,光靠苹果自己的开发库,行吗?能满足开发者需求吗?很遗憾,不能,苹果自己的库最多能满足 80%的需求,开发者依然会依赖于上面所说的大量第三方库。

    而这个切换,跟抛弃 32 位不一样,32 位的代码相对很容易移植到 64 位的,从 amd64 移植到 arm64,那可不太一样。

  16. @danny106 哪来的七八年?发布迁移计划后,14 个月后宣布迁移完成,四年后停止 PPC 操作系统支持

  17. @HelveticaNeue 大概就那意思吧,即使 arm 真用上了,在以后相同长的时间两个 cpu 体系结构在新机器上都会共存,不可能说突然一下就不支持 intel 了

  18. @danny106 我猜不会有新的 Intel Mac 发布了。
    宣布 Intel transition 后只出过一款新的 PPC 电脑,QuadCore Power Mac G5,这样来看,恐怕 Mac Pro 2019 就是最后一台 Intel Mac Pro,新机型会全面转向 ARM
    除非 ARM Mac 不跑 MacOS,而是个 iPad OS 之类的东西

  19. 很简单
    比如 mysql 不支持 arm,但是有源码可以编译
    那么就不能用现有的包安装 mysql 环境

    比如需要用 gcc 编译,那么可能 gcc 也不是 100%支持 arm,那么可能需要把 gcc 用到的 lib 也需要重新编译到 arm 能使用
    层层套娃,这才是最扎心的

  20. @walsh 你确定你是个 windows 开发? 还做过驱动编程? 但凡有点开发 /编译常识或者跨平台编译经验 都会知道你说的这些例子(32 位 iphone)根本都不是一个层面上的东西好么

  21. @MrYELiex 不然你以为呢?难道你认为普通开发者用 WDK 不是调微软给的接口而是给因特尔 AMD 写汇编?

  22. 对我这种纯靠服务器开发和编译的基本没有影响。mac 有个浏览器,iTerm,能装个 vs code 连上服务器就行了。挺期待 ARM 版本的 mac,估计会体积散热续航提升,对便携性帮助挺大的。

  23. 我不相信苹果真能 全面转向 ARM, x86 代表的是一种霸权,苹果 macOS 虽然我很喜欢用,但确实完全没有 iOS 统治力,瞎搞只能把自己搞死(市场份额和利润率同等重要,没有份额开发者没有动力开发软件,iPhone 再不降价份额再跌几个点就快嗝屁了)。

  24. 不过挺看好 ARM 的未来的,x86 包袱多,但计算机世界里的包袱有时候就是财富,不然 Windows 成为民用机上稳稳的世界第一不是没有道理的,但看微软也在尝试 Window 10X 来做一个全新的操作系统,用 Edge 替代 IE,包袱要抛弃,但一口气抛多了容易扯着蛋,苹果之前干过两次,干着干着就干成 6% 份额了。

  25. 肯定有影响啊。一些基于 X86 编译出来的软件。ARM 平台就要重新编译一次了。估计不少现成软件都需要重新打包了。

    不过,我觉得苹果的软件设计师应该没 微软那么蠢吧。搞了一个 ARM 和 X86 版本,最后 ARM 版本夭折了。

  26. 换 CPU 的大概率是 MacBook Air,这些用户一般都是 PPT 和 爱奇艺,低压双核的 Intel 性能和苹果自研芯片平分秋色,但自研芯片成本降了很多,不用自研都说不过去,而且自研芯片在散热上有优势。

    至于 MacBook Pro 苹果不会一下子卖那么大的步子,标压的 Intel 配上独显还是一个打十个的。

  27. @cz5424 工作量增加就增加,绝大部份开发人员是有人发工资的。只要有用户就好了。

  28. @dodo2012 #47 搜 v 站我之前发的帖子,有比较详细的记录。上周又给工位的 nuc 7 代小盒子装了个黑苹果,相对 Intel 来说 amd 平台还是比较折腾的

  29. @Nitroethane intel 现在一套很成熟了,amd 一直没折腾过,主要看现在 amd 真的 yes,本来想买个 nuc8 代的,感觉有个本本再弄个没显卡的也玩不了啥,还是想搞个有独显的玩玩

  30. @imnaive 据 Ming-Chi Kuo,第一批装载 ARM 芯片的会是 MacBook Pro 和新设计的 iMac 。我也好奇会是什么表现。。

  31. 可以参考 arm 版的 vsc,VSCode 的 Windows-ARM 版去年( 2019 年)就已经可以 build 了,但是安装包上个月才出,因为做安装包的工具是今年( 2020 年)三月才支持 ARM 。

  32. 你在 Arm Linux 上遇到的问题,在 Arm Mac 同样也会遇到。但是 Mac 毕竟是闭源,后续害得看苹果怎么搞

  33. 说小不小,说大其实也不大。

    Debian 、centos 、fedora 都有 arm release 多少年了,库和包的依赖基本都解决得七七八八了。折腾一下树莓派就知道了。

    而且 ARM 有生态,不像 PowerPC 一样全靠自己,华为的服务器不也是用 ARM 的呢

  34. 我最大担心就是以后公司放弃 mac 了,改发杂牌电脑装 linux 当开发机。

    第一,公司不知道会不会因为一堆编译工具不兼容 ARM mac,而切成杂牌电脑装 linux 。懂编译的可以说下。我感觉跨平台编译还是很吃平台的。而且生产环境都是 x86 – 64,公司也没必要照顾 ARM mac 的编译。
    第二,gnu 的开发工具和一些兼容 mac 的 linux 第三方库兼容 ARM mac 吗?毕竟开源软件,做什么都慢啊。而且即使有新的支持 ARM mac 的软件去替代这些工具和库,审核之路漫漫啊。

  35. @cassyfar 你说的这几个都不成立啊
    编译不都是生产环境的事,谁会在 mac 上编译生产环境的二进制然后分发的?
    开源工具对 ARM 的支持已经相当好了,不过针对 Apple Silicon 优化以及 brew 之类的跟上可能要一点一点来,但不认为会太慢,毕竟水果正式上市 ARM 机型还早,估计到时已经差不多了
    退一万步讲,不用 Mac 了为啥要杂牌? Dell HP 这些厂家有专门的 Linux 工作站和本

  36. @ww2000e 那是因为多少前辈给你把坑都填扎实了,现在如果让你在没有任何开源库的情况下做二进制支持,估计你死的心都有

  37. 1. 第三方库估计会是个大麻烦。很多 Lib 未必有 ARM64 支持。

    2. 平台相关的 Golang 、C 、C++ 都会有类似烦恼。

    3. 但我仍旧觉得整体而言,这是件好事:大家的平台选择毕竟不是更少而是更多了。

  38. 没什么好烦恼的,硅谷一堆用 Macbook 的程序员,转 Windows 是不可能的,你还担心编译不出来?之前 ARM 少主要原因还是没有使用 ARM 平台的个人电脑。Macbook 要转 ARM 不可能开发者工具弄不好。

  39. 苹果的做事风格就是根本不鸟开发者不鸟用户,我这样就行,你用着就好,别叽叽歪歪,像早期 iPhone OS 升级一版动不动一些 API 直接就没了,后来出的 Swift 每次升级项目都无法编译通过,折腾一番,被大家调侃是新学一门语言,这是苹果的一贯作风。

  40. @GM 很遗憾这些成千上万的库基本都是服务器端的,unix 系统能打的桌面系统找不出第二个来。

    而且经过苹果这么些年的魔改,OS X 已经远不是又一个 unix 系统这么简单了

  41. @Narcissu5 但是对苹果世界来说,GUI 并不是全部,还有一大堆第三方软件、第三方驱动、第三方工具包

  42. 转 ARM 主要是为了融合苹果全平台,苹果也能掌控自己的开发节奏。
    全 ARM 也意味着 IOS 和 IPad 的应用可以放到 mac 上运行了,应用商店也实现了统一,弥补了 mac 桌面应用少的局面
    桌面开发者可能需要做出较大的改动,比如要交叉编译,或者干脆转 swift 等等,IOS 应用开发者可能轻松点

  43. 我提一个 ARM 的弊端:编译器。

    ARM32 时代存在奇奇怪怪的架构,大端序小端序都不同;到了 ARM64,编译器中的 CPU 架构显示 AArch64 。

    ARM 的 CPU 不保证兼容性,即使是同 ip 核的 CPU 也不一定能运行相同的程序,这是因为指令集缺失( CPU 的实现出于成本的考虑可能不实现某些指令集,比如手机 Soc 多没有虚拟化指令集)。

    新 ip 的出现,往往会带来新的指令集,ARM 的指令集变化太频繁了,这部分指令集用的话就需要更新编译器(至于编译器更新带来的坑,做过的人都心有体会),不用的话性能升不上去。

    ARM 碎片化太严重。服务器芯片,公司可以投入资源维护,在生命周期内提供技术支持。Apple 可以保证新 ip 发布 N 年内继续维护么?你见过哪个手机 5 年后还有维护的?笔记本的生命周期可比手机长很多

  44. @vk42

    1. 没,我目前就在 mac 上开发编译。以前的公司也是有兼容 mac 的编译工具。虽然生产环境是 linux,但开发挺多人喜欢 mac,不喜欢远程连接 linux 。
    2. dell 和 hp 的电脑,就是杂牌啊。体验不是一般差。
    3. 开源升个级都各自 bug,不太敢想对于 ARM 怎么支持。

发表评论

您的电子邮箱地址不会被公开。