mirror of
https://github.com/golang/go
synced 2024-11-22 01:54:42 -07:00
addressing gri's comments.
R=gri DELTA=31 (7 added, 17 deleted, 7 changed) OCL=35336 CL=35338
This commit is contained in:
parent
3e74079151
commit
2b1dbe8a4f
@ -14,13 +14,8 @@ on a compiler with which to explore ideas; it generated C code as its
|
|||||||
output. By mid-year the language had become a full-time project and
|
output. By mid-year the language had become a full-time project and
|
||||||
had settled enough to attempt a production compiler. Meanwhile, Ian
|
had settled enough to attempt a production compiler. Meanwhile, Ian
|
||||||
Taylor had read the draft specification and written an independent GCC
|
Taylor had read the draft specification and written an independent GCC
|
||||||
front end.
|
front end. Russ Cox joined in late 2008 and helped move the language
|
||||||
</p>
|
and libraries from prototype to reality.
|
||||||
|
|
||||||
<p>
|
|
||||||
In the last few months of 2008, Russ Cox joined the team and Go had
|
|
||||||
reached the point where it was usable as the main programming language
|
|
||||||
for the team's own work.
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h3 id="creating_a_new_language">
|
<h3 id="creating_a_new_language">
|
||||||
@ -65,16 +60,6 @@ about what programmers do and how to make programming, at least the
|
|||||||
kind of programming we do, more effective, which means more fun.
|
kind of programming we do, more effective, which means more fun.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h3 id="protagonists">
|
|
||||||
Who are the protagonists?</h3>
|
|
||||||
<p>
|
|
||||||
Robert Griesemer, Rob Pike and Ken Thompson laid out the goals and
|
|
||||||
original specification of the language. Ian Taylor read the draft
|
|
||||||
specification and decided to write <code>gccgo</code>. Russ
|
|
||||||
Cox joined later and helped move the language and libraries from
|
|
||||||
prototype to reality.
|
|
||||||
</p>
|
|
||||||
|
|
||||||
<h3 id="principles">
|
<h3 id="principles">
|
||||||
What are the guiding principles in the design?</h3>
|
What are the guiding principles in the design?</h3>
|
||||||
<p>
|
<p>
|
||||||
@ -99,6 +84,13 @@ is no type hierarchy: types just <i>are</i>, they don't have to
|
|||||||
announce their relationships. These simplifications allow Go to be
|
announce their relationships. These simplifications allow Go to be
|
||||||
expressive yet comprehensible without sacrificing, well, sophistication.
|
expressive yet comprehensible without sacrificing, well, sophistication.
|
||||||
</p>
|
</p>
|
||||||
|
<p>
|
||||||
|
Another important principle is to keep the concepts orthogonal.
|
||||||
|
Methods can be implemented for any type; structures represent data;
|
||||||
|
interfaces represent abstraction; and so on. Orthogonality makes it
|
||||||
|
easier to understand what happens when things combine.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
|
||||||
<h2 id="change_from_c">Changes from C</h2>
|
<h2 id="change_from_c">Changes from C</h2>
|
||||||
|
|
||||||
@ -112,8 +104,7 @@ has been designed to be easy to analyze
|
|||||||
and can be parsed without a symbol table. This makes it much easier
|
and can be parsed without a symbol table. This makes it much easier
|
||||||
to build tools such as debuggers, dependency analyzers, automated
|
to build tools such as debuggers, dependency analyzers, automated
|
||||||
documentation extractors, IDE plug-ins, and so on. C and its
|
documentation extractors, IDE plug-ins, and so on. C and its
|
||||||
descendants are notoriously difficult in this regard but it's not hard
|
descendants are notoriously difficult in this regard.
|
||||||
to fix things up.
|
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h3 id="declarations_backwards">
|
<h3 id="declarations_backwards">
|
||||||
@ -257,11 +248,10 @@ This is answered in the general <a href="go_faq.html#Where_is_assert">FAQ</a>.
|
|||||||
<h3 id="inheritance">
|
<h3 id="inheritance">
|
||||||
Why is there no type inheritance?</h3>
|
Why is there no type inheritance?</h3>
|
||||||
<p>
|
<p>
|
||||||
Object-oriented programming, at least in the languages we've used,
|
Object-oriented programming, at least in the best-known languages,
|
||||||
involves too much discussion of the relationships between types,
|
involves too much discussion of the relationships between types,
|
||||||
relationships that often could be derived automatically. Go takes a
|
relationships that often could be derived automatically. Go takes a
|
||||||
different approach that we're still learning about but that feels
|
different approach.
|
||||||
useful and powerful.
|
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
Rather than requiring the programmer to declare ahead of time that two
|
Rather than requiring the programmer to declare ahead of time that two
|
||||||
@ -295,10 +285,10 @@ dependency is one of the most exciting things about Go.
|
|||||||
<h3 id="methods_on_basics">
|
<h3 id="methods_on_basics">
|
||||||
Why is <code>len</code> a function and not a method?</h3>
|
Why is <code>len</code> a function and not a method?</h3>
|
||||||
<p>
|
<p>
|
||||||
To be blunt, Go isn't that kind of language. We debated this issue but decided
|
We debated this issue but decided
|
||||||
implementing <code>len</code> and friends as functions was fine in practice and
|
implementing <code>len</code> and friends as functions was fine in practice and
|
||||||
didn't complicate questions about the interface (in the Go type sense)
|
didn't complicate questions about the interface (in the Go type sense)
|
||||||
of basic types. The issue didn't seem important enough to resolve that way.
|
of basic types.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h3 id="overloading">
|
<h3 id="overloading">
|
||||||
|
Loading…
Reference in New Issue
Block a user