5 ms·
Go's first commit
- bigstumpy 10y agoI don't get it. According to the github history there was a hello world commit in 1972, conversion to C in 1974, conversion to ansi-c in 1988, then the next commit was the first go specification in 2008. Git was written in 2005. What did these hello world commits have to do with go? Why are they in the git history?
- joaopms 10y agoI guess they just edited the dates for fun.
- christophersu 10y ago> According to the github history there was a hello world commit in 1972 > Git was written in 2005. Not sure about this specific case, but it isn't uncommon to migrate from another version control system (e.g. Subversion) to Git while maintaining the past history.
- hawkice 10y agoSubversion was (to my surprise) only released in 2000, so you'd have to migrate from something even older -- perhaps CVS (released in 1990)? RCS was released in 1982, so you might have migrated from that. SCCS was released in 1972, so they MIGHT have used it, and kept those migrations going. But my guess is they fudged the git history as some weird type of historical documentation of where these languages came from?
- CobrastanJorji 10y agoWell, if it was migrated to Subversion from CVS on the day Subversion came out, that gets us back to 2000. If it was migrated to CVS from RCS on the day CVS was released, that gets us back to 1986. If it was migrated to RCS from SCCS on the day RCS came out, that gets us back to 1982. SCCS showed up in 1972, just in time for this commit.
- buro9 10y agoMy oldest photo in Google Photos is from 1994. My oldest email in Gmail is from 1996. My oldest file in Google Drive is from 1998. All of which pre-date their current storage (and some of which pre-date the company that created the current storage). None of which is as important as anything in a VCS in terms of wanting to keep history intact. BTW: If any Google engineer is present: Gmail search over mail older than a decade is terrible. Just terrible.
- mcpherrinm 10y agoThis is the first "Hello World" program, written in 1972 by Brian Kernighan, in the "B" language. I guess they decided to include a history of "Hello World" as the path to Go. See https://en.wikipedia.org/wiki/%22Hello,_World!%22_program#History https://en.wikipedia.org/wiki/%22Hello,_World!%22_program#Hi...
- djsumdog 10y agoI have projects on github older than git thanks to cvs2git and svn2git. They can convert history: https://github.com/sumdog/MplayerBuddy https://github.com/sumdog/MplayerBuddy
- TheDong 10y agoIt's a joke. It's a joke basically saying "First, there was B, and it looked like this. Then, there was C, and it looked like this. Finally, there was Go, a new evolution of our work". The git dates were clearly faked and created entirely for the purpose of this joke. If you wanna know how to edit dates, this blog does a slightly better job than the `git-commit` man page: https://alexpeattie.com/blog/working-with-dates-in-git#change-history-amending-and-editing-dates https://alexpeattie.com/blog/working-with-dates-in-git#chang...
- echelon 10y agoHow is this so old? Was Go something that was brewing for a long time prior to its development and debut at Google? Also, Kernighan? Maybe I live under a rock, but I wasn't aware of his involvement.
- f2f 10y agoit's a joke.
- bryanlarsen 10y agoNo, it's the change history of C, of which Go is a descendant.
- takeda 10y agoGo is resembling Algol more.
- mseepgood 10y ago> How is this so old? These commits are obviously jokes, probably by Ken Thompson or Rob Pike. > Was Go something that was brewing for a long time prior to its development and debut at Google? Its an evolutionary descendant of Bell Labs languages: B -> NewB -> C -> Newsqueak -> Alef -> Limbo -> Go. (The channel-based concurrency model was introduced in this line with Newsqueak) > Also, Kernighan? Maybe I live under a rock, but I wasn't aware of his involvement. He is peripherally involved as the co-author of 'The Go Programming Language' book: http://www.gopl.io http://www.gopl.io
- reality_czech 10y agoGo goes back even further than that. They started developing it on punched cards. Then the 1960s happened and... well you had to be there. Long story short, the project never got completed until 2012.
- dantaylor08 10y agoMuch more interesting (first language spec commit): https://github.com/golang/go/commit/18c5b488a3b2e218c0e0cf2a7d4820d9da93a554 https://github.com/golang/go/commit/18c5b488a3b2e218c0e0cf2a...
- dilap 10y agoI wonder why they got rid of this one > - new methods can be added to a struct outside the package where the struct is declared (need to think through all implications)
- ecnahc515 10y agoI'd have to guess it would be conflict resolution. Imagine two separately imported packages for which you didn't write that add a method in on a type from a third package you didn't write, all with the same name/method signature. How does the compiler you know which of the implementations to use?
- junke 10y agoCompiler warning. --- (edit) The example, while being possible, looks quite improbable. If it is only a matters of conflicting names, qualified names should be able to resolve the ambiguity; here I suppose you imagine implementing the same interface for the same type differently in two packages. That a package implements an interface for the same external method for a third-party type is already dubious. Now, you have two packages like this and you want to import them both. That's quite a corner case. Practically, the last package that is imported could "win" (so you can decide which you want). The compiler has to register all the possible implementations anyway, so a warning is trivial to emit on redefinitions. ---- I'd guess the restriction is to allow compilation of dynamic dispatch on a package basis (think separate compilation) instead of waiting till all possible files have been processed.
- junke 10y agoI mean dispatch in general, not necessarily dynamic dispatch.
- maramono 10y agoWhat I find interesting is that there is absolutely no mention of the word 'test' in the spec. With unit testing and TDD/BDD so ubiquitous now, perhaps new languages should be created with testing support baked in instead of it beng added as an after-thought.
- ngrilly 10y agoThis commit is a joke, a wink.
- teh 10y agoWe had a look at first commits from various projects a while ago [1] - I like how the first commits get cleaner the newer the projects are, presumably because version control became more ubiquitous. [1] https://blog.wearewizards.io/first-commits https://blog.wearewizards.io/first-commits