On Sun, Apr 3, 2022 at 2:19 PM J. Patrick Harrington <[email protected]> wrote:
> Anyway, if there are resources or further information on .wav files
> under J  (I've not searched extensively) I'd be interested to learn
> about them.

So I started looking at simple approaches to playing wav files from
within J. One of the more obvious approaches has J feeding the wav
file to a program on a pipe.

After a bit of investigation, I found that
https://code.jsoftware.com/wiki/System/ReleaseNotes/J903 states:

"Old foreigns 2!:2 and 2!:3 are removed from the language"

That was support for this kind of thing:

https://en.wikipedia.org/wiki/Pipeline_(Unix)
https://docs.microsoft.com/en-us/windows/win32/procthread/creating-a-child-process-with-redirected-input-and-output
https://developer.apple.com/documentation/foundation/pipe
https://developer.android.com/reference/java/nio/channels/Pipe

Pipes are a mechanism analogous to J's @: but with a few tradeoffs,
and designed for interprocess communication. It seems to be supported
by all current OS hosts for J -- even browsers are starting to
incorporate an approximation of this mechanism: javascript's
Blob.stream().

I can't find any description of why it was removed from the language.

I can't find any effort aimed at replacing this mechanism with library code.

I would like to classify this change as an error that we should repair.

Am I overlooking some critical benefit here?

After poking around in the forums for reasoning which might have lead
to this change, I found this:

http://www.jsoftware.com/pipermail/programming/2018-March/050819.html

If that was the motivation, I need to apologize for my poor choice of
words back then.

But I also found this:

http://www.jsoftware.com/pipermail/beta/2017-April/008775.html

Or: it was broken for some time. And, presumably, tossing it was
easier than fixing it. But, given how slow programming projects are
(where individual projects might take years to complete, with
programmers focussing on small parts of the
whole at any given point in time), I don't think it's meaningful to
equate "broken for a time" with "useless and should be removed".

Quite often when people encounter a broken feature of a language
implementation, they ascribe that to themselves, or to the language
being too complex for them to understand, rather than reporting it as
a bug.

Anyways...

Pipe support is gone from the language, for now. And, maybe we should
have implemented pipe terminals as gerund rather than integers. But I
think we should have pipe support (at least for sequences of
characters) in the language.

Thanks,

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

Reply via email to