tag:blogger.com,1999:blog-9186457242428335144.post1632247673613801456..comments2024-03-28T00:36:13.790-07:00Comments on Volatile and Decentralized: Rewriting a large production system in GoMatt Welshhttp://www.blogger.com/profile/04255792550910131960noreply@blogger.comBlogger53125tag:blogger.com,1999:blog-9186457242428335144.post-29331308130310972112013-09-07T00:30:10.569-07:002013-09-07T00:30:10.569-07:00I am definitely a bigger fan of Go than of C++, bu...I am definitely a bigger fan of Go than of C++, but how much of the benefit would you have gotten if you had done the same rewrite and same change in scope but in C++ instead?<br /><br />Also, I think it's interesting that you say you need features that an IDE were built to help you with (type resolution), then say "but I won't because they require a mouse" and then say you need even more IDE features (finding types that conform to an interface - that's text editor rocket science but IDE bread and butter).<br /><br />A good IDE doesn't require more mouse use than a good text editor and even if they did, you're missing out on features you'd like to have because of self-imposed constraints. Are you trying to be productive or to prove a point? Whatever inhibition you have, get over it and just use an IDE. There are plenty of vi and emacs bindings.<br /><br />Or explain why and prove me wrong, of course.Jesperhttp://waffle.wootest.net/noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-6606229604775333962013-09-05T16:06:54.603-07:002013-09-05T16:06:54.603-07:00Comparison of Go and Scala
https://news.ycombinat...Comparison of Go and Scala<br /><br />https://news.ycombinator.com/item?id=6333955Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-73171288608783127412013-09-05T16:06:04.017-07:002013-09-05T16:06:04.017-07:00> So you write code without mistakes with super...> So you write code without mistakes with super high quality, you probably the only one on the planet!<br /><br />Yes I do, but I am not the only one. Ask around forums of Haskell/Scala/ML and this is a norm, not the exception. If you write Java in Scala then yes, the bug rate will remain high. I just wrote a 60 line program just yesterday, (a fairly complex diff program) and it ran correctly on the 2nd attempt. The 1st attempt had a bug, because of a misunderstanding about how zip<br />works on a Scala Map.<br /><br />There are haskell programmers who publish code to hackage, without even running them (just compile) and several heavily used Haskell libraries have gone years on end without a single bug report.<br />Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-57397448895150060702013-08-28T05:07:50.197-07:002013-08-28T05:07:50.197-07:00Oh my
> My code quality in Scala is super high,...Oh my<br />> My code quality in Scala is super high, when compared to code in any other language, except may be Haskell.<br />> I have written thousands of lines of Scala code with barely a bug reported by anyone at all.<br />So you write code without mistakes with super high quality, you probably the only one on the planet!<br />I worked 5 years as C# developer and 1 year as Scala developer. I'm currently working as Scala developer, Go is my hobby.<br />On my daily job build times are killing me. I hear "incremental builds" from the audience. Oh really? Don't you use git? We use git, and each feature/bug is worked on in separate branch. So guess what happen when you switch branch? Incremental build fails, and starts from scratch. This takes so much time, terrible.<br />Then what I like in Go is that you can read and understand the code of other developers. In scala every developer invents it's own DSL, so there are a lot of $> #> -> ##> - go guess what it means in this file. Implicits are great too, go figure out what's happening. Tuples are great, but "results.map(_._1._2)" sucks.<br />Scala is super powerful. But great power means great responsibility. It's too easy in scala to write the code that no one can understand without a lot of research. Scala is modern C++ - long compilation, a lot of power and very complicated. Oh, and they also inserted XML inside the language. Why? XML times are gone, JSON, YAML is leading. Why XML?Kluyghttps://www.blogger.com/profile/02351144440711542004noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-65364654691439015332013-08-26T21:49:25.956-07:002013-08-26T21:49:25.956-07:00Hi Matt,
Do you have any pointer for healing mech...Hi Matt,<br /><br />Do you have any pointer for healing mechanism of systems? It means that problem is reported and system heals by its own self.<br /><br />Please provide any pointers if you have..!!dishantparikhhttps://www.blogger.com/profile/00020305660767979775noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-6745563221961074682013-08-23T09:12:24.227-07:002013-08-23T09:12:24.227-07:00Preemption is coming to Go in tip. See https://cod...Preemption is coming to Go in tip. See https://codereview.appspot.com/10264044leafy7382https://www.blogger.com/profile/00491955626781050351noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-13107215611557151902013-08-21T17:18:07.029-07:002013-08-21T17:18:07.029-07:00> So just go on using Scala if you like it. Jus...> So just go on using Scala if you like it. Just to balance your opinion, I'm happy Google is not taking up Scala in a big way.<br /><br />I explained why I think Scala is superior to Go. I did not simply say that "I like it". There would be a balance if you could explain why Go is superior to Scala. I see the compilation speed advantage, but it is largely negated if you have a properly set up development environment with incremental compiles.<br /><br />Is Scala/functional programming too hard? Or is it simply that people haven't tried it out or too afraid of switching paradigms and want to take smaller steps, like support for closures etc, but no advanced type system or curried functions?<br />Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-72906336262869765062013-08-21T17:13:27.505-07:002013-08-21T17:13:27.505-07:00> BUT, I can write an OS in go
Go needs a garb...> BUT, I can write an OS in go<br /><br />Go needs a garbage collector. You can write an OS in Haskell/ML/Scala as easily as you can write one in Go.<br /><br />http://stackoverflow.com/questions/6638080/is-there-os-written-in-haskellAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-79241358886398861932013-08-21T10:46:02.000-07:002013-08-21T10:46:02.000-07:00My my name is Greg Sudderth, just thought I'd ...My my name is Greg Sudderth, just thought I'd say it because Anonymous is no fun! <br /><br />From my point of view as guy who learned to program C with "ed" and the nroff-ing compiler (imagine C source all on the 0 column with nroff codes in it), go is a huge advancement. Get it that we used to think of the C compiler as a big macro assembler...a quicker way to generate more assembly.<br /><br />I'm not comparing go to the Haskell/ML/Scala, that's comparison from up, going down. I'm looking at go, from assembly, going up. I can't write an OS in Java, or ML, or whatever, why would you? Even a custom language-specific-as-an-OS (think Lisp Machines) in the 80's...nope. BUT, I can write an OS in go, I can do all my utility programming that I might use Java 1.4 for, and, its going to run at flank speed, without the demon that few could tame...memory mismanagement. Only old timers remember what it was like before Purify.<br /><br />From a guy that only knows a modicum of Python, the main comparative factor I'd use is "what libs does it have" and Python is going to win for sure, because its a well-loved and 20 year old language. Let's see what happens in go.<br /><br />Speed, threading, a lot less religion than C++ and the STL, and the huge and nasty include issue dealt with. Wow. I can also bind over to another language, and use (e.g.) a lib like nanomsg, great! I think they got the whitespace all wrong but I am a AT&T flavored guy, not BSD. Oh well :)<br /><br />G.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-48134836786486662872013-08-20T20:48:03.728-07:002013-08-20T20:48:03.728-07:00:) ok, fair enough.:) ok, fair enough.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-70487098333519225962013-08-20T13:16:46.231-07:002013-08-20T13:16:46.231-07:00As a stand-in for real "X implements Y" ...As a stand-in for real "X implements Y" declarations, you can always add various cheap statements that cause a compile-time interface-satisfaction check if there weren't such statements already--different phrasings I was playing with last night: http://play.golang.org/p/lUZtDdP5iarandallhttps://www.blogger.com/profile/04270395955627579493noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-42866479647360683802013-08-20T08:31:28.050-07:002013-08-20T08:31:28.050-07:00So just go on using Scala if you like it. Just to ...So just go on using Scala if you like it. Just to balance your opinion, I'm happy Google is not taking up Scala in a big way.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-79642487174167250672013-08-20T05:12:43.071-07:002013-08-20T05:12:43.071-07:00So what is the performance of Go system comparing ...So what is the performance of Go system comparing to C++ one?Anonymoushttps://www.blogger.com/profile/09416121473117892278noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-5487683917736841632013-08-20T01:58:44.886-07:002013-08-20T01:58:44.886-07:00Small typo:
< Remember what I said about the n...Small typo:<br /><br />< Remember what I said about the new system implementing a small subset of the new system's functionality<br /><br />> Remember what I said about the new system implementing a small subset of the old system's functionalityAnonymoushttps://www.blogger.com/profile/08236184034173539424noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-31475677581321327652013-08-20T01:13:29.881-07:002013-08-20T01:13:29.881-07:00No scheduler preemption in Go compared to Erlang t...No scheduler preemption in Go compared to Erlang though :(<br /><br />The lack of per-process heaps and garbage collection is also scaring me away from Go.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-25058960429444844582013-08-20T00:50:00.032-07:002013-08-20T00:50:00.032-07:00Dude, if you learned ctags you would take care of ...Dude, if you learned ctags you would take care of Issue #2 about function definitions, and maybe even #1 :) Go vim!Bastayanoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-34741117534214578772013-08-19T19:56:21.144-07:002013-08-19T19:56:21.144-07:00Has there been any movement on adding linking to F...Has there been any movement on adding linking to FORTRAN libraries for doing numerical things?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-72091909193271320412013-08-19T17:39:16.008-07:002013-08-19T17:39:16.008-07:00I'm curious about the details of the trouble w...I'm curious about the details of the trouble with refactoring interfaces, partly because I've never worked on a system as large as Matt's.<br /><br />If the compiler can statically determine something doesn't satisfy a necessary interface, it seems like it often tells you; you get "[type] doesn't implement [interface]" if you pass a string to io.Copy() or do similar stunts. <br /><br />Was the problem here mainly that the compilation errors aren't a clean/usable way to find the implementors? Or is it mostly that some of the important type-interface relationships aren't checked until runtime (e.g., by a type assertion)? If the latter, is the issue one of "generic" types (collections, etc.) storing interface{} or is it something more app-specific?randallhttps://www.blogger.com/profile/04270395955627579493noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-69609570071951786862013-08-19T13:03:30.860-07:002013-08-19T13:03:30.860-07:00Old...
Check:
http://www.techempower.com/benchmar...Old...<br /><br />Check:<br />http://www.techempower.com/benchmarks/#section=data-r6&l=e80<br /><br />Best regards,<br />Dobrosław Żybortmatrixikhttps://www.blogger.com/profile/05587482121174796939noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-65624509826652160332013-08-19T09:20:27.774-07:002013-08-19T09:20:27.774-07:00> For background: http://talks.golang.org/2012/...> For background: http://talks.golang.org/2012/splash.article<br /><br />I did not find anything specific about scala hereAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-37805869688698381902013-08-19T09:17:57.975-07:002013-08-19T09:17:57.975-07:00I use Scala in the eclipse IDE and it launches pro...I use Scala in the eclipse IDE and it launches projects in less than 3 seconds. This is because of incremental builds. Full builds are slower. The project size is around a couple of thousand lines of Scala+Java code. While this may not seem huge, Scala code is way more compact than Java. The Scala compiler itself is less than 100K lines of code.<br /><br />With incremental builds, I have never been bitten by the slow compilation issue.<br /><br />Frankly, with Scala I have written 50-100 lines of code, equivalent to maybe 500 lines of Java code and it very often works on the first run! Because the type checker really is that good and catches 90% of your typical bugs, which makes you much more aware of the remaining 10% of the bugs. My code quality in Scala is super high, when compared to code in any other language, except may be Haskell. I have written thousands of lines of Scala code with barely a bug reported by anyone at all.<br /><br />If you set up your build to do incremental compiles, I just don't see any reason to switch to something else. I have looked at Go, they only have a limited set of built in generics and a far less sophisticated GC than the JVM, no IDE support(with autocomplete, background compilation etc, errors highlighted as you type) and far weaker ecosystem compared to Scala/Java. I just don't understand what benefit I can derive from using Go.<br />Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-48435023938861164002013-08-19T08:53:40.484-07:002013-08-19T08:53:40.484-07:00We have to be mindful of how much garbage accumula...We have to be mindful of how much garbage accumulates in our programs and when the GC pauses happen. I don't think it's any worse than any other garbage collected language, but I don't have data to back that up. Suffice it to say we're not feeling any pain because of it.<br />Matt Welshhttps://www.blogger.com/profile/07077674014671176946noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-54444778651978754862013-08-19T08:52:41.704-07:002013-08-19T08:52:41.704-07:00Anon #1 re: "Google's hiring practices fa...Anon #1 re: "Google's hiring practices favor young people who went to Ivy League universities," I don't even know where to begin. Are you even aware of who the designers of Go are?<br />Matt Welshhttps://www.blogger.com/profile/07077674014671176946noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-90526643558370245792013-08-19T08:51:35.164-07:002013-08-19T08:51:35.164-07:00Indeed, one of the most important design considera...Indeed, one of the most important design considerations for Go is fast compilation. In huge projects (like we have at Google), this matters.<br />Matt Welshhttps://www.blogger.com/profile/07077674014671176946noreply@blogger.comtag:blogger.com,1999:blog-9186457242428335144.post-22015908736872134822013-08-19T08:50:49.447-07:002013-08-19T08:50:49.447-07:00You don't have to convince me of this; I spent...You don't have to convince me of this; I spent a lot of time working on JIT compiler optimization for Java. But please check out, for example: http://ziutek.github.io/web_bench/Matt Welshhttps://www.blogger.com/profile/07077674014671176946noreply@blogger.com