PHP7 + JavaScript, 62 61 58 bytes
¡Esto fue en realidad más desafiante de lo que esperaba! Estoy bastante sorprendido de cuánto dura mi código.
eval(['alert((_=prompt())*_)','echo$argv[1]**.5'][+![]]);
¿Como funciona?
Esto funciona seleccionando el código a ejecutar, desde la matriz.
La detección de PHP y JavaScript se realiza con +![].
En PHP, [](matriz vacía) es un valor falso, mientras que en JavaScript es un valor verdadero (los objetos (excepto null) siempre son verdaderos, ¡incluso new Boolean(false)son verdaderos!).
Pero, necesito obtener un valor numérico, así que solo uso a not( !) y lo convierto a entero (con el +).
Ahora, PHP produce el valor 1, mientras que JavaScript produce 0.
Colocar el código dentro de una matriz, en esos índices, nos permitirá seleccionar el código correcto para el idioma deseado.
Esto se puede usar como [JS,PHP][+![]], para obtener el código del idioma correcto.
En políglotas anteriores, he usado '\0'=="\0", que está trueen JavaScript (ya que \0se analiza como el byte NULL) y falseen PHP ( '\0'no se analizará como el byte NULL, comparando la cadena literal \0con el byte NULL).
Estoy feliz de haber logrado reducir este cheque a +!'0'.
¡Estoy aún más feliz con @rckd , que lo redujo a la versión actual!
A partir de ahí, simplemente evales el código requerido.
PHP
PHP se ejecutará echo$argv[1]**.5(equivalente a echo sqrt($argv[1]);la raíz cuadrada del número), recibirá el valor del segundo argumento y lo mostrará en la salida estándar.
JavaScript
Se ejecuta JavaScript alert((_=prompt())*_), que muestra el número al cuadrado en un alert.
¡Gracias a @rckd por guardar 1 byte y a @ user59178 por guardar 3 bytes!