10 ms·
Golang Diaries I
- Jabbles 13y ago"After a few painful instances of searching for things like “go array literals” and “go repl” I got into the habit of sticking with Golang; and so will this diary." https://encrypted.google.com/#q=go+array+literals https://encrypted.google.com/#q=go+array+literals https://encrypted.google.com/#q=go+repl https://encrypted.google.com/#q=go+repl ...
- vanderZwan 13y agoHe could be stuck in a filter bubble.
- thezilch 13y agoMaybe not using Google -- using DDG (or worse)? The results are an order of magnitude richer with the former.
- coldtea 13y ago>First, the name. “Go” has too many meanings and is among the world’s lousiest Google search disambiguators. Enough with this old wives tale. Yes, "Go" is too generic. Nevertheless, Google understands it just fine. Case in point: >"After a few painful instances of searching for things like “go array literals” and “go repl” I got into the habit of sticking with Golang; and so will this diary. Both his examples ("go array literals" and "go repl") return a page full of Go related results (the documentation, the golang-nuts discussion list, related blog posts, etc). What exactly is painful about it?
- Gazler 13y agoPerhaps these examples weren't the best. When searching for more general things it helps to put in golang. For example "Running go on multiple machines" or "Running go on multiple cores": https://www.google.co.uk/search?q=running+go+on+multiple+machines https://www.google.co.uk/search?q=running+go+on+multiple+mac... vs https://www.google.co.uk/search?q=running+golang+on+multiple+machines https://www.google.co.uk/search?q=running+golang+on+multiple...
- willvarfar 13y agoThe filter bubble! After you've googled enough, google starts knowing what domain you are searching in. If you search for 'array literals' you'll likely get Go results at the top rather than, say, Javascript (which is what I get, I just tried).
- Jabbles 13y agoClick the button in the top right of the search results to turn personal search off. I get Javascript results anyway.
- willvarfar 13y agoI often switch between languages and it takes google just a handful of queries to catch up and I can start omitting the language again... I sometimes wonder if they have special case code for programming-related subjects, but I guess its more general than that. Clever googlers!
- coldtea 13y agoOnly I don't use Go that much and don't search for it -- have tried it for a couple of months back a year ago. Also, I did the same in incognito mode, logged out from google account and with cookies turned off. Same results.
- pothibo 13y agoWell, I write some Go and I agree with OP. As soon as you aren't too sure of where to looks, Google doesn't either and return garbage results.
- laumars 13y agoMaybe Google is tailoring your results to bring back sites that include the programming language based on a) your past searching habits and b) the emerging trends for those specific search patterns. Google's results are highly tailored, thus two people can search for the same term and get different results. Going back to the original point raised, I too have gotten into the habit of searching for "go lang [query]" rather than just "go [query]" due to the same frustrations in the past. What the author describes isn't a unique quirk he's experienced, it's actually a very common complaint.
- coldtea 13y ago>Maybe Google is tailoring your results to bring back sites that include the programming language based on a) your past searching habits and b) the emerging trends for those specific search patterns. Google's results are highly tailored Well, tried the same thing logged out from Google, in incognito mode and with cookies turned off. Same results. I can also try to proxy my search to a remote VPS I never use and see what happens. But anyway, forget the "fitler bubble". Google is smarter that the naive "Go means the verb" in all contexts.
- laumars 13y ago> Well, tried the same thing logged out from Google, in incognito mode and with cookies turned off. Same results. Now lets try it with a search phrase that hasn't been hammered to death: "go http listener" [1] https://www.google.co.uk/search?q=go+http+listener https://www.google.co.uk/search?q=go+http+listener [2] https://www.google.co.uk/search?q=go+lang+http+listener https://www.google.co.uk/search?q=go+lang+http+listener In example 1, only 1 item on the 1st page is related to Golang. In example two, every result is related. (and that's without me dipping into incognito mode) People like yourself and the OP can love to prove people wrong and argue that same popular searches work perfectly for you, but until you've spent a few months learning the language and thus making frequent searches online like myself and the author have, all you're doing is making pointless arguments (i mean does it really matter that much to you when you're not actively developing in the language?) which are based upon flawed experiments (as already discussed) and inexperience. If that sounds condescending, then I'm sorry, but I've been working in Go for > 6 months now -so I'm still a new comer- but even just in that time I've noticed how poor the results are without specifying "lang" in the criteria. So I resent having a non-go developer tell me that I'm imagining the last 6 months of online research. Particularly when several (read: not just one other, but several other) Go developers have spoken up in this very same thread and confirmed the same issues I've been raising. This isn't some blip in Google's results. This is a genuine issue with the searchability of "Go". But don't just take my word for it, here's some screenshots: [1] http://armyofcrabs.com/google-go.png http://armyofcrabs.com/google-go.png [2] http://armyofcrabs.com/google-golang.png http://armyofcrabs.com/google-golang.png
- deleted 13y ago[deleted]
- pbreit 13y agoWhen I recall starting to investigate Go it was made pretty clear to always use "golang" for Googling. This seemed an odd gripe to me.
- levosmetalo 13y agoSo, if you want to use Go you pretty much have to use Google search since no-one else made a special case for Go. It is a bit of a problem for some people.
- wrl 13y ago"Nice C-flavored code (there’s even ++) but look, Ma, no semicolons!" The hate for semicolons is far, far more annoying to me than semicolons ever are.
- msie 13y agoYes, it's weird how some people deny their existence in Javascript!
- Roboprog 13y agoThat's because Javascript is a line oriented language like Ruby! :-) Use semicolons like you would use colons in BASIC: to stack multiple statements on a line. The C programming language is not the be-all & end-all template for programming languages.
- karka91 13y agoGolang ins't all that new. I don't get it why so many articles exploring the basics get so much spotlight. It's a good language. I'd like to see more articles about things made with it and not about it.
- jeremymcanally 13y agoRuby was about 10 years old before most people took notice. :) It often takes time for languages to get traction.
- corresation 13y agoThe language was conceived under four years ago, and only quite recently was considered production ready. Yes, in the pantheon of programming languages it is very new. Further many of us have stayed at a distance until the ecosystem of supporting libraries and supports are robust enough (I love everything about developing, but my primary concern remains paying the bills and pulling in the lucre, so exploratory or academic languages don't get prioritized). I am quite sure that a large percentage of HNers are interested in the language, but haven't yet taken the dip and thus are intrigued by things like this.
- Smerity 13y agoThe post is fun, thanks. I like Tim's idea of "taking the journey" with a programmer on discovering new content. It's certainly the best way to introduce the topic to others. All the potential sticking issues have been handled for you! I was also excited when he said "I filed a bug on June 6th, and it was fixed on the 12th. Gotta love that.". There is no better feeling than sending a pull request and having someone thank you, merge it, and fix the issue within a few hours or days of you sending it. In this case, however, I think his joy may be premature. Rob Pike replied to the bug saying it was indeed an issue and either the code or documentation should be fixed. Having Rob Pike reply is a good start, considering he's the primary author of Go. Someone else then came along and fixed it in a way the article's author is unhappy with, though[1]. [1]: https://code.google.com/p/go/issues/detail?id=5655 https://code.google.com/p/go/issues/detail?id=5655
- unwind 13y agoYeah, the final comment on the bug is also from Mr Bray, and isn't exactly a "thanks". I was quite surprised by that combination after reading the diary blog post, they don't really match up.
- corresation 13y agoAgreed, that bug is quite a bit different from the impression in the blog post. Tim is completely right, however: Why can't he use the automatically differentiated leading underscore test? And the fix of the documentation is, as he mentioned, just as wrong as it already was. Now I wonder if his bug comment was sarcastic, because it would be had I written it.
- BarkMore 13y agoWhy can't he use the automatically differentiated leading underscore test? The go tool currently ignores all files with a leading '_' in the name. Changing the tool to use a file with the name '_test.go' complicates the rule for ignored files and might break an existing project. The workaround of using 'all_test.go' is not onerous.
- 13y ago
- jzelinskie 13y ago>Golang will not let you compile if there’s an import or declared variable that’s unused. OK, I understand that Cleanliness Is Next To Godliness, but this is seriously slowing me down; probably a third of my attempts to run my damn program fail because I’ve forgotten to remove debugging apparatus, or I’ve sketched in a variable but not used it yet. How about a compiler switch or something? I don't find this an issue with vim using syntastic. When I save, I get notified in the gutter of issues like this and then I can use the official go vim support to do things like :Drop to remove the import without even navigating to the imports section. Syntastic picks up on most issues before you even think of compiling. >There doesn’t seem to be a way to declare a constant array, what in a Java class I’d call final static String[] COLS = {"Red", "Blue"}; Constants in Go are evaluated at compile time and arrays don't exist at compile time. You can manage at the package level by using a unexported variable then exporting a function that returns it.
- zzzcpan 13y ago> Golang will not let you compile if there’s an import or declared variable that’s unused. OK, I understand that Cleanliness Is Next To Godliness, but this is seriously slowing me down; probably a third of my attempts to run my damn program fail because I’ve forgotten to remove debugging apparatus, or I’ve sketched in a variable but not used it yet. How about a compiler switch or something? Agreed, this is really annoying and makes it very hard to prototype things.
- zwieback 13y agoThis is exactly the kind of thing I was looking for - more please. I'm interested in golang but don't need general programming tutorials. How go is different from other languages and what it's idiosyncracies are is good to know.
- NateDad 13y agoPlease call it Go, not golang. Golang is the domain name of the language's website, a useful hashtag, and an occasionally useful search term. It is not the name of the language should not be used as such. The language is Go, it should be called Go.
- Symmetry 13y agoI’m also unconvinced that the distinction between := and = is essential; feels like unnecessary ceremony. I think that's actually almost my favorite thing about the language, I don't know how many times I've wished that Python and Lua worked that way. Having a low-ceremony means of declaration while also preventing you from accidentally over-assigning something when you want to be declaring it is really nice.
- scott_s 13y agoGolang will not let you compile if there’s an import or declared variable that’s unused. I think that is the result of an explicit design goal of Go: optimizing for large projects that involve many files and packages developed by many people. Having extraneous package or variable declarations in parts of a program are not an issue for small, one-off exploratory programs, but can be for large projects. So they're consciously making it slightly more painful for small projects because they're designing for large projects.
- zzzcpan 13y agoThey can produce a warning on unused stuff, instead of an error and not force this idea on everyone, especially considering they have zero proof on this idea. Also, every large project starts from a small one.
- eikenberry 13y agohttps://github.com/elazarl/gosloppy https://github.com/elazarl/gosloppy
- scott_s 13y agoGo is a rather opinionated language. They could produce a warning, but then with large projects, one has to decided, should all warnings be made errors? Will there be exceptions to the rule? They simplified that for large projects by making one decision, and forcing it on everyone. (Please note that I am explaining what I think their motivations are. I am not arguing for the perspective.)
- viscanti 13y agoWhat's the argument for allowing un-used imports? I've never run into a case where I wished I had imported something but didn't want to use it If you're looking at future code, you can accomplish that by commenting out the import. But I've never run into the situation where writing future code has been good, or where I wouldn't have remembered to import the package I needed when I wrote that code. If you really need to import packages you're not using, and for some reason can't spend the time to comment those out, GO probably isn't for you. I just haven't heard of a case where doing otherwise would have been helpful.
- voidlogic 13y ago>The second big gripe is that Golang has neither an IDE nor a REPL. The IDE part is not true at all, why do people keep saying this? LiteIDE (aka golangide) works great, I use it all day everyday. It has syntax highlighting, autocomplete, gofmting, building, debugging, etc and is very lightweight. Downloads: https://code.google.com/p/golangide/downloads/list https://code.google.com/p/golangide/downloads/list Source: https://github.com/visualfc/liteide https://github.com/visualfc/liteide As for the merit if REPL over something like the go playground (http://play.golang.org/ http://play.golang.org/) or a debugger, I can't say. Most of the code I wrote before Go was C/C++/C#/Java.
- cynwoody 13y agoThe main benefit of a true REPL over the Go playground is that a REPL allows you to interact with the state of a partially-run program. By contrast, the Go playground is one-shot. Your code runs quickly, but completely, and you see the result. But you can't examine the data structures interactively. For instance, when debugging a simple Python utility, I will often put the steps it goes thru into individual functions and tie them together with a main() function normally called via "if __name__ == '__main__':main()". That allows me to import the program as a module into a REPL session, from which I can call the functions individually and examine the resulting outputs. If something's not right, I can alt-tab to the editor, make a change, save the program, and use the reload() function in the REPL. Sometimes, the REPL-obtained data is all I'm looking for, and I never get around to running the code from the command line.
- voidlogic 13y agoOK, in a compiled language like Go a REPL implementation looks hard- am I wrong? It seems like besides the code being R/O a debugger is pretty close too. When testing with a debugger I setup my program to run the same tests, read the same input etc. In this way I can use the debugger, find and issue, change the code, set a break point, re-run the program and I'm right back where I left off. This sounds functionally similar to using a REPL.
- Roboprog 13y agoI never worked with Algol, but I worked with Pascal years before C. The part of Go syntax that seems "bastardized" to me is trying to hide the language in C syntax, when clearly it seems more like Modula. Type blocks? Var blocks? Types-after-names? Makes sense to me (a former Turbo Pascal user) :-P
- claystu 13y agoThis is exactly what I think too. I suspect the only reason they kept C's pointer token instead of using ^ is to maintain the fiction that this is really a 'C' family language rather than a derivative of Pascal and Modula.
- Roboprog 13y agoDon't forget that one of the creators went to University of Zurich. (did he study with Wirth???)