#!/usr/bin/env bash

#Author: knorby (Email - NAME: knorby ADDY: uchicago.edu)
#Remember that horrible song "We are the world!"? Think of this script as
#being like that song, except with programming languages
#Says all the languages of the...er this computer
#Under a new BSD license, if it really even matters at all

#==============================================================================
echo "Bash:"
bash <<EOF
echo "Hello World!"
EOF
#==============================================================================
echo "Python:"
python <<EOF
print "Hello World!"
EOF
#==============================================================================
echo "C:"
TMPFILE="/tmp/stupidgcc.c"
TMPOUTPUT="/tmp/stupidgcc"
touch $TMPFILE
cat > $TMPFILE <<EOF
#include <stdio.h>
    
int main(){
    printf("Hello World!\n");
    return 0;
};
EOF
gcc -o $TMPOUTPUT $TMPFILE
$TMPOUTPUT
rm $TMPFILE $TMPOUTPUT
#==============================================================================
echo "Ruby:"
ruby <<EOF
puts "Hello World!\n"
EOF
#==============================================================================
echo "Perl:"
perl <<EOF
print "Hello World!\n"
EOF
#==============================================================================
echo "C++:"
TMPFILE="/tmp/stupidg++.cpp"
TMPOUTPUT="/tmp/stupidg++"
touch $TMPFILE
cat > $TMPFILE <<EOF

#include <iostream>
using namespace std;
int main()
{
    cout << "Hello World!" << endl;
    return 0;
}
EOF
g++ -o $TMPOUTPUT $TMPFILE
$TMPOUTPUT
rm $TMPFILE $TMPOUTPUT
#==============================================================================
echo "Haskell:"
ghci -e 'print "Hello World!"'
#==============================================================================
echo "Awk:"
echo '' |awk '{ print "Hello World!" }'
#==============================================================================
echo "Fortran77:"
TMPFILE="/tmp/stupidFortran.f"
TMPOUTPUT="/tmp/stupidFortran"
touch $TMPFILE
#http://www.roesler-ac.de/wolfram/hello.htm#Fortran77
cat > $TMPFILE <<EOF
C     Hello World in Fortran 77

      PROGRAM HELLO
      PRINT*, 'Hello World!'
      END
EOF
f77 -o $TMPOUTPUT $TMPFILE
$TMPOUTPUT
rm $TMPFILE $TMPOUTPUT
#==============================================================================
echo "Tcl:"
tclsh <<EOF
puts "Hello World!"
EOF
#==============================================================================
echo "Octave:"
octave -q <<EOF
printf("Hello World!\n");
EOF



