Good point, you’re absolutely right. I totally neglected that.
And it does matter.

Am 14.04.21 um 16:28 schrieb Marshall Lochbaum:
> The difference is that in the languages you list, an associative array
> is mutable. A mutable object can be shared, and changes to one copy are
> reflected in others. Immutable data is easier to reason about, making it
> a better default, but mutability is essentially required to implement
> many algorithms efficiently: Dijkstra's algorithm is probably an
> example. Languages that have only immutable data structures might
> provide mutability using lexical closures, but J doesn't have these: its
> only non-local variables are locale-scoped. This means that locales are
> the only mutable thing that J offers, and these aren't first class as
> they can only be referred to by strings or numbers.
> 
> In J the only two ways to create mutable objects that can be passed
> around and updated efficiently are to (0) pass references that refer to
> global data, which must be stored in only one place so it can be updated
> in place, and (1) use numbered locales as objects. These are both very
> unpleasant from a syntax perspective, 0 becomes much more difficult with
> more structured data. Much worse, both of them require the programmer to
> do their own memory management or write a garbage collector to avoid
> leaking everything. This need for garbage collection is inescapable: J
> manages memory with reference counts, meaning that if there are two
> values so that either one can be used to "find" the other, each must
> have a reference count of one and can never be freed, even if the pair
> isn't reachable from the rest of the program.
> 
> Marshall
> 
> On Wed, Apr 14, 2021 at 03:00:42PM +0200, Hauke Rehr wrote:
>> In J, there’s a single compound data structure (henceforth, CSD):
>> the rectangular homogeneous array of arbitrari dimension.
>> What’s so bad about having only a single CSD?
>>
>> Many languages start with the associative array (henceforth, AA).
>> In D, for example, you have types T[S] where T and S are types.
>> [Oftentimes, AAs are implemented as hash tables, best known AA flavor.]
>> They usually provide custom syntax and specialized implementation for,
>> in the D syntax example, T[int] with indices starting from min ℕ,
>> for whatever that means to the language (usually, 0 or 1).
>> Those are called arrays.
>> Many other languages start with nothing but arrays and AAs,
>> as well (cf. Perl sigils @ and %, for example [yes, I don’t raku yet]).
>>
>> I’ve never heard as harsh complaints about, for another example,
>> lua having only a hash-table-array-hybrid – let’s call it a hash table:
>> you can imagine the array part of it as syntactic sugar
>> with good performance.
>>
>> No, it doesn’t hurt a language to have been built with a single
>> CDS at its core.
>>
>>
>>
>> Am 14.04.21 um 13:45 schrieb Julian Fondren:
>>> The complaint isn't "a program like that can't be written", or the
>>> argument would be that J isn't even Turing complete. The complaint
>>> is "I can't write a program like that in the manner I'd like."
>>>
>>> Quotes:
>>>
>>>   * No non-array data structures: hash tables, trie, graphs, etc. This
>>> is a show stopper because so many problems are easier to reason about
>>> and to solve by picking a more suitable data structure.
>>>
>>>   I reason about those things in terms of mathematics and abstract
>>> structures: I'd venture to say that's par for the course because its
>>> easiest.
>>>
>>> Suppose you want to translate a program you've written in a non-APL
>>> language into J. Much of the program can simply be transliterated,
>>> page-into-sentence, without much concern for the overall design
>>> of either program... unless a non-array data structure is very
>>> important. Now you have to think about how precisely the original
>>> program is using the data structure and how you can do that in some
>>> other way in J.
>>>
>>> The same speedbump shows up if you're following a tutorial, or trying
>>> to implement an algorithm according to a book or paper's description:
>>> as soon as a non-array data structure's properties become important,
>>> there's an abrupt increase in the difficulty of your task and of
>>> the depth of understanding of the problem domain that's required of
>>> you.
>>>
>>> The abruptness is off-putting all by itself. Imagine a language where
>>> + - * are all available but % isn't and the response to wanting it is
>>> 1. have you considered solving your problem without division? It's
>>>    very expensive! With a constant denominator and fixed-width integers
>>>    it's even possible to divide *with* multiplication by a magic number.
>>> 2. you can implement it yourself (with unusually bad performance)
>>> 3. you can get it from the FFI
>>> 4. is this so weird? ARM processors don't have % instructions.
>>>
>>> Yeah, it's pretty weird. Not having hash tables has also become weird.
>>>
>>> On 2021-04-14 05:25, ethiejiesa via Programming wrote:
>>>> It's not J, but FWIW Dyalog APL apparently can boast this realistic,
>>>> immersive simulation of some piece of Finnish  coastline. The 3D
>>>> engine is an external dependency, but supposedly everything else is
>>>> straight APL:
>>>>
>>>> https://www.dyalog.com/case-studies/simulation.htm
>>>>
>>>> Since the core of that project is taking large amounts of data,
>>>> scattered in lots of non-uniform formats, and munging it into a
>>>> concrete realtime visualization, you might find it
>>>> interesting/inspiring/helpful/whatever.
>>>
>>> ----------------------------------------------------------------------
>>> For information about J forums see http://www.jsoftware.com/forums.htm
>>
>> -- 
>> ----------------------
>> mail written using NEO
>> neo-layout.org
>>
>> ----------------------------------------------------------------------
>> For information about J forums see http://www.jsoftware.com/forums.htm
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm
> 

-- 
----------------------
mail written using NEO
neo-layout.org

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to