Here are some of my initial thoughts on Go (a very popular language right now). Still need to spend some time actually developing non-trivial applications with it.
Thoughts on Go
Likes
- Simple, small, stable syntax
- Strongly typed, compiled
- Awesome, modern concurrency + parrallelism
- No classes
- Interfaces
- Exports by convention (i.e functions starting with capital letters)
- First-class functions with defer statements (i.e run stuff after function exits
- Unique approach to declaring methods on custom types
- Packages, encourages separation of concerns and thinking of application parts as "microservices"
Dislikes
- Community philosophy around packages (i.e want you to copy/paste)
- No good package manager/ecosystem (i.e just have to install from GitHub repo and hope the authors don't take it down or changes stuff)
- No pattern matching
- Documentation for 3rd-party libraries is usually ugly and bad
- Seems like style is very procedural
- Ugly string interpolation
- No immutability
- Channel creation is kinda clumsy
- "Moving from Ruby to Go sometimes feels like ignoring 20 years of progress made in language design"
Undecided
- No exceptions, forced to handle errors immediately
- Leads to very procedural code
- No generics
Should also note how much I like it being primarily focused on just types + functions 👍