20 ms·
Seven years of Go
- 0xmohit 10y agoWhat's Coming in Go 1.8 [0] lists some upcoming changes in Go 1.8 (scheduled for release on February 1, 2017). [0] https://blog.tylerchr.com/golang-18-whats-coming/ https://blog.tylerchr.com/golang-18-whats-coming/
- be_erik 10y agoGo isn't a perfect language, but it strikes the right balance for me between productivity and safety. There are few other languages right now with the same ease of deployment, good tooling, excellent standard lib, and raw performance. Here's to another seven years.
- 72deluxe 10y agoOut of interest, can you point me to any GUI bindings or native Go GUI toolkits etc.? I would like to take a look, as I am normally writing native C++ GUI desktop apps. EDIT: Thanks for all the info everyone. I hope my responses don't appear argumentative - I am genuinely curious.
- 0xmohit 10y agoI haven't tried it thus far, but you can see a list at the Projects wiki [0]. [0] https://github.com/golang/go/wiki/Projects#guis-and-widget-toolkits https://github.com/golang/go/wiki/Projects#guis-and-widget-t...
- Klathmon 10y agoI'm not sure if this would work for you, but using something like Electron and having your go program output HTML/JS/CSS as your UI works really well with go (or have your go program output JSON or something to communicate with the front end) If you throw something like react on there, you'll have a pretty simple functional UI, but if you don't want that there's nothing wrong with HTML/CSS and as little JS as you can get away with.
- 72deluxe 10y agoThat sounds an interesting concept and useful for creating instantly-usable web apps but in effect isn't your Go app being relegated to a HTTP server? eg. how would I do callbacks without doing them as some request back to the Go "server" app? How would you create custom controls in this method? eg. if I wanted to do my own pie chart control/widget with popups etc. It sounds like a long way around in comparison to what you can do in C/C++, ie native calls depending on the platform, or use an abstraction toolkit like wxWidgets. (Oddly C++ has done well without any native GUI toolkit of course, but at least there was native C ones to use).
- Klathmon 10y agoIdeally you would put as much of the "business logic" in the go code as possible, and have it "render" to something like JSON which the front end just reads in and displays. Interactions with the front-end just send a new request to the go code to handle and respond with what is needed. It is a lot more work for small applications compared to something like wxWidgets, but for larger applications the decoupling of the front end from the "back end" can help in a bunch of ways. It lets you develop them somewhat separately, it gives you a uniform look-and-feel across platforms (could be a pro or a con depending on how you feel about it), and allows you to do something like replace the web-front-end with a native system later if you want (and you could write the front-end in the platform's native GUI widget library for best performance and integration while keeping the backend code identical). So your go code is basically an HTTP server at that point, but it frees you up to let go do what it does best without worrying about how you will display it, and it lets javascript/html/css do what it does best (display stuff). I've had great success doing this once before, and if you have some experience with React, it works out really "beautifully" as the front-end can be completely stateless. So what was pushed to it from go is what is displayed. Easy to test, easy to develop, and easy to replace if needed.
- pjmlp 10y ago> Oddly C++ has done well without any native GUI toolkit of course, Well from the OS vendors themselves we had MFC/WTL/Windows Forms/WTL on Windows, BeOS GUI, Symbian UI, CSet++ on OS/2, PowerPlant on Mac. Additionally there was Turbo Vision on MS-DOS, OWL, VCL for Windows, Motif++ on UNIX.
- dilap 10y agoI love Go and think it could be good in this area, but so far as I know no one is using it for any serious GUI work (yet?).
- 72deluxe 10y agoWhat is it being used for? HTTP servers? 7 years without proper penetration into the GUI market seems odd, unless it is aimed elsewhere?
- vram22 10y ago>What is it being used for? HTTP servers? Yes, that is one big area - networked servers - a superset of HTTP servers. The Google site that serves the Chrome browser is supposed to be a Go app, and I've read Google uses Go a lot internally. (I'm sure Rob Pike and his team must be using it, after developing it for that very purpose.) Reading up on the goals of Go will give some insight into that. Part of the reason was that they wanted it to write big systems at Google, including networked ones, and wanted a better experience than they had with C++ (build times [1] and also other issues). Rob Pike has written some about it, others may have too). [1] This video that I blogged about: Video: C++, Rust, D and Go: Panel at LangNext '14: http://jugad2.blogspot.in/2016/08/video-c-rust-d-and-go-panel-at-langnext.html http://jugad2.blogspot.in/2016/08/video-c-rust-d-and-go-pane... has many interesting language-related discussions; one of them is the discussion about the build times of C++ vs. those of more modern language. There are concrete reasons why C++ build times are relatively so large - the use of include files is part of the reason - those are discussed some in the video, between the panelists, including some of the language (co-)inventors, such as C++'s Bjarne Stroustrup, Go's Rob Pike and D's Walter Bright. There is a nice moment or two near the end where Stroustrup responds about C++ build times - okay, won't spoil it for you and others - go see it :) Command-line tools is another area where Go is used a lot. Getting the convenience of deploying a simple single binary (maybe at the most a config file or two with it) even by just copying to the deploy target - unlike what you have to do with interpreted languages like Python and Ruby (unless you use something like PyInstaller or py2exe for Python, but that is not officially supported and may or not work for all Python apps [2]). This gives us back some of the convenience of older compiled languages like C where this was the normal way of deploying - but with some benefits over languages such as C (see Go vs. C topics), plus goroutines, channels, etc., I guess. Though I have not come across any examples of what things command line apps using goroutines and channels could be used for - it would be interesting to hear/read about some. I mean apart from a few somewhat obvious ones such as a web client to download multiple URLs in different goroutines, concurrently. [2] I've tried out PyInstaller on a few Python apps, including command-line apps, and a simple wxPython app or two - it did work okay for those, in the limited testing I did. Edit: fixed typos, added a few points.
- gribbly 10y agoI'm certain there are more, but here are a few platform native https://github.com/andlabs/ui https://github.com/andlabs/ui gtk http://mattn.github.io/go-gtk/ http://mattn.github.io/go-gtk/ qt https://github.com/therecipe/qt https://github.com/therecipe/qt qml https://github.com/go-qml/qml https://github.com/go-qml/qml shiny (still being developed, Go native) https://github.com/golang/exp/tree/master/shiny https://github.com/golang/exp/tree/master/shiny
- vram22 10y agoHere is one - WALK: https://github.com/lxn/walk https://github.com/lxn/walk A friend had used it in a commercial project, and IIRC he said it worked okay. Not tried it myself yet. I think it wraps the Win32 GUI SDK but also has a declarative mode [1] (at least for GUI widget layout) on top, or something like that - only looked at some sample code briefly. [1] meaning you can declare your GUI layout declaratively, but in Go code - it does not need XML or some other language or markup format like some declarative approaches do - IIRC. I actually wish the Go team had built support for some / many of the major GUI toolkits on major OS's (at least) from near the start of Go's development. I realize that there could have been, or still could be, some issues with that, due to differences between Go and (C and C++) [2] models (object file format, calling conventions, stack and heap layout, etc. - basically compiler and compiler-output-related stuff), and hence it may not be easy to create bindings from the former to the latter. Not familiar with this area. [2] since many of the major GUI toolkits are natively written in C or C++, so a Go wrapper would need to bind to them. Not complaining though, I know what they (the Go team and community) have already done is a huge achievement anyway.
- wyager 10y agoHow is Go safer than, say, Java? It doesn't really do anything particularly useful or interesting on the safety front; it's type system is weak, it has null pointers, its error management mechanisms are mediocre.
- weberc2 10y agoIt's not safer than Java. The selling point over Java is developer friendliness (simpler language, tooling, dependency management, deployment, etc).
- tigershark 10y agono. I really don't like java, but you really can't tell that go has better tooling and it is more developer friendly. it's an outright lie. java tooling is very mature and has solutions that no other language that I know can use. (Spock framework above all, it is written in groovy but it is perfectly integrated in java and still I haven't find anything nearly comparable in any other language). show me some BDD framework in go, just as an example.
- vorg 10y ago> Spock framework above all, it is written in groovy You're the one who's telling an "outright lie" (as you put it). I just downloaded and unzipped Spock from Github, and looked through its directory structure. Virtually all of it is written in Java, not Apache Groovy. There's only a few little files written in Groovy. Perhaps you're confusing its source language with the language users of Spock write their test scripts in. In real life, Groovy is used for the JVM in the same way Bash is used for Linux, like writing glue code and build files. The statically typed stuff added in Groovy 2.x isn't used much at all, and virtually no-one would use Groovy to build actual systems. All software I know of that provides Groovy to users, like Grails, Gradle, and Spock, is itself written in Java.
- wyager 10y agoI was asking the GP why he cited safety as a feature of Go. I agree with you; that's not a good argument.
- AsyncAwait 10y ago> strikes the right balance for me between productivity and safety. Would be curious to hear what "safety" you're referring to, is it just that it has a basic static type system, (which is constantly being undermined by interface{} and reflection), or is there more to it? Genuinely curious.
- chmike 10y agoCompared to C it is safer. I never saw a segmentation fault, only some panic errors with bound checking. I prefer go to python or javascipt. It's far too easy to make errors in them. Minimal static code checking.
- AsyncAwait 10y ago> compared to C it is safer. I never saw a segmentation fault Well, yeah, it has a GC so it kind of gets that "automatically", I was thinking more about the type system side of things. And compared to C almost anything is indeed safer. > I prefer go to python or javascipt. It's far too easy to make errors in them. That's fair, but these are both dynamic languages, so almost anything with any level of static typing beats them in this regard, I was interested if Go does anything beyond that. Not to say these are not fair points, but nothing a whole host of other languages haven't provided before Go.
- chmike 10y agoNot only static typing. I just found a bug in an open source python tool that crashed because of a missing member variable in a class. You have to assign a value in the attribute to create it. It requires careful programming to not get such errors. It is also easy to accidentaly create a member variable. The time you gain by being able to hack some code together is lost by these types of error unless you are a very disciplined programmer. Another kind of error with python is with blocks defined by vertical alignment. It is easy to make errors when you copy past code and the alignment is not corrected. When you are under pressure or tired, your discipline may weaken. And this is difficult for inexperienced programmers. You don't have these problems with go and the normalized formating helps a lot.
- kawsper 10y agoIs there a recommendable (and somewhat recent) book on how to get started with Go?
- mseepgood 10y ago"The Go Programming Language" by Alan Donovan and Brian Kernighan: http://gopl.io http://gopl.io
- signa11 10y agoimho, the-go-programming-language (http://www.gopl.io/ http://www.gopl.io/) is pretty good.
- 0xmohit 10y agoSome community driven initiatives for learning Go: https://github.com/golang/go/wiki/Learn https://github.com/golang/go/wiki/Learn The main wiki lists more resources: https://github.com/golang/go/wiki#learning-more-about-go https://github.com/golang/go/wiki#learning-more-about-go
- zalmoxes 10y agoIf you're serious about learning Go and get stuck with your learning project, or with any of the resources already mentioned, don't hesitate to join the Go Slack. We have a #golang-newbies channel where you can ask all your beginner questions, and other channels like `#reviews` where you can ask for code review. https://invite.slack.golangbridge.org/ https://invite.slack.golangbridge.org/
- oelmekki 10y ago
- fizzbatter 10y agoSo, i was a Go developer for ~4 years, then for the last 4 months or so i've been learning and using Rust. The pure joy of some things with Rust was astounding. Now, i joined a new job and they're in need of a new language for some backend tasks - the choice was mine. Rust or Go? The backend tasks were heavy API servers - nothing amazing, we don't do groundbreaking work. Python was their existing language, but they weren't too happy with it. For weeks (literally) i mulled it over, i really really really wanted to use Rust. Rust gives me a peace of mind that Go never came close to. Unfortunately, Rust does not fit the development speed nor developer experience[1] that this shop has.. and i really felt Go would be the best choice for this place. My point to this post isn't to make a Rust vs Go comparison.. but rather, a wishlist for the hopefully eventual Go 2.0. I have no idea if/when that will ever be made.. but i hope it will, and i hope they adopt some things from Rust. 1. Channels without panics. Channels are awesome, but Go's design of them means that you have to learn special ways to design your usage of channels so that it does not crash your program. This is asinine to me. So much type safety exists in Go, and yet it's so easy for a developer to trip over channels and crash their program. 2. Proper error handling. I love error checking - i love it in Rust especially. It's very explicit, and most importantly, very easy to check the type of things. Recently i was reading an article about Go errors[2] and it made me realize how messy Go errors are. There are many (three in that article) ways to design your error usage, and worst of all your design doesn't matter because you have to adapt to the errors returned by others. There is no sane standard in use that accounts for the common needs of error checking. 3. Package management. It's a common complaint, i know. But Rust & Cargo is so excellently crafted.. Go just got it wrong. Recently i've been using Glide, and while it's a great tool, there is only so much it can do. It's a tool built to try and put some sanity in a world where there is next to no standardization. We need a Go package manager.. hell, just copy Cargo. 4. Enums. My god, Enums. Such a simple feature, but so insanely welcome and useful in Rust. You'll note that i didn't list Generics. I know that's high on peoples list, but not mine. To each their own.. please don't start a holy war. (this is likely due to me using Go for ~4 years. I'm quite comfortable without Generics) [1]: By experience, i mean what they desire/expect. They're a Python shop after all, i didn't want to make a choice that would cause them to spend weeks/months feeling unproductive. [2]: http://dave.cheney.net/2016/04/27/dont-just-check-errors-handle-them-gracefully http://dave.cheney.net/2016/04/27/dont-just-check-errors-han... edit: minor text fixes.
- barrystaes 10y agoThese big funny logos, illustrations, and memes appearing in todays technology websites & videos really dont help for office environments. :( Colleagues should not visit websites littered with memes and cute drawings, but i do.
- zeveb 10y agoI love the look of the Go gopher, but you're not wrong. There's nothing wrong with having a little fun, but there is something wrong with prolonged immaturity. Where's that line? I don't know. Is the Go's use of the gopher on one side or the other of that line? I honestly don't know.
- petre 10y agoI think the Perl/OCaml camels or the Swift swallow logo are that line. They're not cartoon characters or a cute looking animals like the Go gopher which is both a cartoon and a cute animal.
- oelmekki 10y agoWell, if that is your main problem with go, I'll say this is awesome :) (means the language itself is almost perfect)
- chrisper 10y agoWhat is wrong with that illustration? It is a gopher, which is the mascot of Golang. I agree with the memes, but there are no memes in this post.
- ohstopitu 10y agoI've always gotten into go on a high level and would love to delve in deeper. Coming from a java/js background, my pointers are a bit rusty (and I try to avoid them as much as possible). Would it be possible to use go without the use of pointers at all?
- bawigga 10y agoYou'll most likely find that you need them. Look at it as an opportunity to learn a new programming technique.
- tptacek 10y agoNo, but pointers in Go are much gentler than pointers in C (for instance: there's no pointer math, and no pointer casting). If you understand the difference between passing by value and passing by reference (something you already have to understand to use Javascript), you've got all the background you need.
- maxlybbert 10y agoGo pointers are pretty much Java references. You have to put in an asterisk every so often, but they aren't C pointers by any means.
- adrusi 10y agoNo, but also you use pointers for a far narrower set of semantics in Go than you do in languages like C. I think you'll find that if you have a grasp of reference semantics in java and javascript, then Go's pointers won't cause you much grief.
- travjones 10y agoMost meaningful applications will require the use of pointers. For example, unmarshalling json comes to mind. I wouldn't "avoid the use of pointers" if I were you. Rather, use them, run into problems, fix the problems, and you'll learn what you need to know about pointers in Go. Given your background, you code. Figuring out pointers in Go will be trivial for you, especially when you learn in context (e.g., writing something you think is cool). You got this.
- 10y ago
- gtrubetskoy 10y agoI have decided to get proficient in Go about 3 years ago and I am glad I did. One of the discoveries in the process was that Go enables you to do things that previously were extremely difficult and you'd typically not even consider as options. Many of the "old" ways of thinking do not apply to Go, and I had to get over the phase of looking for an ORM or webapp or testing frameworks - they don't exist because they are not necessary, and those that do aren't any good really. I ended up inventing my own challenge - a time-series database backed by PostgreSQL (http://github.com/tgres/tgres http://github.com/tgres/tgres), because I needed a difficult problem. Tgres is still not fully baked, but what it does couldn't possibly be done in e.g. Python, and not in C in as little time (even though it's been two years in development). Contrary to what the blogs say, Go is _not_ an easy language to learn. Interfaces, goroutines, channels, selects, etc. will take a long while to become second nature, and if you're not using them then you're not really getting anything out of Go. With respect to all the criticism Go is getting out there, e.g. lack of generics - I honestly can't say there is anything that bugs me at all. Some things may take getting used to, but usually in the end you're glad to have done so. As someone who has done a lot of programming in my life (in Python, C (remember mod_python?) and also Ruby, and (with displeasure) Java) I can say that Go is a big deal in the language landscape and will not long from now be as big as Python - in fact I think it is Python developers who are most likely to switch over to Go for their next project.
- tptacek 10y agoStrong, strong disagree on the idea that ORMs aren't necessary because of some property of Golang itself. Lack of decent ORMs is probably my biggest complaint about Go, and I think if you look at a lot of large web app packages you'll find people are all writing their own 40-60% of an ORM.
- sethammons 10y agoOne of my biggest complaints about ORMs is that I often know the exact query I need to write, and it is a pain to compose it with the ORM. Simple CRUD, sure, maybe. Beyond that though... Arguably one of the biggest benefits of an ORM is sanitization. You get that for free with Go. I've done quite a bit of work with DBs and Go, and I've not seen the need for an ORM, just some library helpers.
- drej 10y agoMy 2c: Go is incredibly convenient for non-programmers. I don't make a living writing software, I make a living answering quantitative questions, using computers. I use Python for most tasks, but when I need extra performance and/or portability, I grab Go every single time. The main appeal is the quality standard library that covers most things I get in contact with. I could get immersed in it right away, because I didn't spend weeks trying to read the spec - the spec itself is so trivial it's mindblowing. The standard library feels very Pythonic in terms of reach. I've built tiny servers, parsed plethora of file formats, calculated maths, wrote data, (de)compressed stuff, encrypted things, ... The joy of not having to worry about 3rd party dependencies for all these is quite refreshing. And the appeal of few runtime issues thanks to static compilation is oh so excellent. Sure, Go didn't invent any of these practices and sure, it doesn't have generics, runtime assembly, it's opinionated in a few places, its vendoring is subpar, ... But when you're someone who isn't really a programmer, these things don't matter much. I'm not here for the hype, I'm here for the productivity and ease of use.
- 0xmohit 10y agoPackaging in Go is bound to improve in the coming releases. You can follow Go Package Management list: https://groups.google.com/forum/#!forum/go-package-management https://groups.google.com/forum/#!forum/go-package-managemen...
- sqrt 10y ago> I've built tiny servers, parsed plethora of file formats, calculated maths, wrote data, (de)compressed stuff, encrypted things, ... If you've written code to do all those things, I think you'd be justified in calling yourself a programmer, even if software isn't your main gig. :)
- misiti3780 10y agojust curious, why write file parsers in go rather than say, python i would think python would be easier.
- bigato 10y agoIf you are not a programmer, I don't know who else is.
- sandGorgon 10y agohas anybody evaluated building an api in Go vs Kotlin ? We are considering moving our financial tool api from python to either Go or JVM/Kotlin/JavaLombok+lambda . I really like Kotlin as a language.. but im really worried about the future. Jetbrains isnt Google.... I like Kotlin also because we are an app-based startup.. and we have been considering Kotlin on the app side as well. That would be a nice crossover of engineering !
- aikah 10y ago> has anybody evaluated building an api in Go vs Kotlin ? We are considering moving our financial tool api from python to either Go or JVM/Kotlin/JavaLombok+lambda . Obviously, take a second to compare Go ecosystem with Java's and you'll get the answer. Furthermore even if Jetbrains discontinue Kotlin, your libraries are still compatible with the rest of the JVM languages. So you loose really nothing. Again what you should consider is the ecosystem and not the language. I wouldn't try to do data science in Go for instance, when Python or Java have stronger libraries in that domain. Go is a nice outsider who is growing in spite of its issues because it's easy to pick up. But you should really try it out and see for yourself if its limitations aren't an hindrance for your domain problem.
- weberc2 10y agoI've tried both for a personal project. Kotlin is a fun language, but you've got all the headaches of the JVM ecosystem to deal with (tedious build tooling, deployment headaches, egregious memory consumption, etc). OTOH, Go is simple to pick up, and it's ecosystem is great. Everything compiles into a single binary, so deployment is moving a single file--no runtime dependencies, no JVM to configure, etc.
- hepta 10y agoIf you're already proficient in Java/JVM I personally don't see a lot of reasons to use Go. Maybe for extremely small services or if you can't take the higher memory requirements.
- keymone 10y agoseven years of go and they still don't have a ternary operator.
- jamescun 10y agoThis is a conscious decision. I believe the reasoning was readability. Ternary operators have a habit of being used in some really nasty nesting. https://golang.org/doc/faq#Does_Go_have_a_ternary_form https://golang.org/doc/faq#Does_Go_have_a_ternary_form
- aikah 10y agoNesting if/then/else don't make code more readable either.
- keymone 10y agoa = flag ? b : c is much more readable and concise than if flag { a = b } else { a = c } battling habits by making useful code inconvenient is just sad
- cdelsolar 10y agoIt's more concise, but certainly not more readable. You lose a few seconds writing it the second way. It's fine.
- pvsukale3 10y agoQuestion : Is there a possibility that when Go package management is launched there will be a good opinionated framework like rails for GO . Because for new learners ORM , authentication etc things matter a lot. I know Go promotes use of native HTTP package instead of frameworks but it is a large barrier for newcomers and have risk of writing error-prone web applications.
- mixedCase 10y agoDoing ORMs and auth without knowing what you're doing imply a huge risk out of itself, which Go tries to avoid. If you have relational data the solution is not to use an ORM to half-abstract it away, it's to learn SQL. ORMs can be useful tools to avoid boilerplate, but they will show their ugly internals when SHTF, and those are always harder to understand than plain SQL. As for auth, it's very easy to add to any web application or HTTP API using one of the many middleware solutions out there.
- aikah 10y ago> Doing ORMs and auth without knowing what you're doing imply a huge risk out of itself, which Go tries to avoid. And implementing it yourself the wrong way is also a huge risk.
- mixedCase 10y agoExactly the point I explained. You have to learn how it's done rather than try to look for a way out. The solution is not to have a magic tool that allows you to poorly work around the problem until it doesn't.
- thewhitetulip 10y agoJumping to a framework without understanding how internals work is a bad thing. Also, experience is everything, eventually you'll get a hang of it. It is not a barrier, you might like the intro book: http://github.com/thewhitetulip/web-dev-golang-anti-textbook/ http://github.com/thewhitetulip/web-dev-golang-anti-textbook... and https://github.com/astaxie/build-web-application-with-golang/ https://github.com/astaxie/build-web-application-with-golang...
- tbarbugli 10y agoGo is really getting to a point that is not just the new cool thing in town, but a language that makes sense to use in production.
- cdelsolar 10y agoI think that it was at that point a long time ago.
- amelius 10y agoJust wondering: Are people using Go as a target-language for compilation?
- weberc2 10y agoodenlang was before development halted: https://github.com/oden-lang https://github.com/oden-lang
- kodablah 10y agoI have been toying around with doing this for a JVM AOT [0], but it's in early days and there are so many limitations (e.g. no circular deps, can't jump over var decls, no easy overrides or overloads, etc) that it is quite difficult. There are still a lot of changes I need to do to the way I'm handling things. 0 - https://github.com/cretz/goahead https://github.com/cretz/goahead
- sdsk8 10y agoI absolutely love go, it made my life and projects way better in many ways. Thank you go team, you are really awsome!
- mmmBacon 10y agoI've had a little exposure to Go and seen how rapid development in Go can be while still maintaining decent performance. Is anyone aware of scientific stack development in Go? Specifically, does HN think thee will be a Numpy or Scipy equivalent in Go or does this not make any sense?
- appleiigs 10y agoI'm curious too, but more specifically for a Pandas equivalent?
- psiclops 10y agoThere are people who are working on this. There is an active data science community using go. I would start here: https://github.com/gopherds/resources https://github.com/gopherds/resources
- f2f 10y ago> Is anyone aware of scientific stack development in Go? there's Gonum: https://github.com/gonum https://github.com/gonum
- krylon 10y agoI remember reading the initial announcement. I looked at the language briefly, and found some of the syntax too weird. A few years later, I looked again and discovered I actually liked it very much. Still do. I mostly use it for toy programs I write in my free time, but I find that Go is very compatible with the way my mind works. I am currently trying to use Go at work for some of the tasks I usually would use Perl for. The fact that it comes with a relatively nice templating engine in the standard library makes it very attractive to replace the CGI scripts that have piled up over the years. Interestingly, I had pretty much the same experience with Python - at first, I disliked the syntax ("no Dutch person is telling me how to indent my code!"), but then I came back a couple of months later and found that I really liked the language. (wrt indentation, Python only forces me to do something I would do anyway, it just took me a while to understand that.)
- joshbaptiste 10y agoAs a Pythonista , I tried small projects in Go and Rust but ended up liking Nim overall. Compiles to C and the syntax just feels like I'm writing Python.
- epynonymous 10y agogo is my favorite language period, apps that i write in go seem more stable, easy to maintain because the syntax is quite concise, and the performance of the code seems quite good. my language history is basic, turbo pascal, c, java, perl, python, javascript, ruby, nodejs, go, swift. what i really dont like about go or havent mastered yet about the language are error handling and interfaces. error handling forces these oblong parts of code where you check if err is not nil and then do something, that part makes the code look a bit verbose, but i like most other things about the language where i bear and grin. gobyexample.com is an excellent resource for learning go. i have used go as a restful api backend, a websocket service, and static site generator, all pretty solid code with no errors. i used to run ror and found that not having a good orm at first made programming db apps annoying, but i learned sql syntax long before using orm's and it was just fine. i have to admit that html templating languages are not that great (ace, amber), but workable. go apps when written correctly run fast and efficiently.