"The J Programming Language" by Tracy Harms (2013)

แชร์
ฝัง
  • เผยแพร่เมื่อ 26 ก.พ. 2021
  • "A language that doesn't affect the way you think about programming is not worth knowing." - Alan Perlis
    J has been an "emerging language" for 23 years. It's strange in appearance, and requires a style of thinking that feels awkward for a while. Learning is worth the effort, though, because with J, the way you look at a problem is often radically different.
    Like APL, its predecessor, J sees everything as an array. Computations are expressed as pipelines among functions that apply on the appropriate axis of each array. With some practice, a J programmer learns to fold, flip and manipulate arrays in her mind. The experience is mind-blowing, and the resulting solutions become sleek and simple.
    Diverging from its APL roots, J introduces "tacit form" (where arguments are implied.) This concept is fundamental to the definition of J programs. For example, inherent in J's syntax is the "verb train", a kind of branching composition. This lets you naturally express programs as relations among functions.
    J embodies a peculiar mixture of mathematical purity and industrial practicality. If you're excited by combinatorial, concatenative, point-free, or functional programming techniques in general, J will inspire you and give you new ways of seeing problems. If you're looking for a mature scripting language with a stable implementation, you'll find J to be a pleasantly functional workhorse.
    In this talk, I will introduce you to patterns of thinking that make J coding possible, and provide a rich introduction to the language. You will come away with a clearer understanding of the concepts that are crucial to confident reading and writing of J notation. While no previous knowledge of J will be assumed, people with some previous exposure will get the most benefit.
    Tracy Harms
    Applied Performance Technologies
    @kaleidic
    Tracy Harms has worked in software development on and off since 1978. He presently helps create test automation for a major scientific document search service.
    Recorded at the Emerging Languages Camp at Strange Loop (thestrangeloop.com) in St. Louis, MO, Sep 2013.
  • วิทยาศาสตร์และเทคโนโลยี

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

  • @code_report
    @code_report 3 ปีที่แล้ว +52

    This talk is awesome.

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

    I will continue to learn form the J programming language. This talk will be one I go back to for insight into this demanding and powerful language.

  • @lubricustheslippery5028
    @lubricustheslippery5028 3 ปีที่แล้ว +14

    Ouch. That was way differen't from any programming language I have seen.

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

      @@aoeu256 That's a good point, in the sense that J and APL are essentially dataflow languages. I'm not so sure about Forth.

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

      @@Evan490BC forth : the only rpn language (old HP calcs are rpn as well)

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

    One thing I still dont understand about array programming is its fascination with brevity. Why is it so important not to have any parenthesis so that function application would be obvious? Why not give the monadic/diadic functions different names in the case when they are not related? Why not allow higher arity than 3? The answers to any of these are never given and so to me it seems like a language for certain kind of people that just happen to see these particular choices beautiful and fun to play with while the rest of us is just confused.

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

      Thing is, you totally can make your functions explicit with human readable names by making your own verbs (pure functions with 1 or more params). I suspect the obsession with brevity was due to the extreme limits of 1950s/60s-era computers-programs consume memory, and shorter programs consume less memory. J is actually shorthand for the more verbose machine code it compiles into! It also makes it easy to express computational ideas on a chalkboard. While brevity might seem unnecessary today, it has been said brevity is the soul of wit, and knowing a quick and powerful language like J will only improve your overall skills.

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

    Is Tracy still working with J? One thing I can identify with here is that J, like all the APL dialects, are very powerful, but difficult languages to learn, never mind master... especially for someone who's not a career programmer, but rather just an amateur. I get the impression from one of Tracy's later talks that perhaps he may have come to the conclusion that J, like all the APL dialects, is too different from most other programming languages and has a very steep learning curve. I got the impression that he might have become frustrated with convincing people to give a J a try. On the other hand, regardless of popularity, J, and the other APL dialects, are so different... and that's one thing that makes them so interesting, and gives them a special place amongst programmng languages because of, if nothing else, their very uniqueness.

  • @user-sr1sj8hk3m
    @user-sr1sj8hk3m 3 ปีที่แล้ว +5

    Every thing is a combinator, it's cool but obscure for reading.

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

      I think that APL notation is better than ASCII versions/adaptations.
      At first I had a lot of resistance, but after reading Iverson's paper and thinking a little bit about it, I came to realize the power.
      A notation is useful to reason about problems, think about organic chemistry, wave functions, integrals... First time I saw Calculus notation I was deeply confused and... overwhelmed for not saying scared.
      After learning the notation (and the concepts), you can just reason about problems using this new tool you have just learned.
      APL notation is just like that, it gives you a tool for creating new mental models for solving problems.
      I don't like J, K and others ASCII "notation", at first I thought it would be easier, but there is something about the original APL notation that makes it easier to think about it, and read it, that ASCII characters don't have.
      The learning curve is real though, you need to drop one hour or two to learn just a few symbols/algorithms, and you'll have to keep studying APL to increase your "vocabulary".
      Fair enough, with only a few symbols (10 or 20), you already can solve problems. Some of those symbols you already know, as the mathematical symbols and logical operators are the same.

  • @deusx.machinaanime.3072
    @deusx.machinaanime.3072 ปีที่แล้ว +1

    The J Programming language is one of the best programming language. Well suited for mathematical calculations.

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

    Brilliant!

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

    Are there any good video lectures for J?

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

      what have you found so far?

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

    J reminds me of regex - powerful, and nigh on unreadable.

    • @remyclarke4020
      @remyclarke4020 3 ปีที่แล้ว +9

      The thing with J and similar languages is that the language primitives amount to a robust library in another language.
      It's actually very fun to use. Not very manager friendly though.

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

      I don’t think it’s really unreadable, at least I can read the last example after his explanation

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

      I don't know what you are talking about; regexes are very readable

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

    Cool.