Live data from Hacker News

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

crystal-lang.org

61–70 of 79 posts

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

#61
post #29

This was very good but... " reach a point where breaking changes to the core of the language are down to a minimum " I'm very afraid of the word minimum in this context. This is why "no one was ever fired for picking Java".

I think that's a mistake in the article, we will follow semver after 1.0.0, and we definitely don't want a 2.0.0 less than two years after 1.0.0. I'm sure crystal will provide the same stability guarantees as go and rust.

The idea is to avoid falling into a Python 2 vs 3 situation, by being very careful in how we break compatibility when moving to the next major.

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

#62
post #11

Earlier quoted context omitted.

I didn't 'play' yet with Crystal exactly for that reason: lack of Windows support. edit: Windows 7

If you just want to play with it, and have windows 10, it runs fine in the Linux emulator thingy.

or use docker for windows

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

#63
post #15

I think Crystal is a very practical language to work in for web. It doesn't have the polish of Go (yet), but it feels more approachable to me. Rust has its place with low-level systems work, but Crystal gives you something that is reasonable to write and still compiles to a binary. In turn, it performs well and is easy to distribute, deploy, and containerize as well.

If I'm already using, say, OCaml, why would I want to switch to Crystal? (assuming that multicore takes the same amount of time to arrive in each). Whenever I've read about Crystal it sounds like a broadly sensible language, but it doesn't sound like it brings anything new to the table - in which case I'll favour the more mature language with the bigger library/tool ecosystem.

I think tho might be easy. OCaml might have OO,but it is meant to be used as FP. The ecosystem isn't honestly that impressive and isn't winning over people from Ruby or Python and isn't going to catch on more than it already has. If Crystal catches even 1/4 of Ruby's base it will be huge. OCaml is hard to get into btw (big language). Crystal looks easy.

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

#64
post #11

Earlier quoted context omitted.

I didn't 'play' yet with Crystal exactly for that reason: lack of Windows support. edit: Windows 7

If you just want to play with it, and have windows 10, it runs fine in the Linux emulator thingy.

Having a hacky workaround isn't the same thing as first class support. Bash on Windows 10 is in my mind similar to resorting to Cygwin. No thanks. I despise Windows, but if you have an overbearing IT dept, that's your only option.

Edit* Just saw where you said "play"

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

#65
post #25
post #16

Can it be used (in the future) to implement cross-platform desktop apps?

Not any more than several other languages, because as usual, the show stopper is the lack of decent cross-platform desktop GUI libraries. There's QT, which is huge and unwieldily and not so good looking on OS X, GTK+ which is a mess on both Windows and OS X, wxWidgets (based on other libs), and a few fringe, and incomplete libs. For one-platform apps, though, or a single backend for multiple platform UI frontends, it…

Please take a look at the GUI they're designing for Red. It is stupidly powerful and just as easy to use to build everything from simple apps described below to much more complex graphics and works on Windows, OSX, and Linux. They still have a ways to go on several aspects of the language, but it looks really nice.

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

#67
post #51

Earlier quoted context omitted.

This sentiment is actually very interesting to me. I had (/have?) the same kind of sentiment toward Go, but when I spent time playing with it recently I realized just how close to C it actually is. Enough so that when someone says it's a C replacement, I can actually see where they're coming from/somewhat agree with them. And the reason for that is that Go actually seems to follow a lot of C conventions pretty darn c…

Research Oberon and Modula-3, just as two possible examples. You can go even further back into history of computing and check the Mesa/Cedar workstation at Xerox Parc.

Modula-3, at least, had generics.

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

#68

Earlier quoted context omitted.

This sentiment is actually very interesting to me. I had (/have?) the same kind of sentiment toward Go, but when I spent time playing with it recently I realized just how close to C it actually is. Enough so that when someone says it's a C replacement, I can actually see where they're coming from/somewhat agree with them. And the reason for that is that Go actually seems to follow a lot of C conventions pretty darn c…

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 (perhaps the earliest, besides Ritchie himself), I'm willing to concede that he had enough input on C's design to be called a co-designer or co-creator. But which other "inventor of C" played a role in the creation of Go?

I also find it hard to label Rob Pike as an expert in any kind of language design. An expert in windowing systems and concurrency, perhaps, but language design? Hell, no. Even his earlier design, Newsqueak, was more of an experiment in concurrency than in language design—and it notably was a collaboration with Luca Cardelli, an expert in ML and OOP who also worked on Modula-3, and whose influence can be seen in Modula-3's several very ML-like constructs. 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.

> The Wirth languages ... had GC's but also allowed manual management.

None of Wirth's languages had GC until Oberon, as far as I'm aware. And spiritual successors by other groups, like Object Pascal and Ada, never really picked up on GC, either (Ada had GC as an optional part of the standard, but was removed in the latest standard because it was so rarely provided by implementations). As far as I can tell, Modula-3 is the only other "Wirth-style" language to provide GC.

Modula-3 was indeed a great language, and I think it's a real shame that it didn't get picked up more widely. At a time, it had several really solid implementations, and the language's definition is very short while still providing a plethora of useful features for programmers. The silver lining is that it was, at least, a very influential language, despite its limited adoption.

Oberon, on the other hand, was a very spartan language that offered little in terms of features, and it exhibited that Wirth really didn't grok OOP at the time he designed it (which, if I recall correctly, is something he later admitted, though I'm having trouble finding a citation at the moment). Some of Oberon's issues were fixed in later versions of the language, but some of its issues were also "doubled down" in later versions, as well.

> Another alternative was Delphi, which succeeded for a while. Way more productive and crash-resilient than using VC++.

Delphi was indeed a real alternative for a while, and while you're right that it was more productive than VC++, that's not saying much. Later versions of Delphi grew to C++ levels of size, complexity, and hairiness, and that's reflected in Free Pascal's implementation, as well. It's something that I've lamented on more than one occasion because I remember how great it was and feel as though it could still be great with a bit of streamlining.

[1]: https://commandcenter.blogspot.com/2012/06/less-is-exponenti...

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

#69
post #8

Earlier quoted context omitted.

>Go is a good enough replacement for C, for user space applications. Are you sure you are not describing Rust?

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.

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

#70

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 last history people here gave me had him describing the joy of programming in the safe, fast Oberon-2. And wanting to re-create that with the new language. Resulting language is very Wirth-like in style, esp simplicity, compile speed focus, and safety. Modified with C syntax, concurrency from Limbo, and I dont recall what else. Clearly way closer to Oberon-2 or Modula's than to BCPL like C copied/extended.
Post reply on HN