A hard link can be thought of as a shared-ownership smart
pointer to a file.
A symbolic link is
a type of file with the
property that when the file is encountered during pathname resolution ([fs.class.path]), a string
stored by the file is used to modify the pathname resolution.