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

  Рет қаралды 13,113

Strange Loop Conference

Strange Loop Conference

3 жыл бұрын

"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 жыл бұрын
This talk is awesome.
@michaelnardell991
@michaelnardell991 3 жыл бұрын
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 жыл бұрын
Ouch. That was way differen't from any programming language I have seen.
@Evan490BC
@Evan490BC 3 жыл бұрын
@@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)
@nanman_chief
@nanman_chief 3 жыл бұрын
Every thing is a combinator, it's cool but obscure for reading.
@JacksonBenete
@JacksonBenete 2 жыл бұрын
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.
@pmccarthy001
@pmccarthy001 Жыл бұрын
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.
@krystofjakubek9376
@krystofjakubek9376 Жыл бұрын
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 Жыл бұрын
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.
@RSDonovan
@RSDonovan 2 жыл бұрын
Brilliant!
@deusx.machinaanime.3072
@deusx.machinaanime.3072 Жыл бұрын
The J Programming language is one of the best programming language. Well suited for mathematical calculations.
@superscatboy
@superscatboy 3 жыл бұрын
J reminds me of regex - powerful, and nigh on unreadable.
@remyclarke4020
@remyclarke4020 3 жыл бұрын
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 жыл бұрын
I don’t think it’s really unreadable, at least I can read the last example after his explanation
@crides0
@crides0 2 жыл бұрын
I don't know what you are talking about; regexes are very readable
@noomade
@noomade 3 жыл бұрын
Are there any good video lectures for J?
@webgpu
@webgpu 2 жыл бұрын
what have you found so far?
@epsinurwijayadi7332
@epsinurwijayadi7332 3 жыл бұрын
Cool.
"Tulip: A Language for Humans" by Sig Cox, Jeanine Adkisson
43:34
Strange Loop Conference
Рет қаралды 11 М.
"Why Programming Languages Matter" by Andrew Black
56:39
Strange Loop Conference
Рет қаралды 26 М.
Best Toilet Gadgets and #Hacks you must try!!💩💩
00:49
Poly Holy Yow
Рет қаралды 19 МЛН
"Outperforming Imperative with Pure Functional Languages" by Richard Feldman
34:55
Strange Loop Conference
Рет қаралды 87 М.
"The Mess We're In" by Joe Armstrong
45:50
Strange Loop Conference
Рет қаралды 379 М.
Functional vs Array Programming
30:40
code_report
Рет қаралды 130 М.
"From Geometry to Algebra and Back Again: 4000 Years of Papers" by Jack Rusher
31:35
Why Functional Programming Matters • John Hughes • YOW! 2017
58:18
GOTO Conferences
Рет қаралды 8 М.
"We Really Don't Know How to Compute!" - Gerald Sussman (2011)
1:04:19
Strange Loop Conference
Рет қаралды 81 М.
APL vs BQN vs J vs Q vs NumPy vs Julia vs R
42:44
code_report
Рет қаралды 28 М.
"Systems that run forever self-heal and scale" by Joe Armstrong (2013)
1:10:23
Strange Loop Conference
Рет қаралды 73 М.
Dyalog Modern Programming Language | Morten Kromberg | Talks at Google
1:17:23
Does APL Need a Type System? by Aaron W Hsu at #FnConf18
54:31
Сколько реально стоит ПК Величайшего?
0:37
Rate This Smartphone Cooler Set-up ⭐
0:10
Shakeuptech
Рет қаралды 5 МЛН
iPhone socket cleaning #Fixit
0:30
Tamar DB (mt)
Рет қаралды 17 МЛН