PHP7 + JavaScript, 62 61 58 bajtów
To było naprawdę trudniejsze niż się spodziewałem! Jestem dość zaskoczony, jak długi jest mój kod.
eval(['alert((_=prompt())*_)','echo$argv[1]**.5'][+![]]);
Jak to działa?
Działa to poprzez wybranie z tablicy kodu do uruchomienia.
Wykrywanie PHP i JavaScript odbywa się za pomocą +![].
W PHP [](pusta tablica) jest wartością fałszywą, podczas gdy w JavaScript jest wartością prawdziwą (obiekty (oprócz null) są zawsze prawdziwe, a nawet new Boolean(false)prawdziwe!).
Ale muszę uzyskać wartość liczbową, więc po prostu używam not( !) i przekonwertowałem ją na liczbę całkowitą (z +).
Teraz PHP daje wartość 1, podczas gdy JavaScript daje 0.
Umieszczenie kodu w tablicy, przy tych indeksach, pozwoli nam wybrać odpowiedni kod dla pożądanego języka.
Można tego użyć jako [JS,PHP][+![]], aby uzyskać kod odpowiedniego języka.
W poprzednich poliglotach użyłem '\0'=="\0", który jest truew JavaScript (ponieważ \0jest analizowany jako bajt NULL) i falsew PHP ( '\0'nie będzie analizowany jako bajt NULL, porównując literał ciąg \0z bajtem NULL).
Cieszę się, że udało mi się zredukować tę kontrolę do +!'0'.
Jeszcze bardziej cieszę się z @rckd , który zredukował go do obecnej wersji!
Od tego momentu evaljest to po prostu wymagany kod.
PHP
PHP wykona echo$argv[1]**.5(ekwiwalent echo sqrt($argv[1]);, pierwiastek kwadratowy z liczby), otrzymując wartość z drugiego argumentu i wyświetli ją na standardowym wyjściu.
JavaScript
Wykonuje się JavaScript alert((_=prompt())*_), który wyświetla kwadrat w liczbie alert.
Dziękujemy @rckd za zapisanie 1 bajtu i @ user59178 za zapisanie 3 bajtów!