Notable Features of Go Programming Language
- Support for Concurrent Networked programming (designed with modern trends in mind; others – Unicode support) – high level libraries for Concurrent Networked programs – feels like dynamic interpreted languages – even better
- OO? interface? Seems to discourage complexities of OO Java, C++, Design Patterns. One of the design goals – Clutter free – you write code and it does stuffs – removing “incidental complexity”. More suitable to modern developers – Agile development; small teams using open source libraries and frameworks to build great products.
- Support for Functional programming
- Fast compilation – dependency graph
- Pointers. Allocation – new, make. Systems programming.
- Strongly typed. Less Runtime errors. Efficient.
- Garbage collected.
- Concise syntax
- Readable code
- Type inference
- Semicolon-less etc.
- Data Structures, Built-in Libraries – feels like dynamic interpreted languages.
- Open source projects make languages popular these days. Seems to be good at that too.
- Three design goals – the goods of Strongly typed popular Languages that feels like Dynamic Interpreted Languages with modern requirements in mind so that it is easy to write concurrent and networked programs.
- Rob Pike, Ken Thompson (C, UNIX) in the design team among other notables.
- Modular Code.
- Less is more. You can keep everything in your head. (Lisp philosophy – The whole language is out there all the time.)
- Panic – recover (in place of Exception Handling)
- Goroutine, Channels (Unix process-pipe, lighter), Mutex lock-unlock, Atomic
Object-based / Protoype-based Programming
- composition and coupling
- concurrency gives us the composition of independently executing computations.