1.0 annoyances and Matlab comparison

Did anyone read the explanation that was given by @mbauman and linked to multiple times?

Despite what people keep insisting here, the motivation was not to punish people who want to allocate uninitialized arrays by forcing them to type a long word. The motivation was this:

  • Collections are generally constructed in Julia by passing an iterable argument which is used to populate the collection as described here.

  • Arrays constructors predate this convention and are now an awkward exception to this general pattern. By this convention, Array((2,3)) should construct the vector [2,3] instead of an uninitialized 2×3 matrix. Similarly, Array(3) should construct [3] instead of an uninitialized 3-element vector.

  • Array(dims...) is a dangerously simple syntax for a fundamentally dangerous operation. Allocating uninitialized memory can introduce non-determinism and bugs into programs if not used correctly. Array(2,3) looks like a very innocuous operation. So not only is this syntax now at odds with how collections generally work, but it’s a dangerous operation.

20 Likes