10 ms·
Creating the Go Programming Language [audio]
- arcticbull 7y agoStep 1: be rob pike. Step 2: invent a pretty basic programming language using your old compiler from Plan 9 while at google. Step 3: be rob pike. ^_^
- kache_ 7y agoThe basic-ness of golang is the best part about it.
- catach 7y agoIt's possible that a huge marketing advantage kept people interested long enough to come to appreciate the benefits of the langauge's basic nature.
- weberc2 7y agoI was drawn to Go because it was the only language at the time (or the only one I came across) that allowed me to build and package software without learning a domain specific language and imperatively stitching together my own build system (looking at you, CMake and Gradle). Basically I want to focus on writing my program, not writing programs to build my program. Go let me run “go build”, and everything Just Worked. It has since become a little more complicated with the introduction of modules, but still vastly better than C++, Java, or Python.
- dev_dull 7y agoThe building and deploying of Go code is refreshingly easy.
- gigatexal 7y agoI came to Go when modules had been released and found it much easier to understand than GOPATH style workflows. I guess to each their own. I agree, go build, and go distribution is so awesome.
- weberc2 7y agoI’m not opposed to modules; there are just some odd edge cases that have given me trouble; probably the error messaging just needs to be improved.
- AnimalMuppet 7y agoI see very little marketing for Go. Compare, for example, to C# when in came out, or Java when it did.
- fortran77 7y agoDid C# have actual "advertising" outside of msdn publications? It came out in 2000 and I don't recall seeing C# ads. (Print publications were out then.) I picked it up early on and still use it (and F#) today. I've written a lot of custom desktop applications in it.
- pjmlp 7y agoYes, The C/C++ Users Journal, DrDobbs, PC World, and Computer Shopper run articles on it. It was actually released in 2001. Unless you are speaking about the alphas that MSFT Certified Partners had access to.
- fortran77 7y agoThey ran articles, of course, but were there "advertisements?" These were publications writing about a major company's major new effort. There's no advertising today, either. What happens is (for example) Rust/Mozilla foundation's people set out to make every thread on every popular forum about Rust.
- pjmlp 7y agoAny kind of press is an "advertisement". That is why people that write about technology are called advocates.
- AnimalMuppet 7y agoIt is my impression (from 18 years later!) that there was a difference. The articles about C#, back in the day, were kind of frustrating to a programmer (or at least to me). There were a lot of words, a lot of description, but not many details (as a programmer would recognize them). The articles were more written for managers than for programmers. That's marketing. (Or so it seems to me. It could be, however, that 18 years ago, I lacked the depth to see the details that were there.) In contrast, Go's "marketing" is much more aimed at programmers. It's got programmer-level details. It's not trying to sell your manager on the language. > What happens is (for example) Rust/Mozilla foundation's people set out to make every thread on every popular forum about Rust. I completely disagree with this characterization.
- matthewmacleod 7y agoThis is true. It is also the worst part about it.
- hu3 7y agoYes. Together with Jetbrain's Goland IDE, Go's simplicity allows for most engineers to hit the ground running in Go projects despite not having familiarity with the language. At least that was my experience while working in a team with newcomers. The lingering issue was package management but then came Go modules and slowly but surely the community is migrating to it from godep and other tools.
- TallGuyShort 7y agoShows me the power of a good standard library. Such a light weight language, but so many tasks that require third-party libraries in other languages are built right in with equally light weight interfaces.
- mfer 7y agoYou forgot that the 3rd co-creator was Ken Thompson.
- candiodari 7y agoYeah but he's become a bit less reachable since.
- mfer 7y agoThe op was talking about being Rob Pike. Just responding that it wasn't just being Rob because Ken was on it, too. Also, Rob mostly doesn't work on Go anymore. Russ Cox now leads it and has for some time.
- dmoy 7y agoThere's a step 1.5 in there about making sawzall too
- meddlepal 7y agoPretty much this, the only reason anyone gave Go any attention was: 1. The pedigree of the creators 2. Google's developer marketing And now we are stuck with it thanks to traction.
- Thaxll 7y agoWhere exactly Google marketed the language, please gave us any example.
- jayd16 7y agoThey talk about it at Google IO, for example.
- Insanity 7y agoBut then to be fair, they also talk about Kotlin and other languages..
- Thaxll 7y agoGoogle I/O has 0 materials about Go.
- coldtea 7y agoToday, because Go has its own conventions. It used to have in 2012, 2013, 2014, etc... https://blog.golang.org/go-videos-from-google-io-2012 https://blog.golang.org/go-videos-from-google-io-2012
- privateSFacct 7y agoAvoid messy, gobbledygook, weak and no typed programming languages along with giant bloatware languages.
- kerkeslager 7y agoWhen Go fanboys say stuff like "avoid weak and no typed programming languages" in relation to Go, it just shows they don't know much about type systems. "No typed programming languages" aren't a thing. Some type is inherent to any programming language that runs on a computer, because at some point you have to shove the data into a range of memory and it will either fit or it won't. Assembly has types. They are very weak types, but they are types. On a continuum of weak vs. strong types, Go is very much a weakly-typed language. If you think it's strongly typed, it's probably because of two things: 1) you don't have any experience with a strongly typed language like Haskell or OCaml, and 2) you don't know the difference between strong/weak types and static/dynamic types. There's a widespread misconception among Go programmers that Go has a stronger type system than Python, which is pretty false: Go's type system is more static than Python's, but it's definitely weaker than Python's in a few ways. Go does have a stronger type system than C, but that's not saying much.
- privateSFacct 7y agoThanks for the follow-up
- root_axis 7y agoWhat qualifies a language as "pretty basic" and why is that a bad or a good thing?
- pjmlp 7y agoBeing basically a copy of Limbo with Oberon-2 method syntax, although we are a bit further than 1992, to start with. And while at it, offering less features as Algol used to have.
- lugg 7y agoI'd love to see algol come back with a fresh syntax.
- dilyevsky 7y agoOffering less features was literally their goal in which they succeeded
- coldtea 7y agoDoesn't change the fact that it can be called "basic" for that...
- weberc2 7y agoYes, I always find it surprising that people evaluate languages on the sheer number of features. As though the hallmark of a good language is having lots of complexity.
- pjmlp 7y agoBecause, the complexity doesn't go away, gets dumped into developers that keep re-writing boilerplate libraries that kind of compensate for the lacking features. It happens all the time. Language gets introduced at the sound of simplicity trumpet, tons of boilerplate libraries eventually appear, then if the language manages to make it in the mainstream, half baked features get introduced 'cause backwards compatibility.
- mattcaldwell 7y agoExcept the Go scheduler is actually pretty complex and really good at what it does...
- eloff 7y agoThe language is simple, the implementation is anything but.
- coldtea 7y agoFrom everything I've read, by people versed in compilers, the implementation is pretty basic too (regarding optimizations, shortcuts, compiler design, etc). In fact, the Go core team themselves have said time and again that they preferred simple implementations and implementation convenience over more powerful but complex ones...
- pcwalton 7y agoThe Go implementation has gotten more sophisticated over time. It now has an optimizing SSA backend, a rather intricate GC, etc. I still disagree with a fair number of the Go implementation design decisions, but I certainly wouldn't call the compiler a basic implementation anymore.
- binarycrusader 7y agoHaving worked on the Go port for SPARC with another person (don't know if it was ever completed), I have to agree with the parent here. The implementation of Go itself (based on 1.5-1.8 when I worked on it) was actually very complex. Large swaths of the codebase were completely uncommented and much of the knowledge about how the system is intended to work resides in the heads of the core Go team.
- arcticbull 7y agoIf only y’all could have just used llvm
- sneak 7y agofirst two minutes are ads and fluff, fast forward them
- eddieh 7y agoPlease consume the ads. Content isn't free.
- dana321 7y agoYum.
- rcoveson 7y agoWhat an ironic comment on an article whose subject is a massive, free, open-source piece of "content."
- mrath 7y agoWhile I dislike golang its runtime and compiler are nice. Also lot of its simplicity aspects are nice. if vlang can implement what it is trying to implement then probably it will be a nice contender to golang in all aspects. But that looks too good to be true. The other language is rust, but the higher learning curve make it a bit harder for adoption in non systems where go/java like performance is enough.
- minxomat 7y agoI mean, Crystal would be my next go-to. If you have never written Ruby (like me) the appeal isn't the Ruby-like syntax, it's just a reasonable syntax with a very pragmatic type system and niceties (like classes, which are more open to hacking / composition than in other languages). It's like Go++ in my mind.
- Thaxll 7y agoCrystal is dead, exactly how can you expect to have a language that compete with Go with only 2 full time devs?
- stevekablink 7y agoRust may have a "higher learning curve" but it also takes a "learning curve" to learn to debug memory errors. I argue that it's actually quicker to learn Rust.
- moocowtruck 7y agoare basic languages good though? the amount of go concurrency bugs I've dealt with has been outstanding and quite brutal over the last few years; I feel like many times the same sort of c "i dont make mistakes" programmers are attracted to go and they also don't make mistakes there as well...
- bjornjaja 7y agoThe problem creating a language that “anyone can get started with quickly” has the problem that it invites a host of people who have limited idea how concurrency, among other things, works. It’s important to understand C++ for that very reason is historical significance and how a system actually works underneath. I think there’s a general gap in people’s knowledge as a lot of people just clock in but don’t read about stuff beyond what’s required “to get the job done.”
- ci5er 7y agoOh, come on, that's not fair. After I did a million lines in C (way back when), I still made mistakes (but fewer! still: not none!), but I had built better tooling and processes to help me find them earlier. I was (as you say) attracted to Go, but with less accumulated tooling, the bugs take longer to find (that, and playing around with CSP, I guess, which is my own damn fault).
- randomdata 7y ago> the amount of go concurrency bugs I've dealt with has been outstanding and quite brutal over the last few years Concurrency is hard. Maybe something like Erlang does it better, but compared the concurrency options in most popular languages, and the bugs that go along with those options, I think I would far rather deal with them in Go. Perhaps the only reason you find concurrency issues in Go so frequently is because Go is more often used where concurrency is necessary, due to it being more suitable to writing concurrent code compared to many other popular languages? I certainly find more DOM bugs in Javascript than other languages, but I'm not sure that is a reflection of the language, only where the language is most often used.
- 7y ago
- Laremere 7y agoHN comments seem to lack focus on the podcast's contents (which isn't too surprising, as the podcast is nearly as long as the post is old.) Having already listened, here are some highlights: * How work started on the language in the beginning, including social factors such as support from their managers. * The value of starting a language with its spec instead of an implementation. Why it's a good idea and when it's maybe not. * Learning how to work in on an open source project coming from a closed source world, how to make that project successful. * Feature rich vs feature parse languages. What Go chose, and the trade-offs it took when choosing so. * What influences Go has had on other programming languages, with a focus on gofmt and code formatting in general.
- haolez 7y agoI think I'm the only Go programmer who enjoys the idea behind GOPATH :)
- mholt 7y ago\o I still use GOPATH structure since it's such a nice way to organize my code.
- duncan-donuts 7y agoI didn’t like it at first but didn’t have much choice. After a while I liked the structure. I don’t even write go anymore and I still use gopath structure for my work
- shanev 7y agoThis is a common pattern with many of Go’s features. Experienced folk sometimes tend to make unconventional design decisions. You don’t appreciate them until you’ve tried out all the alternatives, and arrived at the same conclusions yourself.
- superbaconman 7y agoI was annoyed by the change as well, but I kinda like the module system. My biggest complaint is that you can only use different major versions of the same dependencies.
- gitgud 7y agoSlightly off topic: Why was the language named "Go"? I originally assumed that it was an abbreviation of Google (where it was developed) but I can't seem to find an information confirming that...
- deleted 7y ago[deleted]
- lmuench 7y agoI recall reading that one of the reasons was the fact that "go" sounded good 1. when used as a keyword to start a "goroutine" go f() 2. when used from the command line for compilation etc. go build ... go get ...
- jbarham 7y agoAt one point the Go FAQ said that Go got its name because “Ogle” would be a good name for a Go debugger [1]. This was removed from the FAQ as a "non-answer" in 2015 [2]. I suspect the real reason is that it was a slightly risque joke... Of course the Go keyword go is a constant reminder of Go's strong support for concurrency. (Note too the goroutine/coroutine pun.) It would be interesting to know which came first, the keyword or the name. 1. https://news.ycombinator.com/item?id=5182658 https://news.ycombinator.com/item?id=5182658 2. https://github.com/golang/go/commit/e4bd8e04087ac9e7c8b754df2d01ff7dddb13ba6#diff-d28d58297b86764edb67314fe9865c7f https://github.com/golang/go/commit/e4bd8e04087ac9e7c8b754df...
- gumby 7y agoMods, please add (podcast) warning to title. There is no transcript.
- adamstac 7y agoTranscripts are delayed a few days but there will be a transcript. We have a human on staff (Alex) to ensure every podcast we produce a highly readable transcript that can also be contributed to via Github.
- AnimalMuppet 7y agoThere is now.
- kristianov 7y agoNo progress bar. No fast forward button. No speed-up. Man this UX is frustrating.
- justinclift 7y agoWith at least Firefox, there's a (non-obvious, due to colouring) progress bar a bit further down. Also lets you drag the play point around, to go back/forward/etc.
- hu3 7y agoThere's a clickable progress bar with fast-forward button. https://i.imgur.com/TMe45IJ.png https://i.imgur.com/TMe45IJ.png Also a download link for mp3.
- adamstac 7y agoFor those wanting to read a transcript... Transcripts are delayed a few days but there will be a transcript. We have a human on staff (Alex) to ensure every podcast we produce a highly readable transcript that can also be contributed to via Github.
- AnimalMuppet 7y agoTranscript is now up, at the linked article.
- higherkinded 7y agoDon't.
- MassiveOwl 7y agoI write primarily in Go, I have to admit that I can't stand the name of it. When doing a search I constantly have to write "go golang" in my searches to get relevant results. It's too generically named, like naming something "The"
- forgot-my-pw 7y agoLet's make a new language called Lang. We can also call it langlang. I'm sure there's nothing using that name~
- excessive 7y agoOne of my favorite bands from the 80s was named "The The".
- fastbmk 7y agoGo is a new Visual Basic. Probably good for business owners, because of the lowbrow nature of Go language, developers are easily interchangeable, like a commodity.