10. Why Go…..? Cont’d
• Networked and Distributed environment.
• Client server environment.
11. Why Go…..? Cont’d
• To run on it has been possible to have:
o More Efficient Hardware.
o Multi core and multi chips Processors.
• Rise of dynamically typed languages.
• Sprawling Libraries and Dependency chains.
• Each main stream language compromise alternatively.
o Efficient compilation,
o Efficient execution,
o Ease of programming,
• Lack of modern concepts like: garbage collection and
parallel computing in popular systems languages.
12. Why Go…..? Cont’d
All these cannot be addressed well by libraries
or Tools; a new language was called for.
"it wasn't enough to just add features to
existing programming languages, because
sometimes you can get more in the long run by
taking things away…. They wanted to start from
scratch and rethink everything." Robert C. Pike
15. Design Goals cont’d
• Easy dependency analysis and avoid much of the over head of C-Style include files
• To make types feel lighter weight than in typical OO languages.
• Combine features of interpreted, dynamically typed languages in a system
language. (e.g: ease of programming)
• Garbage collected
16. Design Goals cont’d
• Propose an approach for the construction of system software on
• Increase writability/productivity (e.g: reduce the amount of typing)
17. Has or Hasn’t
• Syntax is C-like
• Statically typed
• Procedural paradigm, Imperative programming style
• Shorthand syntax for variable assignment
• Closures by anonymous functions
• Parallelism/concurrency by “Goroutines” & “Channel” mechanism.
• Pointers and References
18. Has or Hasn’t con’t
• OO? (Yes/No)
• Built-in string type
• No Assertions
• No Exception handling
• No while or do-while.
• Compiled executables are completely native binaries unlike managed code
however, have some runtime components that get embedded in the executables.
19. What other says
– TIOBE: Programming language of the year of
– Google is going to have its own language like
others to fill its tool box.
– Please change the name of your programming
language. (Francis G. McCabe - developer of the
Go! programming language)
– The name is more appropriate for embedded