Live data from Hacker News

A new year resolution to have Crystal reach the 1.0 milestone in 2017

crystal-lang.org

71–79 of 79 posts

Re: A new year resolution to have Crystal reach the 1.0 milestone in 2017

#71

Earlier quoted context omitted.

Go is based on Oberon: a family of simple, safe languages that were used to write OS's. Started with Modula-2 in Lilith project. At one point, the machines ran ETH University. By Oberon, they got a GC but could also do unsafe manipulations for hardware interfaces or performance. Forced you to put it all in modules declared SYSTEM ("unsafe"). The neat thing about the OS was that it and its compiler were simple enough…

Since when is Go "based on Oberon"? Pike himself claims that it was "based on C", with obvious influence from his own work on Squeak and Newsqueak.

The method definition syntax, package model and unsafe package are taken from Oberon-2.

You missed that Robert Griesemer is also part of the Go team.

Re: A new year resolution to have Crystal reach the 1.0 milestone in 2017

#72

Earlier quoted context omitted.

The language was designed by an expert on Wirth-style languages plus the two inventors of C. They wanted to create minimal, useful language based on old techniques with only features they could all agree on. Pike used Oberon-2 back in the day, knowing its advantages. The C inventors naturally wanted it more like C. The result is a merger of these. The concurrency stuff was an exception that came from Limbo language P…

> The language was designed by an expert on Wirth-style languages plus the two inventors of C. Did Dennis Ritchie have a hand in creating Go? I must have missed that. While Ken Thompson's earlier B language no doubt had an influence on C, Dennis Ritchie is widely regarded as the creator of C, which is really rather different from B, borrowing more heavily from BCPL and Algol-68. As an early (and heavy) user of C (per…

> As far as I can tell, Modula-3 is the only other "Wirth-style" language to provide GC.

Besides Oberon, there was Oberon-2, Active Oberon, Component Pascal, Zonnon, Modula-2+, Modula-3.

All of them with roots actually on the Xerox PARC workstation that used Mesa/Cedar.

Re: A new year resolution to have Crystal reach the 1.0 milestone in 2017

#73
post #71

Earlier quoted context omitted.

Since when is Go "based on Oberon"? Pike himself claims that it was "based on C", with obvious influence from his own work on Squeak and Newsqueak.

The method definition syntax, package model and unsafe package are taken from Oberon-2. You missed that Robert Griesemer is also part of the Go team.

I didn't miss that at all. According to Pike, it was actually Griesemer's idea to start with C.

Re: A new year resolution to have Crystal reach the 1.0 milestone in 2017

#74
post #72

Earlier quoted context omitted.

> The language was designed by an expert on Wirth-style languages plus the two inventors of C. Did Dennis Ritchie have a hand in creating Go? I must have missed that. While Ken Thompson's earlier B language no doubt had an influence on C, Dennis Ritchie is widely regarded as the creator of C, which is really rather different from B, borrowing more heavily from BCPL and Algol-68. As an early (and heavy) user of C (per…

> As far as I can tell, Modula-3 is the only other "Wirth-style" language to provide GC. Besides Oberon, there was Oberon-2, Active Oberon, Component Pascal, Zonnon, Modula-2+, Modula-3. All of them with roots actually on the Xerox PARC workstation that used Mesa/Cedar.

Ah, cool. I wasn't thinking of Oberon-2 or Active Oberon as separate languages when I made that statement. I didn't know Modula-2+ had GC, and was unfamiliar with Component Pascal or Zonnon. Thanks!

Re: A new year resolution to have Crystal reach the 1.0 milestone in 2017

#75

Earlier quoted context omitted.

The language was designed by an expert on Wirth-style languages plus the two inventors of C. They wanted to create minimal, useful language based on old techniques with only features they could all agree on. Pike used Oberon-2 back in the day, knowing its advantages. The C inventors naturally wanted it more like C. The result is a merger of these. The concurrency stuff was an exception that came from Limbo language P…

> The language was designed by an expert on Wirth-style languages plus the two inventors of C. Did Dennis Ritchie have a hand in creating Go? I must have missed that. While Ken Thompson's earlier B language no doubt had an influence on C, Dennis Ritchie is widely regarded as the creator of C, which is really rather different from B, borrowing more heavily from BCPL and Algol-68. As an early (and heavy) user of C (per…

"Did Dennis Ritchie have a hand in creating Go? I must have missed that."

Oops. You got me on my bad memory there. I misremembered Griesemer. The C language was originally just B modified with structs to try to port UNIX from assembly. Also, the limited keywords & "programmer is in control" philosophy came straight out of B. The details are in this nice Vimeo that traces its development going through papers they presented:

https://vimeo.com/132192250

"An expert in windowing systems and concurrency"

Even if we drop "language" expert, my comment had him bringing in concurrency mainly. I didn't know Cardelli started with Newsqueak, though. Makes sense given stuff as good as Modula-3 rarely comes from a vacuum.

"Articles like this one[1] by Pike only serve to reinforce my thoughts that he, though a rather smart guy otherwise, is really rather ignorant about language design and about the role of types in programming in general."

Well, see, it's been given a test. The Concurrent Pascal, Ravenscar, and Eiffel SCOOP approaches to concurrency were all very effective for what they're designed for. I've been sitting on the bench on Go watching it from afar to see what Pike's method does. So far, I see a lot of people griping about concurrency errors that didn't happen in SCOOP. Meanwhile, Rust has improved on things in a new way. Your characterization of him as an experimenter more than an expert may be right.

"None of Wirth's languages had GC until Oberon, as far as I'm aware. "

All of his languages except the first two that he started with. They made a lot of languages. It's kind of a strength and weakness of theirs as doubling down on a great one might have accomplished more. Might given Cardelli did without much direct impact.

"Oberon, on the other hand, was a very spartan language that offered little in terms of features"

So was early C. It's why I bring up Modula-2 or Oberon in comparisons as nobody is writing or deploying Modula-3 or Ada on a PDP-11. I'm not a fan of Oberon except for bootstrapping better languages or for minimalist hardware. Even then I'm more PreScheme.

"Later versions of Delphi grew to C++ levels of size, complexity, and hairiness"

Snowballs rolling into avalanches. Common ill in tech although I think it's human nature or economics more than anything. It takes a cathedral model that prioritizes just right amount of complexity to avoid. I just subseted languages like embedded people do to avoid the shit. Until I had to debug a 3rd party library. (shakes head)

Re: A new year resolution to have Crystal reach the 1.0 milestone in 2017

#76
post #72

Earlier quoted context omitted.

> As far as I can tell, Modula-3 is the only other "Wirth-style" language to provide GC. Besides Oberon, there was Oberon-2, Active Oberon, Component Pascal, Zonnon, Modula-2+, Modula-3. All of them with roots actually on the Xerox PARC workstation that used Mesa/Cedar.

Ah, cool. I wasn't thinking of Oberon-2 or Active Oberon as separate languages when I made that statement. I didn't know Modula-2+ had GC, and was unfamiliar with Component Pascal or Zonnon. Thanks!

Well, he kept changing them enough to break compatibility & even how you express concepts at times. Oberon is both a language and a name for a whole family of languages that represent his people's life-long experimentation with simple, language design.

Unlike Cardelli, his weren't ultra-practical but they did try with a commercialized one called Component Pascal. It got significant adoption for a Wirth language along with IDE. As usual, the BNF grammar is pretty small despite its expressive power. It kind of came and went far as adoption but people are still apparently posting to the forum in 2016.

https://en.wikipedia.org/wiki/Component_Pascal

http://blackboxframework.org/index.php?cID=home,en-us

Re: A new year resolution to have Crystal reach the 1.0 milestone in 2017

#77
post #71

Earlier quoted context omitted.

The method definition syntax, package model and unsafe package are taken from Oberon-2. You missed that Robert Griesemer is also part of the Go team.

I didn't miss that at all. According to Pike, it was actually Griesemer's idea to start with C.

Wasn't aware of it.

In any case, my view is a bit different, I see Go as a mix of an AOT version of Limbo mixed with bits of Oberon-2.

Re: A new year resolution to have Crystal reach the 1.0 milestone in 2017

#78
post #77

Earlier quoted context omitted.

I didn't miss that at all. According to Pike, it was actually Griesemer's idea to start with C.

Wasn't aware of it. In any case, my view is a bit different, I see Go as a mix of an AOT version of Limbo mixed with bits of Oberon-2.

I definitely "feel" the Limbo influence, but I've not worked with Oberon-2 (only the original Oberon, and only a bit), so I didn't pick up on it. I do "feel" the C influence as well, though.

Re: A new year resolution to have Crystal reach the 1.0 milestone in 2017

#79

Earlier quoted context omitted.

Ah, cool. I wasn't thinking of Oberon-2 or Active Oberon as separate languages when I made that statement. I didn't know Modula-2+ had GC, and was unfamiliar with Component Pascal or Zonnon. Thanks!

Well, he kept changing them enough to break compatibility & even how you express concepts at times. Oberon is both a language and a name for a whole family of languages that represent his people's life-long experimentation with simple, language design. Unlike Cardelli, his weren't ultra-practical but they did try with a commercialized one called Component Pascal. It got significant adoption for a Wirth language along…

Cool, thanks for the pointers :)
Post reply on HN