Dyalog Modern Programming Language | Morten Kromberg | Talks at Google

แชร์
ฝัง
  • เผยแพร่เมื่อ 12 ก.ค. 2015
  • APL is a member of the family of languages that are approaching middle age (Ken Iverson’s book titled “A Programming Language” was published in 1962). APL was very influential in the 60’s and 70’s, and widely used to deliver “end user computing” - but although the REPL, dynamic scope and lack of a type system endeared APL to domain experts, it also drew fire from computer scientists, most famously when Edsger Dijkstra declared that “APL is a mistake, carried through to perfection. It is the language of the future for the programming techniques of the past it creates a new generation of coding bums.”
    Dyalog is a modern, array-first, multi-paradigm programming language, which supports functional, object-oriented and imperative programming based on an APL language kernel. Dyalog allows people with good ideas - from bright high school students to PhDs - to contribute directly to the software development process using a notation which fits comfortably with those used in their own domains. Subject matter experts can write prototypes or, with suitable training and/or support, highly efficient, parallel and robust code that can be embedded in high-performance production applications.

ความคิดเห็น • 30

  • @user-fp7py7tn1d
    @user-fp7py7tn1d 7 ปีที่แล้ว +20

    Thanks for the video!
    "APL is one of the oldest (in terms of age), and youngest (in terms of concepts), of all programming languages" - KJ

  • @christiangodin5147
    @christiangodin5147 2 ปีที่แล้ว +10

    Good day. I have been using APL as an electronic engineer between 1983 and 2010 via VM on a mainframe (VM APL, APL2 and later IBM APL2 on PCs). With 2 or 3 people, we were able to write very solid business applications for hundred of users in a very short time (mostly weeks instead of months if it had been done by our computer department, by software engineers). Thank you for your beautiful presentation.

    • @esra_erimez
      @esra_erimez ปีที่แล้ว

      They don't make developers like you anymore. My dad talks about his first job programming in C and converting COBOL systems to his company's applications. But, he never worked on a mainframe proper.

  • @jamieg2427
    @jamieg2427 3 ปีที่แล้ว +10

    The rank operator discussed around 41:00 is really wonderful. If you take APL functions and change the their rank using the rank operator, then translate that code into a more common loop-oriented language like Java, C, or Python, the result is a nested array. In other words, rank is one way of doing arbitrary loop structures. Logical functions can then help introduce conditionals that give detailed control over how the data is transformed. It's brilliant.
    I remember when I discovered Haskell and realized Python, C, etc are in one corner, whereas functional languages like Haskell, Lisp, etc are in another. However, next to the APL family, Haskell and Lisp are still quite similar to Python, C, etc.

    • @wliaputs
      @wliaputs 3 ปีที่แล้ว +1

      Holy cow I'm slowly having this experience as well as someone who likes Haskell a lot

    • @tullochgorum6323
      @tullochgorum6323 3 ปีที่แล้ว +2

      @@wliaputs F# guy here. Just working my way into APL and my mind is suitably boggled. F# is so much more concise than Java/C#, and it's another step change when you grok APL. Plus the Dyalog platform is remarkably modern, with gateways to .Net 5 and R, a built-in webserver, GUI & plotting, lots of goodies. It really is a viable platform.
      I know a lady who makes a lot of money doing contract APL work for London banks. I assumed she was working for dusty organisations with dinosaur legacy systems. Turns out that they may be the companies with the smart IT departments...

  • @lsatenstein
    @lsatenstein 8 ปีที่แล้ว +8

    I am an old APLSV programmer. It was very nostalgic to me to review the enhancements to the language since I left APL in 1985. APL left me, as IBM convinced my employer to drop it's use.

    • @Evan490BC
      @Evan490BC 5 ปีที่แล้ว

      @Sergio Díaz Nila I understand what you mean... They tried to sell Smalltalk, as part of VisualAge, which is nice, but I think in the end they settled on C++.

    • @jamieg2427
      @jamieg2427 3 ปีที่แล้ว +1

      Try J! It's wonderful. (:

    • @SimGunther
      @SimGunther 3 ปีที่แล้ว +2

      @@jamieg2427 Thank goodness I'm not the only one who knows of J! Kitten might also be of interest...

    • @jamieg2427
      @jamieg2427 3 ปีที่แล้ว +1

      @@SimGunther Woah, Kitten looks interesting! Thank you! I'm currently exploring Forth, so I'm very interested to find a new concatenative, stack-based language. Thanks again! 😊
      Definitely adding it to the list after I finish going through some Forth books and before I return to J.

  • @youbloom5811
    @youbloom5811 2 ปีที่แล้ว +3

    I m a lover of this language and wanna build my career in this language..I m a software developer

  • @iamjimfan
    @iamjimfan 4 ปีที่แล้ว +5

    1:58 "And I thought... Well (smile)... That's the end of that."
    APL intoxicates me so deeply, I can't see the end of that! :-)

  • @skypickle29
    @skypickle29 4 ปีที่แล้ว +4

    The array first paradigm also reminds me of maxwell’s equations, general relativity equations, quantum mechanical notation, Dirac’s etc.

    • @jamieg2427
      @jamieg2427 3 ปีที่แล้ว

      Maxwell's equations simplify when you use vector notation (arrays of rank 1), but when you generalize them to higher rank arrays, they simplify yet again! (Arrays as APLers use them are essentially the same as tensors, for those who don't know.)

    • @harleyspeedthrust4013
      @harleyspeedthrust4013 2 ปีที่แล้ว

      @@jamieg2427 what is your definition of a tensor? Because I've heard people say that tensors are "basically multidimensional arrays" and then call any multidimensional array a "tensor" but that's wrong

  • @ruffianeo3418
    @ruffianeo3418 3 ปีที่แล้ว +4

    Looks like there is still a main frame remnant in the distribution model of the language (free for non-commercial use). Given the current mind set in software development communities and the abundance of languages you can use for free, this buy-in model might be a show stopper. I am currently into Common Lisp programming, but only because there is SBCL and other freely available implementations. I doubt, I would ever find a use case where it appears beneficial to obtain a commercial implementation.

    • @tullochgorum6323
      @tullochgorum6323 3 ปีที่แล้ว +1

      Really? You could run your bank on a licence for £3 a day per seat. Not crippling, I would suggest... KX have a derivative of APL which is huge in the Fintec world. I think that licences start at around £20k a year. Dyalog seems like a bargain to me...

    • @dialecticalmonist3405
      @dialecticalmonist3405 3 ปีที่แล้ว

      Search for "April APL in Common Lisp"
      Someone integrated APL into Common Lisp. No license.

    • @Russtopia
      @Russtopia 3 ปีที่แล้ว +2

      Look at GNU APL maybe (www.gnu.org/software/apl/). Free implementation that's nearly 100% APL2 compliant, with a few extensions. No support for the point-free ('tacit') extensions Dyalog has added, but it does have good scripting support , GTK bindings (APL GUI programs!), SQL support, and can be built into a library for embedding into other languages.

  • @kpop2gm196
    @kpop2gm196 11 หลายเดือนก่อน

    i can't imagine a bigger like than this Dyalog APL BS - a language with suuuuuuuch ingeniuity it includes BOTH a NAND ***and**** a NOR operator, yet doesn't have one for XOR. If only every other language on the planet share their wisdom, the world would be so much nicer of a place

  • @RogerBarraud
    @RogerBarraud 2 ปีที่แล้ว +1

    Intro slide: Rip off SICP front cover...
    :-/

  • @dancingcactus5271
    @dancingcactus5271 2 ปีที่แล้ว +2

    APL feels like one of the better DSLs (along with SQL and Regex). For some reason, no one ever packed it with another programming language, though!

    • @Daniel_WR_Hart
      @Daniel_WR_Hart หลายเดือนก่อน

      I recently started planning out an APL + JS -> JS compiler using Babel, but for a start I'll probably just implement the few glyphs that I find most useful

  • @skypickle29
    @skypickle29 4 ปีที่แล้ว +1

    How do they use transcendental numbers? Imaginary?

    • @RichardvsHimself
      @RichardvsHimself 3 ปีที่แล้ว

      All computers must approximate transcendental numbers (and many quite normal numbers actually) and Dyalog has a complex type. (|3J4)(×3J4)

    • @Validole
      @Validole 2 ปีที่แล้ว +1

      @@RichardvsHimself well, not exactly. Python has built-in decimal and rational modules that enable precise operations with those, and math-oriented languages like Maple are capable of symbolically evaluating the common trancendentals like pi or e. If you then want to get a number as an answer, you can request that from the symbolic result to whatever precision you require. So really, computers only have to approximate tramscendentals to the same degree humans do, if the rules describing their behaviours are "explained to them" (programmed into the implementation).

  • @JohnDoe-ki6fm
    @JohnDoe-ki6fm 10 หลายเดือนก่อน

    LOL... "?6 -> 4 Here it is again ?6 -> 3. So, any guesses for what this does? (without missing a beat) It generates random numbers."

  • @BryanChance
    @BryanChance ปีที่แล้ว

    OMG..