I did a short foray into learning Morse Code, and I ran into what I found to be the biggest barrier to learning new languages. The bloody lookup table phenomena.
What happens is your mental representation maps the Morse sequence->your primary language character->whatever the message then actually means.
This is a very high overhead mental process, and one specifically advised against by fluent Morse keyers. What you want is to map the Morse pattern->it's representative concept.
Example:
First mental impl would look like ... -> S --- -> O ... -> S Then you mentally reparse that string to get semantic meaning.
Trying to do this for more complex messages blows. Case and point.
..-. --- .-. ....... ... .- .-.. . .-.-.- ....... -... .- -... -.-- ....... -... --- --- - .. . ... .-.-.- ....... -. . ...- . .-. ....... .-- --- .-. -. .-.-.-
Imagine that coming over a line at about 13 to 25 wpm.
You don't have time to decode and reparse. You need realtime streaming and recognition of word units->meaning. No decode phase, just "oh, that's 'blah'"
Same thing applies with other languages. Language is used to nominatively stand in for forms of life. N'est ce pas? In any other language is still indicative of the same form of life/confluence of characteristics, 'is it not?'
It's seems easier when you're younger because you aren't fighting the lookup table phenomena because you're still learning your primary language.
It's why when learning a new programming language, an escalating series of higher complexity Hello World's you've implemented in other languages can be a godsend in getting up to speed.