February 18, 2013
On 2013-02-18 13:46, Ary Borenszweig wrote:

> In the order it was analyzed. Same as in Ruby.

I see.

-- 
/Jacob Carlborg
February 19, 2013
On 2/16/2013 10:28 PM, Ary Borenszweig wrote:
> https://github.com/manastech/crystal/wiki/Introduction

Just a thought - the Introduction needs an introductory (!) paragraph at the beginning explaining what Crystal is, what its point is, and where it fits into the universe of programming languages.
February 20, 2013
On 2013-02-17 07:28, Ary Borenszweig wrote:
> The goal of this programming language it so be as efficient as possible, but probably it won't be as efficient as C in the general case. But... who knows?
> 

Do you know abou julia ?
http://julialang.org/
February 20, 2013
On 2/20/13 6:28 AM, Knud Soerensen wrote:
> On 2013-02-17 07:28, Ary Borenszweig wrote:
>> The goal of this programming language it so be as efficient as possible,
>> but probably it won't be as efficient as C in the general case. But...
>> who knows?
>>
>
> Do you know abou julia ?
> http://julialang.org/

Yes :-)

Before we started developing Crystal we searched for similar languages, found Julia and it really amazed us.

It's similar in some aspects, like the use of LLVM, multiple-dispatch and the idea that implementing everything in the same language leads for more optimizable and inlineable code (compared to Matlab, R, Python or Ruby, where when you want to have optimized code you write it in C).

On the other hand, you must specify the structure (and optionally the types) of a type:

type Foo
  bar
  baz::Int
  qux::Float64
end

In Crystal a class's fields and types are inferred by its usage. And anywhere in the code you can reopen a class to add more fields/methods to it, which is something we like when you want to change/extend a library's code without modifying its code (aka monkey patching :-P)

The following is an error in Julia:

julia> a = [1, "hello"]
no promotion exists for Int64 and ASCIIString

But in Crystal it works just fine (I think you can still have arrays of mixed types in Julia, but you either must specify it as Array{Any} or use another constructor, not sure). We want that to work transparently (with a minimal impact on performance, of course).

And Julia is oriented to technical computing, but we want Crystal to be a general purpose programming language (not sure it can be a systems programming language... probably yes since we already have pointers and pointer arithmetic, but we'll probably need to add a lot more to the language).

Finally, Julia has a macro system similar to Crystal... and in fact we took the idea from there (though the original idea seems to come from Lisp).
February 20, 2013
> 1. Do you know whether a similar language exists?

Why don't you have a look at julialang.org. I know it is different but you may have new ideas to gain speed.

Jozsef
February 21, 2013
On Sunday, 17 February 2013 at 06:28:09 UTC, Ary Borenszweig wrote:

> I'd also like to ask you:
>
> 1. Do you know whether a similar language exists?

Not sure how similar all the goals are (dynamic with static benefits) but there is Magpie: http://magpie.stuffwithstuff.com/
February 21, 2013
Jesse Phillips:

> Not sure how similar all the goals are (dynamic with static benefits) but there is Magpie: http://magpie.stuffwithstuff.com/

I am following the development of Magpie since some time, and beside the nice name, it has a very interesting type system:

http://journal.stuffwithstuff.com/2010/10/29/bootstrapping-a-type-system/

Bye,
bearophile
February 21, 2013
On 2013-02-21 21:37, Jesse Phillips wrote:

> Not sure how similar all the goals are (dynamic with static benefits)
> but there is Magpie: http://magpie.stuffwithstuff.com/

Doesn't that run on the JVM?

-- 
/Jacob Carlborg
February 21, 2013
On Thursday, 21 February 2013 at 21:28:12 UTC, Jacob Carlborg wrote:
> On 2013-02-21 21:37, Jesse Phillips wrote:
>
>> Not sure how similar all the goals are (dynamic with static benefits)
>> but there is Magpie: http://magpie.stuffwithstuff.com/
>
> Doesn't that run on the JVM?

I couldn't find what it generates to. It has an interpreter in Java and C++ though.
February 21, 2013
On Thursday, 21 February 2013 at 21:59:06 UTC, Jesse Phillips wrote:
>> Doesn't that run on the JVM?
>
> I couldn't find what it generates to. It has an interpreter in Java and C++ though.

Ok, that sounds really stupid. I thought it had a compiled component, but I don't see that, just looks to be interpreted.