Output a program that outputs a program ... that outputs PPCG
12 languages, 64 bytes
Charcoal -&gt; tinylisp -&gt; Python 3 -&gt; /// -&gt; Python 2 -&gt; Perl -&gt; QBasic -&gt; Pip -&gt; V -&gt; Retina -&gt; Pyth -&gt; GolfScript
Charcoal
Ｐ(q(print('/x/print/x&quot;&quot;&quot;x q&lt;?&quot;`i.*&quot;:?CHR$(34)+&quot;\'PPCG\'`&quot;&gt;&quot;&quot;&quot;'*1

Any run of printable ASCII is a string literal in Charcoal. Ｐ can be used for multidirectional printing, but in this case it simply prints the string going rightward.
tinylisp
(q(print('/x/print/x&quot;&quot;&quot;x q&lt;?&quot;`i.*&quot;:?CHR$(34)+&quot;\'PPCG\'`&quot;&gt;&quot;&quot;&quot;'*1

The only reserved characters in tinylisp (as of this writing) are parentheses and whitespace. Any other run of characters is a token, even something like +&quot;\'PPCG\'`&quot;&gt;&quot;&quot;&quot;'*1. Parentheses define lists. The q (quote) builtin returns its argument unevaluated--in this case, the nested list (print ('/x/print/x&quot;&quot;&quot;x q&lt;?&quot;`i.*&quot;:?CHR$ (34) +&quot;\'PPCG\'`&quot;&gt;&quot;&quot;&quot;'*1)). (Missing parentheses at the end are autocompleted.)
Python 3
(print ('/x/print/x&quot;&quot;&quot;x q&lt;?&quot;`i.*&quot;:?CHR$ (34) +&quot;\'PPCG\'`&quot;&gt;&quot;&quot;&quot;'*1))

Since print is a function in Python 3, we can wrap it in parentheses with no problem. In Python 2, where it's a statement, this is a syntax error. Unfortunately, Perl is fine with the parentheses, so we also do *1 (string repetition in Python, cast to int and multiply in Perl).
///
/x/print/x&quot;&quot;&quot;x q&lt;?&quot;`i.*&quot;:?CHR$ (34) +&quot;'PPCG'`&quot;&gt;&quot;&quot;&quot;

/x/print/ changes x to print in the rest of the program, which has no slashes and therefore is output with no further changes.
Python 2
print&quot;&quot;&quot;print q&lt;?&quot;`i.*&quot;:?CHR$ (34) +&quot;'PPCG'`&quot;&gt;&quot;&quot;&quot;

No parentheses after print, doesn't work in Python 3. Perl doesn't like the triple quotes.
Perl
print q&lt;?&quot;`i.*&quot;:?CHR$ (34) +&quot;'PPCG'`&quot;&gt;

Perl's various ways of quoting a string are helpful, and distinct from other languages. Here we use q&lt;...&gt;.
QBasic
?&quot;`i.*&quot;:?CHR$ (34) +&quot;'PPCG'`&quot;

A couple of print statements (abbreviated as ?), using CHR$(34) to get a double quote.
Pip
`i.*
&quot;'PPCG'`

A single Pattern (regex) literal in backticks.
V
i.*
&quot;'PPCG'

Switch to insert mode, add some text.
Retina
.*
&quot;'PPCG'

Match anything and replace it with the second line.
Pyth
&quot;'PPCG'

Pyth quotes don't need to be matched (which makes this not a valid program in Pip).
GolfScript
'PPCG'