Recently, I've decided it would be a useful and interesting skill to be able to program LaTeX classes, macros etc, and so had a look around about what resources existed (this question was very helpful). However on the way, I was reminded about the ongoing LaTeX3 project, and ended up looking into this, thus leading to my discovery of
expl3, which as far as I can tell is going to form the 'programming layer' of LaTeX3 when it is released.
This then raised the question: is it worth trying to come to grips with the mishmash of languages and commands which constitute the current LaTeX source/package/class etc coding, and thus have the advantage of working with something fundamentally designed around LaTeX2e, with which I imagine I'll remain working for the time being, or should I just focus my efforts on learning
The latter seems to me to be the better option, given that in the future (we hope) it is going to be the only language of which knowledge is required or indeed useful; as well as this it certainly seems easier to learn just
expl3 than to try and come to grips with the multiple facets of LaTeX2e programming which currently exist (as laid out well here).
My sole hesitation then (asides from the daunting task of learning the thing - I am finding comprehensive documentation hard to come by, however I am aware this is something the LaTeX3 project is aiming to solve, so am hopeful for the future), is that when using my knowledge in LaTeX2e-based documents, I may find myself limited in that I am using a language which is not 'fundamental' to the system. I know
expl3 currently exists as a package, which is how I would implement my knowledge (if needed), but I was wondering (perhaps this should be split into a separate question?) whether there is anything coding-wise (or anything else for that matter) which I might wish to do in LaTeX (coding a document class to creating a fancy macro) for which
expl3 would be insufficient or too unwieldy to realistically be implementable?
On a side note, would people recommend familiarity with other (better-documented) programming languages before attempting to learn either
expl3 or the alternative? I worry that I am throwing myself somewhat in the deep end here, as whilst my knowledge of LateX is decent, I have encountered little programming so far in my digital life.
I know there are about three different questions in one here, and if they should be split up I am more than willing to edit them out and repost elsewhere.
As always, any help at all is appreciated greatly :)