Skip to content
HomeVideos
AllLongsCategoriesPlaylists
BooksBlogsPodcasts
HistoryListsWatch laterLiked videosFollowing

The videos, books, blogs and podcasts Hacker News keeps recommending, all in one place.

VideosBooksBlogsPodcastsAboutPrivacySettings

Data from Hacker News, HackerTube, HackerBooks, HackerBlogs and Open Library. Credits · Not affiliated with Y Combinator.

HomeVideosBooksBlogsPodcasts
Ctrl K

    GopherCon 2016: The Design of the Go Assembler - Rob Pike

    Gopher Academy

    3 HN recommenders · recommended in 9 months, 2017–2025

    YouTube

    23:57 · 116K views · Aug 18, 2016

    Rob Pike's GopherCon 2016 talk on the design of the Go assembler, explaining why Go uses a common assembly language translated to each architecture.

    HN points to it for background on how the Go toolchain targets many architectures and why its assembler is designed that way.

    Software Engineering & LanguagesC, C++, Rust, Go & systems languagesCompilers, interpreters & program analysis
    1. 42:44
      Armin Ronacher - A Python for Future GenerationsEuroPython Conference6.2K views • 9 years ago
    2. 56:36
      GopherCon 2014 Opening Keynote by Rob PikeConfreaks38K views • 12 years ago
    3. 51:27
      Google I/O 2012 - Go Concurrency PatternsGoogle for Developers894K views • 14 years ago
    4. 51:18
      Lexical Scanning in Go - Rob PikeGoogleFOSSSydney162K views • 15 years ago
    5. 0:27
      Rob Pike about the target group of the Go programming language (golang)f8C4G86p KbqEFe477K views • 6 years ago
    6. 1:07:00
      Sydney Golang Meetup - Rob Pike - Go 2 Draft SpecificationsMacquarie Group57K views • 7 years ago
    7. 59:26
      The Go Programming LanguageGoogle TechTalks406K views • 16 years ago
    8. 23:12
      dotGo 2015 - Rob Pike - Simplicity is Complicateddotconferences172K views • 10 years ago
    9. 48:19
      GopherCon 2014 Inside the Gophers Studio with Blake MizeranyConfreaks8.1K views • 12 years ago
    10. 22:29
      Gopherfest 2015 | Go Proverbs with Rob PikeThe Go Programming Language317K views • 10 years ago
    11. 12:31
      OSCON 2010: Rob Pike, "Public Static Void"O'Reilly119K views • 16 years ago
    12. 1:00:29
      Google I/O 2012 - Meet the Go TeamGoogle for Developers108K views • 14 years ago
    13. 38:19
      Origins of Go Concurrency style by Rob Pikejasonofthel33t28K views • 14 years ago
    14. 1:05:56
      Lang NEXT 2014 Panel Systems Programming in 2014 and Beyond25msr2.8K views • 8 years ago
    15. 31:23
      Concurrency is not Parallelism by Rob Pikegnbitcom191K views • 10 years ago
    16. 51:12
      Google I/O 2011: Writing Web Apps in GoGoogle for Developers135K views • 15 years ago
    17. 1:02:49
      Hacking with Andrew and Brad: tip.golang.orgThe Go Programming Language99K views • 11 years ago
    18. 1:00:40
      Dmitry Vyukov — Go scheduler: Implementing language with lightweight concurrencyHydra47K views • 7 years ago
    19. 31:18
      Gopherfest 2017 | Upspin with Rob PikeThe Go Programming Language50K views • 9 years ago
    20. 1:03:31
      Brian Goetz - Stewardship: the Sobering PartsClojureTV39K views • 11 years ago

    9 comments from Hacker News

    1. @chubotFeb 2017· in “Show HN: How to write a tiny compiler”

      Have you looked at the Go toolchain at all? I don't know much about it, but they implemented their back ends in a manner that is much smaller than LLVM and GCC. And it sounds like the architecture of the compiler is significantly different. I watched this talk and it was pretty interesting: this video [LINK] If I am understanding right, the claim is that they have a single assembly language for ALL GO architectures, based on something Ken Thompson wrote in the 90's for some National Instruments (?) chip. He actually says that all assembly language looks the same now. I was sort of surprised by that claim. I would like to hear a critique of this from other compiler writers. Does the fact that Go uses a single assembly language make the code slower? I imagine taking advantage of target-specific knowledge is useful, but I don't know how much. LLVM has this pretty elaborate TableGen system to express target-specific knowledge. He also makes the claim that they will be able auto-generate a new backend from the PDF description of the architecture. And he says somewhere that they reduce a lot of the work to simple "text processing" (symbol manipulation) and didn't require opening up any processor manuals. I can see how arithmetic and bitshifting is the same among all architectures. But I would think that even loads and stores have differences, at least if you want to use the processor efficiently. But he says everything kinda looks the same. Also, another thought is that compiling to W

      RecommendsView on HN
    2. @bkeroackApr 2017· in “A Foray into Go Assembly Programming”

      Here's a good talk about the Go assembler backend: this video Spoiler: they're nearly to the point (maybe now they've achieved it fully) of autogenerating a new language backend from ISA documentation PDFs! Bring that up next time someone complains about Go not using LLVM.

      RecommendsView on HN
    3. @fourseventySep 2017· in “Go Assembly by Example”

      This is relevant this video Its Rob Pike talking about the go assembler and he answers a few of your questions.

      RecommendsView on HN
    4. @znpyAug 2017· in “Orbit: An Optimizing Compiler for Scheme (1986) [pdf]”

      Interestingly, one of the pages you link ( [LINK] ) links a paper (grep "1986: Kelsey dissertation on rewrite-based compilation ") that shows the implementation of a compiler with multiple frontends (BASIC, Scheme, Pascal) using only source-to-source) transformation. I find this interesting because in a certain way, this reminds me of how the go assembler works ( this video ). For those who haven't seen the talk: basically the go compiler works on the assumption that pretty much all computer, in a way, move memory from one address to another, generate and handle interrupts, have call/return instructions and so on. Thus, the go compiler emits (IIRC) some sort of "intermediate assembler" (somehow similar to llvm's intermediate representation, but simpler) and then proceeds to "translate" such assembler to various platform native assembler. I clearly remember Rob Pike (in the talk) saying "so the task of supporting a new platform becomes a task in text processing" (okay, maybe it was worded a bit better). This might be a bit tangential, but it is interesting how some "new" ideas aren't that new after all. But I guess this is due to Rob Pike's deep experience and history with computers.

      CitesView on HN
    5. @cxrMar 2023· in “The Simplicity of Single-File Golang Deployments”

      > I kind of miss cgi-bin. If we're ever to get back to a place where random "power users" can knock up a quick server to meet some computing need they have, easy deployment has to be a big part of that. Can we make it as easy to deploy as to post on Instagram? I'd be happy with a future that takes some cues from literate programming, where if you want to deploy some application, the way you do it is to upload a copy of the software manual/specification. This should be sufficient to "teach" the server how the application should behave. It's tempting to say "Ah, sounds like super advanced ChatGPT-ops or something approaching real AGI", but what I have in mind is something decidedly less magical. It's more akin to the sort of thing that Rob Pike brought up in his "The Design of the Go Assembler" talk ("you have a machine readable description[...] why not read it with a machine?"). < this video >

      CitesView on HN