Skip to main content

THE ORIGINS OF GOLANG


“Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.”
- golang.org

Go (as referred as Golang) was convinced in September 2007 by Robert Griesemer, Rob Pike, and Ken Thompson, and was announced on 10 November 2009.
Go borrows and adapts good ideas from many others languages, and avoiding some features that have led to complexity and unreliable code.
Golang facilities for concurrency are the new and efficient feature and its approach to data abstraction and object-oriented programming is unusually flexible, and it has automatic memory management (gc).
Go is specially build infrastructure like network servers, and tools and systems for programmers.
Go is an open-source project which is already mentioned in quotes, so for the source code for its compiler, libraries, and tools is freely available to anyone.
Go runs on Unix like systems - Linux, FreeBSD, OpenBSD, Mac OS X and on Plan 9 and Microsoft Windows.
Go is influences from so many languages or we can say the most important influence of earlier programming languages on the design on Go.
Ancestors in Go’s family tree


  • ALGOL 60 (John Backus, John McCarthy, Alan Perlis, et al, 1958-1960): Block structure, nested and recursive functions and procedures, type declarations and static typing, "for" statement, "return" statement, semicolon separated statements, "begin"-"end" blocks, "call by name", etc.
  • PASCAL(N. Wirth, ETH Zürich, 1968-1970): BEGIN/END for blocks, semicolons as separators, left-to-right declarations, principled structured data types, a notion of predeclared ("standard") functions, designed for teaching.
  • SQUEAK (Alan Kay, Dan Ingalls, Adele Goldberg, 1996): A language for communication mice. Squeak provided a language for handling mouse and keyboard events with the help of channels.
  • NEWQUEAK: It was a purely functional language with garbage collection, and channels become variable which can dynamically create and stored the value.
  • ALEF (Phil Winterbottom 1992): Alef was a concurrent programming language in the CSP(Communicating Sequential Processes) style designed at Bell Labs by Phil Winterbottom and used in the first and second editions of Plan 9. It implemented the channel-based concurrency model of Newsqueak in a compiled, C-like language.
  • C(Dennis Ritchie, Bell Labs, 1969-1973): Curly braces for blocks, semicolons as terminators, declarations mimic use, the duality between arrays and pointers, static typing but weak enforcement, designed to write Unix kernel.
  • Modula, Modula-2 (N. Wirth, 1978, 1980): Modules separate compilation and encapsulation, coroutines and monitors, support for low-level programming. Inspire the package concepts.
  • Oberon (N. Wirth, 1986): Simplified modules, eliminated the distinction between module interface files and module implementation files.
  • Object Oberon (J. Templ, H.P. Moessenboeck, 1989): Object Oberon provide the syntax for method declaration.
  • Oberon-2 (J. Templ, H.P Moessenboeck, N. Wirth, 1991): Oberon-2 influenced the syntax for packages, imports, and declarations.

References



Comments

Popular posts from this blog

Say Hello World with Golang

We will start with the traditional "Hello World" program which will appear in 1978 in the C programming language. C language influenced directly on Go. package main import "fmt" func main() { fmt.Println("Hello, 世界") } We assume that you have programmed in one or more languages whether compiled like c, c++, java or interpreted python, ruby, javascript. Go is compiled language. The Go toolchain converts source code. These toolchain accessed by a single command called  go  and multiple subcommands (run, build). $ go run hello_world.go prints - Hello World, 世界 Go handles Unicode. so it can process text in all languages. If the program is more than a one-shot experiment means we run a file any time without processing used build subcommand. $ go build hello_world.go This creates an executable binary file called hello. that file can run anywhere without further processing  $ ./hello_world Hello World, 世界 Let's ...

Asymptotic Notation

What is Asymptotic Notation? Asymptotic Notations are algorithms growth rate all languages allow us to analyze algorithms running time by identifying its behavior as an input size for the algorithms increases. Common Rate of Growth Comparing some efficiency of algorithms. We need some common growth rates. Let's assume n in the size of input and c some constant. The following are the common rate of growth : Logarithmic Function - log n  Linear Function - an + b Quadratic Function - an^2 + bn + c Polynomial Function - an^z + ... + an^2 + a*n^1 + a*n^0, where z is some constant Exponential Function - a^n, where a is some constant When analyzing function considering the higher limit part of the function i.e linear function an + b here n is a large value with constant a. Logarithmic - log n  Linear  - n  Quadratic  - n^2 Polynomial - n^z, where z is some constant Exponential - a^n, where a is some constant Classif...