分类 观点 下的文章

代码英雄讲述了开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。

什么是《代码英雄》

代码英雄 Command Line Heroes 是世界领先的企业开源软件解决方案供应商红帽(Red Hat)精心制作的原创音频播客,讲述开发人员、程序员、黑客、极客和开源反叛者如何彻底改变技术前景的真实史诗。该音频博客邀请到了谷歌、NASA 等重量级企业的众多技术大牛共同讲述开源、操作系统、容器、DevOps、混合云等发展过程中的动人故事。

本文是《代码英雄》系列播客《代码英雄》第四季(8):史蒂夫·沃兹尼亚克轶事音频脚本。

导语: 史蒂夫·沃兹尼亚克 Steve Wozniak (即 沃兹 Woz )对硬件世界产生了巨大的影响。第四季介绍了许多他设计、制造、参与,以及受到他的启发的设备。但对沃兹来说,最重要的往往并不是他所创造的设备,而是他如何建造它们。

沃兹讲述了他早期的 黑客改造 tinkering 工作如何引发了他对工程的终生热情。他在高中时就开始在 GE 225 上学习计算机知识。很快,他就开始设计改进他想买的电脑,并最终确定了他的口号,即“简洁设计”。这种理念使得他在自制计算机俱乐部看到 Altair 8800 后完成了 Apple I,并为 Apple II 设计了软盘驱动器。但那时他最自豪的是他的工程成就得到了认可,并与世界分享了这些成就。

00:00:01 - Saron Yitbarek

大家好,我是红帽原创播客《代码英雄》的主持人 Saron Yitbarek。如果你在数的话,本季是我们节目的第四季。在这一季中我们带你踏上了一段具有历史性的旅程,走进硬件世界以及那些敢于改变硬件制造传统的团队。从 Eagle 小型机到 GE-225 大型机,从 Altair 8800 到软盘,从 Palm 的掌上电脑到世嘉的电视游戏机,虽然这些机器现在已经过时,被大家所遗忘,但它们为今天的硬件演变和开发者们的发展铺平了道路。

00:00:44

在此过程中,这些机器激发了个人计算机革命、开源软件运动和开源硬件运动,改变了计算机的历史进程。但在我们第四季结束之前,还有一件事要说。

00:01:03 - 史蒂夫·沃兹尼亚克 Steve Wozniak

我是 史蒂夫·沃兹尼亚克 Steve Wozniak ,苹果电脑公司的联合创始人。很高兴与您交谈。

三十多年来,史蒂夫·沃兹尼亚克一直在帮助塑造计算机行业。他的早期贡献包括设计苹果公司的第一条产品线:Apple I 和 Apple II。他帮助创建了 电子前沿基金会 Electronic Frontier Foundation (EFF),并且是 科技博物馆 Tech Museum 硅谷芭蕾舞团 Silicon Valley Ballet 圣何塞儿童探索博物馆 Children’s Discovery Museum of San Jose 的创始赞助商。2017 年,他共同创办了 沃兹大学 Woz U

00:01:08 - Saron Yitbarek

如果你回想一下本季的前面几集,就会发现史蒂夫·沃兹尼亚克的名字不止出现过一次、两次,而是很多次。这是因为沃兹(这是人们对他的亲切称呼),他不仅经历了那段历史,而且在其中发挥了重要作用。这个非常特别的代码英雄现在坐在这里,和我们谈论他在硬件历史上的亲身经历。让我们先从询问他钟爱的第一件硬件开始。

00:01:42 - 史蒂夫·沃兹尼亚克

在我很小很小的时候,大概是 10 岁,我爱上了一台晶体管收音机,很多年以来,我睡觉的时候都会把它放在枕边播放音乐。这算是第一个,在那之后还经历了许多,在我做过的科学展览中就有几百个不可思议的部件。现在,谈到计算机方面的东西、命令行的东西,在我 10 岁那年,不知何故发现了一本叫做《数字逻辑》的小册子,我用它在纸上涂鸦。在那时我就说,“计算机将会是我一生的挚爱”。

00:02:19 - Saron Yitbarek

20 世纪 60 年代,当史蒂夫·沃兹尼亚克还在上高中的时候,他有机会在通用电气公司(GE)放到他学校的一款电传终端机上试用分时系统,也就是我们在第二集中介绍 GE-225 大型机时讨论过的系统。

00:02:37 - 史蒂夫·沃兹尼亚克

当时既没有书,也没有杂志告诉你“计算机是什么?”。在高中时我得到了……我记得是得到许可……去参与一次测试,测试我们几天前才有的一个小装置。它是一种和分时系统相连的 电传打字机 teletype ,在这上面可以运行一些用 BASIC 语言编写的程序。我在上面做了一些实验并且感叹道:“嗯,这个 BASIC 有点简洁。”

00:02:58 - Saron Yitbarek

在他高中的最后一年,沃兹尼亚克的电子老师安排他去加州森尼维尔的一家当地公司 Sylvania 学习如何为他们的计算机编程。

00:03:10 - 史蒂夫·沃兹尼亚克

我的电子老师让我去一家公司,每周用 Fortran 语言在一台 IBM 1170 上编程一次,我想 1170 大概是这台计算机的编号。我当时还没有看到它的架构。但是当有一天我去那里的时候,在一个工程师的桌子上看到有一本叫做《小型计算机手册》的书,描述了 PDP-8 小型计算机 minicomputer

00:03:33 - Saron Yitbarek

在第 1 集中,我们介绍了《 新机器的灵魂 The Soul of a New Machine 》这本书中讲述的故事,该故事讲述了 通用数据公司 Data General 的小型计算机 Eagle 是如何对抗 数字设备公司 Digital Equipment Corporation 的小型计算机 VAX 的。PDP-8 是 VAX 的前身,并且也是数字设备公司第一款成功商用的小型计算机。

00:03:53 - 史蒂夫·沃兹尼亚克

他们让我那种那本手册,把它给了我。我把它带回家研究。我的天,这本手册上记录了所有的小寄存器中不同的 1 和 0 代表什么意思,它们意味着什么指令,以及数据是如何存储在内存中的。天哪。于是我开始坐着在纸上写到:“我想知道我是否可以设计一台电脑。”这对我来说是一个重要的开始。我得到了这本小册子,我可以订购手册来获得零件。此时的问题是怎么能找到一家电脑公司,并且得到这家公司的地址呢?

00:04:19

斯坦福直线加速器中心,我开车就能去,世界上最聪明的人都不锁门(所以那里会开着门)。我会在周日去,在他们的主楼里走走。我在那里的二楼找到了图书馆,坐了下来,那里有计算机方面的期刊和杂志,你也可以在图书馆中的小卡片上订购手册。我订购了一本通用数据公司的手册,它显示了总裁、运营主管、软件与工程主管的鼎鼎大名。但你知道那不是我想要的。

00:04:51

我想要知道 1 和 0 的含义。在最后一页,它展示了一条指令,那是一条算术指令。我习惯于每台电脑都有 56 条指令。每个指令,每一个小比特,都有各自小的含义。一个比特可能代表在加法之前设置进位。另外三位比特可能意味着你要做加法、减法、异或运算,以及其他一些操作。那么其他的比特就会问:等一下,你是要补码运算的结果还是移位运算的结果?移位运算有进位吗?每一个比特都有各自的含义。

00:05:21

我坐了下来,每个周末都在设计计算机,而那时小型计算机问世了。我坐下来设计它,每一个具有含义的比特,其实就是一根连接到芯片上的线,用来实现具体的功能,它的芯片数是我设计的其他小型计算机的一半,而且工作得一样好。我的墙上贴着那张他们和宣传册一起寄来的海报,就像普通的计算机设备一样,它是放在机架中的,因为它是前置面板,开关代表着 0 和 1,灯也代表着 0 和 1,全是些古怪的东西。

00:05:54

而他们还有另一张图片,就像那种放在桌面上的台式机那样。这引起了我的兴趣,你怎么能想象出电脑居然可以放在桌面上呢?我告诉我的父亲我爱上了它,肯定地对我父亲说:“总有一天我会拥有一台 4K 大小的通用数据公司的 Nova 牌电脑。”为什么大小是 4K ?因为需要 4K 的空间才能运行像我编程所使用的 Fortran,或是 ALGOL、PL/I 这样的语言、任何需要 4K 的编程语言。我之前从来没有用 BASIC 编程过,我把这个告诉我父亲的时候,他说这个电脑和房子一样贵,我回答道,“那我就住在公寓里。”当时我就决定:我要有一台可以真正使用的电脑,尽管要整天切换 1 和 0,用按钮来把它存入内存,但这就是我想要的,它甚至比房子更加重要。

00:06:42 - Saron Yitbarek

通用数据公司的 16 位 Nova 牌小型计算机是 32 位计算机 Eclipse 的前身,就是第 1 集中代号为 Eagle 的那个。实际上,正是 Nova 小型计算机启发了沃兹的工程设计理念。

00:06:59 - 史蒂夫·沃兹尼亚克

这台计算机教会了我,应该始终用现有的部件来设计东西,以使用最少的结构和零件。那是我非常擅长的事情,我一直在从事设计工作,总是试图使用芯片更少的架构。如果围绕已有的芯片进行设计,那么从某种意义上讲,可以理解为用更少的部件、更干净、更少的工作量。后来这也成为我设计的口头禅,始终寻求简单、直接、易懂,不要构建出这样复杂化的东西:来让一项工作在 20 个芯片上运行,实现正确的功能、得到正确的信号,而是寻找简单、直接的方法。

00:07:39 - Saron Yitbarek

沃兹的设计理念让我想起我们在第 5 集中提到的 Palm 公司用来开发应用程序的 Palm 之禅:让它简单。

00:07:51

还记得第 3 集中我们谈到的 Altair 8800 和个人计算机的诞生吗?史蒂夫·沃兹尼亚克参加了自制计算机俱乐部具有决定性的第一次会议,当时他一直制作自己的版本的计算机。

00:08:07 - 史蒂夫·沃兹尼亚克

在那里,我展示了各种电子游戏的设计,比如 Altair 游戏,我甚至为 Altair 设计出了“越狱”。我还看到了当今互联网的前身:ARPANET,它开始时全国大概只有五六台计算机。我看到有人在那上面,在那时我已经知道如何设计点东西了。可以使用我的电视作为输出,我曾为电子游戏做过。所以我做了一个带键盘的小终端,花了 60 美元。在当时,这是这些东西中最昂贵的部分。我有了一个键盘和一个视频显示器,我可以通过电话线与 ARPANET 联系,在那些日子里,通过非常慢的电话线调制解调器发送文本非常缓慢,我可以在波士顿的一台电脑上打字,可以打字回给我。我还可以切换到加州大学洛杉矶分校的电脑上,在上面读取文件、运行程序。这太不可思议了!

00:08:57

我听说有一家俱乐部要成立了,还没有取名,只是一群技术爱好者。我想,“哦,天哪!我要炫耀一下,我有个小设计,没人知道其实可以使用自己的电视来进行显示。我要去炫耀我的设计,把它传播出去,我将成为一个英雄。”我到了俱乐部后,那里的每个人都在谈论这个叫做 Altair 的东西。它曾出现在《 大众电子 Popular Electronics 》杂志的封面上,但我对此一无所知。有一些在这个俱乐部里的人去那个公司参观过,他们都在谈论现在你可以花 400 美元购买一台计算机。这是一台只有 256 字节内存的机器,它使用了静态内存。用的是英特尔的数据手册、英特尔的微处理器,英特尔展示了用这种方式具体连接到这些开关和灯,然后你可以有一个小系统来输入 1 和 0。

00:09:39

在那之前,我用自己五年前买的芯片设计制造了自己的计算机。我曾经做过这些事,所以很清楚这些人在看什么,400 美元对一个人来说是负担得起的。设计师必须围绕静态存储器进行设计,这是计算机中最昂贵的部件,这也是为什么它只有 256 字节内存的原因。但如果你必须拥有 4K 的内存才能使用一种编程语言,那这些静态内存的成本就太高了,超出了任何正常人的能力范围,所以我们甚至不会认为它是一台能做有用事情的电脑。什么是有用的事情?遇到问题,输入程序,解决问题。

00:10:14

现在,我坐在那里思考。我在惠普公司工作,研究能让人使用的计算器,而我有可以与 ARPANET 上的计算机进行通讯的小机器。我说,“等一下。”我发现微处理器的价格终于降下来了。英特尔的那款单个微处理器是 400 美元,我负担不起,Altair 就是基于它的。作为一名惠普的员工,我可以花 40 美元买到一个摩托罗拉 6800。因此,我设计出了具有微处理器和内存的计算机,不是那种买不起的昂贵的、价值 32 个芯片的静态内存。它只需要 8 块动态内存芯片,然后还有 5 块其他芯片帮助它循环,使它不致于丢失数据,这就是所谓的刷新。

00:10:56

我围绕着摩托罗拉公司的 6800 设计计算机,之后一家公司在旧金山的一次展览上推出了 6502 微处理器。我买了那个微处理器,你知道的,整个设计计算机的公式都在我的脑海里,我很快就会拥有自己的计算机,而且我确实做到了。

00:11:17 - Saron Yitbarek

沃兹并不是 BASIC 语言的忠实粉丝。但是,随着微软软件业务的起步:Altair BASIC 的推出,他意识到比尔·盖茨和保罗·艾伦的 BASIC 版本将会广泛使用。

00:11:31 - 史蒂夫·沃兹尼亚克

Altair 一出现在我们俱乐部,我们就得到了这个消息。比尔·盖茨和保罗·艾伦已经为它开发了 BASIC。我的嗅觉告诉我,家用计算机的关键作用不再是传统意义上的计算机那样,也不再是库存量、销售数据、就业率,这些所有大公司用大型机在做的事情。不,它将会是游戏。它的关键是游戏、是 BASIC。我使用 Fortran、ALGOL 和 PL/I 以及一些汇编语言和科学计算的语言进行编程。除了高中的那三天之外,我一生中从未接触过 BASIC 语言,因为我觉得这是一种孩子的语言。

00:12:08

这不是我们科学家真正使用的语言,我说:“这台机器上必须装有 BASIC 环境。”问题是没有其他人协助我的工作,这意味着,我不仅要开发硬件,还必须编写 BASIC 语言。我从来没有上过编写语言的课程,所以我写了自己的 BASIC 语言。我晚上去了我工作的惠普公司,打开 BASIC 手册,在纸上记录下 BASIC 的所有指令。我没有意识到此 BASIC 非彼 BASIC,和在所有的书中提起过的 数字设备公司 Digital Equipment Corporation (DEC)所使用的那种 BASIC 语言、比尔盖茨也编写过的那种,在处理字符串和字的方式上完全是一种不同的语言。

00:12:45

它们处理字的方法和惠普公司完全不同。那时候我认为,你编写了一个 BASIC 语言,你用你的计算机来运行 BASIC,这在哪儿都是一样的。但事实并不是这样。所以这是一个关键,Altair 意识到现在必须要有一种自己的语言,这种语言必须是 BASIC 语言,否则人们不会把它放在家里。

00:13:03 - Saron Yitbarek

在第 4 集中,我们了解到软盘是如何产生的,但是这种便携式存储方式是随着 Apple II 的磁盘驱动器的发明才变得无处不在。史蒂夫·沃兹尼亚克在巨大的压力下,用两周的时间创造出这个漂亮的硬件。这是他的故事。

00:13:25 - 史蒂夫·沃兹尼亚克

实际上,苹果公司遇到了一个问题。我们的 Apple II 计算机最初使用的是盒式磁带。这意味着你要进行手动操作,如果需要某个特定程序,要在盒式磁带中搜索,在磁带中找到这个程序,将其放入磁带播放器中,然后再把它读入计算机。这不像你可以输入 “run checkbook” 命令来运行一个支票薄程序那样。我希望有一天能够达到那个水平,我们召开了一次员工会议。他们允许苹果公司……刚成立还不到一年的苹果公司,和 Commodore 和 Radio Shack 这三家个人计算机公司参加内华达州拉斯维加斯的 CES 展览。

00:14:00

哇哦!除了在电影里,我从来没有见过拉斯维加斯。我想去那里,在我们的员工会议上,“嗯,我们只打算派三个营销人员去。”Mike Markkula 说,他负责市场营销,是我们的投资人,与我和 史蒂夫·乔布斯 Steve Jobs 拥有同等的股份。史蒂夫·乔布斯会去,我们的销售人员 Gene Carter 也会去。我当时在想怎么去,只是不好意思说 “嘿!我是创始人之一,让我去看看拉斯维加斯!付钱让我去吧。”所以我举起了我的手,我也不知道那时为什么这么做。这场展览在两周以后开始。举手后我试图找个话题:“如果我们有了软盘,可以在展览上面展示它吗?”Mike Markkula 回答道:“当然可以!”他是我们公司中可以做主的人。这下球又踢到我这边了。

00:14:38

如果对磁盘,它的软件和硬件一无所知的我能开发出一张软盘,在这张软盘上实现 “run checkbook”,在两周内做到这一点,他们就得带我去维加斯。如果他们要在展览会上介绍软盘,就得带上我。为此我每一天都在工作,不分昼夜、元旦、圣诞节,每一天都在工作。

00:14:59

最开始我把视线聚焦在 Shugart 公司的五英寸软盘上,我注视着它,在脑海中对它进行逆向工程,把所有的东西都拆开,并且说道:“它需要的是大块数据,0 和 1,每个 4 微秒,我可以使用一根线来从我的计算机上提供这些数据。”所以我取出了所有的 Shugart 数字芯片,所有步进轨道的芯片,轨道之间切换使用所谓的步进电机,有 A、B、C、D 相位,每个相隔一个相位。A 是第一轨道,然后是 B-C,现在是第二轨道,再之后是 D-A,第三轨道。我一开始就去掉了他们的 20 块芯片,对自己说,“我只需要使用尽可能少的电路。”

00:15:36

最后,我想到使用 7 块 1 美元的小芯片,可以在 4 微秒内一次写入这些数据位,以满足软盘的规格。我的计算机可以通过软件以不同的数据编码形式来计算出我需要发送的 0 和 1 。但更困难的是,当我把它放到我可以写入它的地方时,我可以用示波器看到信号高高低低变化,但我不知道它在哪里开始和停止。现在我必须要读取它。

00:16:04

为了读取它,有一个比特进来,然后你需要做的就是等待...它将会在 4 或 8 微秒内切换,所以时间大约在 6 微秒内,你可以内置计时器然后说道:“在那段时间内信号从高到低还是从低到高?”我需要很多的芯片,可能是 10 到 20 个,这谁又知道呢?这里面的计时器会确定什么时候真正做出信号翻转的决定。然后我说:“我有一个 7 MHz 的时钟,我做一个所谓的状态机。”我在大学三年级的时候就上过一门状态机课程,状态机一般会有一个地址,来标识着现在所在的位置,或者是一个状态号。我只是想到了进入一个小 ROM 芯片的地址,我现在手里有这个 256 * 8 的 ROM 芯片。

00:16:48

我会把地址放在那个状态,这就决定了它现在的位置,然后放入软盘读取头的读到的比特。我把那个读取到的比特放进去,ROM 决定我的下一个状态,然后下一个状态就出现了这些比特。我可以在 7 MHz 的条件下翻转 28 个周期,这相当于是 4 微秒的时间,可以让它进入阶段 1、阶段 2、阶段 3 ... 阶段 28,最后在阶段 40 左右,它将做出决定:我有没有得到脉冲?我是要把一个 0 还是一个 1 移到寄存器中放入计算机中。

00:17:23

整个过程只需要两块芯片就可以读取所有的数据。回首往事,我不知道当年脑海中奇妙的想法是如何涌出的。我只是在观察问题出在哪里,做这项工作的最小零件数量是多少,而不是它曾经 …… 因为我以前不知道这是怎么做的。我有一个名叫 Randy Wigginton 的高中生程序员,那些日子一直在协助我工作。当我完成了全部的工作以后,不禁说道:“为什么他们卖给 Altair 和 S-100 这些计算机的电路板体型都这么大?”

00:17:51

我拿出来一样东西,我想那是 North Star 的 8 英寸软盘什么的。我看了看他们的电路板,上面有 50 个芯片。而我的只有 8 个,我可以控制两个软盘驱动器,并且正常工作。我们在展会上介绍了它。我去了拉斯维加斯,我要教我的高中朋友 Randy 玩骰子,他还赢了我 35 美元。这是一个很大而且重要的区别,因为对于用户而言,能够运行程序是一个巨大的进步。

00:18:21 - Saron Yitbarek

在第 6 集中,我们了解了新一代的创客,即开源硬件运动背后的人们。这一运动被比作“自制计算机俱乐部”以及当时进行的所有合作与创新。我们问沃兹,他对硬件领域再次产生的创造力和开放性有何看法。

00:18:44 - 史蒂夫·沃兹尼亚克

是的,我也是这样认为。你应该总是制作一些东西,并且分享你所拥有的东西,让别人能够运用他们自己的技能和经验对它加以拓展,做出比你原先想象的更新颖的事情,并将其应用到世界上不同的领域中,而不仅仅是一个你所理解那个小小的应用。我完全赞成。现在很多嵌入式处理器,有人做了这样的微处理器,实际上更像是制造了一张名片,它的厚度薄到像是上面只有一块扁平芯片的名片。你应该不知道,它还可以插入 USB 接口中。他花 2 美元建造了一台完整的 Linux 计算机。

00:19:17

这些太令人兴奋了。我做了一个小的 PDP-8 套件,他们称之为 PiDP-8。树莓派是计算机,而这个套件有旧式 PDP-8 小型计算机所有的灯和开关,它还可以运行当时的一些 PDP-8 程序。PDP-8 最大内存只有 4K,这就是你如何让它与其他东西连接的方式。现在的处理器是树莓派里面的软件。你现在可以把树莓派与传感器和输出设备连接起来,人们就会想要进行实验和探索。

00:19:52

回到构建某些复古计算机的过程中,肯定会教你如何将硬件连接到硬件,如何将其连接,以及如何使用它来做更多的事情。我能做什么还没做的事情?可能有点不同。这就是我喜欢的。独立的人,往往是学生。我想要学习,想尝试一些对生活没有任何价值的东西。我回顾这一系列的项目,可能有 10 或 15 个项目,没有任何价值。它们当时只是我觉得有趣的事情:“也许我可以做这个,我会尝试把这个放在一起,我会把这个构建起来。”如果你知道芯片的内部的构造方式,就可以弄清整个电路是如何工作的。

00:20:28 - Saron Yitbarek

作为苹果公司的创始人之一,史蒂夫·沃兹尼亚克是现代科技的象征。但是对他来说,成功与名气无关。最重要的是让他的工作被看到,而工作始于命令行。

00:20:45 - 史蒂夫·沃兹尼亚克

在我的一生中,甚至在苹果公司之前,我为公司做了很多项目,比如有史以来第一个酒店电影系统,电视台的使用一英寸磁带卷的时间码。我在做各种电路,一直以我的工程为荣。我希望其他工程师也能看到我的作品,因为一个工程师能看到普通人看不到的东西。不是它做什么,它是如何构造的。我想让他们看到它,为我的工程技能而发出惊叹。

00:21:14

最近,我获得了 IEEE 奖金。这是你一生中能得到的其他工程师对电子工程的最高认可。我的意思是,它几乎让我热泪盈眶。这就是我想要的。不是创办一家公司,不是开创一个行业,而是想以一个伟大的工程师而闻名。现在工程师们可以看到我做了什么,他们看到了它的效果,但他们不能看着我的原理图和代码说,“你是怎么写这些代码的?”

00:21:41

这是我一生中获得的最有意义的奖项之一。因为那是我一直想要的,没有人知道。每个人都认为,“哦,我的第一台电脑是 Apple II ,我在上面做这个做那个,在学校里运行这些程序,哇,是你设计了它!”那很酷。但他们不是从工程的角度来看的。

00:21:58 - Saron Yitbarek

谢谢你,史蒂夫·沃兹尼亚克,感谢你参加我们的《代码英雄》访谈。在这一季结束之前,我想请一位特别嘉宾来告诉大家第五季的情况。

00:22:10 - Clive Thompson

我是 克莱夫·汤普森 Clive Thompson ,《 程序员 Coders 》一书的作者。在第五季中,我将会是 Saron 旁边的嘉宾,讲述开发者的职业生涯。不要错过它。

00:22:21 - Saron Yitbarek

《代码英雄》是红帽的原创播客。请访问 redhat.com/commandlineheroes 来看看我们对你在上一季听到的硬件的所有出色研究。我是 Saron Yitbarek,

00:22:34 - 史蒂夫·沃兹尼亚克

我是史蒂夫·沃兹尼亚克。生命不息,编码不止。

什么是 LCTT SIG 和 LCTT LCRH SIG

LCTT SIG 是 LCTT 特别兴趣小组 Special Interest Group ,LCTT SIG 是针对特定领域、特定内容的翻译小组,翻译组成员将遵循 LCTT 流程和规范,参与翻译,并获得相应的奖励。LCRH SIG 是 LCTT 联合红帽(Red Hat)发起的 SIG,当前专注任务是《代码英雄》系列播客的脚本汉化,已有数十位贡献者加入。敬请每周三、周五期待经过我们精心翻译、校对和发布的译文。

欢迎加入 LCRH SIG 一同参与贡献,并领取红帽(Red Hat)和我们联合颁发的专属贡献者证书。


via: https://www.redhat.com/en/command-line-heroes/season-4/steve-wozniak

作者:Red Hat 选题:bestony 译者:xiao-song-123 校对:pityonline, wxy

本文由 LCRH 原创编译,Linux中国 荣誉推出

开源以丰富的项目画布引领着处理实时事件的方向。

 title=

在“永不下线”的未来,入网设备规模可能会达到数十亿。存储原始数据,日后再进行分析的方案将不再能满足需求,因为用户需要实时且准确的响应。要对故障等对环境敏感的状况进行预测,实时处理数据也必不可少 —— 数据到达数据库后再处理肯定是来不及的。

有人可能会说,“云可扩展性”能够满足实时处理流数据的需求,但一些简单的例子就能表明它永远无法满足对无界数据流进行实时响应的需求。从移动设备到物联网,都需要一种新的范式来满足需求。尽管云计算依赖于对大数据“先存储后分析”的方案,但也迫切需要一种能够处理持续、杂乱和海量数据流的软件框架,并在数据流到达时立即对其进行处理,以保证实时的响应、预测和对数据的洞悉。

例如,在加利福尼亚州的帕洛阿尔托市,每天从基础交通设施产生的流数据比 Twitter Firehose 还要多。这是很大的数据量。为 Uber、Lyft 和 FedEx 等消费者预测城市交通需要实时的分析、学习和预测。云处理不可避免地导致每个事件大约会有半秒的延迟。

我们需要一个简单而强大的编程范式,让应用程序在类似下面的情况时能够动态处理无界数据流:

  • 数据量巨大,或原始数据的移动成本很高。
  • 数据由广泛分布的资产(例如移动设备)生成。
  • 数据具有转瞬即逝的价值,即时分析迫在眉睫。
  • 需要始终洞悉最新数据情况,外推法行不通。

发布和订阅

事件驱动系统领域中有一个关键架构模式: 发布/订阅 publish/subscribe 消息传递模式。这是一种异步通信方法,其中消息会从 发布者(数据产生方)传递到 订阅者(处理数据的应用程序)。发布/订阅模式可以将消息发送者与消费者分离开来。

在发布/订阅模式中,消息源会 发布 针对某个 主题 topic 事件 event 服务端 broker ,后者按接收顺序存储它们。应用程序可以 订阅 一个或多个 主题,然后 服务端 会转发匹配的事件。 Apache Kafka 和 Pulsar 以及 CNCF NATS 是发布/订阅系统。 发布/订阅的云服务包括 Google Pub/Sub、AWS Kinesis、Azure Service Bus、Confluent Cloud 等。(LCTT 译注:本段部分术语英文名称更为泛用,针对这些术语,采用了中英文标注。)

发布/订阅系统不会 运行 订阅者应用程序,它们只是 传递 数据给相应主题的订阅者。

流数据通常包含应用程序或基础架构状态更新的事件。在选择架构来处理数据时,发布/订阅框架等数据分发系统的作用是有限的。消费者应用程序的“处理方式”超出了发布/订阅系统的范围。这让开发人员的管理变得极具复杂性。所谓的流处理器是一种特殊的订阅者,可以动态分析数据并将结果返回给同一个服务端。

Apache Spark

Apache Spark 是用于大规模数据处理的统一分析引擎。通常将 Apache Spark Streaming 用作流处理器,例如给机器学习模型提供新数据。Spark Streaming 将数据分成小批量,每个小批量都由 Spark 模型或其他系统独立分析。事件流可以被分组成小批量以进行分析,但流处理器本身必须具有弹性:

  • 流处理器必须能够根据数据速率进行扩展,甚至要能够跨越服务器和云,并且还可以跨实例实现负载均衡,以确保弹性和其他应用层的需求。
  • 它必须能够分析来自不同来源的数据,这些数据源的报告速率可能相差很大。这意味着它必须是有状态的,或者将状态存储在数据库中。当使用 Spark Streaming 作为流处理器时,通常会使用后一种方法,这种方法在需要超低延迟响应时可能会存在性能问题。

相关项目 Apache Samza 也提供了一种处理实时事件流的方法,并使用 Hadoop YarnApache Mesos 来管理计算资源,以便进行弹性扩展。

解决数据扩展问题

需要注意的是,即使是 Samza 也不能完全减轻开发人员的数据处理需求。扩展数据规模意味着处理事件的任务需要跨多个实例进行负载均衡,而使用数据库是实例间共享结果应用层状态的唯一方法。然而,当应用程序任务之间的状态协调转移到数据库时,对性能会产生不可避免的连锁反应。此外,数据库的选择也至关重要。随着系统的扩展,数据库的集群管理会成为下一个潜在的瓶颈。

这个问题可以通过有状态、有弹性的替代方案来解决,并且这样的解决方案可以用来代替流处理器。在应用程序级别(容器或实例内),这些解决方案依据流的更新,动态构建并发、互连的“web 代理”的有状态模型。代理是并发的“微服务”,它们消费单一来源的原始数据并维护它们的状态。基于数据中发现的源之间的真实关系(如包含和临近),代理实现互连以共享状态。代理也因此形成了一个并发服务图,可以分析它们自己的状态和链接到的代理的状态。数据源将原始数据转换为状态,并根据自身及其链接子图的变化进行分析、学习和预测,每个代理都为单个这样的数据源提供微服务。

这些解决方案允许大量的代理(真实数据源的数字类比)分布,甚至还有在应用层使代理互连的分布式图,从而简化了应用架构。这是因为代理之间互连的本质,是映射到解决方案的当前运行时执行实例和代理本身的 URL。通过这种方式,应用程序可以跨实例无缝扩展,而无需担心 DevOps 问题。代理消费数据并维护状态,还会计算自己和其他代理的状态。由于代理是有状态的,因此不需要数据库,并且数据洞察是以内存速度计算的。

使用开源阅读数据世界

我们查看数据的方式正在发生翻天覆地的变化:不再将数据库用作记录系统,取而代之的是现实世界,现实世界事物的数字类比可以不断地传输它们的状态。幸运的是,开源社区在处理实时事件的项目丰富度方面处于领先地位。从发布/订阅模式(其中最活跃的社区是 Apache Kafka、Pulsar 和 CNCF NATS)到持续处理流数据的分析框架,包括 Apache Spark、FlinkBeam、Samza,以及 Apache 许可的 SwimOSHazelcast,对开发人员来说,可选择项目非常之多。可以说,没有什么地方比开源社区的专有软件框架更多了。试看软件的未来,必是开源的天下。


via: https://opensource.com/article/20/2/real-time-data-processing

作者:Simon Crosby 选题:lujun9972 译者:unigeorge 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Linux 本来会像其他业余项目一样被抛在后面,但开源改变了这一点。

你可能已经知道这个故事,30 年前,芬兰学生 Linus Torvalds 开发了一个业余项目,创建了一个类 UNIX 操作系统。

你不知道的是,Torvalds 认为这个业余项目已经完成了,他本想把它抛在脑后,做一些新的、有趣的项目。

那么,是什么让他在这个“业余项目”上工作了 30 年呢?答案是开源。

开源改变了 Linux

在最近结束的 北美开源峰会 上,Linus Torvalds 分享了一些关于 Linux 项目过去、现在和未来的见解。

当回忆起这个项目的最初情况时,Torvalds 说 他本以为会以“已完成的状态”抛下 Linux 这个项目,而去做些新的、有趣的事情。

显然是开源改变了这一切。这个项目,如果是由我来决定,我可能会把它抛在一边,但是突然间,我开始收到各种问题,最后还有人们提交的补丁,这使得我的动力不断持续。现在 30 年过去了,这仍然是动力所在。

Torvalds 还补充说,就他而言,Linux 在过去 29 年里已经完成了。以后添加的每一个其他的功能,都是其他人需要、想要或感兴趣的。

许多开发人员都会遇到这种情况。你在一个项目上工作,认为它已经达到“完成”的状态了,如果这个项目没有足够的吸引力,你就会对它失去兴趣,转而去做一些“新的、有趣的”事情。实际上继续这个项目的真正动力来自用户和认可。

当被问及 Linux 50 周年要做些什么时,Torvalds 说,他不认为自己在 70 岁的时候还能继续做内核编程。然后他还补充说,他也没想过自己在 50 岁还在做内核编程,但他现在却在做这个事情。

“不知何故,我不认为我 70 岁还能做内核编程。但是另一方面,几年前,我也没想到自己 50 岁还在做内核编程,所以……我们拭目以待。”

我们总是愿意听 Torvalds 谈论 Linux,作为一个热心的 Linux 用户,我们还有如此多需要学习和交流的东西!

来源:The News Stack


via: https://news.itsfoss.com/open-source-changed-linux-torvalds/

作者:Abhishek 选题:lujun9972 译者:zd200572 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

在学习建立在 Java 之上的所有相关工具时,了解 Core Java 会给你带来很大的优势。

 title=

计算机编程(也被称为 编码)的重点不是使用哪种编程语言,而是发展编程逻辑和学习像程序员一样思考。你一开始使用的编程语言应该是在这一努力过程中对你帮助最大的语言。因此,你必须问自己一个问题,“作为一个程序员,你想开发什么?”

例如,如果你想从事安卓应用开发、视频游戏开发、桌面 GUI 应用,或者只是一般的软件开发,我认为学习 Java 是一个很好的选择。我选择的语言是 Java,它为我提供了一个完整的编程世界。在我居住的印度,Java 程序员的平均工资约为每年 59 万印度卢比(LPA)(根据你的经验,可以高达 100 LPA)。

不过,Java 是一种庞大的语言,有很多框架和变体可供选择。Core Java 是科技行业发展出来的术语,指的是 Java 语言的中心组件,人们用它来编写框架,并围绕 Java 发展了丰富的产业。我认为,Core Java 是你能获得的最强大的技能之一,因为在学习建立在它之上的所有相关工具时,了解 Java 的基础知识会给你带来巨大的优势。

以下是我选择 Core Java 的八大理由,我想你也会认可:

1、Java 是一种不断发展的编程语言

Java 有重要的企业支持,但 Java 开发中最重要的组成部分是 OpenJDK,这是个开源的 Java 开发工具包。OpenJDK 社区以促进和维护开发源码、开放创新和开放标准为使命,致力于改进和维护 Java 及其工具链的开源实现。

它的每一个版本都会增加创新和便利,使 Java 对开发者和用户都更容易。例如,就在 Java 11 中,他们增加了运行 .java 文件的能力。现在,运行一个单文件的 Java 应用程序所需要的只是 java 命令,不需要进行编译:

$ java ./hello.java

Hello world

你可以使用 Java 做 Web、移动或桌面的应用程序编程。它是一种高度通用的语言。它有许多有趣的特点,如动态编码、多种安全功能、平台无关的特点和以网络为中心的设计。

2、Java 锚定了安卓应用开发

你可以使用 Java 来创建安卓用程序。安卓市场巨大,对移动程序员的需求只会越来越大。即使你对成为一个专业的应用程序开发人员不感兴趣,定制你的移动体验的能力也是很强大的,而 Java 使之成为可能。

而且,这比你想象的要容易得多!学习 Core Java 可以让你轻松地掌握安卓开发工具包或可以输出到移动平台的框架,如 Processing

3、丰富的 API 使得 Java 易于使用

Java 的 API( 应用编程接口 Application Programming Interface )包括类、包、接口等。Java 主要有三种类型的 API:

  • 官方的 Java Core API
  • 最佳的官方 Java API
  • 非官方的 API

API 使编程更容易,因为你可以在不知道其内部实现的情况下构建应用程序。根据我的经验,许多公司喜欢用 Java 而不是其他选择,就是因为 Java API 的力量。

4、开源库

几乎有无穷无尽的 Java 开源库,包括 Maven、Guava、Apache Commons、Jhipster,等等。你可以复制、学习和分享这些库的资源。它们使编程更容易获得、更快、更便宜,也更有教育意义。

5、Java 有可靠的开发工具

Java 有一些我最喜欢的 IDE( 集成开发环境 Integrated Development Environments ),包括 EclipseNetBeansBlueJ 和 IntelliJ IDEA。它们提供了调试、语法高亮、代码补完、语言支持、自动重构等功能。简而言之,IDE 在 Java 的成功和你在 Java 学习中起着至关重要的作用!

6、印度对 Java 开发人员的需求

谷歌、Netflix 和 Instagram 等巨头都使用 Java 进行后台开发。印度公司正在积极寻找雇用 Java 程序员来开发安卓应用程序、新的 API 和云上的微服务。这种需求转化为更多的工作机会。

7、Java 有庞大的编程社区

Java 程序员的社区庞大,囊括了从初学者到专家的所有人。我发现这个社区很热情待人,当你寻求支持的时候,他们会给予帮助。最重要的是,通过参与在线讨论,我学到了大量的新技巧。作为社区的一分子,这是我了解最新趋势、学习更多语言和跟上发展的重要途径。

8、Java 是独立于平台

Java 是平台无关的,这一点使它具有很高的价值。Java 源代码被编译成字节码,在 Java 虚拟机(JVM)上运行。任何运行 JVM 的平台(支持所有主要平台)都可以运行你的 Java 应用程序。你只需写一次,就可以在任何地方运行!这并不只是理论上的,Java 实际上已经实现了这一点。你可以在你开发的任何平台上编写 Java,并将其交付给你的所有目标平台。

网上有很多学习 Java 的资源,包括 Opensource.com 上有一个 速查表。还有一个很好的 在线 Java 课程,可以用印地语免费学习。


via: https://opensource.com/article/21/10/why-i-learned-core-java

作者:Shantam Sahai 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

一直以来,云、管、边、端操作系统领域的碎片化,都是切实存在但又不得不面对的问题。在服务器上使用一个系统,在云计算集群上使用另一个系统,而在边缘计算设备和嵌入式设备则又是一个新的系统。似乎天经地义的,不同场景的设备就该使用不同的操作系统。

但在计算机技术和计算基础设施以指数级发展的今天,是否还应该墨守成规?在消费者领域,我们已经看到越来越明显的系统融合趋势,比如,苹果公司希望全线都使用同一套系统,以提供给用户最好的体验;再比如华为的鸿蒙也通过将不同的操作系统融合,让普罗大众也能感受到万物互联互通的多彩生活。

此时我们不禁要问:“是否应该在更大、更宏观的场景,对更多的计算场景进行融合?”就如同欧拉公式揭示的那样,世界本是统一的,计算世界是否也已经迎来了大一统的契机?

欧拉:以开源主导的大一统技术社区

商业公司由于人力有限,往往只会选择在一个领域做深耕投入,以期获得更大的收益;而与之相比,开源社区则不同,大家会基于对于开放理念的追求,而不断迭代一款产品。开源社区近乎无限的开发者参与,以及它开放的模式,也让一款统一而一致的产品成为了可能。

Linux 内核便是一个十分典型的例证。最初的 Linux 内核只是一个用于个人电脑的小玩具,而随着全世界开源贡献者持续三十年的不懈投入,如今的 Linux 已经遍及了从超算、云计算、服务器、个人桌面、物联网、智能终端等各种大相径庭的不同使用场景,跨越了从 x86、ARM、RISC 等十数种计算架构,从某种意义上奠定了大一统的计算基础。

但是另外一方面,虽然 Linux 及其生态已经构筑了一个平实而广泛的基础,但是我们也看到,即便是在源出一门的内核之上,由于商业利益、计算能力限制、用户体验等因素,往往我们见到的是在操作系统层面的割裂。

而这一次,欧拉(openEuler)希望立足于开源社区,与社区共同建设一个“数字基础设施的开源操作系统”,从而,不仅仅是底层的内核,而在更高层面也达成大一统的融合和互联。

新的欧拉操作系统可广泛部署于服务器、云计算、边缘计算、嵌入式等各种形态设备,应用场景覆盖 IT( 信息技术 Information Technology )、CT( 通信技术 Communication Technology )和 OT( 运营技术 Operational Technology ),实现统一操作系统支持多设备,应用一次开发覆盖全场景。

和过去归属于公司的操作系统不同,欧拉是一个开发者的操作系统。虽然欧拉发轫于华为公司,但其成长得益于开发者的参与和投入,也反过来促进了开发者的发展。目前已有 100 多家企业、机构等组织加入,汇聚了超过 6000 多名开发者,10 多家国内主流的 OSV 基于欧拉发布了商业发行版。对于开发者来说,云、管、边、端的融合,有助于开发者降低开发成本。开发者可以基于同一个技术底座,开发出一个能够应用在不同场景下的应用程序,从而获得更多的用户和可能。

欧拉:由工具主导的发行版变化

过去的 openEuler 重点关注在鲲鹏生态,而现在的欧拉将涵盖从 x86、ARM、RISC 等不同架构,以支持更广泛的计算场景。

过去的 openEuler 着重于服务器操作系统,主要应用于服务器场景,而随着新欧拉的发布,openEuler 将会扩展其场景,覆盖服务器、云计算、边缘计算和嵌入式设备。从只处理服务器的问题,延展到可以解决更多场景、更全设备的新操作系统。

这样的升级,是为了更好的利用不同的设备和不同场景下的算力,通过操作系统层面的统一,让计算能力可以更加容易调度,实现计算能力利用的最大化。

不仅如此,为了更好更快的抵达这个目标,欧拉社区还提供了一系列的工具和能力,让开发者可以根据自己的需要,裁剪配置自己需要的系统。诸如,可以通过配置和设置来打包操作系统的全栈原子化的能力,更加简单地完成系统的裁剪,以应对面向边缘计算、嵌入式设备等计算和存储资源都较少的场景,更好的服务这些设备。

当然,也不止于此。

对于开发者来说,操作系统的融合固然是好事,但对于开发者来说,感知不大,因为操作系统层面的变动往往是底层工具的变化,落实到开发者层面,还需要很多的时间。但欧拉社区这次的发布除了操作系统的升级,还提供了北冥技术架构 —— 北冥架构是为多样性计算硬件及集群打造的使能软件栈,简化多样性计算环境下的开发和部署,充分释放算力性能。通过北冥,开发者想要在安装了欧拉的多个设备中去开发应用程序,也变得更加简单。

欧拉:与鸿蒙共享技术结晶

本次欧拉的升级,除了架构和计算场景的升级,还有一个很大的升级便是欧拉将与鸿蒙共享底层技术,共建用户生态

鸿蒙作为一个面向智能终端的设备,可以通过海量的设备覆盖和丰富的操作体验,为开发者提供更多的机会。而欧拉作为一个专注于服务器端场景,追求安全性和稳定性的操作系统,可以通过与鸿蒙的结合,更好的为用户场景提供服务。

鸿蒙和欧拉的结合一个更大的好处在于,随着底层基础的打通,我们身边的智能设备,和云端的服务器、边缘计算设备,可以拥有更好的交互方式,从过去的通过 API 实现数据的同步,变成可以借助于分布式软总线,让智能设备可以从身边的设备去借用计算能力、进行管控,这将更加的简单和直接。

而这种云、管、边、端融合,将服务器、网络设备、物联网设备、智能终端等互相连接的方式,也必将带来一波新的应用开发浪潮,大家可能会发现,过去难以实现的场景,现在可以通过一个更简单的方式来实现。随着技术的进步,带来使用体验、操作体验、管理体验的进一步提升。

我们可以畅想一下,在未来,当鸿蒙与欧拉结合,我们拿着鸿蒙的手机走进机房,马上就可以看到不同的服务器之间的信息,而且这些信息可以通过分布式软总线来传递,我们可以更加简单、直接的操作服务器上的数据和功能。

可以想象,欧拉+鸿蒙将渗透到我们身边的每一个应用,所以,我认为,欧拉社区也许是朝着“元”操作系统在发展,从底层,到数据,从 API 到 AI,在更大的层面进行了统一、融合。

那个要统一数字基础设施的操作系统

完美的欧拉公式,呈现了数学的统一之美,欧拉操作系统,能否统一数字基础设施?我想这个问题,应该由开源社区来揭示。

每天,Linux 都在进行不断进步,以支持具有适当图形支持的现代游戏。但是,我们能推荐 Linux 用于游戏吗?

你经常会听到 Linux 爱好者称赞 Linux 上改进的游戏功能。是的,考虑到在 Linux 桌面上支持现代游戏所取得的进步,Linux 已经在游戏方面获得了很大的提升。

甚至 Lutris 的创造者在我们的采访中也提到 Linux 在游戏方面取得的进步简直令人难以置信

但是,这有什么值得大肆宣传的吗?我们能向游戏玩家推荐 Linux 吗? Linux 适合玩游戏吗?

此文中,我想分享一些关于在 Linux 系统上玩游戏的的事情,并分享我对它的看法。

你可以在 Linux 上玩游戏吗?是的!

如果有人曾经告诉过你,不能在 Linux 上玩游戏,那是不对的

你可以在 Linux 上玩各种游戏而不会出现任何大的障碍。而且,在大多数情况下,它是可玩的,并且会提供很好的游戏体验。

事实上,如果你不知道从哪里开始,我们有一份 Linux 游戏终极指南 提供给你。

需要一个特定的 Linux 发行版才能玩游戏吗?

并非如此。这取决于你想获得多么方便的体验。

例如,如果你希望 Linux 发行版能够与你的图形驱动程序很好地配合,并获得最新的硬件支持,那么有一些发行版可以做到。同样,如果你只是想用集成的 GPU 玩原生的 Linux 独立游戏,任何发行版都可以。

因此,在你开启 Linux 游戏之旅的同时,会有一些因素影响你对发行版的选择。

不用担心,为了帮助你,我们提供了一份有用的 最佳 Linux 游戏发行版列表

Linux 上的虚拟现实游戏,唉……

我确信 VR 游戏还没有完全普及。但是,如果你想要在 VR 头盔上获得激动人心的体验,那么选择 Linux 作为你的首选平台可能不是一个好主意

你没有在 Linux 上获得便利体验所需的驱动程序或应用程序。没有任何发行版可以帮助你解决此问题。

如果你想了解有关虚拟现实状态的详细信息,可以看看 Boiling Steam 上的博客文章和 GamingOnLinux 上的使用 Valve 的 VR 头盔的有趣体验。

我已经提供了这些博客文章的链接以供参考,但总而言之 —— 如果你想体验 VR 游戏,请避免使用 Linux(如果你实在太闲,请随意尝试)。

可以在 Linux 上玩 Windows 系统的游戏吗?

可以,也不可以。

你可以使用 Steam Play 来玩 Windows 专属的游戏,但是它也存在一些问题,并不是每个游戏都可以运行。

例如,我最终还是使用 Windows 来玩《地平线 4》。如果你喜欢汽车模拟或赛车游戏,这是一款你可能不想错过的杰作。

或许我们在不久的将来可以看到它通过 Steam Play 完美的运行,谁知道呢?

因此,可以肯定的是,你会遇到许多类似的游戏,可能根本无法运行。这是残酷的事实。

而且,要知道该游戏是否可以在 Linux 上运行,请前往 ProtonDB 并搜索该游戏,看看它是否至少具有 “黄金” 状态。

带有反作弊引擎的多人游戏可以吗?

许多游戏玩家更喜欢玩多人游戏,如《Apex Legends》、《彩虹六号:围攻》和《堡垒之夜》。

然而,一些依赖于反作弊引擎的流行游戏还不能在 Linux 上运行。它仍然是一项进行中的工作,可能在未来的 Linux 内核版本中实现 —— 但目前还没有。

请注意,像 《反恐精英:全球攻势》、《Dota 2》、《军团要塞 2》、《英灵神殿》等多人游戏提供原生 Linux 支持并且运行良好!

我会推荐使用 Linux 来玩游戏吗?

考虑到你可以玩很多 Windows 专属的游戏、原生的独立游戏,以及 Linux 原生支持的各种 AAA 游戏,我能推荐初次使用者尝试在 Linux 上玩游戏。

但是,需要注意的是 —— 我建议你列出你想玩的游戏列表,以确保它在 Linux 上运行没有任何问题。否则,你最终都可能浪费大量时间进行故障排除而没有结果。

不要忘记,我相信 Linux 上的 VR 游戏是一个很大的问题。

而且,如果你想探索所有最新最好的游戏,我建议你坚持使用 Windows 的游戏电脑。

虽然我应该鼓励更多的用户采用 Linux 作为游戏平台,但我不会忽视为什么普通消费者仍然喜欢使用 Windows 机器来玩游戏的客观事实。

你怎么认为呢?你同意我的想法吗?欢迎在下方的评论区分享你的想法!


via: https://news.itsfoss.com/linux-for-gaming-opinion/

作者:Ankush Das 选题:lujun9972 译者:perfiffer 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出