>>11
Scheme is practical because it's a Lisp. Ever since the beginning of Lisp, Lisp programmers have been using Lisp to create domain specific languages by extending the fundamental Lisp implementation. With this kind of power, it was always "trivial" for a single Lisp programmer achieve what a team of programmers (in other languages) would achieve when they wrote a library of functions. In this sense, many Lisp programmers don't feel the need aggrandize their DSL into a public library project and so their DSL remains special and unknown to anybody. I can agree that (Scheme) Lisp code is often "non-portable" because of a mismatch of semantics between implementations. That's an implementation detail that can affect all languages, it is not unique to Scheme (Lisp). I really don't understand the reason why programmers would want to change Scheme implementations when their current one is working as needed. However if it was needed, I'd encourage the programmer to port one Lisp dialect into another dialect because it shouldn't take long to translate the mismatching semantics.
Whatever feature Python and Java has today, it is trivial for Scheme (Lisp) to match it. It's not Scheme's problem that programmers don't care. I'm perfectly happy that Scheme retains its "obscure" state, the important matter for me is that the language retains its mission to be a straightforward and practical language that it has always been from the beginning.