[HN Gopher] Achieving High-Performance the Functional Way (2020)
       ___________________________________________________________________
        
       Achieving High-Performance the Functional Way (2020)
        
       Author : andsoitis
       Score  : 63 points
       Date   : 2023-03-05 16:05 UTC (6 hours ago)
        
 (HTM) web link (dl.acm.org)
 (TXT) w3m dump (dl.acm.org)
        
       | FrustratedMonky wrote:
       | Shout out to F#
        
         | jjtheblunt wrote:
         | i do wonder what fraction of the audience in HN also thinks of
         | F# as a secret weapon
        
           | karmakaze wrote:
           | Much smaller than you'd hope. HN is very much mainstream
           | these days. I asked how one would represent a pure function
           | in a language that didn't support pureness/immutability and
           | got `fn f(a, b) { return a + b; }` entirely missing the
           | point.
        
             | fvdessen wrote:
             | what was the point ?
        
       | andsoitis wrote:
       | Abstract: https://dl.acm.org/doi/10.1145/3408974
        
         | agumonkey wrote:
         | And a video even
         | https://dl.acm.org/action/downloadSupplement?doi=10.1145%2F3...
        
           | Rzor wrote:
           | I couldn't open this video on Firefox at first, but when I
           | downloaded it and tried to play it on VLC, my open-source AMD
           | driver crashed. I'm running Mint kernel 5.15.0-56-generic. Be
           | careful.
           | 
           | Got this: [drm:amdgpu_cs_ioctl [amdgpu]] _ERROR_ Failed to
           | initialize parser -125!
           | 
           | Had to kill the XServer with CTRL+Alt+Backspace to get it
           | back.
        
       | 6451937099 wrote:
       | [dead]
        
       | 6451937099 wrote:
       | [dead]
        
       | synergy20 wrote:
       | They presented two new languages for functional programming, can
       | we leverage existing popular languages that can do FP just fine
       | for the same goal, e.g. python, javascript, or rust,etc?
        
         | dgb23 wrote:
         | The requirements include be high performance processing. That
         | would exclude the first two.
        
           | FrustratedMonky wrote:
           | Is there a definition for 'high performance'. Does a .NET
           | language like F# qualify. Or does it have to simply be
           | compiled? I'm just not sure that Python wouldn't qualify.
        
             | dgb23 wrote:
             | From the examples they gave it's clear you wouldn't use
             | python.
        
         | throwwaway8529 wrote:
         | Python can't even do multi line lambdas
        
         | pharmakom wrote:
         | Those languages (except maybe Rust) cannot do FP just fine.
        
         | packetlost wrote:
         | LOL Python is _not_ functional. We got a crumb of FP with
         | `itertools`, `functools` and `lambda`
        
           | synergy20 wrote:
           | the reality is, general programming language with FP
           | capabilities is what flies in practice, pure FP language
           | might be perfect, it's just hard to find coders for them, we
           | will have to live with that.
           | 
           | for HPC and ML, Python is dominant, I would expect to enhance
           | python somehow with FP instead of anything else, then adding
           | c/c++/rust/fortran libraries(e.g numpy) for intensive
           | computing needs.
        
             | karmakaze wrote:
             | Python isn't popular for data only because it's imperative,
             | there's also the vast numerical processing ecosystem.
             | Scala/Spark is an example where FP fits well.
        
             | noloblo wrote:
             | what about GIL?
             | https://wiki.python.org/moin/GlobalInterpreterLock
             | 
             | why python can't thread? impact of GIL on python
             | https://pythonspeed.com/articles/python-gil/
        
               | synergy20 wrote:
               | My understanding is that even with GIL removed today,
               | Python is still not a performant language for cpu-
               | intensive tasks, be it single core or multiple-core.
               | 
               | Python is better used as a glue language and leverage
               | numpy etc to do the heavy lifting, numpy can work with
               | multiple-core just like c/c++/rust languages can.
               | 
               | If you really need launch multiple python processes, the
               | multiprocessing module came to rescue.
               | 
               | While not ideal, I don't see a showstopper to use Python
               | for HPC's high and parallel computation needs at all.
        
         | nestorD wrote:
         | Yes, for example JAX is a strictly functional language,
         | designed for high-performance computing and embedded in Python.
        
           | synergy20 wrote:
           | I don't think JAX is a new language though, if it is, it's
           | still Python?
        
             | _kulang wrote:
             | It's not even really a language as much as it is an interop
             | layer of sorts. It's a collection of functional operations
             | on numpy arrays, and a capable JIT. It's main draw is
             | honestly autograd, and if you're using that, you often
             | can't use while or for loops effectively, can't index numpy
             | arrays without .at[], and should avoid side effects, so
             | strangely it's neither it's own language or Python any
             | longer
        
       ___________________________________________________________________
       (page generated 2023-03-05 23:00 UTC)