YouIn Linux, UNIX and related operating systems, . denotes the current directory. Since you want to run a file in your current directory and that directory is not in your $PATH, you need the ./ bit to tell the shell where the executable is. So, since./foo means run the current directory is unlikely to be inexecutable called $PATHfoo that is in this directory.
You can use type or which to get the full path to "otherof any commands found in your $PATH."