Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> As for the beginner's book, I've come to the general feeling right now that a online video course will be a better fit for APL beginners than a textbook.

Other than generating emotional responses, I don't find video better than text at anything, and most especially not technical education.



Thanks for the thoughts. While I am sympathetic to your position (and I don't necessarily disagree), I'm not sure that the education problem with APL is strictly technical in nature. Nor am I convinced that what needs to be learned in order to use APL is strictly technical in nature.

Part of this is a question of what the stamina level is for the current computing student. With a lot of technical documentation that people are learning, they're essentially consuming either thorough reference materials or walkthrough/how-to materials.

We can characterize both of these materials as efficiently transferring a certain sort of information about how to do things by virtue of a very wide base of shared prior knowledge. This is what allows reference materials and walkthroughs to work.

But this shared base of knowledge does not exist for most people learning about APL. Target audiences include non-computing students who are just learning computing, programmers who want to learn APL, and technical professionals who have little or limited prior computer science knowledge (but perhaps cursory programming knowledge) who need to learn APL to accomplish the work they want to do in their domain. In the cases of the technical professional and the uneducated student, reference materials and most tutorial books are wholly inadequate.

For the programmer, these tutorials and references work because most of the time you are adding to your existing knowledge as a programmer and have already trained numerous soft skills that enable you to navigate the sea of potential directions to integrate the new knowledge.

I worked on my thesis to try to make it as accessible to the general programming community as possible to teach a set of algorithmic concepts that most programmers already have a vague notion about (but almost never use), namely, SIMD/data parallel programming, using an extremely simple and easy to explain syntax and vocabulary (APL). My thesis is already pretty detailed and illustrative, with worked examples for every single programming statement in the entire compiler going over examples and prose detailing everything that is going on, a sufficient background introduction not only to the syntax and semantics of APL, but also the design and stylistic questions, reference material, and the architectural education necessary to understand the structure of the compiler as a whole.

Even with all of this, presented to experts in the C.S. fields of PL and parallel computation, who have seen this material multiple times over, there was a general feeling that my thesis could have benefited from even more exposition.

My thesis is around 70,000+ words and around 250+ double-spaced pages. For 17 lines of APL code. People wanted more. Had I added the additional exposition desired, I imagine the thesis easily could have been 80 - 100k words.

A typical short novel is around the same size, and those often take about 8 - 12 hours to read through aloud. If you give me around that amount of time in classroom time, I could easily have almost any programmer fully understanding my compiler within that time, and probably with more thoroughness than if someone were to take the same amount of time to read the thesis.

There is something about the higher bandwidth and richness of full video content that contributes better to the transmission of data in some ways, particularly to the understanding of certain ideas and concepts.

I began to think about what it would take to put together an introduction to APL as a textbook. These have been done before and are out there, and they would generally work, but I'm not convinced anyone would read them.

You can teach APL the language to a sufficient level in a very short document (maybe a few pages) and in maybe 2 hours of classroom time. It's relatively trivial to teach the language, as it's very, very easy to understand the semantics and syntax. There's even a walkthrough of APL at http://tutorial.dyalog.com already.

The challenge comes in its application, and that's where the real value of a good education rests. But that part of the education is a lot harder to teach in text, because there is an element of style, aesthetic, and practice that goes into it. It's something that you gain by seeing, watching, and doing. You have to bring your mind into the space and struggle, go in and out of exploration mode and absorption mode.

How do you teach the exploratory process of APL? The design aesthetic? The set of idiomatic patterns? How do you get people to intern those concepts into their practice so that they are productive?

You could write a textbook to do this, no doubt. But thinking about it, I think such a textbook would be very large. It would be not very "exciting" emotionally. It would have very little of the emotional hooks that help a person stay engaged in things. And moreover, it would be extremely intimidating.

How many people effectively learn without any teacher in a totally "new" field from a textbook that is devoid of any human feedback? You can do it. I've done it before. But it's infinitely improved by the introduction of someone who can help to inject energy and dynamism into the space.

I just don't think people will want to pick up a 400 page "introductory" book and then have the motivation to stick with it when there are so many other shiny things in this world today. The truth is that the world is filled with distracted people who are very bad about putting the time into learning things. I want APL education to be engaging, accessible, and satisfying, to say nothing of effective. For most people today, a textbook is unlikely to be that.

Another big challenge with the "experienced programmer" target audience is that they are used to reference and tutorial materials. Very few programmers actually sit down and read such materials. They skim them to find what they think they want to know, and then plug that into their existing framework. That's great for efficiently extracting new information that is similar enough to their old practices to work. If something breaks, they can just go back and do a little extra skimming to clarify. That doesn't work really well when what you need to learn is fundamentally conflicting with or altering how you think about problems.

Getting good with APL at the beginning, before you've learned to intern it, is about undoing or unwinding previous habits and thought patterns that worked for you in past programming experiences, but that won't work for you in APL. After you have interned the new methods, then you can switch back and forth at your leisure, but until then, learning APL is as much about unlearning as it is about adding new knowledge. For programmers who are used to just skimming what they read to get what they want to know without actually listening to what the author is saying (and that is how most programmers read that I've met), this makes textbooks a recipe for disaster. Either the information has to be presented in such a dense way that most people will not be able to figure it out, or it has to be presented in such a measured, hand-holding way that most people will just ignore it, get bored with it, or skim it and still have the issues.

It does little good to have a full, thorough textbook introducing everything if no one reads it, though they think they've read it, and then they complain about how hard APL is to learn because they couldn't just take what they thought they wanted to know and leave the rest.

If you could get a programmer who was motivated, eager, and willing to read from cover to cover, stopping at each point where a hard question is asked, do the problems, quizzes, challenges, and exercises, in order, linearly, from start to finish, and actually pay attention to what was said when, and then take the points in the book that indicate one should think about this or that, I would agree with you that a textbook could have some potential benefits over the video format; but, I don't think that this is reality, based on my experience.

Your typical APL workshop for technical professionals is 4 days about about 24 hours of work with probably around 12 of those hours being expository. After that, people are quite solidly grounded in APL. But a lot of people have gone through that same amount of time on their own with plenty of the same resources available to them in terms of problems, documentation, and the like, and they haven't been as successful. Guided, in-person education is hard to beat, and video is the closest thing online.

I haven't given up on the hope of a great APL book, and I could be convinced by someone that I should do a book first, but at the moment, I feel that video courses are more likely to be more effective for more people and present a larger ROI in terms of the difficulty in producing and creating them compared to a book of similar effectiveness for the same range of people. If anyone has an alternative, please do speak up, I'm all ears.


An interesting perspective. I personally didn't enjoy lectures in college when it came to technical classes (engineering, math, physics) as I had trouble keeping up. Videos help solve that though as you can go at your own pace...pause and rewind. I'm sure it will be a lot faster and reach more people faster with videos. There are so few in the APL/J world. The few ones that exist are very popular though.


Rest assured that I haven't given up on the textbook / tutorial approach just yet, but I might have to "invent" my own publication technology to get the "book" that I want.


Would it be hard to just create a Dyalog-APL notebook (I recall Dyalog added support for that recently) and export as PDF?

I find Jupyter notebooks in Python and Wolfram's Mathematica to be nearly perfect for explaining complicated content where you can easily format text, images, and inline code snippets.


I have started something along these lines.

github.com/rikedyp/learnapl

It is currently very rough around the eges and also in the middle. Work will continue in the new year.

There is also now a set of introductory problem sets that have been used in a couple of schools on problems.tryapl.org




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: