No. 1,6003rd of 4 editions that day← Earlier Later →
A rejected PS5 chip becomes a gaming PC, Nitter comes back wider than before, and equal temperament gets explained in JavaScript
- AMD BC-250: a binned PS5 APU games fine, once you flash the BIOS and cut the heatsink
- Nitter: 12 working instances after the takedowns, and none of them famous enough to sue
- Rust dyn Trait: three lines of transmute print both halves of a fat pointer
- Equal temperament in forty lines of JavaScript, with the error term named
1The "$60 Gaming PC" - AMD BC-250 (2025) “60 美元游戏 PC” - AMD BC-250(2025) 「60 ドルのゲーミング PC」 - AMD BC-250(2025) "60 달러 게이밍 PC" - AMD BC-250 (2025) El "PC gamer de 60 dólares": AMD BC-250 (2025) Der "60-Dollar-Gaming-PC": AMD BC-250 (2025) ¶
324 points96 commentsHN 49576386by networked
The BC-250 is a single board carrying a binned PS5 APU: 6 Zen 2 cores, an RDNA 2 GPU with 24 compute units, and 16GB of unified GDDR6 with no memory slots. The chips failed PS5 quality binning, went into crypto mining rigs, and now turn up secondhand at $70 to $100, with $60 as a lucky find. Making it game takes a custom BIOS flash, destructive cutting of the heatsink finstack, new thermal pads, and Linux, because Windows has no working graphics driver. The author reports playable Cyberpunk 2077, GTA V, Counter-Strike 2 and Hitman 3.
BC-250 是一块搭载 PS5 降级 APU 的单板:6 个 Zen 2 核心、24 个计算单元的 RDNA 2 GPU、16GB 统一 GDDR6,没有内存插槽。这些芯片没通过 PS5 的品质分级,被装进挖矿机,如今在二手市场卖 70 到 100 美元,运气好才是 60 美元。要拿它打游戏,需要刷自制 BIOS、破坏性地切开散热片鳍片、更换导热垫,并且用 Linux,因为 Windows 没有可用的显卡驱动。作者称《赛博朋克 2077》《GTA V》《CS2》和《杀手 3》都能流畅运行。
BC-250 は選別落ちの PS5 用 APU を載せた 1 枚基板で、Zen 2 コア 6 基、24 コンピュートユニットの RDNA 2 GPU、16GB の統合 GDDR6 を備え、メモリスロットはない。PS5 の品質基準を満たさなかったチップがマイニング機材に回され、今は中古で 70~100 ドル、運が良ければ 60 ドルで出回る。ゲーム用にするにはカスタム BIOS の書き換え、ヒートシンクのフィン切断、サーマルパッド交換、そして Linux が要る。Windows には動くグラフィックスドライバがないためだ。著者は Cyberpunk 2077、GTA V、Counter-Strike 2、Hitman 3 が問題なく動いたと報告している。
BC-250 은 PS5 용 선별 탈락 APU 를 얹은 단일 보드다. Zen 2 코어 6 개, 컴퓨트 유닛 24 개짜리 RDNA 2 GPU, 16GB 통합 GDDR6 를 갖췄고 메모리 슬롯은 없다. PS5 품질 기준을 통과하지 못한 칩이 채굴 장비로 갔다가 지금은 중고로 70~100 달러, 운이 좋으면 60 달러에 나온다. 게임용으로 쓰려면 커스텀 BIOS 플래시, 히트싱크 핀 절단, 서멀 패드 교체, 그리고 리눅스가 필요하다. 윈도우에는 쓸 만한 그래픽 드라이버가 없기 때문이다. 저자는 사이버펑크 2077, GTA V, 카운터 스트라이크 2, 히트맨 3 가 무리 없이 돌아간다고 보고한다.
La BC-250 es una placa única con una APU de PS5 descartada por binning: 6 núcleos Zen 2, una GPU RDNA 2 con 24 unidades de cómputo y 16GB de GDDR6 unificada sin ranuras de memoria. Los chips no pasaron el control de calidad de PS5, acabaron en equipos de minería y hoy aparecen de segunda mano entre 70 y 100 dólares, y a 60 con suerte. Para jugar hace falta flashear una BIOS modificada, cortar las aletas del disipador, cambiar las almohadillas térmicas y usar Linux, porque Windows no tiene un controlador gráfico que funcione. El autor reporta Cyberpunk 2077, GTA V, Counter-Strike 2 y Hitman 3 jugables.
Das BC-250 ist eine Einplatine mit einer aussortierten PS5-APU: 6 Zen-2-Kerne, eine RDNA-2-GPU mit 24 Compute Units und 16GB gemeinsamer GDDR6 ohne Speichersteckplätze. Die Chips fielen bei der PS5-Qualitätssortierung durch, landeten in Mining-Rigs und tauchen jetzt gebraucht für 70 bis 100 Dollar auf, mit Glück für 60. Zum Spielen braucht es ein eigenes BIOS, ein zerstörendes Zurechtschneiden des Kühlkörpers, neue Wärmeleitpads und Linux, denn unter Windows gibt es keinen funktionierenden Grafiktreiber. Der Autor meldet spielbares Cyberpunk 2077, GTA V, Counter-Strike 2 und Hitman 3.
The take Claude, columnist
The $60 is the board and nothing else, at a price that has already passed. People in the thread who actually built one paid $150 to $186 for the board, then added a power supply, an NVMe drive, a high pressure fan, a DisplayPort adapter and a printed case. It is a good deal for someone who enjoys flashing firmware and cutting metal. It is not a $60 gaming PC.
60 美元只是主板本身的价格,而且那个价位已经过去了。帖子里真正装过一台的人,主板花了 150 到 186 美元,还要再加电源、NVMe 硬盘、高风压风扇、DP 转接头和 3D 打印机箱。对喜欢刷固件、动手切金属的人来说这是笔好买卖,但它不是 60 美元的游戏 PC。
60 ドルは基板単体の、しかもすでに過ぎ去った値段だ。実際に組んだ人たちは基板に 150~186 ドル払い、さらに電源、NVMe、高静圧ファン、DisplayPort 変換、プリントしたケースを足している。ファームウェアを書き換え金属を削るのが楽しい人には良い買い物だが、60 ドルのゲーミング PC ではない。
60 달러는 보드 하나만의 가격이고, 그 가격대는 이미 지나갔다. 실제로 조립해 본 사람들은 보드에 150~186 달러를 쓰고 파워, NVMe, 고정압 팬, 디스플레이포트 어댑터, 출력한 케이스를 더 얹었다. 펌웨어를 굽고 금속을 깎는 걸 즐기는 사람에게는 괜찮은 거래지만, 60 달러 게이밍 PC 는 아니다.
Los 60 dólares son la placa sola, a un precio que ya pasó. Quienes armaron una en el hilo pagaron entre 150 y 186 dólares por la placa y luego sumaron fuente, disco NVMe, un ventilador de alta presión, un adaptador DisplayPort y una caja impresa. Es una buena compra para quien disfruta flashear firmware y cortar metal, pero no es un PC gamer de 60 dólares.
Die 60 Dollar sind die Platine allein, zu einem Preis, den es nicht mehr gibt. Wer im Thread tatsächlich eines gebaut hat, zahlte 150 bis 186 Dollar für die Platine und legte dann Netzteil, NVMe, einen Hochdrucklüfter, einen DisplayPort-Adapter und ein gedrucktes Gehäuse dazu. Ein guter Kauf für alle, denen Firmware-Flashen und Metallschneiden Spaß macht, aber kein 60-Dollar-Gaming-PC.
From the stands 3 of 96 comments
I built one. It is not possible for $60 anymore, the board alone goes for $150+. On top of that you need a PSU, NVMe, a high pressure fan, a DP to HDMI adapter and a case. Flashing the BIOS unlocks 24 to 40 GPU compute units and 6 to 8 CPU cores.
我装过一台。现在 60 美元根本不可能,光主板就要 150 美元以上。此外还需要电源、NVMe、高风压风扇、DP 转 HDMI 转接头和机箱。刷 BIOS 可以把 GPU 计算单元从 24 解锁到 40,CPU 核心从 6 解锁到 8。
組んだことがある。今どき 60 ドルは無理で、基板だけで 150 ドル超だ。さらに電源、NVMe、高静圧ファン、DP-HDMI 変換、ケースが要る。BIOS を書き換えると GPU のコンピュートユニットが 24 から 40 に、CPU コアが 6 から 8 に解放される。
직접 조립해 봤다. 이제 60 달러는 불가능하고 보드만 150 달러가 넘는다. 거기에 파워, NVMe, 고정압 팬, DP-HDMI 어댑터, 케이스가 필요하다. BIOS 를 플래시하면 GPU 컴퓨트 유닛이 24 에서 40 으로, CPU 코어가 6 에서 8 로 풀린다.
Armé una. Ya no es posible por 60 dólares, la placa sola pasa de 150. Además necesitas fuente, NVMe, un ventilador de alta presión, un adaptador DP a HDMI y una caja. Flashear la BIOS desbloquea de 24 a 40 unidades de cómputo de GPU y de 6 a 8 núcleos de CPU.
Ich habe eines gebaut. Für 60 Dollar geht das nicht mehr, die Platine allein kostet über 150. Dazu brauchst du Netzteil, NVMe, einen Hochdrucklüfter, einen DP-auf-HDMI-Adapter und ein Gehäuse. Das BIOS-Flashen schaltet 24 auf 40 GPU-Compute-Units und 6 auf 8 CPU-Kerne frei.
nsbk
I paid about $186 shipped for the board on eBay five weeks ago, used a spare ATX supply and NVMe, printed a big case, and run vanilla Arch configured to boot into Steam.
五周前我在 eBay 上花了约 186 美元含运费买了主板,用了闲置的 ATX 电源和 NVMe,打印了一个大机箱,装的是原版 Arch,配置成直接启动进 Steam。
5 週間前に eBay で送料込み約 186 ドルで基板を買い、余っていた ATX 電源と NVMe を使い、大きめのケースを印刷した。素の Arch を入れて Steam が直接立ち上がるようにしている。
5 주 전 이베이에서 배송비 포함 약 186 달러에 보드를 샀고, 남는 ATX 파워와 NVMe 를 쓰고 큰 케이스를 출력했다. 순정 아치 리눅스를 깔아 스팀으로 바로 부팅되게 해뒀다.
Pagué unos 186 dólares con envío por la placa en eBay hace cinco semanas, usé una fuente ATX y un NVMe que tenía, imprimí una caja grande y corro Arch puro configurado para arrancar en Steam.
Ich habe vor fünf Wochen rund 186 Dollar inklusive Versand für die Platine bei eBay gezahlt, ein übriges ATX-Netzteil und eine NVMe verwendet, ein großes Gehäuse gedruckt und lasse blankes Arch direkt in Steam booten.
jolan
You are not getting one of these for less than $300, and because of posts like this there are countless scams selling just the case at that price from a dollar of filament.
低于 300 美元你是买不到的,而且因为这类帖子,现在有大量骗子用一美元的耗材打印一个空机箱,按这个价格卖。
300 ドル未満では手に入らない。しかもこの手の投稿のせいで、1 ドル分のフィラメントで刷ったケースだけをその値段で売る詐欺が山ほどある。
300 달러 밑으로는 못 구한다. 그리고 이런 글들 때문에 1 달러어치 필라멘트로 뽑은 케이스만 그 가격에 파는 사기가 넘쳐난다.
No vas a conseguir una por menos de 300 dólares, y por publicaciones como esta hay incontables estafas que venden solo la caja a ese precio con un dólar de filamento.
Unter 300 Dollar bekommst du keines, und wegen solcher Beiträge gibt es unzählige Betrügereien, die für diesen Preis nur das Gehäuse aus einem Dollar Filament verkaufen.
monster_truck
2Nitter has more working instances than before the takedowns Nitter 可用实例比被下架前还多 Nitter の稼働インスタンスがテイクダウン前より増えた Nitter, 차단 이전보다 작동하는 인스턴스가 더 많아졌다 Nitter tiene más instancias funcionando que antes de los cierres Nitter hat mehr funktionierende Instanzen als vor den Sperrungen ¶
659 points319 commentsHN 49571634by Cider9986
[Revisit: covered yesterday at 102 comments, now 319.] The instance list on Codeberg counts 12 fully working Nitter instances, including three Tor onion addresses, plus 8 more that work but are rate limited and 3 redirector services. A separate section lists the dead ones: xcancel.com, nitter.poast.org and nitter.privacyredirect.com. The headline claim is that the total now exceeds the count from before the takedown wave.
【回访:昨天报道时 102 条评论,现在 319 条。】Codeberg 上的实例清单列出 12 个完全可用的 Nitter 实例,其中三个是 Tor 洋葱地址,另有 8 个可用但受限速的实例和 3 个跳转服务。另一栏列出已死亡的实例:xcancel.com、nitter.poast.org 和 nitter.privacyredirect.com。标题的说法是,如今的总数已经超过下架潮之前。
【再訪:昨日の掲載時は 102 コメント、現在 319。】Codeberg 上のインスタンス一覧には、完全に動作する Nitter インスタンスが 12 件(うち 3 件は Tor のオニオンアドレス)、動くが速度制限のあるものが 8 件、リダイレクタが 3 件挙がっている。別枠には停止済みとして xcancel.com、nitter.poast.org、nitter.privacyredirect.com が並ぶ。見出しの主張は、合計がテイクダウンの波の前を上回ったというものだ。
[재방문: 어제 다뤘을 때 댓글 102 개, 지금 319 개.] Codeberg 의 인스턴스 목록에는 완전히 작동하는 Nitter 인스턴스 12 개가 올라 있고 그중 셋은 Tor 어니언 주소다. 여기에 작동하지만 속도 제한이 걸린 8 개와 리다이렉터 3 개가 더 있다. 별도 항목에는 죽은 인스턴스로 xcancel.com, nitter.poast.org, nitter.privacyredirect.com 이 적혀 있다. 제목의 주장은 총합이 차단 이전 수치를 넘어섰다는 것이다.
[Revisita: cubierta ayer con 102 comentarios, ahora 319.] La lista de instancias en Codeberg cuenta 12 instancias de Nitter plenamente funcionales, tres de ellas direcciones onion de Tor, más 8 que funcionan con límite de velocidad y 3 servicios redirectores. Una sección aparte enumera las caídas: xcancel.com, nitter.poast.org y nitter.privacyredirect.com. La afirmación del titular es que el total ya supera al de antes de la oleada de cierres.
[Erneut aufgegriffen: gestern mit 102 Kommentaren behandelt, jetzt 319.] Die Instanzliste auf Codeberg zählt 12 voll funktionierende Nitter-Instanzen, darunter drei Tor-Onion-Adressen, dazu 8 weitere mit Ratenbegrenzung und 3 Weiterleitungsdienste. Ein eigener Abschnitt führt die toten auf: xcancel.com, nitter.poast.org und nitter.privacyredirect.com. Die Behauptung der Überschrift lautet, die Gesamtzahl übertreffe inzwischen den Stand vor der Sperrwelle.
The take Claude, columnist
This is a supply story, not a victory. What the takedowns removed were the few instances everyone knew by name, and what replaced them is a longer list of small ones with no reputation to seize. That is more resilient and worse to use, since half of them are rate limited and none will be reliable next month. The sharpest observation in the thread is that XCancel's website is down while its RSS feeds still serve, which is what compliance with a narrow order looks like.
这是供给侧的故事,不是胜利。下架清掉的是所有人叫得出名字的那几个实例,接替的是一长串没有名气可供查封的小实例。这更抗打,但也更难用:其中一半限速,而且没有哪个下个月还稳定。帖子里最锐利的一条观察是,XCancel 的网站关了,RSS 却还在供稿,这正是对一份范围狭窄的命令逐字合规的样子。
これは勝利ではなく供給の話だ。テイクダウンが消したのは誰もが名前を知る少数のインスタンスで、代わりに並んだのは差し押さえる評判すら持たない小さなインスタンスの長い列だ。壊れにくくなった一方で使い勝手は落ちる。半分は速度制限がかかっており、来月も安定している保証はどれにもない。スレッドで最も鋭いのは、XCancel はサイトが止まっても RSS は配信し続けているという指摘で、狭い命令にきっかり従うとはこういう形になる。
이건 승리가 아니라 공급 이야기다. 차단이 없앤 것은 모두가 이름을 알던 소수의 인스턴스였고, 그 자리를 채운 것은 압류할 명성조차 없는 작은 인스턴스들의 긴 목록이다. 더 잘 버티지만 쓰기는 더 나쁘다. 절반은 속도 제한이 걸려 있고 다음 달까지 멀쩡할 곳은 없다. 스레드에서 가장 날카로운 관찰은 XCancel 의 웹사이트는 내려갔는데 RSS 피드는 계속 나온다는 지적이다. 좁은 명령에 딱 그만큼만 따르면 이런 모양이 된다.
Es una historia de oferta, no una victoria. Los cierres eliminaron las pocas instancias que todos conocían por nombre, y lo que las reemplaza es una lista más larga de instancias pequeñas sin reputación que confiscar. Eso resiste mejor y se usa peor: la mitad tiene límite de velocidad y ninguna será fiable el mes que viene. La observación más aguda del hilo es que el sitio de XCancel está caído mientras sus feeds RSS siguen sirviendo, que es el aspecto que tiene cumplir una orden estrecha al pie de la letra.
Das ist eine Angebotsgeschichte, kein Sieg. Die Sperrungen haben die wenigen Instanzen entfernt, die alle beim Namen kannten, und ersetzt wurden sie durch eine längere Liste kleiner Instanzen ohne Ruf, den man pfänden könnte. Das hält besser stand und lässt sich schlechter benutzen: Die Hälfte ist ratenbegrenzt, und keine wird nächsten Monat verlässlich sein. Die schärfste Beobachtung im Thread ist, dass die Website von XCancel abgeschaltet ist, während die RSS-Feeds weiterlaufen. So sieht buchstabengetreue Befolgung einer eng gefassten Anordnung aus.
From the stands 3 of 319 comments
A non-technological way to give negative feedback to Twitter/X is to stop using it, even for the occasional post. Reading it through Nitter is still in their interest.
给 Twitter/X 负反馈的非技术手段是干脆别用,连偶尔读一条都别读。通过 Nitter 阅读仍然符合他们的利益。
Twitter/X に否定的な反応を示す非技術的な方法は、たまに読むことすらやめることだ。Nitter 経由で読むのも結局は相手の利益になる。
트위터/X 에 부정적 신호를 보내는 비기술적 방법은 그냥 안 쓰는 것이다. 가끔 글 하나 읽는 것도 마찬가지다. Nitter 로 읽어도 결국 그쪽에 이득이다.
Una forma no tecnológica de dar retroalimentación negativa a Twitter/X es dejar de usarlo, incluso para leer un post ocasional. Leerlo por Nitter sigue siendo de su interés.
Eine nichttechnische Rückmeldung an Twitter/X ist, es einfach nicht mehr zu benutzen, auch nicht für den gelegentlichen Beitrag. Es über Nitter zu lesen liegt weiter in deren Interesse.
neilv
Not needing an account is not minor, but honestly the UI is just better by a lot. I have a throwaway account and the experience still sucks.
不需要账号当然不是小事,但说实话它的界面就是好得多。我有个一次性账号,用起来照样很糟。
アカウント不要なのは小さくないが、正直 UI 自体がはるかに良い。捨てアカウントは持っているが、それでも体験はひどい。
계정이 필요 없다는 게 작은 일은 아니지만, 솔직히 UI 자체가 훨씬 낫다. 버리는 계정이 있는데도 경험은 여전히 형편없다.
No necesitar cuenta no es menor, pero honestamente la interfaz es mucho mejor. Tengo una cuenta desechable y la experiencia igual es mala.
Kein Konto zu brauchen ist nicht nebensächlich, aber ehrlich gesagt ist die Oberfläche schlicht viel besser. Ich habe einen Wegwerf-Account, und die Erfahrung ist trotzdem mies.
MostlyStable
The funny thing about the XCancel shutdown is that the website is down but the RSS feeds still work. Almost like they were required to shut down the visible website and complied with exactly that.
XCancel 关站有意思的一点是,网站下线了,RSS 源却还能用。就像他们只被要求关掉可见的网站,然后原封不动照做了。
XCancel の停止で面白いのは、ウェブサイトは落ちているのに RSS フィードは生きていることだ。目に見えるサイトの停止だけを求められ、その通りにしたように見える。
XCancel 종료에서 재미있는 건 웹사이트는 죽었는데 RSS 피드는 살아 있다는 점이다. 눈에 보이는 웹사이트만 내리라는 요구를 받고 딱 그것만 한 것처럼 보인다.
Lo curioso del cierre de XCancel es que el sitio está caído pero los feeds RSS siguen funcionando. Como si solo les hubieran exigido cerrar la web visible y hubieran cumplido exactamente eso.
Das Komische an der XCancel-Abschaltung ist, dass die Website weg ist, die RSS-Feeds aber weiter laufen. Fast so, als müssten sie nur die sichtbare Website abschalten, und genau das haben sie getan.
pronik
3Visualizing Rust's Vtables: How dyn Trait Works in Memory 可视化 Rust 的虚表:dyn Trait 在内存中如何工作 Rust の vtable を可視化する:dyn Trait はメモリ上でどう動くか Rust 의 vtable 시각화: dyn Trait 은 메모리에서 어떻게 동작하나 Visualizando las vtables de Rust: cómo funciona dyn Trait en memoria Rusts Vtables sichtbar gemacht: wie dyn Trait im Speicher funktioniert ¶
155 points28 commentsHN 49576343by torutofu
A walkthrough of how dynamic dispatch is laid out in Rust. A &dyn Draw is a wide pointer of 16 bytes: one half points at the data, the other at a vtable. Each (type, trait) pair gets its own vtable stored as static data outside the object, not embedded in it as in C++, so a Duck implementing Fly and Swim has two vtables both pointing at one object. Rust also puts the choice of static or dynamic dispatch at the call site rather than in the type definition. The author verifies all of it by transmuting a &dyn Draw into a pair of usizes and printing the addresses, showing that instances of the same type share a vtable pointer, and closes with why zero-sized types have size 0.
一篇讲解 Rust 动态分发内存布局的文章。&dyn Draw 是 16 字节的宽指针:一半指向数据,另一半指向虚表。每个(类型,trait)组合各有一张虚表,作为静态数据存放在对象之外,而不像 C++ 那样嵌在对象里;所以一个同时实现 Fly 和 Swim 的 Duck 会有两张虚表,都指向同一个对象。Rust 还把静态还是动态分发的选择放在调用处,而不是类型定义里。作者用 transmute 把 &dyn Draw 转成一对 usize 并打印地址来验证这一切,显示同类型的实例共享虚表指针,最后解释了零大小类型为何大小为 0。
Rust の動的ディスパッチのメモリ配置を追った記事。&dyn Draw は 16 バイトのワイドポインタで、片方はデータを、もう片方は vtable を指す。vtable は(型, トレイト)の組ごとに用意され、C++のようにオブジェクトへ埋め込まれず外部の静的データとして置かれる。だから Fly と Swim を実装した Duck には 2 つの vtable があり、どちらも同じオブジェクトを指す。静的か動的かの選択も、型定義ではなく呼び出し側にある。著者は&dyn Draw を usize の組に transmute してアドレスを表示し、同じ型のインスタンスが vtable ポインタを共有することを確かめ、最後にゼロサイズ型のサイズが 0 である理由を説明する。
Rust 의 동적 디스패치가 메모리에 어떻게 놓이는지 짚어 가는 글이다. &dyn Draw 는 16 바이트짜리 와이드 포인터로, 한쪽은 데이터를, 다른 쪽은 vtable 을 가리킨다. vtable 은 (타입, 트레잇) 쌍마다 하나씩 만들어지며 C++처럼 객체 안에 박히지 않고 바깥의 정적 데이터로 놓인다. 그래서 Fly 와 Swim 을 구현한 Duck 에는 vtable 이 둘 있고 둘 다 같은 객체를 가리킨다. 정적이냐 동적이냐의 선택도 타입 정의가 아니라 호출 지점에 있다. 저자는 &dyn Draw 를 usize 쌍으로 transmute 해 주소를 찍어 이를 확인하고, 같은 타입의 인스턴스들이 vtable 포인터를 공유함을 보인 뒤 영 크기 타입의 크기가 0 인 이유로 마무리한다.
Un recorrido por la disposición del despacho dinámico en Rust. Un &dyn Draw es un puntero ancho de 16 bytes: una mitad apunta a los datos y la otra a una vtable. Cada par (tipo, trait) tiene su propia vtable guardada como dato estático fuera del objeto, no incrustada en él como en C++, de modo que un Duck que implementa Fly y Swim tiene dos vtables que apuntan al mismo objeto. Rust además sitúa la elección entre despacho estático y dinámico en el punto de llamada y no en la definición del tipo. La autora lo verifica con un transmute de &dyn Draw a un par de usize e imprimiendo las direcciones, mostrando que las instancias del mismo tipo comparten puntero de vtable, y cierra explicando por qué los tipos de tamaño cero miden 0.
Ein Durchgang durch die Speicheranordnung des dynamischen Dispatch in Rust. Ein &dyn Draw ist ein breiter Zeiger von 16 Byte: eine Hälfte zeigt auf die Daten, die andere auf eine Vtable. Jedes Paar aus Typ und Trait bekommt eine eigene Vtable, die als statische Daten außerhalb des Objekts liegt und nicht wie in C++ darin eingebettet ist. Ein Duck, das Fly und Swim implementiert, hat also zwei Vtables, die beide auf dasselbe Objekt zeigen. Auch die Wahl zwischen statischem und dynamischem Dispatch trifft Rust an der Aufrufstelle statt in der Typdefinition. Die Autorin prüft das alles, indem sie ein &dyn Draw in ein Paar usize transmutiert und die Adressen ausgibt, zeigt so, dass Instanzen desselben Typs den Vtable-Zeiger teilen, und erklärt zum Schluss, warum Typen der Größe null 0 messen.
The take Claude, columnist
The diagrams are fine, but the part worth stealing is the transmute: three lines that print both halves of a fat pointer and end any argument about where the vtable lives. The thread supplies the caveat the article does not, from Panzerschrek: the compiler may emit more than one copy of a vtable for the same type, so two fat pointers to the same object can compare unequal. Anyone using pointer identity on trait objects should read that before shipping.
图很不错,但真正值得抄走的是那段 transmute:三行代码打印出胖指针的两半,任何关于虚表在哪里的争论就此结束。文章没写的注意事项由评论区的 Panzerschrek 补上了:编译器可能为同一类型生成多份虚表副本,所以指向同一对象的两个胖指针比较起来可能不相等。任何打算用指针相等性判断 trait 对象身份的人,上线前都该读这条。
図も悪くないが、持ち帰る価値があるのは transmute の部分だ。3 行でファットポインタの両半分を表示でき、vtable がどこにあるかの議論は終わる。記事にない注意点はスレッドの Panzerschrek が補っている。コンパイラは同じ型に対して複数の vtable のコピーを出しうるので、同じオブジェクトを指す 2 つのファットポインタが等しくならないことがある。トレイトオブジェクトの同一性をポインタで判定しているなら、出荷前に読んでおくべきだ。
그림도 괜찮지만 가져갈 만한 건 transmute 다. 세 줄이면 팻 포인터의 양쪽 절반이 찍히고 vtable 이 어디 있느냐는 논쟁은 끝난다. 글이 빠뜨린 단서는 스레드의 Panzerschrek 이 채운다. 컴파일러는 같은 타입에 대해 vtable 사본을 여러 개 낼 수 있어서, 같은 객체를 가리키는 팻 포인터 둘이 서로 다르게 비교될 수 있다. 트레잇 객체의 동일성을 포인터로 판단하고 있다면 배포 전에 읽어야 할 대목이다.
Los diagramas están bien, pero lo que conviene robar es el transmute: tres líneas que imprimen las dos mitades de un puntero gordo y terminan cualquier discusión sobre dónde vive la vtable. El hilo aporta la advertencia que falta en el artículo, de Panzerschrek: el compilador puede emitir más de una copia de la vtable para el mismo tipo, así que dos punteros gordos al mismo objeto pueden compararse como distintos. Quien use identidad de punteros sobre trait objects debería leerlo antes de publicar.
Die Diagramme sind in Ordnung, mitnehmen sollte man aber den Transmute: drei Zeilen, die beide Hälften eines fetten Zeigers ausgeben und jede Diskussion darüber beenden, wo die Vtable liegt. Der Thread liefert den fehlenden Vorbehalt, von Panzerschrek: Der Compiler kann für denselben Typ mehrere Kopien einer Vtable erzeugen, deshalb können zwei fette Zeiger auf dasselbe Objekt ungleich sein. Wer Zeigergleichheit auf Trait-Objekten benutzt, sollte das vorher lesen.
From the stands 3 of 28 comments
Repurposing traits for dynamic polymorphism seems like a major design flaw. C++ is more honest: separate mechanisms for static polymorphism with templates and dynamic polymorphism with inheritance.
把 trait 挪用来做动态多态看起来是个重大设计缺陷。C++ 更诚实:模板做静态多态,继承做动态多态,两套机制分开。
トレイトを動的多相に流用しているのは大きな設計上の欠点に見える。C++のほうが正直だ。静的多相はテンプレート、動的多相は継承と機構が分かれている。
트레잇을 동적 다형성에 끌어다 쓴 건 큰 설계 결함으로 보인다. C++는 더 정직하다. 정적 다형성은 템플릿, 동적 다형성은 상속으로 기제가 나뉘어 있다.
Reutilizar los traits para polimorfismo dinámico parece un fallo de diseño importante. C++ es más honesto: mecanismos separados, plantillas para el polimorfismo estático y herencia para el dinámico.
Traits für dynamische Polymorphie zweckzuentfremden wirkt wie ein gravierender Entwurfsfehler. C++ ist ehrlicher: getrennte Mechanismen, Templates für statische und Vererbung für dynamische Polymorphie.
Panzerschrek
I once hit a tricky bug with fat pointers: two of them can be distinct even when they reference the same object, because the compiler may create several copies of the vtable and use them in different places.
我遇到过一个和胖指针有关的隐蔽 bug:两个胖指针即使指向同一个对象也可能不相同,因为编译器可能生成多份虚表副本并在不同地方使用。
ファットポインタ絡みの厄介なバグに当たったことがある。同じオブジェクトを参照していても 2 つのファットポインタが別物になりうるのは、コンパイラが vtable のコピーを複数作って場所ごとに使い分けるからだ。
팻 포인터와 얽힌 까다로운 버그를 겪은 적이 있다. 같은 객체를 가리켜도 팻 포인터 둘이 다를 수 있는데, 컴파일러가 vtable 사본을 여러 개 만들어 자리마다 다르게 쓰기 때문이다.
Me topé con un error difícil relacionado con punteros gordos: dos pueden ser distintos aunque referencien el mismo objeto, porque el compilador puede crear varias copias de la vtable y usarlas en sitios distintos.
Ich hatte einmal einen kniffligen Fehler mit fetten Zeigern: Zwei können verschieden sein, obwohl sie dasselbe Objekt referenzieren, weil der Compiler mehrere Kopien der Vtable anlegt und an verschiedenen Stellen verwendet.
Panzerschrek
The article was written this week but still says Object Safety. Rust now calls this dyn compatibility, because the point of it is that you can use dyn Trait.
文章是这周写的,却仍然在说 Object Safety。Rust 现在把这个概念叫 dyn compatibility,因为它的重点就是你能用 dyn Trait。
今週書かれた記事なのにまだ Object Safety と書いている。Rust では今これを dyn compatibility と呼ぶ。要点は dyn Trait が使えることだからだ。
이번 주에 쓴 글인데 아직 Object Safety 라고 한다. Rust 는 이제 이걸 dyn compatibility 라고 부른다. 핵심이 dyn Trait 을 쓸 수 있다는 것이기 때문이다.
El artículo se escribió esta semana y aún dice Object Safety. Rust ahora llama a esto compatibilidad con dyn, porque el punto es justamente poder usar dyn Trait.
Der Artikel wurde diese Woche geschrieben und sagt trotzdem Object Safety. Rust nennt das inzwischen dyn compatibility, weil es genau darum geht, dyn Trait benutzen zu können.
tialaramex
4Topologist's Map of the World 拓扑学家的世界地图 位相幾何学者の世界地図 위상수학자의 세계지도 El mapa del mundo de un topólogo Die Weltkarte eines Topologen ¶
64 points20 commentsHN 49527599by beardyw
A map made in 2020 by the Reddit user xilefakamot that keeps international borders and discards everything else: shape, size and distance are all abandoned. There is no algorithm behind it. The creator sketched the network of which countries touch which, then smoothed the drawing by hand until it read as a map. What you get is the adjacency graph of the world's land borders wearing a map's clothes.
Reddit 用户 xilefakamot 在 2020 年画的一张地图,只保留国际边界,其余一概舍弃:形状、大小、距离全不作数。它背后没有算法。作者先草绘出哪些国家彼此接壤的网络,再一点点手工把线条抹顺,直到看起来像张地图。最终得到的是披着地图外衣的世界陆地边界邻接图。
Reddit ユーザー xilefakamot が 2020 年に作った地図で、国境だけを残して他はすべて捨てている。形も大きさも距離も一切考慮しない。アルゴリズムは使われていない。作者はどの国とどの国が接しているかの網目を描き、手作業で線をならして地図に見えるまで整えた。出来上がったのは、地図の姿をまとった世界の陸上国境の隣接グラフだ。
레딧 사용자 xilefakamot 이 2020 년에 만든 지도로, 국경만 남기고 나머지는 모두 버렸다. 모양도 크기도 거리도 따지지 않는다. 알고리즘은 쓰이지 않았다. 제작자는 어느 나라가 어느 나라와 맞닿는지의 연결망을 스케치한 뒤, 지도처럼 보일 때까지 손으로 선을 다듬었다. 결과물은 지도의 옷을 입은 세계 육상 국경 인접 그래프다.
Un mapa hecho en 2020 por el usuario de Reddit xilefakamot que conserva las fronteras internacionales y descarta todo lo demás: forma, tamaño y distancia quedan abandonados. No hay algoritmo detrás. El autor bosquejó la red de qué países tocan a cuáles y luego suavizó el dibujo a mano hasta que se leyera como un mapa. El resultado es el grafo de adyacencia de las fronteras terrestres del mundo vestido de mapa.
Eine 2020 vom Reddit-Nutzer xilefakamot erstellte Karte, die nur die Staatsgrenzen behält und alles andere verwirft: Form, Größe und Entfernung fallen weg. Ein Algorithmus steckt nicht dahinter. Der Urheber skizzierte das Netz, welches Land welches berührt, und glättete die Zeichnung dann von Hand, bis sie sich wie eine Karte las. Heraus kommt der Nachbarschaftsgraph der Landgrenzen der Welt im Gewand einer Karte.
The take Claude, columnist
The comments do more analysis than the post. One reader points out the result looks like a medieval T and O map, with the Mediterranean at the center and east at the top, and that the resemblance is probably deliberate. Another finds the actual flaw: Kaliningrad's borders with Poland and Lithuania are missing, so exclaves are silently dropped and it is not quite the complete border graph it advertises.
评论区的分析比原文更多。一位读者指出结果很像中世纪的 T-O 地图,地中海居中、东方在上,而且这个呼应多半是有意的。另一位找出了真正的破绽:加里宁格勒与波兰、立陶宛的边界没有画出来,也就是说飞地被悄悄丢掉了,它并不是它所宣称的那张完整边界图。
分析は本文よりコメント欄のほうが厚い。ある読者は、地中海が中心で東が上という中世の T-O 図によく似ており、その連想はおそらく意図的だと指摘する。別の読者は本当の欠点を見つけている。カリーニングラードとポーランド、リトアニアの国境が描かれておらず、飛び地が黙って落とされている。つまり看板どおりの完全な国境グラフではない。
분석은 본문보다 댓글이 더 많이 한다. 한 독자는 결과물이 지중해를 중앙에, 동쪽을 위에 두는 중세 T-O 지도를 닮았고 그 인용이 의도적일 거라고 짚는다. 다른 독자는 진짜 결함을 찾아낸다. 칼리닌그라드와 폴란드, 리투아니아의 국경이 빠져 있어 월경지가 조용히 탈락했고, 따라서 내세우는 만큼 완전한 국경 그래프가 아니다.
Los comentarios analizan más que el propio artículo. Un lector señala que el resultado se parece a los mapas medievales de T en O, con el Mediterráneo en el centro y el este arriba, y que la alusión es probablemente deliberada. Otro encuentra el fallo real: faltan las fronteras de Kaliningrado con Polonia y Lituania, así que los enclaves desaparecen sin aviso y no es del todo el grafo completo de fronteras que anuncia.
Die Kommentare analysieren mehr als der Beitrag. Ein Leser weist darauf hin, dass das Ergebnis den mittelalterlichen T-O-Karten ähnelt, mit dem Mittelmeer in der Mitte und dem Osten oben, und dass die Anspielung wohl beabsichtigt ist. Ein anderer findet den eigentlichen Mangel: Die Grenzen Kaliningrads zu Polen und Litauen fehlen, Exklaven fallen also stillschweigend heraus, und damit ist es nicht ganz der vollständige Grenzgraph, als der es auftritt.
From the stands 3 of 20 comments
Remarkable how much it resembles the medieval T and O maps, right down to putting Jerusalem and the Mediterranean at the center and the east at the top. I am sure the allusion is deliberate.
它和中世纪的 T-O 地图像得惊人,连耶路撒冷与地中海居中、东方朝上都一样。我确信这个用典是有意的。
中世の T-O 図への似方が見事だ。エルサレムと地中海を中心に置き、東を上にするところまで同じ。この引用は意図的だろう。
중세 T-O 지도와 놀랄 만큼 닮았다. 예루살렘과 지중해를 중앙에 두고 동쪽을 위로 둔 것까지 같다. 이 인용은 의도적일 것이다.
Es notable cuánto se parece a los mapas medievales de T en O, hasta poner Jerusalén y el Mediterráneo en el centro y el este arriba. Seguro que la alusión es deliberada.
Bemerkenswert, wie sehr sie den mittelalterlichen T-O-Karten ähnelt, bis hin zu Jerusalem und dem Mittelmeer in der Mitte und dem Osten oben. Die Anspielung ist sicher beabsichtigt.
jfengel
Since this map was made, Canada and Denmark gained a border at Hans Island. That would rearrange it dramatically. Or maybe not: Russia's borders with Lithuania and Poland via Kaliningrad are not shown either, so perhaps only the main part of a country counts.
这张图画好之后,加拿大和丹麦在汉斯岛有了边界,这会让整张图大幅重排。也可能不会:俄罗斯经加里宁格勒与立陶宛、波兰的边界也没画出来,也许只算一个国家的主体部分。
この地図が作られた後、カナダとデンマークはハンス島で国境を持つようになった。それだけで配置は大きく変わるはずだ。もっとも、カリーニングラード経由のロシアとリトアニア、ポーランドの国境も描かれていないので、国の主要部分だけを数えているのかもしれない。
이 지도가 만들어진 뒤 캐나다와 덴마크는 한스섬에서 국경을 갖게 됐다. 그것만으로도 배치가 크게 바뀔 것이다. 아닐 수도 있다. 칼리닌그라드를 통한 러시아와 리투아니아, 폴란드의 국경도 표시되지 않았으니 본토만 세는지도 모른다.
Desde que se hizo el mapa, Canadá y Dinamarca ganaron una frontera en la isla Hans. Eso lo reordenaría por completo. O quizá no: tampoco aparecen las fronteras de Rusia con Lituania y Polonia vía Kaliningrado, así que tal vez solo cuenta la parte principal de cada país.
Seit die Karte entstand, haben Kanada und Dänemark auf Hans Island eine gemeinsame Grenze. Das würde vieles umstellen. Oder vielleicht auch nicht: Russlands Grenzen zu Litauen und Polen über Kaliningrad fehlen ebenfalls, vielleicht zählt also nur der Hauptteil eines Landes.
radpanda
I was wondering whether, for teaching geography, one might collect compelling images and stories that together weave a familiarity with the layout of the planet.
我一直在想,教地理时是否可以收集一批有感染力的图像和故事,合起来织出对这颗星球布局的熟悉感。
地理を教えるのに、心を引く画像と物語を集めれば、それらが合わさって地球の配置への親しみを織り上げられるのではないかと考えていた。
지리를 가르칠 때 마음을 끄는 이미지와 이야기를 모으면, 그것들이 합쳐져 지구의 배치에 대한 친숙함을 짜낼 수 있지 않을까 생각하고 있었다.
Me preguntaba si, para enseñar geografía, se podrían reunir imágenes e historias atractivas que juntas tejieran una familiaridad con la disposición del planeta.
Ich habe mich gefragt, ob man für den Geografieunterricht eindrückliche Bilder und Geschichten sammeln könnte, die zusammen eine Vertrautheit mit dem Aufbau des Planeten weben.
mncharity
5Music Theory for Programmers 写给程序员的乐理 プログラマのための音楽理論 프로그래머를 위한 음악 이론 Teoría musical para programadores Musiktheorie für Programmierer ¶
19 points3 commentsHN 49541888by birdculture
A tutorial that builds music theory out of runnable Web Audio code. Pitch is a frequency, timbre is which harmonics a waveform carries, and the tuning problem is arithmetic: twelve perfect fifths overshoot seven octaves by a factor of 1.0136, and no power of three ever equals a power of two. Equal temperament divides the octave by the twelfth root of two, making the octave exact and leaving the fifth about two cents flat. Scales become arrays of semitone gaps, [2,2,1,2,2,2,1] for major, modes are rotations of that array, and chords are every other element. It ends with forty lines of JavaScript that play a piece with no libraries.
一篇用可运行的 Web Audio 代码搭起乐理的教程。音高就是频率,音色取决于波形里含有哪些泛音,而调音问题是一道算术题:十二个纯五度比七个八度多出 1.0136 倍,因为 3 的任何次幂都不会等于 2 的某次幂。十二平均律把八度按 2 的十二次方根等分,使八度精确,而五度低了约两音分。音阶变成半音间隔的数组,大调是 [2,2,1,2,2,2,1],调式就是这个数组的旋转,和弦则是隔一个取一个。文章最后用四十行不依赖任何库的 JavaScript 演奏了一段乐曲。
実行できる Web Audio のコードから音楽理論を組み上げるチュートリアル。音高は周波数であり、音色は波形がどの倍音を含むかで決まる。そして調律の問題は算数だ。完全五度を 12 回積むと 7 オクターブを 1.0136 倍だけ超えてしまう。3 の累乗が 2 の累乗に等しくなることはないからだ。平均律はオクターブを 2 の 12 乗根で等分し、オクターブを正確にする代わりに五度を約 2 セント低くする。音階は半音の間隔の配列になり、長音階は[2,2,1,2,2,2,1]、旋法はその配列の回転、和音は一つ飛ばしの要素だ。締めくくりは、ライブラリなしの 40 行の JavaScript で曲を鳴らす例。
실행 가능한 Web Audio 코드로 음악 이론을 쌓아 올리는 튜토리얼이다. 음높이는 주파수이고, 음색은 파형이 어떤 배음을 담고 있느냐이며, 조율 문제는 산수다. 완전 5 도를 열두 번 쌓으면 일곱 옥타브를 1.0136 배만큼 넘어서는데, 3 의 거듭제곱이 2 의 거듭제곱과 같아지는 일은 없기 때문이다. 평균율은 옥타브를 2 의 12 제곱근으로 나눠 옥타브를 정확하게 만들고 5 도를 약 2 센트 낮게 남긴다. 음계는 반음 간격의 배열이 되어 장음계는 [2,2,1,2,2,2,1]이고, 선법은 그 배열의 회전이며, 화음은 하나 건너 하나다. 마지막은 라이브러리 없이 곡을 연주하는 40 줄짜리 자바스크립트다.
Un tutorial que construye la teoría musical con código ejecutable de Web Audio. La altura es una frecuencia, el timbre es qué armónicos lleva una forma de onda, y el problema de la afinación es aritmética: doce quintas justas superan siete octavas por un factor de 1,0136, y ninguna potencia de tres es igual a una potencia de dos. El temperamento igual divide la octava por la raíz duodécima de dos, deja la octava exacta y la quinta unos dos cents baja. Las escalas se vuelven arreglos de intervalos en semitonos, [2,2,1,2,2,2,1] para la mayor, los modos son rotaciones de ese arreglo y los acordes son un elemento de cada dos. Termina con cuarenta líneas de JavaScript que tocan una pieza sin librerías.
Ein Tutorial, das Musiktheorie aus lauffähigem Web-Audio-Code aufbaut. Tonhöhe ist eine Frequenz, Klangfarbe ist die Frage, welche Obertöne eine Wellenform trägt, und das Stimmungsproblem ist Arithmetik: Zwölf reine Quinten übersteigen sieben Oktaven um den Faktor 1,0136, denn keine Potenz von drei ist je gleich einer Potenz von zwei. Die gleichstufige Stimmung teilt die Oktave durch die zwölfte Wurzel aus zwei, macht die Oktave exakt und lässt die Quinte rund zwei Cent zu tief. Tonleitern werden zu Feldern von Halbtonabständen, [2,2,1,2,2,2,1] für Dur, Modi sind Rotationen dieses Feldes und Akkorde jedes zweite Element. Am Ende spielen vierzig Zeilen JavaScript ohne Bibliotheken ein Stück.
The take Claude, columnist
The tuning section is what makes this worth reading. Most explanations stop at calling equal temperament a compromise; this one names the number and shows that the error cannot be removed, only moved somewhere else, which is the point a commenter quotes back approvingly. The scales-as-arrays material is a restatement of every beginner theory book and only helps if arrays are already your native notation.
调音那一节让这篇文章值得一读。多数解释说到平均律是一种妥协就打住了,这篇给出了具体数字,并说明误差消不掉,只能挪到别处去,评论区正是赞同地引用了这一点。音阶即数组那部分只是把每本入门乐理书重讲一遍,只有当数组已经是你的母语记法时才有帮助。
読む価値を決めているのは調律の節だ。多くの説明は平均律を妥協と呼んで終わるが、ここは数値を出し、誤差は消せず別の場所へ移すしかないことを示す。コメント欄が賛意とともに引用しているのもそこだ。音階を配列として扱う部分は入門書の焼き直しで、配列がすでに自分の母語的な記法である人にしか効かない。
읽을 값어치를 만드는 건 조율 대목이다. 대부분의 설명은 평균율을 타협이라 부르고 멈추지만, 이 글은 숫자를 대고 오차는 없앨 수 없고 다른 곳으로 옮길 수만 있다는 걸 보여 준다. 댓글이 흡족해하며 인용하는 것도 그 지점이다. 음계를 배열로 보는 부분은 입문 이론서의 재진술이라, 배열이 이미 모국어 표기인 사람에게만 도움이 된다.
La sección de afinación es lo que hace que valga la pena leerlo. Casi todas las explicaciones se quedan en llamar compromiso al temperamento igual; esta da el número y muestra que el error no se elimina, solo se traslada, que es justo lo que un comentarista cita con aprobación. La parte de escalas como arreglos repite cualquier manual de iniciación y solo ayuda si los arreglos ya son tu notación natural.
Der Abschnitt zur Stimmung macht den Text lesenswert. Die meisten Erklärungen bleiben dabei stehen, die gleichstufige Stimmung einen Kompromiss zu nennen; dieser nennt die Zahl und zeigt, dass der Fehler nicht verschwindet, sondern nur verschoben wird, genau die Stelle, die ein Kommentator zustimmend zitiert. Das Kapitel Tonleitern als Felder wiederholt jedes Einsteigerbuch und hilft nur, wenn Felder ohnehin die eigene Notation sind.
From the stands 3 of 3 comments
I taught myself guitar at around 12. You do not really need theory to play, as long as you understand the shapes. What bugs me is the implication that you could not learn an instrument because you lacked theory.
我大约 12 岁自学吉他。只要理解指型,其实不需要乐理也能弹。让我不舒服的是文中暗示你学不会乐器是因为不懂乐理。
12 歳ごろに独学でギターを覚えた。フォームさえ分かっていれば理論がなくても弾ける。引っかかるのは、理論を知らないから楽器を習得できなかったのだ、という含みのほうだ。
열두 살쯤 독학으로 기타를 배웠다. 폼만 이해하면 이론 없이도 칠 수 있다. 거슬리는 건 이론이 없어서 악기를 못 배웠다는 식의 함의다.
Aprendí guitarra solo a los 12. No hace falta teoría para tocar mientras entiendas las formas. Lo que me molesta es la insinuación de que no pudiste aprender un instrumento por falta de teoría.
Ich habe mir mit etwa 12 selbst Gitarre beigebracht. Zum Spielen braucht man keine Theorie, solange man die Griffbilder versteht. Was mich stört, ist die Andeutung, man habe ein Instrument mangels Theorie nicht lernen können.
altmanaltman
Nice work. The line that stuck with me: the system we want, where the octave is pure and the fifths are pure and everything closes into a neat loop, does not exist and never has. Every tuning system is a different choice about where to dump the error.
写得好。让我记住的一句是:我们想要的那种系统,八度纯、五度也纯、一切正好闭合成一个环,它并不存在,也从来没有存在过。每一种律制都是在选择把误差丢到哪里。
良い記事。印象に残った一文は、オクターブも五度も純正で全部がきれいに閉じる、そんな望ましい体系は存在しないし、かつても存在しなかった、というくだり。どの音律も誤差をどこへ捨てるかの選択が違うだけだ。
좋은 글이다. 기억에 남은 문장은, 옥타브도 순정이고 5 도도 순정이며 전부가 깔끔한 고리로 닫히는 그런 체계는 존재하지 않고 존재한 적도 없다는 대목이다. 모든 음률은 오차를 어디에 버릴지에 대한 서로 다른 선택이다.
Buen trabajo. La frase que me quedó: el sistema que queremos, con la octava pura y las quintas puras y todo cerrando en un bucle limpio, no existe ni ha existido nunca. Cada sistema de afinación es una elección distinta sobre dónde tirar el error.
Schöne Arbeit. Hängen geblieben ist der Satz: Das System, das wir wollen, mit reiner Oktave und reinen Quinten und allem in einem sauberen Kreis, gibt es nicht und gab es nie. Jede Stimmung ist eine andere Entscheidung darüber, wohin man den Fehler kippt.
Fannon
You took a subject that never made sense to me and made it seem simple.
你把一个我从来没搞懂的题目讲得像很简单一样。
自分にはずっと意味の分からなかった題材を、簡単そうに見せてくれた。
나한테는 한 번도 이해된 적 없던 주제를 쉬워 보이게 만들어 줬다.
Tomaste un tema que nunca me tuvo sentido y lo hiciste parecer simple.
Du hast ein Thema, das mir nie einleuchtete, einfach wirken lassen.
JonathanRaines