Subject: Re: Difference between LISP and C++
From: Erik Naggum <erik@naggum.no>
Date: 10 Oct 2002 23:48:28 +0000
Newsgroups: comp.lang.lisp
Message-ID: <3243282508384681@naggum.no>

* arien <spammers_suck@getlost.invalid>
| What I still find hard to grasp, is normally when you distribute a
| program, you distribute the executables.

  But executables do not live in a void.  You cannot get an executable that
  runs under Windows and Linux despite running on the same hardware once
  booted with the appropriate system, or on the Wintendo platform and on
  the Solaris platform despite being written in languages available on
  both.  There is a persistent myth about "standalone" executables that is
  fairly strongly counter-indicated by incompatible operating systems, and
  in the C++ world, you even need the exact same compiler to make things
  work with distributed shared libraries.  (One version of the semipopular
  DeadRat Linux distribution actually used a very particular version of gcc
  that did funny things so that you could not compile C++ programs on other
  Linux systems and have them run on DeadRat systems.)  So you cannot just
  distribute executables.  It is a myth.  Better shed it now or hurt later.

| So how would you distribute a program created in Lisp?

  You distribute something that will run in the environment your users have
  already installed, possibly mere minutes prior to installing your program
  in whatever form they may take.  This is really a non-issue.  If you ask
  whether a Common Lisp program can run on the bare metal, the answer is
  No.  If you ask whether it can run with only "standard" libraries, you
  have to compare that with other languages, and you will find that Common
  Lisp is no different from any other language in this regard: No.  To be
  able to run with only operating-system-supplied shared libraries, your
  program really has to be part of that operating system.  Some Unix and
  Windows programs have that function.  It is not common to write "hello,
  world" programs in Common Lisp like it is in C/C++ and Common Lisp
  environments are therefore not optimized very heavily for this task.

| Also, as I asked in another post above, can lisp create a UI?

  Well, we have not quite developed our artificial intelligence systems
  that far, yet.  You still need a programmer to create a user interface.
  If the Common Lisp programmer is well versed in user interfaces, then he
  would use Common Lisp to create the user interface, too.  Please note
  that several of the Common Lisp environments include interface builders
  that alleviate some of the tedium of writing user interfaces.  Those who
  like that kind of thing will find them the kind of thing they like.

| Or would you use something like C++ for the UI, and then that runs the
| lisp code?

  Java has positioned itself as very useful tool in this regard.  People
  have also found HTML and web pages to be a convenient vehicle.

| Lastly, I show some sample lisp code, that I had written, to a friend and
| he responded that it looked like a Low Level Lanuage.  Could someone tell
| me 1) if this is true, and 2) The difference between High Level and Low
| Level languages?

  I think you should ask yourself why you trust your friend's opinion and
  ask him what he means by it.  You could, for instance, have written very
  low-level code and your friend may have been polite about who is to blame
  for that.  Some people here think that being polite is all the rage, but
  I am not generally of that opinion as it tends to make people believe
  they have not made serious mistakes even when the intended message is
  that they have.

-- 
Erik Naggum, Oslo, Norway

Act from reason, and failure makes you rethink and study harder.
Act from faith, and failure makes you blame someone and push harder.