PHP7 + JavaScript, 62 61 58 byte
Questo è stato in realtà più impegnativo di quanto mi aspettassi! Sono abbastanza sorpreso di quanto sia lungo il mio codice.
eval(['alert((_=prompt())*_)','echo$argv[1]**.5'][+![]]);
Come funziona?
Funziona selezionando il codice da eseguire, dall'array.
Il rilevamento di PHP e JavaScript viene effettuato con +![].
In PHP, [](array vuoto) è un valore di falsità, mentre in JavaScript è un valore di verità (gli oggetti (tranne null) sono sempre veri, persino new Boolean(false)è vero!).
Ma devo ottenerlo in un valore numerico, quindi uso solo un not( !) e lo converto in intero (con il +).
Ora, PHP produce il valore 1, mentre JavaScript produce 0.
Posizionare il codice all'interno di un array, in quegli indici, ci permetterà di selezionare il codice giusto per la lingua desiderata.
Questo può essere usato come [JS,PHP][+![]], per ottenere il codice della lingua giusta.
Sui precedenti poliglotti, ho usato '\0'=="\0", che è truein JavaScript (poiché \0viene analizzato come byte NULL) e falsein PHP ( '\0'non verrà analizzato come byte NULL, confrontando la stringa letterale \0con il byte NULL).
Sono felice di essere riuscito a ridurre questo controllo a +!'0'.
Sono ancora più felice di @rckd , che lo ha ridotto alla versione attuale!
Da lì in poi, è semplicemente evalil codice richiesto.
PHP
PHP eseguirà echo$argv[1]**.5(equivalente a echo sqrt($argv[1]);, radice quadrata il numero), ricevendo il valore dal secondo argomento e lo visualizza nell'output standard.
JavaScript
Viene eseguito JavaScript alert((_=prompt())*_), che visualizza il numero al quadrato in un alert.
Grazie a @rckd per aver salvato 1 byte e @ user59178 per aver salvato 3 byte!