[HN Gopher] Dyalog APL 18.2
       ___________________________________________________________________
        
       Dyalog APL 18.2
        
       Author : tosh
       Score  : 64 points
       Date   : 2022-03-23 11:05 UTC (1 days ago)
        
 (HTM) web link (www.dyalog.com)
 (TXT) w3m dump (www.dyalog.com)
        
       | Ginger0 wrote:
        
         | [deleted]
        
       | lizardactivist wrote:
       | I've always liked this video, where one of the Dyalog developers
       | effortlessly writes a Sudoku solver in APL:
       | 
       | https://www.youtube.com/watch?v=DmT80OseAGs
        
       | joncfoo wrote:
       | What does the integration ecosystem look like for array-based
       | languages? e.g. writing and consuming network services, database
       | interoperability, C FFI, text encodings, etc.
       | 
       | Given this release of APL introduces support for shebang scripts
       | I'm thinking the ecosystem of integration isn't great but I'm
       | happy to be wrong.
        
         | abrudz wrote:
         | Some things have libraries, like HttpCommand and the lower
         | level Conga for network services. C FFI is done via the [?]NA
         | (Name Association) system function. Various Unicode encodings
         | are available via [?]UCS, etc.
        
         | mlochbaum wrote:
         | Dyalog is historically Windows-based and .Net is the preferred
         | solution for a lot of things. But it has reasonable support for
         | most of what you mention. There's a solid FFI, and text is
         | UTF-32 internally with support for I/O with other encodings.
         | See the list of system functions at [0]. Conga is the http
         | library but I don't have any idea how well it works.
         | 
         | This is an area where array languages are entirely different
         | from one another. J and K have been using shebangs for a long
         | time (although J does this by assuming a shebang will be valid
         | but no-op code, and fails if the path contains a space...
         | sigh). Support for interop just depends on what other
         | applications are considered important by the developers of that
         | particular language.
         | 
         | [0]
         | https://help.dyalog.com/18.2/#Language/System%20Functions/Su...
        
         | jpf0 wrote:
         | J FFI lib call: https://code.jsoftware.com/wiki/Scripts/CallJ
         | and
         | https://code.jsoftware.com/wiki/Guides/DLLs/Calling_the_J_DL...
         | database: odbc, jd, sqlite, mysql, [arrow bindings] network
         | services: sockets, websockets, zmq, & http 1.1 text: unicode
         | support, names limited to asci
         | https://wiki.jsoftware.com/wiki/Guides/UnicodeGettingStarted
        
         | jodrellblank wrote:
         | J has support for being integrated into other projects[1], e.g.
         | the link below has C# and Excel links at the end. You can use
         | it as a COM server if you run 'jreg.cmd' first to register it.
         | 
         | As an administrator:                   PS C:\Program
         | Files\j64-807> .\jreg.cmd
         | 
         | e.g. awkwardly, from PowerShell:                   $J = new-
         | object -ComObject JExeServer              PS C:\>
         | $J.Set('numbers', [int[]](1,2,3))         0         PS C:\>
         | $J.Do('answer =: numbers * 2')         0              PS C:\>
         | $Result = $null         PS C:\> $J.get('answer', [ref]$Result)
         | 0         PS C:\> $Result         2         4         6
         | 
         | or                   PS C:\> $J.Do("oops")         21
         | PS C:\> $Text = $null         PS C:\> $J.ErrorText(21,
         | [ref]$Text)         0         PS C:\>
         | [system.text.encoding]::ASCII.GetString($Text)         value
         | error
         | 
         | [1] https://code.jsoftware.com/wiki/Guides/OLE_Automation
        
         | jodrellblank wrote:
         | Dyalog APL lets you call to the .Net Framework almost directly,
         | e.g.
         | [?]using-'System.Diagnostics,System.dll'
         | st-[?]new Stopwatch               st.Start         <pause>
         | st.Stop               st.Elapsed         00:00:03.5493601
         | 
         | That gives you access to most things C# can access, presumably
         | System.Data.DataTable and database access, or P/Invoke to C
         | libraries? It also supports the other way around, writing
         | :Class-es and using File -> Export to make .Net DLLs for other
         | .Net languages to import and use (with Dyalog APL installed and
         | licensed to run the code inside, mind you).
         | 
         | e.g. text encoding:
         | [?]using,-[?]'System.Text'
         | Encoding.Unicode.GetBytes ([?]'hello')         104 0 101 0 108
         | 0 108 0 111 0
         | 
         | (.Net calls UTF-16 "Unicode").
         | 
         | Web services: From https://www.dyalog.com/tools/web-
         | applications.htm it can be an ASP.Net language, or with
         | "MiServer, A development platform for web applications written
         | in APL" or several others.
         | 
         | There's the classic [?]CMD and [?]SH which run a string in the
         | Windows command interpreter, or Linux shell, and get the text
         | result:                         [?]cmd 'echo hello'
         | hello
         | 
         | Seems to have various support for ActiveX and COM integration,
         | too. I've never used any of this in anger or in production, but
         | it surprised me how much integration it has.
         | 
         | > " _Given this release of APL introduces support for shebang
         | scripts I 'm thinking the ecosystem of integration isn't great
         | but I'm happy to be wrong._"
         | 
         | This, specifically writing like a Python script, has been a
         | sticking point for Dyalog APL for a while, I understand. APL
         | the language and way of using it predates filesystems and was
         | traditionally more like a self-enclosed virtual machine; you
         | power it up, run your code inside it, and then save its running
         | state to disk in a proprietary binary workspace blob that only
         | it can read back again. And when filesystems came along,
         | [?]|[?][?][?][?] weren't very convenient to write and save in
         | scripts for a long time either.
        
       | usgroup wrote:
       | Would have liked to see an APL on the Python VM ala Hylang. Still
       | waiting for Hy to become stable enough to switch to for Python
       | work but that's the ticket right there.
       | 
       | Trouble is that APL/J gain their magical abilities by
       | specialising the semantics to things that fit array processing.
       | It doesn't work for general programming.
        
       | alfalfasprout wrote:
       | Who is using APL in production out of curiosity?
        
         | agumonkey wrote:
         | check out Aaron Hsu on youtube, he works with it (finance
         | sector IIRC)
        
           | melling wrote:
           | https://bobkonf.de/2019/hsu.html
        
           | mlochbaum wrote:
           | Aaron's been an academic for most of his career and was
           | working for Dyalog as of 2020 (edit: still there, per [0]). I
           | wouldn't describe his work as "production", since it mainly
           | relates to APL itself rather than some external problem to be
           | solved with it.
           | 
           | [0] https://www.sacrideo.us/speaking-at-fnconf-22-dsls-
           | architect...
        
             | agumonkey wrote:
             | oh wow I got confused then
        
             | pxeger1 wrote:
             | Aaron doesn't appear on https://www.dyalog.com/meet-team-
             | dyalog.htm
        
               | mlochbaum wrote:
               | True, maybe he isn't considered a member of "team Dyalog"
               | while still being legally an employee or contractor? He
               | was hired in early 2020 a few months before I left, and
               | partly funded by Dyalog before that. And he's told me he
               | prefers to be seen as independent, but that was when he
               | was working on his PhD and Indiana University was his
               | primary affiliation.
        
         | Funkeeee wrote:
         | https://www.dyalog.com/reference-customers/simcorp.htm This
         | reference profile is really old though, numbers are way off.
         | Anyway, APL is used in production.
        
         | time_to_smile wrote:
         | I think the emphasis on "in production" doesn't make sense for
         | a lot of languages. Not everything has to be part of a highly
         | engineered, user facing system to be useful.
         | 
         | For example, I would never use R "in production", however I
         | have used R to make many important internal decisions, and
         | generate recurring reports, etc. Very few people use Excel "in
         | production" but there are plenty of very important companies
         | using Excel.
         | 
         | Likewise I can imagine there are a few people out there using
         | APL for something meaningful and important, even if that code
         | is never truly "in production".
         | 
         | There are plenty of useful, wonderful programs written in the
         | world that were never destined to be part of a production
         | system. The code I've enjoyed writing the most and learned the
         | most about the world from writing typically falls into this
         | category.
        
           | sshine wrote:
           | My first employer used Excel "in production": A C# app would
           | read numbers from a shared network drive, feed them into a
           | timeseries database, and the real-time part of the system
           | would be reloaded. Eventually a web-interface was put in
           | place instead of the Excel sheet that provided for faster
           | input validation.
        
           | xienze wrote:
           | I think the emphasis on "in production" is because it's
           | assumed that the only people really using APL are folks
           | maintaining legacy codebases. I picture APL like COBOL:
           | there's no(?) reason someone would even toy around with it
           | these days unless there was some intrinsic property of APL
           | that makes it uniquely suited to some problem domain, and to
           | such a degree that people can overlook its major
           | shortcomings. _Is_ there something APL is actually useful for
           | these days?
        
         | RodgerTheGreat wrote:
         | A list of companies using array languages is maintained here:
         | https://github.com/interregna/arraylanguage-companies
        
         | jjtheblunt wrote:
         | Isn't Formula 1 using kx/q for their extreme realtime data
         | processing?
         | 
         | https://kx.com/
        
       ___________________________________________________________________
       (page generated 2022-03-24 23:01 UTC)