20 ms·
Six years of Go
- Sphax 11y agoCongrats to the team. Go has never let me down in my work and my personal projects, it's just awesome.
- DanWaterworth 11y ago... and still no generics.
- br1 11y agoSeconded
- nih0 11y agoThis discussion again
- rhodysurf 11y agoWill this ever end
- tomp 11y agoActually, Ho has generics and has had them from the beginning. But they're only available for builtin types (slices, maps), not for user-defined types/functions.
- kasey_junk 11y agoAnd you can see already that starts them onto the slippery slope as they don't support variance rules. Which leads to lots of boilerplate/runtime-typed code.
- ohto 11y agoIt is fairly clear by now that omitting generics is not an oversight, but rather a design choice. If you disagree, it sounds like Go isn't for you. Maybe it's time to just move on and ignore it instead of beating a dead horse. I am always confused by the push to make every language exactly the same by using the same paradigms and features. Some languages try to take a different approach. If you can't figure out how to work within that paradigm, don't use it. Your comment is akin to complaining that Haskell doesn't support an imperative style.
- DanWaterworth 11y agoThe Go faq doesn't agree with you.
- sambeau 11y agoYou are both correct. It is by design that Go does not have generics as the Go team have not found a design they feel works and they are unwilling to compromise the current design. They may never.
- blowski 11y agoYou're both right. I'm paraphrasing, but the FAQ says "We will add generics if somebody can demonstrate that the value of doing so would outweigh the complexity it would add". I'm assuming nobody has demonstrated that, so they haven't added them.
- meddlepal 11y agoShould really read "We will add generics if somebody can perform the impossible and convince the very stubborn and opinionated Go leadership that the value of doing would outweigh the complexity it would add".
- ohto 11y agoNonsense. Reread the FAQ. They are choosing to not implement generics. If someone can find a way to implement them without violating Go's design principles, they will. In other words, it's a choice. It's not that they just haven't got around to it.
- mojuba 11y agoFeel free to downvote me if you want, but I'm skeptical about Go and what caught my attention in this linked article is the picture. Pretty much what I feel about Go. Was it a (sub)conscious choice?
- kris-s 11y agoI picked up the new Go book (gopl.io) and have had a lot of fun going through it. The prevailing feeling of Go is "getting things done". I also write a little Go program every day as practice. If you want a sample of some Go. https://github.com/kris-s/daily-go https://github.com/kris-s/daily-go
- kasey_junk 11y ago> The prevailing feeling of Go is "getting things done". This is a common refrain amongst go proponents and I find it quite distasteful. It either implies those of us who prefer other languages aren't "getting things done" or those who feel productive in Go aren't smart/hard-working/educated/etc enough to "get things done" in other languages. I don't think either is true. I think a more accurate way to look at Go is that the language, tools, and standard library make decent design trade-offs when your target software is 1) simple 2) network daemon-y or a CLI and 3) going to be worked on by a wide variety of developers. There are lots of problems that fall into that problem set, and it is very nice to have a language targeted at it, but Go is certainly not a good fit for a huge number of software projects. You will be less productive in those cases using it.
- kris-s 11y agoYou are over analyzing that phrase.
- kasey_junk 11y agoGranted.
- geodel 11y ago"Getting things done" is quite accurate considering large number of popular Go projects in short time compared to allegedly better design languages ( Scala, Rust, Haskell, D, OCaml etc..)
- RodericDay 11y ago
- chrshawkes 11y agoI'd say after 6 years adoption rate has been rather lackluster
- csears 11y agoCompared to what other new language?
- chrshawkes 11y agomaybe not specific to language, but compared to projects like Angular, React etc... Go has much less traction. Swift is a new language and is already much more widely used.
- hahainternet 11y agohttps://twitter.com/jamwt/status/629727590782099456 https://twitter.com/jamwt/status/629727590782099456 What the heck are you talking about. Who uses Swift on this sort of scale? This is just one of the many MANY large companies using Go to power their core infrastructure.
- chrshawkes 11y agoGo brings some good things to the table, yes. I've seen it's popularity rise in recent years, but it seems to be rising slowly. There are a ton of companies that can be listed for almost every technology. Node is another technology I would put ahead of Go as far as adoption. Maybe Go will get better, to me, it's too different than a lot of what I see day to day with Java, C#, Python, JavaScript and on and on. The part I love about Go is that it handles garbage collection, other than that, it's atrocious looking C like code.
- hahainternet 11y ago> Go brings some good things to the table, yes. I've seen it's popularity rise in recent years, but it seems to be rising slowly. There are a ton of companies that can be listed for almost every technology. Then name any company using Swift to the level Dropbox uses Go, or retract your claim. Go code looks nothing like C other than general brace styling. I can't decide if you're trolling or just genuinely this ignorant.
- kriro 11y agoGo seems like a fun language that has been sitting on my "look into it list" for a while, can't belive it's already six years old. Since the TensorFlow video post is currently on the frontpage as well...as someone who uses neither C++ nor Go (I can write FizzBuzz level of code in both and read both well enough to get what's going on) I have to wonder how much internal buyin Go really has at Google if the core of such a project is implemented in C++. It's a project they see as valuable in the future and it would lend itself really well to Go as these calculations are done distributed and yet they picked C++. [I'm not sure how much of the old framework they reused but if the will to Go was really strong I'm sure that wouldn't have been an issue]
- kzvezdarov 11y agoI think in the TensorFlow case it is just a purely technical decision - I don't see how they could achieve what they aim for with that project in Go (or really, in anything but C/C++ at this point in time). Right tool for the job, etc.
- GrandTheftR 11y ago+1 for right tool for the job. Also, I can imagine they have large amount code already there in C/C++ since this is the second deep learning system they designed. and if you watch Jeff Dean's video, he mentioned more front end in other languages, Go is the only example and as the interest from internal.
- tptacek 11y agoGo is a language designed by Google people, but it is very much not the standard Google language. Most things Google does aren't done in Go.
- jgrahamc 11y agoHaving said that Rob Pike told me that Go is now one of Google's "official languages".
- adrianlmm 11y agoDespite the hype in the beginning, it never caught my attention.
- lsllc 11y agoI've used Golang extensively for a few years now anywhere from ARM/Linux to x64/cloud based containers (and I admit, occasionally on Windows!). It's really a great platform, very robust and has an excellent ecosystem. I can't recommend it more highly.
- johnydepp 11y agoI tried Goland for two of my personal projects. Initially I thought I will get used to the new syntax, but it never happened. It may have certain performance-edge over other languages but I wouldn't call it a modern language. I find coding in C more fun than Golang..
- hahainternet 11y agoI picked up Go because C frustrated me so much. Can you give some examples as to why you prefer C?
- agentultra 11y agoNot the author... I prefer C99. A smattering of features I like: * Variable Length Arrays * Variadic Macros * Designated Initializers * Anonymous Structs * Compound Literals Some of the meta-"features" I like: * No built-in runtime or GC * A choice of dynamic vs static compilation * A good libc is wonderful but not necessary to get work done fast * The tooling is mature and plentiful I'm sure Go is a fine language. I probably suffer from some sort of first-language bias as I've been using C for a long time and only know a smattering of Go from toy programs, blog posts, and reading the source to interesting projects like CockroachDB.
- voidlogic 11y agoI just want to point out: 1. Variable Length Arrays: Go has slices 2. Anonymous Structs: Go has these 3. No built-in runtime (in C): This is not true unless you are compiling -ffreestanding -nostdlib, etc. I have done this in C, but such programs have to call system-calls directly and provide their own malloc, etc.
- agentultra 11y agoNot for every project but it does have it's uses (re: -ffreestanding -nostdlib, etc)
- 11y ago
- domrdy 11y agoI love Go. It helped me so much, not only career wise but also on a more personal level, bringing back the excitement in programming I missed so dearly from my early days. Drop by at one of our Golang meetups if you're in the Munich area. http://www.meetup.com/Munich-Gophers-Go-User-Group/ http://www.meetup.com/Munich-Gophers-Go-User-Group/
- dejawu 11y agoStarted using Go for my latest project (a successor to Evernote). It feels like such a relief, especially having just come out of a node.js project. It's everything I wanted in a (web-app) programming language, and for the first time I can say that a language has actually made my code better. I've never had a codebase this clean before.
- thebouv 11y agoI understand the basics of Go, but do you have any advice on where to start using it for web app development? Any framework that you're using (if one at all)?
- lsllc 11y agoI've used go-martini on a number of projects; it strikes a nice balance between performance (it's by no means the fastest Go web framework) and usability.
- dejawu 11y agoI've picked out the following that I like: - Gorp[1] for SQL stuff (I like that it "encourages" your program data structure to reflect your DB structure) - amber[2] for templating - gorilla/mux[3] for routing - gorilla/securecookie[4] for login/auth management (they have a sessions and context library too if you want that) Go also has libraries that handle basic versions of most of these tasks (and these third-party libraries extend them). If you're building something simple they might be sufficient. [1] https://github.com/go-gorp/gorp https://github.com/go-gorp/gorp [2] https://github.com/eknkc/amber/ https://github.com/eknkc/amber/ [3] http://www.gorillatoolkit.org/pkg/mux http://www.gorillatoolkit.org/pkg/mux [4] http://www.gorillatoolkit.org/pkg/securecookie http://www.gorillatoolkit.org/pkg/securecookie
- deepanchor 11y agoI've found the standard library to be more than capable for most CRUD style apps. You can add in simple middleware chaining using a library such as Alice (https://github.com/justinas/alice https://github.com/justinas/alice) and for passing around request contexts between them, you can use something like xhandler (https://github.com/rs/xhandler https://github.com/rs/xhandler). If you want more performant or flexible routing, httprouter (https://github.com/julienschmidt/httprouter https://github.com/julienschmidt/httprouter) has a nice feature set. Maybe it's personal preference, but there's something more satisfying about the modular approach of building up an app using only components I need and understand, rather than starting with a magical feature-laden framework but quickly realizing you don't need half of what it does. I think Go aligns particularly well with this philosophy given its emphasis on composition.
- jinst8gmi 11y agoI find it curious that virtually any negative or critical comments about Go get downvoted.
- thebouv 11y agoHave they been constructive, or just random negative noise?
- penetrarthur 11y agoBecause you don't insult someone when it's his birthday!
- lobster_johnson 11y agoOn the other hand, honouring people by roasting [1] them is also tradition. Maybe if the criticisms were funnier. [1] https://en.wikipedia.org/wiki/Roast_(comedy) https://en.wikipedia.org/wiki/Roast_(comedy)
- dilap 11y agoI've been having this vision for a while of making a HN-style site where you have to explicitly tag your comment as 'in agreement' or 'in critique'. (And also maybe a slightly hidden away, 'off topic, but that reminds me...' section.) Then you could, for example, browse the ed column of birthday wishes & happy usage stories of Go, say on the left hand side, and then also, scroll through the op-ed right column of dissenters and critiques. There's just something very disheartening about having a bunch of "anti X" dominating what you were hoping would be a discussion of "X"; downvoting is certainly not the right solution -- it's fine to be anti-X, it just needs a little bit of its own space.
- steveklabnik 11y agoSlashdot had this concept of modifiers, so you could say "+1 Insightful" or "-1 Troll". "+1 Funny" didn't give you any karma.
- codygman 11y agoI wish the gdb support were better or that delve were more stable. I also had some weirdnesses using cgo on osx. Then I went into #go-nuts on freenode, and I got told I was wrong and there was no problem. Back in 2009 #go-nuts seemed to be a much different place. I write Go at work, and I admire many of the same things in Go I admire about Python. I still wish generics were part of the language and will say their excuses about not being able to do it in a performant way seem to just be away of avoiding the subject. Ocaml for instance, has a performant generics implementation. Sometimes the Go community can have an anti-programming language research and anti-intellectual feeling which can be annoying, since in addition to Go I write a good amount of Haskell. The tooling is nice as people say, however I think more maturing of the platform needs to be done. It's also never talked about how much slower Go's claim to fame of fast compilation got much slower after the 1.3-1.4 switch to a compiler totally in Go. In all fairness, I could be wrong about the last one since I haven't benchmarked it... but I can say it feels much slower than it was around 1.1/1.2. Concurrency in Go is easy, however I feel like many erroneously think that channels or concurrency primitives like it only exist in Go. There are other languages with rich concurrency and parallelism options as well. Using lots of interfaces and casting everywhere gets on my nerves since I like to have the strongest guarantees possible via static typing. Overall though, I can't say I've had a bad experience with Go. I can say it feels like I'm using an okay tool (great in some places) with maintainers who put their hands over their ears to potential improvements (see the generics proposals over the years).
- tptacek 11y agoI've been yelled at on #go-nuts too; I ran into what turned out to be an authentic limitation of Go's I/O scheduling, and was instead chided for _'ing out error results in my minimized example code.
- placeybordeaux 11y agoYeah I have been bitten by the _'ing errors thing in the go community.
- 11y ago
- aws_ls 11y agoIt was early 2013, when we adopted Go as a default language for all our server side (micro or not) services. Before that we had been using Java for some years. The reason for the move were few: 1) Ambivalence on Java roadmap, in my understanding (gradual build up, since after the Oracle's Sun acquisition). Even the earlier clean java docs, suffered from Oracle branding efforts. Downloading older versions were confusing via a long chain of navigation between sites. 2) Boredom after nearly a decade with Java programming. 3) Memory usage of Java in our conditions was much higher compared to other languages (C, C++, Go) 4) Not Java's problem, but whenever one thinks of hosting a HTTP service in Java, thinks of using a container (e.g. tomcat, jetty, Jboss etc.). Go seemed to have made making services very easy. Its possibly just a perception issue, but its there in my experience. So we wanted to move, and Go looked stable at the time from all my HN readings. C was too bare bones(even string handling was a pain to me, after a gap), and even C++ would not have matched some of the things which Go has inbuilt. Few examples: 1) Json/XML parsing is the easiest with no work (or minimal) required, you can just have the field names capitalized (or use stereotypes) and it gets done, with a line of code. 2) Great HTTP client and server libraries, which make very easy to write your own standalone services, as well as write http crawlers. (I am quite excited that Go 1.6 will have HTTP/2 support for both, as per this birthday blog). So, in nearly three years of usage, with largely no regrets[1]. It is what they say it is: a bare-bones, fast (both compile & run) and stable (hardly get any errors after you have coded stuff, one of the stablest programming paradigms in error handling, etc). Thank you, Go team! Hoping to use it for many years, as default server side language. [1] Some of the 3rd partly libraries, we use are still not ported over to Go. They have Java, C++/C versions.
- eterm 11y agoYou based a business decision to switch language on "boredom"? What size team are you working with, that you were able to switch from Java to Go?
- aws_ls 11y agoGood question. Small team of 2 developers, so I had that kind of luxury, which I am sure is not there when you have larger teams.
- deleted 11y ago[deleted]
- kitd 11y agoGo is a great language. Building REST servers in Go is a doddle and the related tools have obviously been designed to work well together from the outset which is unusual. That said, I started learning D at about the same time as Go, and for some reason D has attracted me more. Possibly the C ABI compliance (I was doing some JNI work at the time). One question that I haven't found the answer to yet though is how well Go apps perform for long running processes, eg weeks or months? Have there been any issues around memory usage or resource handling? Any need for restarts?
- pdappollonio 11y agoGo websites are essentially long running processes. I have several websites built in Go, all of them running for about 2 months already with no hiccups.
- spotman 11y agoI can echo this. Have some go processes that have currently been running for over 6 months.
- Gurrewe 11y agoI have been running multiple instances of the same Go app on multiple servers without it ever crashing for about a year. The current uptime (since the last release) is about 4 months, no issues at all, and very low resource usage.
- GrandTheftR 11y agoThanks you, Go team! Have been using Go for the last few years, from backend, tools, and even complex scripting type of tasks (for things more than I would like to do in Bash). Start using Go for game development as sideline projects recently, it is fun. Granted there are things I would like to see may not on the road map, but I am very happy with what we have now, the great tools, and the great community. Keep up good work and looking forward to the future releases!
- cdnsteve 11y agoI would have used Go for an API recently until I found out the AWS SDK for Go isn't production ready. Libraries still have some catching up to do but will only get better with more time and testing.
- no1youknowz 11y agoI've been working on a huge monolithic project (for 1 person) for the better part of 2 years now. It is in PHP, but the backend segments ported over to various other languages like python, javascript(nodejs), and now to Go. Having now developed 30 micro-services for Go, which all utilise channels and thus run much faster than any other language I used is just amazing. Not only has my productivity increased majorly, but also my support time has rapidly decreased. These micro-services which run in the background just work: - With PHP they don't run out of memory or the database connection doesn't time out. - With Python I don't get random crashes due to pool.map. - With NodeJS I don't have to run multiple instances to get the speed. I've looked at web frameworks like beego, gin, revel and others. But I'm waiting till something comes out that's more inline with what I have used with PHP. Something like slim framework. If it ever does come out, it will give me the push to switch 100% to Go. Can't wait really.
- tenken 11y ago> Having now developed 30 micro-services for Go, which all utilise channels and thus run much faster than any other language I used is just amazing. Any public code examples ?
- placeybordeaux 11y agoI tried gin, martini and revel and found myself reaching to go back to largely the stdlib after about 6 months of development. The stdlib with a couple convience functions really is quite good.
- elcct 11y agoMe too. I found that most frameworks actually get in a way instead of helping. stdlib FTW
- moehm 11y agoHave you tried the gorilla toolkit? http://www.gorillatoolkit.org/ http://www.gorillatoolkit.org/ https://github.com/gorilla/ https://github.com/gorilla/
- japhyr 11y agoI've never used Go before, so I went to the project's home page. There's an editing window on the home page with a sample program showing, and a few other programs available in a drop down list. I couldn't help but start playing with the language. I wonder how much the simple presence of an editing window on a language's home page contributes to overall adoption of the language. It sure lowers the bar to "I'll just write a few lines of code and see how this language feels."
- ionforce 11y agoDoes anyone know how it works? Like does it make requests to a service or is it running in the browser, JS style?
- rubenv 11y agoIt's the same stuff that powers the playground: http://play.golang.org/ http://play.golang.org/ More info here: http://blog.golang.org/playground http://blog.golang.org/playground
- japhyr 11y agoThere's a section called A Tour of Go [0] which has a series of code samples with explanations. The last part of the introduction to the tour says a little about what they call the Go playground [1]: "This tour is built atop the Go Playground, a web service that runs on golang.org's servers. The service receives a Go program, compiles, links, and runs the program inside a sandbox, then returns the output." [0] - https://tour.golang.org/welcome/1 https://tour.golang.org/welcome/1 [1] - https://tour.golang.org/welcome/4 https://tour.golang.org/welcome/4
- citruspi 11y agoIt makes requests to a backend service. You can read more about the implementation of the Go Playground on the blog[0]. [0]: https://blog.golang.org/playground https://blog.golang.org/playground
- brobinson 11y agoRust has a similar feature on its homepage: https://www.rust-lang.org https://www.rust-lang.org Let's hope this becomes a trend!
- baconizer 11y agoAll I can say in words is - thank you.
- vegancap 11y agoGo made me excited about programming again. Love it.
- benreic 11y agoI'm surprised to not see any mention in the comments about the biggest change coming in 1.6: the package vendoring mechanism. This has been a big missing piece for awhile and I'm glad they're addressing it in an official way. I was super excited for the cross compilation abilities on Go 1.5 and now I have something else to be super excited for in Go 1.6, can't wait!
- dilap 11y agoI was confused by that. Is this going to be any different than GO15VENDOREXPERIMENT which we have now?
- acomjean 11y agoI've started working in Bioinformatics. The languages in use and libraries seem to by Perl/Python and some java. Except for the stuff that needs to be fast, then its C. Although I notice some movement to use Rust instead of C (having installed some C based tools having package management would be glorious). It would seem the concurency model of go would be a great fit for a lot of those existing python/perl tools. My searchingg for projects show it hasn't really taken off in this domain. I might start rolling my own packages. How is the package management in Go? Data structures and String manipulation? And is does that concurency scale across nodes (al la MPI)?
- biomcgary 11y agoI'm a computational biologist that recently ported our webserver (genestation.org) from Tripal (PHP/Drupal) to Go. The performance gains were huge, but the simplicity of development and deployment was even better. I'd strongly recommend Go for a biology web server. However, Biogo is not remotely as far along as Biopython or Bioperl. Also, Perl beats Go for ease of string handling. Unfortunately, there is no equivalent to Numpy/Scipy in Go. Despite these areas of weakness in the ecosystem, I have switched to Go entirely except for one-liners and one-off parsing in Perl.
- acomjean 11y agoThanks. They new site is snappy. Tripal I had never heard of. It uses "Chado" db schema which I have heard of (though flybase) which while flexible isn't always performant. Performance gains and simplified development are so appealing (I have 12 tools to maintain in Java/perl/php).. Biogo is what I was looking for. https://github.com/biogo/biogo https://github.com/biogo/biogo
- howeman 11y agoYou said above you 'may start rolling your own packages'. If you're interested in helping develop the numeric ecosystem, please come join us at gonum https://groups.google.com/forum/#!forum/gonum-dev https://groups.google.com/forum/#!forum/gonum-dev github.com/gonum. Dan (the lead developer of biogo) is very competent and I'm sure would love bug reports and PRs in biogo as well.
- elcct 11y agoI have written tons of services in Go. What I love about it is stability. Services written in Go are rock solid.
- matthewmacleod 11y agoI have a bit of a love-hate relationship going on with Go. On one hand, it addresses many of the pain points I've experienced with other languages. It's easy to build and deploy, reasonably performant, and has a powerful and consistent standard library. On the other… developing in it feels like a total slog. It manages to be simultaneously far too anal and overly forgiving about syntax. Visibility definition using upper/lowercase is a shite idea. Package names (and packaging generally) are a mess. Magical built-in globals are a huge design smell. The lack of generics, as cliché a complaint as it is, results in loads of duplicated or generated code when building anything more complex than the simplest app. And so on. I find the whole experience of using it to be unpleasant (rather like using a blunt knife), and yet it fits a set of requirements that mean I keep developing new projects using it – particularly high-performance small services that do things like fling JSON around, for which the built-in HTTP libraries + Gin are brilliant. I'm looking forward to the point that a (trans|com)piler which smooths over the bad parts is available.
- arxpoetica 11y agoCoffeeScript for Go? ;)
- k__ 11y agoAfter using LiveScript I wished there was a transpiler for every language to get LiveScript syntax in there...
- beering 11y agoAgreed. All of Go's deficiencies are not deal breakers when it is so well suited to network services that shuffle data around. I wouldn't build lots of business logic in Go, but often I just need to proxy data from point A to point B with some data massaging.
- bkeroack 11y agoYou either "get" Go or you don't. Which shouldn't be surprising given that it is a very opinionated language. A diagnostic indicator is whether you gravitate towards things like Martini or Gin, which aren't idiomatic Go and seem designed to ease the pain of using Go for those who don't actually care for it much.
- ogezi 11y agoGolang and I have had a mainly wonderful relationship. I think that the performance and concurrency features that it brings to the table are unparalleled. No that Golang is just 6 years old and probably has a few more decades of relevance. Although they need to do something about the compilers as the compiled binaries get more bloated with each release.
- nodivbyzero 11y agoHappy anniversary. I replaced python with go in my projects and i'm so happy!!!
- xenihn 11y agoAnyone happen to have a link to a good guide/tutorial for building a mobile backend in Go with gin? Or know of a public github repository with a good sample project. I've never done any backend work, and I'd like to build a backend for a simple iOS app to start.
- fixermark 11y agoI recently implemented a RESTful resource mapper in go, which just accepts some basic parameters and an exemplar of a storable structure and wires up all the HTTP endpoints necessary to give users CRUD access to the resource. I'm honestly very happy with how straightforward it was, even lacking generics---I solved the problem of no generics by basing the resource creation and management on JSON and a "Storable" interface that just defines key() and newEmpty() methods (so I have to write five lines of boilerplate for every struct that will be a resource... shrug). I didn't parameterize the storage logic, basing it on only a single NoSQL backend (BoltDB); however, parameterizing that side shouldn't be harder than wrapping the database access behind another interface. I like the ability to switch between tight static typechecking and freer runtime typechecking on-the-fly, without having to build a large, complicated framework for either within the language. It may not be the most innovative language of the decade, but I think it's a pretty good combination of features for practical, high-performance web server development.
- jstoiko 11y agoWould you care to share some code example?
- fixermark 11y agoHappy to; I'll share the whole thing. http://pastebin.com/qBh6NRXc http://pastebin.com/qBh6NRXc It's not cleaned up for easy reading (hell, I haven't even run `go fmt` on it ;) ). But it has unit tests and seems to work. ;) One thing worth noting is that it relies on the Storables to also be tagged with necessary JSON. It occurs to me that I could also have used tags instead of the key() function in the interface to specify which field in the Storable should be the resource name; key() is a bit more flexible in that the function could calculate the name using any method though.
- TheDong 11y agoJust for you, I did a code review. The code review has two revisions, one where I gofmt'd it because I can't read non-go-fmt'd code anymore, and a second where I added comments expressing some concerns. I'll be honest, I gave up on a few bits just because it wasn't fun to do; I strongly suggest rethinking the use of a storable interface vs taking an 'interface{}' value for both gets and puts akin to how the json stdlib does it. You can see the comments here: https://gist.github.com/TheDong/ce1d7b86b88c86d972b6/revisions?diff=split https://gist.github.com/TheDong/ce1d7b86b88c86d972b6/revisio... You should never post code without a copyright license or disclaimer attached and I'd appreciate if you rectified that forthwith.
- jonesb6 11y agoI've used Go for a couple years but am only just writing my first production system in Go. I think one of the major complaints is that it's use-cases are ambiguous to beginners. Go, IMO, is a systems language and should not be the first thing you pull out when someone says "write a web app". I think Go has a very limited use case, but it is incredibly good for that use case. If I had to define it right now it would be along the lines of "Highly concurrent micro-services (re: small code bases) that requires decent performance (memory + speed) in a somewhat distributed fashion". Obviously it's not perfect but it's the feeling I've developed recently.
- jayflux 11y agoReally agree with this. Its not my go-to language for many things that could be done with a simple script, but its good to have it in the toolbox when i do have those sort of problems. I think if i was writing a high-performance API i would use Go
- aikah 11y agoGo started as a niche language and worked well for that niche, but like all niche techs that become dependencies, they tend to get bigger overtime. Go success is undeniable and is reaching a critical mass where there will be no going back. There are alternatives but most of them aren't backed by a big corp like Google, so they will have to succeed in their respective niche before getting widely adopted. I wish that wasn't the case cause languages like D,Nim or Crystal are really good and way more enjoyable to write in my opinion. Out of all of these(including Go) one will be the next big language, no question as people move from dynamic or VM backed languages (for good reasons).
- pythonist 11y agoThank you! Go has made me enjoy programming once again.
- lilinmeng 11y ago呵呵