Am 21.07.2012 10:20, schrieb Jonathan M Davis:
On Saturday, July 21, 2012 08:48:57 Paulo Pinto wrote:
After becoming disapointed with Go leaving in the past, I've come to the
conclusion that between the two, D is a much better choice.

I still need to study up on Go one of these days (along with a variety of
other languages which are on my to-learn list), but the more I learn about it,
the less I understand why Go and D are treated as competitors. I guess it's
because of the systems language moniker (though Go doesn't mean it in the same
was as C++ and D, so that skews things already), but Go and D are just so
radically different in their basic approaches and philosophies, that I would
expect that the folks who like one would dislike the other in most cases.
They're just so completely different that I wouldn't expect them to really
compete with one another save for the fact that developers only have so much
time to check out new languages, so if one's getting a lot more attention,
that could reduce how many people check out the other one, even if most people
who check out the first one don't end up liking it.

- Jonathan M Davis


Go is an evolution of Limbo (http://www.vitanuova.com/inferno/limbo.html), where ADTs got replaced by interfaces coupled with method declarations syntax from Component Pascal (http://www.oberon.ch/pdf/CP-Lang.pdf), an extension to Oberon.

If you spend some time reading Inferno and Limbo documentation after learning Go, you'll see how they share so many concepts.

http://doc.cat-v.org/inferno/books/inferno_programming_with_limbo/

Regarding systems programming, Go could actually play in the same league as D, since Oberon was used to write the Native Oberon and A2 operating systems. Besides the assembly for the GC and boot, everything else is written in Oberon.

As a personal workstation the system was used a lot by the ETHZ researchers during the 90's. A quite cool environment where you get a Smalltalk like environment, with a strong typed language.

Nowadays it is mainly used to teach OS principles at ETHZ, and embedded systems development.

You can read more it here,
http://www.ethoberon.ethz.ch/native/WebScreen.html        (screenshots)
http://www.ethoberon.ethz.ch/WirthPubl/ProjectOberon.pdf (how it was implemented)
http://www.astrobe.com/Oberon.htm (embedded systems support)

The trick with Oberon, which Go also uses, is to have a special module
reckognised by the compiler with primitives to do the low tricks C offers. Additionaly any function/method without body can be implemented in Assembly. This is nothing new, Modula-2 already worked like this.

What I miss from Go, and is what makes me like more of D is,

- enumerations
- exceptions
- metaprogramming
- generics
- dynamic loading
- constness
- operator overloading
- method overloading
- support for FP

Basically everything that has become part of the enterprise world since
the late 90's.

Wirth has a nice paper where we describes the evolution of the languages he designed, stating on the chapter 7, that Oberon failed in the industry because companies preferred the code bloat of other languages instead of Oberon's simplicity.

http://www.inf.ethz.ch/personal/wirth/Articles/Modula-Oberon-June.pdf

This is exactly the same school of thought that Go designers follow. If
language design would be considered art, they would probably be part of
the Minimalism mouvement.

--
Paulo

Reply via email to