19 ms·
I’m joining the Go team at Google
- fibo 10y agoI am happy for you spf13, congratulations! And thanks again for software you wrote, like hugo!
- kozikow 10y ago> What is missing from the Go ecosystem? Personally, golang "IDE" experience is not as good as Java or even C++. For example, ycmd only supports subset of functions for golang. I miss ycmd-goto-references the most.
- tqkxzugoaupvwqr 10y agoJetBrains WebStorm with the free Go plug-in provides an excellent Go IDE experience. There are some free community editions of JetBrains IDEs that are supposed to work with the Go plug-in (e.g. PyCharm, if I’m not wrong), so you do not even have to pay anything. https://www.jetbrains.com/products.html?fromMenu#type=ide https://www.jetbrains.com/products.html?fromMenu#type=ide
- powerslave85 10y agoIt is not excellent. All other editors I used autoformat Go code after save. There are two types of format provided by IDEA - IDE Format & go fmt. Both not ideal. IDE Format does not format code according go guidelines. It can delete unused imports if you go through options. go fmt does not delete unused imports, and as result code is not compileble. Refactorings are missing in IDEA. It is not excellent, it is something you can work with.
- jen20 10y agoYou can also use `goimports` with IDEA.
- tqkxzugoaupvwqr 10y agoYou can create a macro to gofmt when you save. If you desire removing unused imports, you can add “Optimize Imports” to the macro.
- vetinari 10y agoThat looks like limitation of ycmd, not golang. Most go modes for various editors use native go utilities as their backend, for example gocode/godef/golint/gorename/guru, etc.
- the_duke 10y agoMy main iusses: -) A proper package manager. (no, go get is not enough. They have realized this and have a team coming up with a draft for an official one) -) Well written, well maintained libraries that do proper releases. There are very few of those out there. Might get better with an offical package manager and ideally package repository a la npm/crates.io -) Generics. This will help the previous point also. Often it's hard to write proper reusable libraries due to the lack of generics. And no, they didn't keep generics out because they are to complicated for the language users. They just (quote) "didn't find a good way to implement them", and big language changes like that are out of scope before 2.0. -) Macros probably won't ever come, but if not, please at least give us a language construct that reduces error handling boilerplate. (Rust has some nice macros for that).
- wyattjoh 10y ago> Generics I was concerned by this at first as well, but after using Go full time for the past two years, I've never found a need/use for them. Go doesn't lean towards strict OO principles, where I feel that most of the Generics uses are applied (Arrays, sorting, etc.). Not everyone's opinion, just my two cents.
- the_duke 10y agoYou only have "generic" functionality for built in types though. Arrays. (In a certain way maps and channels). That's fine if you only use those, but it makes it impossible to write generic functions for much else. See my comment about lack of libraries. I did miss them a lot. Not when writing your one off app or program, but for libraries. And you end up having to implement a lot yourself that's for free in other languages.
- zzzcpan 10y agoPromises and some other higher-order programming without generics are not really usable in Go.
- omginternets 10y ago
- leetrout 10y agoPlease do try atom with the go-plus package. It has goto def, can show "doc strings", and has decent integration with delve.
- akhilcacharya 10y agoFor me, using LiteIDE and Atom + go-plus was what got me comfortable with Go. Without it, I felt it was far too finicky and had lots of hidden gotchas (like no unused variables).
- kozikow 10y agoI have the same features form ycmd. ycmd actually works with atom as well and also supports go. Pushing all "IDE" features into editor-agnostic daemon is a good path for the future. ycmd is taking this spot.
- ruffrey 10y agoAtom has surprisingly consistent and useful support for go - fmt on save, debugging, automatically manages imports in a file, and the autocomplete works very well.
- karakal 10y agoWhy do people find the need to write about themselves in third person? https://stevefrancia.com/ https://stevefrancia.com/
- pgt 10y agoIt irks me too, but it is a convenient piece of ready-made press text that can be used for introducing you on stage or in other media.
- TurboHaskal 10y agoSo that others can spot the narcissist.
- amelius 10y agoIt's better than first person plural form :)
- bbcbasic 10y agoWe'd like to think so
- coriny 10y agoAs a habit it is bad, but this is actually standard for short bios. It allows it to be dropped in place directly for conferences, PR shots, news articles, etc without any rewrite.
- briceb8e 10y agoGreat to make it look like someone took the time to do a bio about you because you're important, while it's just you writing. Lack of self-confidence if you ask me.
- dagw 10y agoLack of self-confidence if you ask me. How do you figure? Every time I've been asked for a bio for a conference or similar, they've asked for it in third person. Reading bios in conference proceeding in first person would just come across as weird to me.
- hnarayanan 10y agoCongratulations, but what of Hugo? :)
- squeed 10y agoCongratulations! And never, ever, ever give up the fight for GNU-style double-dash command-line flags!
- Touche 10y agoContext? Are people actually switching to single dash flags? If so I'll get my pitchfork out of the closet.
- squeed 10y agoThe default golang flag package (https://golang.org/pkg/flag/ https://golang.org/pkg/flag/) does not implement gnu-style long-with-shortcut options. Instead, one and two-dash arguments are identical. For example, -enable-pants and --enable-pants are equivalent. Compare this with the GNU style where you can have -p or --enable-pants. Most go programs I've read use spf13's flag library, which is GNU-compatible.
- Touche 10y agoIs this a remnant of Plan9 or something? Ugh, this is why I don't dabble in ecosystems with overly opinionated leaders. You have to know when to have a strong opinion and when to do things the standard way, and some people can't do that.
- 4ad 10y agoPlan 9 doesn't have --long-options at all. In Plan 9 arguments are single letter.
- f2f 10y agoNote that the std flag package accepts double-dashed arguments just fine, it only never advertises that it does.
- smegel 10y ago> Go has the nearly perfect balance of readability, expressibility and simplicity Is Go really expressive?
- favadi 10y agoFairly verbose. But he was talking about the "balance".
- coldtea 10y agoHow it is a balance if expressiveness suffers?
- johncolanduoni 10y agoI guess the claim is that any more expressiveness would necessitate losses in readability or simplicity that the expressiveness doesn't make up for. Personally, I think you're sense of relative value of those has to be pretty unusual to thinks it's "perfect". Though valuing simplicity above almost everything else is what's written on the tin with Go.
- idobai 10y agoNo, it's verbose and recommends bad and repetitive code style which affects both readability and simplicity. The only people who'll find this language "simple" are those who never understood any more "complexities" than functions and loops: " The key point here is our programmers are Googlers, they’re not researchers. They’re typically, fairly young, fresh out of school, probably learned Java, maybe learned C or C++, probably learned Python. They’re not capable of understanding a brilliant language but we want to use them to build good software. So, the language that we give them has to be easy for them to understand and easy to adopt. – Rob Pike " +article: http://nomad.so/2015/03/why-gos-design-is-a-disservice-to-intelligent-programmers/ http://nomad.so/2015/03/why-gos-design-is-a-disservice-to-in...
- jnordwick 10y agoIt is pretty readable, but really non-functional too. Eg, they still don't have math.round and you wind up writing a lot of code because it can be a little bare bones or does things in a way that isn't quit usable. I wouldn't say it is very expressive either. Go can be very wordy and verbose at times, and some things are downright a pain or poorly thought out (e.g, while Java has finally and C++/Rust have RIAA for dealing with resource deallocation Go has defer and it doesn't work really well when you encounter an error in the dealloc logic). Simplicity is about Java 1.0. Give Go some time to add some technical debt before you get too excited about it simplicity. It isn't a bad language. This is my second run thought the language, and I'm neither excited nor turned off by it.
- XorNot 10y ago* Interfaces which can have fields would be really, really great. * A rust-style borrow checker would make dealing with channels and pointers a lot safer. * Equality operations for slices would clean up some ugly parts of the standard net library (addresses are []byte, so a direct x == y doesn't work but seems like it should). * Closed enum sets: some ability to setup an enum type which can be "complete" when used in a switch statement without needing a "default" and which will only panic/fail when a bad type conversion is made. Let me sanitize out a whole bunch of possible errors at one point in my code when I want to use constants (and be warned when I break the guarantees).
- jnordwick 10y agoMy two Golang pet peeves, not very important either: -still no math.round WTF? -make() should be syntax and not this quasi-function that takes this vast array of argument types, and while you're at it, you should just rename it `new`, because that's what it is.
- Vendan 10y agonote that new() already exists in the language.
- jnordwick 10y agoYes, and make() is completely superfluous. make() and new() can be completely rolled into one piece of syntax without ambiguity because they are the same thing.
- howeman 10y agohttps://godoc.org/github.com/gonum/floats#Round https://godoc.org/github.com/gonum/floats#Round
- deleted 10y ago[deleted]
- 10y ago
- tkubacki 10y agoI'm using C# mainly because of debugger integration in Visual Studio. Make decent visual debugger and devs will come.
- romanovcode 10y agoVisual Studio code has pretty decent debugger for Go.
- chillydawg 10y agoIs that delve? If so, it doesn't work debugging tests, which makes it, depending on your style either totally useless or just quite annoying to use.
- swah 10y agoWhat are you developing with C#? I see Go more for server-side stuff, and C# for Unity/Desktop development...
- tkubacki 10y agosome legacy Windows server stuff - part of this could be rewritten to Linux/Go/whatever_server_lang just team mates are not willing to leave their comfortable VS env. if not provided with decent IDE/debugger
- rpeden 10y agoInteresting. I've used C# heavily at my last couple of jobs and it has all been server side web work - mostly back ends of web apps, but also services and microservices of various kinds. From talks with coworkers, the impression I've gotten is that most C# in the wild is running server side, though there's obviously a lot of it in desktop apps, and on mobile with Xamarin.
- erikb 10y agoWhat is your favorite opening? I like the High Chinese.
- aurelianito 10y agoIf someone makes an alternative go implementation, they should name it baduk or weiqi.
- cbHXBY1D 10y agoAt least it would make the language and ecosystem [slightly] more Google-able.
- aurelianito 10y agoIt would collide with the game. It should be worst in the beginning.
- asdfologist 10y agoGenerics please.
- coldtea 10y ago>As I had before, I recognized that this technology had the potential to revolutionize how software was written at a fundamental level. Congrats and all, and I love Hugo (use it all the time). That said, I think the kool-aid was spiked with something. Sorry, but in what way is Go "revolutionizing"? I'd buy "refreshing simplicity" and "yay, static builds again" but it's hardly revolutionary, even in its most touted feature (channels). And it hardly changed how people write software. At best, it introduced some dynamic language programmers to static types and static builds. All the rest, including creating a language that's easy for average programmers to program at scale was already the goal, and a success at that, of Java.
- dgb23 10y agoSome of the harder more time consuming things in high level programming include abstraction/polymorphism, concurrency and dependency management which are all simpler and clearer in Go than in Java. Think about how many hours you have to invest to learn any of these things in either language.
- tmpxkdks 10y ago> abstraction/polymorphism, concurrency and dependency management which are all simpler and clearer in Go than in Java Really? A lot of copy/pasted code, generics replaced with casts on empty interfaces, poor support for collections, only very primitive concurrency tools, and so on... I can understand that simplicity is good for small CLI/network tools, but it is hardly an alternative for really big applications where Java is vastly used
- deleted 10y ago[deleted]
- pmarreck 10y agoI'm sorry to hear that. Go is not revolutionary (unless you count "completely ignoring runtime errors" to be revolutionary). If anything, functional languages are the new, old, revolutionary thing.
- thwd 10y agoHow does Go completely ignore run-time errors? For all I know it forces you to deal with them by treating them as values instead of exceptions.
- aninhumer 10y agoHowever it treats them as product values (tuples) instead of sum values (Either), so it's perfectly possible to ignore the error and take the result anyway.
- junke 10y agoIgnoring on purpose is fine. The problem is when the only return value is an error which can be ignored simply by not assigning the result to a variable. Forcing the user to do: _ = f.Close() ... in order to explicitly ignore the error would be nicer, but then, there are many functions which are known to never be checked for their errors, like fmt.Println. That's why the typical advice is to use errcheck, which has filters to avoid "false"-positives (I am not convinced that some function never should be checked for errors).
- bsdetector 10y ago> functions which are known to never be checked for their errors, like fmt.Println In Java println is checked for errors, as it should be. Every Java program that does println either aborts or deals with the error in some way. It matters. Take any program that writes to stdout and run it with ">&-" to close stdout. Because of unix, the next file it opens will be file descriptor 1 and the program will start writing the console output to the file. You want the program to abort instead of trashing a file, and especially not to trash /etc/passwd. That's why you don't want to ignore errors, because any time you do there can be unintended and hard to imagine consequences -- even something as simple as writing to the console. Simply put, Go encourages buggy programs with poor error handling.
- bigato 10y agoThe one request I make is, please do not give in to complexity in order to accommodate to all users' requests.
- snippet22 10y agoOne thing I liked the most about JavaScript was chaining methods. One thing I liked the most about c# was the libraries in one place. One thing I liked the most about PHP is the many array methods and easy to call methods from objects. One thing I liked the most about Python is the readability and built in debugger into the language. One thing I didn't like about all of them is all the libraries you have to memorize.
- Lord_Zero 10y agoHow does this guy just stumble his way into Mongo and Docker. WTF am I doing with my life?
- bitmapbrother 10y agoI dunno, perhaps develop very good open source projects like Viper, Hugo, etc...
- deleted 10y ago[deleted]
- deleted 10y ago[deleted]
- Jgrubb 10y agoI interviewed at Mongo a long time ago for a Drupal developer position. It was strange, they took me through a bunch of whiteboard algorithm crap that had nothing to do with Drupal. Obviously they weren't Drupal devs and didn't know how to interview for one so they just gave me the standard CS stuff. Obviously I was a Drupal dev so I didn't know shit about actual CS topics. I failed hard and learned a lot from it. Steve was the only one of the 3 that I interviewed with that didn't come across as a self-important asshole. He was kind and helpful and overall seemed like the perfect guy for a Developer Advocate or whatever the title was. I wish him luck.
- dmix 10y ago> they took me through a bunch of whiteboard algorithm crap that had nothing to do with Drupal. Oh I hate that type of interview. I had a similar experience getting interviewed for a front-end dev position by two backend devs at a consumer VPN company in Toronto who asked me to write common CS algorithms while they both sat there staring at me. Even ignoring the total lack of connection between the content of the algo with the job in question, I've never coded like that in my life. Largely because I also never took a CS course and didn't bothered to study cliche interview questions because I don't apply to big cos. But most importantly, I don't solve problems on the spot in front of other people IRL, so what aptitude are they testing for exactly? I'm an introvert who always codes with headphones on and likes to spend time thinking through problems on my own - but can also work with other devs to solve problems when needed. I also had OSS projects, private repos I could show them, and live production apps with tens of thousands of visitors I built myself to point to my aptitude. That's been more than enough for other smart teams to hire me. It's also the content I look for most when I've hired people myself. The non-technical founder also never told me ahead of time they were going to do this type of interview so I was surprised when they sat me down. Also during a telephone interview with their other semi-technical founder asked me to describe how NAT works (yes asking a front-end dev to describe network implementation details). I figured he was just confused about what I would be doing for them... then I showed up to meet the two backend devs the next day. I just walked out of the interview and told the founder his hiring process was silly, even though I liked the company (product). I'm happy I did. I should note that I'm not against the idea of measuring aptitude during the hiring process, if companies want to be thorough. For example. during another interview process with a different company a dev team gave me a problem to solve (with ample warning before I arrived that day) and let me solve it on my own, using my own laptop in a quiet room, while they went back to work at their own desks for an hour or two (taking however long I needed). I was fine with that process and it worked out. There was also a collaborative element to it as well. That was a test better grounded in the reality of software development.