As is explained here https://github.com/JuliaLang/julia/issues/4211 a 
mutating reshape conflicts with the array dimension beeing a type parameter.

Am Donnerstag, 24. April 2014 10:07:31 UTC+2 schrieb Tobias Knopp:
>
> A few things to add:
> - Note that writing vector expressions in an efficient manner is not 
> trivial and actually an unsolved issue in Julia. If you write 
>
> x = a + b .* c 
>
> there will be temporary arrays created which leads to a major slowdown. 
> There is a devectorization macro though that can solve this by transforming 
> this into
>
> for n=1:length(N)
>   x[n] = a[n] + b[n] * c[n]
> end
>
> So although vector expressions might seem easy to use for a beginner, in 
> practical programming they are really non-trivial.
>
> - Matlab is actually so clever that it will only copy arrays internally 
> when one writes to an array copy. This is called copy-on-write (COW).
>
> - I think it is true that Julia is a little harder to learn than Matlab 
> when one considers only the absolute newbie programmers. But if you dig a 
> little deeper into programming Julia offers several serious advantages that 
> will pay out after taking the first step. The type system with multiple 
> dispatch is one of the most awesome things I have seen so far. And when you 
> start learning about how to use mex in Matlab or the equivalent things in 
> Python I think one has reached a point where Julia would be much easier to 
> use.
>
> - For a mathematician statements like "x=x+1" can be very confusing no 
> matter how this is implemented internally... :-)
>
> - I have to admit that a reshape!(A,dim) would make a lot of sense. But 
> there might be technical reasons why it is not possible to change the array 
> dimensions in an existing array.
>
>
>
>
> Am Donnerstag, 24. April 2014 07:16:26 UTC+2 schrieb Ethan Anderes:
>>
>> Jameson:
>>
>> Yes, the Matlab choice is slow and doesn't scale, but it's very easy to 
>> reason about. I think it was instructive for me to try and think of a real 
>> life bug that realized my worries. I came to realize that most of the code 
>> where I was using vec() was embedded in a chain of function calls like
>>
>> b = M * exp(vec(a))
>>
>> ....so I see your point about fast easily composible functions when 
>> output and input share memory.
>>
>> I recently had a discussion with a colleague that commented that R was 
>> essentially developed by statisticians which is why it doesn't scale well 
>> (not sure if that is actually true but thats beside my point). On the other 
>> hand, things like python are written by CS folks which hinders access for 
>> mathy-science folks who just want to prototype an idea every now and again 
>> without investing the time to upgrade their programming skills. I think 
>> julia can have the best of both: easy to learn + modern CS. 
>>
>>
>>

Reply via email to