Live data from Hacker News

I’m joining the Go team at Google

spf13.com

61–70 of 211 posts

Re: I’m joining the Go team at Google

#61

Earlier quoted context omitted.

JetBrains 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

It 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 someth…

You can also use `goimports` with IDEA.

Re: I’m joining the Go team at Google

#63
post #53

I'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.

How 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.

How does treating them as values force you to deal with them (except on principle)? Does the language force you to check the return value of every line of code? And the checking would only encompass expected errors, not unexpected ones, no? The unexpected ones (read: bugs) would simply be swallowed up and the actual problem would finally turn up far away in some other stack scope, no?

Re: I’m joining the Go team at Google

#64
post #54
post #31

> 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 f…

Some 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.

Think about how many hours you have to invest in writing workarounds for features available out of the box in other languages.

Re: I’m joining the Go team at Google

#65

Earlier quoted context omitted.

Make decent unit test coverage and you'll hardly ever see a debugger again. Neither will you need a fancy code editor.

Nope. It is absolutely false. You will always need a debugger and there are some problems that are not unit testable at all. How do you unit test a random WPF bug? And you'll always need a fancy code editor unless you're masochist.

If WPF was designed from the get-go using TDD, there would be less of a problem here in this case.

I myself have hardly ever needed a debugger in any code i've worked on that has been TDD from the ground up. And it is almost ALWAYS related to OTHER code that was clearly not written with TDD in mind.

Tell me something: What exactly is a "bug"? It is literally just a state the programmer did not expect, correct? So how do you keep all states expected? By constraining them (types, guards, etc.), by testing them in the small (unit testing, TDD), and by making them (ideally) immutable values (preventing unexpected changes to values within one stack frame). If you can control all possible states in the small, you can largely eliminate bugs in the large.

At least, I've found this to be the case after 20 years of working on procedural and OO code...

Re: I’m joining the Go team at Google

#66
post #31

> 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 f…

Go's big success, in my opinion, was to fuse the lightweight, spawn a million threads we don't care, style of programming to conventional imperative, conventional static-type programming. I know of several other runtimes that had that lightweight threading capability, I've been using them since years before Go was even a thing, but they all required programmers to learn a new paradigm. At times, a radically new paradigm (Haskell).

You may complain that programmers have a professional obligation to learn those new paradigms. You may complain that programmers should consider "learning a new paradigm" a smaller strike against a language, especially if it brings other good things with it. But that won't change observed reality, in which programmers do want to not have to risk several months to a year on something they aren't sure will pay off. By contrast, if you know any of the existing manifestly-typed languages at all (Java, C, C++), which most programmers do to some extent, you'll be writing fancy concurrent code in Go next week. Possibly even "tomorrow". You can be shipping production code in a month.

The language nerd in me really wishes Go had isolated its goroutines from each other and only passed things by value. (While I like Rust's much finer-grained handling of that for a lot of other reasons, you can get a lot of the benefits in a language where the threads aren't supposed to be that large by isolating to small threads, and it's way easier to implement.) The pragmatist in me is forced to reluctantly admit that had it done so it probably wouldn't have succeeded as much, because while that may not have been a "full" paradigm shift if the rest of the language was still imperative, it still would have been at least half of one. That affects how you design larger programs. In a lot of good ways, I think, but still, change with an unknown prospect of payoff.

So... it depends on your point of view. It's not revolutionary in the sense that there's anything new in it. But it is a somewhat revolutionary combination of concepts.

You're even free to join me in being a bit sad that fusing your concepts to an Algol-descended language is basically mandatory for success right now. But, one step at a time. We are slowly creeping away from it. As I've often observed, programming as a profession does not move anywhere near as quickly as some people think; there's a constant surface churn of technologies and languages, but deep paradigm shifts take decades.

Re: I’m joining the Go team at Google

#67
post #53

I'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.

How 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.

Go forces you to use errcheck.

Re: I’m joining the Go team at Google

#68
post #58

I'm using C# mainly because of debugger integration in Visual Studio. Make decent visual debugger and devs will come.

Programming in C# feels almost like scripting. Blazing-fast compilation with the added benefit of static type system. If only MS took a different path of cross-platform support in the beginning.

That was already our experience in Turbo Pascal, Delphi, Oberon, .... :)

My only complaint is that they took the CLR path instead of the Ext-VOS one, with is now reborn as UWP (aka WinRT).

Re: I’m joining the Go team at Google

#69

Earlier quoted context omitted.

Nope. It is absolutely false. You will always need a debugger and there are some problems that are not unit testable at all. How do you unit test a random WPF bug? And you'll always need a fancy code editor unless you're masochist.

If WPF was designed from the get-go using TDD, there would be less of a problem here in this case. I myself have hardly ever needed a debugger in any code i've worked on that has been TDD from the ground up. And it is almost ALWAYS related to OTHER code that was clearly not written with TDD in mind. Tell me something: What exactly is a "bug"? It is literally just a state the programmer did not expect, correct? So how…

I am yet to see TDD work with native GUIs.

Re: I’m joining the Go team at Google

#70
One 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.

Post reply on HN