gusl: (Default)
[personal profile] gusl
General intelligence means being able to transfer skills and knowledge to similar or analogous tasks ("transfer", when used as a noun, is a measure of success for education). In some cases, it means being able to deal with context.

Lisp is wonderful. My programs can't program themselves yet, but we're getting there...

Agents with high "general intelligence" can do the "meta-level transition" and start programming what's on their mind. My ideas are still vague.

What is it that I have that my programs don't when I read a specification and start implementing it? If we translated "easy" programming puzzles into a formal language, would current AIs tackle them successfully? If not, why not?

(no subject)

Date: 2005-05-12 07:59 am (UTC)
From: [identity profile] jbouwens.livejournal.com
Lisp is wonderful

I can't believe you actually said that :).

(no subject)

Date: 2005-05-12 08:05 am (UTC)
From: [identity profile] fub.livejournal.com
The real work of the software engineer is not in typing in the actual code -- that's the easy part. The real work is done in two steps: first you have to transform the (often nebulous, especially when doing commercial work) specifications into an algorithm.
Then you have to implement the algorithm in such a way that, when the inevitable modifications to the specs come in, those modifications can be implemented in the current code without too much rewriting.

If you transscript the specifications into a formal system, you're doing the first step. Having software take care of the second step might actually save time, because if changes to the specs come in, you 'just' modify the formal specs and let the software implement it as if it's a new system. It would free up lots of time that is now spent 'refactoring' or modifying code, or even carefully designing your program.
On the other hand, I'm pretty sure that expressing the specs in a formal system takes at least as much time as programming it all out.

(no subject)

Date: 2005-05-12 08:12 am (UTC)
From: [identity profile] jbouwens.livejournal.com
What is it that I have that my programs don't when I read a specification and start implementing it? If we translated "easy" programming puzzles into a formal language, would current AIs tackle them successfully? If not, why not?

In my view programming IS translating an informal specification into a formal one. As soon as you move from the informal into the formal world, the remainder of the task can be automated.

(no subject)

Date: 2005-05-12 08:41 am (UTC)
From: [identity profile] gustavolacerda.livejournal.com
why not?

I don't know any other languages where you can straightforwardly implement a function like make-deriv.

(make-deriv `(subs ,*f1* ,*f2*))

will call SUBS with arguments *f1* and *f2* and then use the call itself as a label for what it did... that way, the result of MAKE-DERIV tells you exactly how it was called, so that you can reproduce it later.

(no subject)

Date: 2005-05-12 11:46 am (UTC)
From: [identity profile] gustavolacerda.livejournal.com
As soon as you move from the informal into the formal world, the remainder of the task can be automated.

If that were the case, every decent programmer would get the maximal score in many programming contest questions. Formalizing the specification is often very straightforward, and a trivial part of the assignment.

(no subject)

Date: 2005-05-12 11:48 am (UTC)
From: [identity profile] gustavolacerda.livejournal.com
(often nebulous, especially when doing commercial work) specifications into an algorithm.

I'm interested in programming contest questions.


On the other hand, I'm pretty sure that expressing the specs in a formal system takes at least as much time as programming it all out.

I would say this really depends on what kind of program you're trying to make.

(no subject)

Date: 2005-05-12 01:47 pm (UTC)
From: [identity profile] jbouwens.livejournal.com
That's a nice feature, but it doesn't necessarily make for readable code, nor does it make LISP a language suitable for large projects.

Modern languages are not about the neatest syntax or cool features, but about making code maintainable, separating responsibilities and reusing components.

I'm making extensive use of SKILL, a proprietary derivative of LISP, and even the relatively modest amount of code we have is pushing the limits of the language.

(no subject)

Date: 2005-05-12 01:54 pm (UTC)
From: [identity profile] jbouwens.livejournal.com
Formal specifications are completely impractical for all but the smallest of programs.

And yes, if you would make a formal specification of an "easy" programming puzzle, I think it would be _possible_ to automatically translate this into an implementation, even without AI. This doesn't mean it would be an efficient implementation, only that it would work.

Just out of curiousity, can you give an example of a formal specification for some small, easy problem?

(no subject)

Date: 2005-05-12 03:04 pm (UTC)
From: [identity profile] fub.livejournal.com
I'm interested in programming contest questions.
OK, that means that you have a lot less considerations that you would have if you were making commercial systems. No nebulous specifications, a one-off end-product and no changes afterwards -- so a lot of the reasons for 'neat' programming are gone.
It is ironic that programming contests test exactly the skills you don't need in 'regular' (commercial, or at least maintainable) programming.

I would say this really depends on what kind of program you're trying to make.
True. And it also depends a lot on your formal specification language. It should be rich enough to express every possible programming contest task -- designing such a language might be quite the task (though I have to admit I am not up to par where formal languages are concerned).

(no subject)

Date: 2005-05-12 04:31 pm (UTC)
From: [identity profile] gustavolacerda.livejournal.com
Whenever Lisp is not readable (due to the code being too general), you can always expand or eval a bit.


Modern languages are not about the neatest syntax or cool features, but about making code maintainable, separating responsibilities and reusing components.

Lisp is the best language I've ever seen for code reuse. I don't see any issues with maintainability that other languages don't have.


I'm making extensive use of SKILL, a proprietary derivative of LISP, and even the relatively modest amount of code we have is pushing the limits of the language.

How would a "modern" language do better?

(no subject)

Date: 2005-05-13 09:00 am (UTC)
From: [identity profile] jbouwens.livejournal.com
Lisp is the best language I've ever seen for code reuse.

Interesting. Why do you say that? What characteristics of LISP make it better at code-reuse than other languages? LISP as I know it has only the most basic language features (variables, functions).


How would a "modern" language do better?

A language like C++ has things like classes (which neatly delineate what functionality goes where) and templates (which allow parameterization of types). Both help maintainability and reuse.

In any case, perhaps we're talking about different types of programming here. I'm talking about large systems, worked on by many people. You seem to be working mainly on relatively small problems, by yourself. These different scenario's benefit from different language features.

(no subject)

Date: 2005-05-13 10:09 am (UTC)
From: [identity profile] gustavolacerda.livejournal.com
What characteristics of LISP make it better at code-reuse than other languages?

The fact that functions are first-order objects. If I had to program without passing functions, I would have to repeat myself a lot more.

I think this is also possible to an extent with C++ and Perl, but for some reason it's not common practice.


A language like C++ has things like classes (which neatly delineate what functionality goes where) and templates (which allow parameterization of types). Both help maintainability and reuse.

Common Lisp has classes too, and there are also ways of using and enforcing types (but it's optional!).
What you call "parametrization of types" is what I would call "dependent typing", though I'm not sure whether list or list would be called the dependent type.

(no subject)

Date: 2005-05-13 10:12 am (UTC)
From: [identity profile] gustavolacerda.livejournal.com
I'm looking for an example where the formal specification is far from the implementation.... the trouble is that Lisp brings the two things so close...

But you can think of sorting as having a trivial specification, and yet a non-trivial implementation... especially if you have an average efficiency requirement to meet.

Lisp ignorance

Date: 2005-05-13 01:40 pm (UTC)
From: (Anonymous)
Your ignorance is showing. This is not a bad thing, as everyone starts out ignorant, but please refrain from spreading lies and misinformation about Lisp while remaining in this state of ignorance.

Firstly, it is spelled "Lisp" not "LISP", and it has been for decades. I have found the following rule of thumb to be true: that if people spell Lisp as "LISP" they usually no absolutely nothing about it (excepting Lisp old-timers).

LISP as I know it has only the most basic language features (variables, functions). [...]

A language like C++ has things like classes (which neatly delineate what functionality goes where) and templates (which allow parameterization of types).


Wrong. Besides variables and functions, Lisp has the best Object-Oriented system I know of (classes, classes-as-objects, meta-classes, multimethods, you name it). It also has the best exception system I know of. Templates are a really deranged form of macros (they are expanded at compile-time); Lisp does macros properly. Lisp also has extensible syntax, a package system, various module systems, a built-in compiler and dissassembler, interactive self-documentation, a large standard library, etc., etc. You can define just about any programming paradigm in Lisp. See http://www.gigamonkeys.com/book .

--Sebastian

Re: Lisp ignorance

Date: 2005-05-13 03:41 pm (UTC)
From: [identity profile] jbouwens.livejournal.com
Lighten up, we're not discussing religion here (Although computer languages do tend to lead to heated discussions).

I fully appreciate that I am ignorant about a great many things. If Lisp has made progress over time, great, glad to hear it. I'm prepared to revise my opinion of this new and improved Lisp over the old'n'busted LISP-derivative I use daily.

But I do expect to be treated with some respect, as I treat others. In your response, you imply that I lie and that I willfully remain ignorant about a subject. This is both offensive and unnecessary. If someone makes incorrect statement out of ignorance (As I clearly did), it's perfectly possible to remain civilized and point out their mistakes, instead of resorting to the "You suck" type response that is unfortunately so common on the internet.

Re: Lisp ignorance

Date: 2005-05-13 03:49 pm (UTC)
From: [identity profile] gustavolacerda.livejournal.com
I agree that Sebastian's message has an unnecessarily flamey tone. It sucks when people offend each other unnecessarily, and I wish he had been more careful.

But his response was implying that you "spread lies", which is not at all saying that you are malicious (i.e. "make up lies")

Re: Lisp ignorance

Date: 2005-05-13 04:34 pm (UTC)
From: [identity profile] jbouwens.livejournal.com
answers.com has two definitions of "lie" pertinent to this discussion:

1. A false statement deliberately presented as being true; a falsehood.
2. Something meant to deceive or give a wrong impression.

If someone makes an inaccurate statement, you don't tell them they "lie", as the term by definition implies malicious intent.

Anyway, I appreciate you mediating here ;). No harm done as far as I'm concerned, but Sebastian needs to work on his social skills.

Re: Lisp ignorance

Date: 2005-05-13 04:40 pm (UTC)
From: [identity profile] gustavolacerda.livejournal.com
Maybe his idea was that people made up lies about Lisp in the past, and that you were innocently spreading them (like someone who spreads a disease).

(no subject)

Date: 2005-05-13 05:50 pm (UTC)
From: (Anonymous)
Why did you assume I want to attack you or claim that you have malicious intent? Did you even see that I wrote that ignorance is not a bad thing? Notice how a simple technical correction turned into an entire subthread all about me, instead of the technical content of what I wrote. This is a pretty good indication of people who prefer 'politeness' to the truth. At the very least they will noy be spreading falsehoods about Lisp while you criticize me.

Politeness is not just nice words. Rudeness starts with disrespect for people, not with harsh words. Do you understand that the worst personal attacks are given in the most polite form? Just look at how astonishingly evil the British upper class can be -- so repressed that all hostility must be delivered "nicely" so those who do not think things through do not understand what is going on. Amazingly, this is considered an ideal by people who do not understand it.

The sad answer is that people have no reason to spread falsehoods. Why would anyone pass on a myth that they could not back up by fact? Sadly, again, they have no reason to do this: it is the prevailing default behavior. People do not generally think, unless they have been shown the great benefits of thinking. It has actually happened that people have become the president of very large countries without realizing the benefits of thinking. Thinking is hard work. Sorting true from false is hard work.

People often only parrot what they have heard unthinkingly, and have not yet experienced the great benefits of telling the truth and of thinking about what they say. Not thinking about what you say is the default human action. Telling things how you want them to be (without being particularly conscious of it) is much easier than getting up every morning to spend the whole day making enemies with others because you want to know the truth and they want to spread falsehoods. Everyone, including me, does it to a certain extent. Many things you have been told are false. Distinguishing truths from untruths takes time and effort, but so many more interesting things happen when you make that effort.

If you want to know what is true about Lisp, learn about it, read the book I recommended (Practical Common Lisp (http://www.gigamonkeys.com/book)), do whatever suits you. If, however, you spread falsehoods about Lisp, you should expect to be corrected. This has nothing to do with 'religion'. You have to see this from a Lisper's point of view: Lisp is possibly both the best and the most actively bashed language in the entire history of computing.

Most people do not carefully think about everything they say and will repeat myths and confusions in the service of maintaining a consensus of views, which is very useful to avoid cognitive dissonance, even when the consensus thus built is based on falsehoods misrepresentations. The only result of wanting to debunk all the myths is that people who value 'politeness' over truth, think you are out to start trouble and will accuse of 'flaming' and 'bad social skills', instead, so the price one pays for wanting the most correct technical environment is one where a lot of people who do not care about the truth when it does not serve their immediate needs will begin to turn a discussion into something personal.

Still, do not believe what you are told, do not even believe what I tell you, think about it for yourself and spend the time and effort to sort out the true from the false about Lisp. Most Lispers will be grateful to help debunk myth after myth and falsehood after falsehood.

If you investigate Lisp you will be very lucky and you will be pleasantly surprised to notice that many of the common myths about Lisp are wrong. Welcome to Lisp.

(no subject)

Date: 2005-05-13 06:00 pm (UTC)
From: [identity profile] gustavolacerda.livejournal.com
Whenever you make the subject "* ignorance", you should expect that people will take offense.

It may sometimes take some effort to avoid offending people, but avoiding something as flamey as the above shouldn't be that hard.

People do care about how you deliver a message. Sure, they are irrational, but you can be a more effective teacher if you are sensitive to that.

(no subject)

Date: 2005-05-13 06:29 pm (UTC)
From: [identity profile] jbouwens.livejournal.com
Notice how a simple technical correction turned into an entire subthread all about me, instead of the technical content of what I wrote.

The thing is, your response was more than just a simple technical correction, which is why it turned into a thread about you. If you had stuck to a simple technical correction, my response would have been along the lines of "Gee, I didn't know that, thanks for the info", and everything would be peachy.

But instead, you made it personal. You say that people spelling Lisp as LISP (That would be me, in this case) they don't know what they're talking about. In other words, without knowing anything about me as a person or my experience, you assume I parrot some myths and falsehoods without really knowing anything.

But maybe I have very good reasons for opinion I state. Maybe, while the information on which I base my opinion is incorrect and/or incomplete, _given_ that information, my opinion makes sense.

Again, I have no problem being corrected. I certainly learned a lot about Lisp here, and my opinion has been modified. But politeness is not just some useless front intended to hide rotten ethics. It's an integral and necessary component of effective communication.

You may have heard that Andrew Wile's proof of Fermat's last theorem may again have been proven false by some other mathematician (whose name escapes me at the moment)? Some of the letters going back and forth between these men were made public, and it is striking how scrupulously polite they are to each other. In the end, they resolved to work together on finding a solution. Do you think they would have done the same if they would have started a shouting match? I think not.

If you think bad of people from the outset, you can only insult and alienate them. If you start out thinking good of people, you can always revise your opinion later, but you just might be surprised how seldom you need to do this.

(no subject)

Date: 2005-05-13 06:37 pm (UTC)
From: (Anonymous)
In what way is "ignorance" 'flamey'? "Ignorance" means "absense of knowledge" ("onwetendheid"). It does not mean "stupidity" ("domheid").

but you can be a more effective teacher if you are sensitive to that.

I disagree (http://groups.google.nl/group/comp.lang.lisp/browse_frm/thread/bdc3ce4d0241ae8d/f7fdb1f6f2d1bafa?q=3242911298524628@naggum.no&rnum=1#f7fdb1f6f2d1bafa).

(no subject)

Date: 2005-05-13 06:50 pm (UTC)
From: (Anonymous)
But instead, you made it personal. You say that people spelling Lisp as LISP (That would be me, in this case) they don't know what they're talking about. In other words, without knowing anything about me as a person or my experience, you assume I parrot some myths and falsehoods without really knowing anything.

No, I did not say anything about you personally, I said it was _a rule of thumb_ (that in this case was correct).

But maybe I have very good reasons for opinion I state. Maybe, while the information on which I base my opinion is incorrect and/or incomplete, _given_ that information, my opinion makes sense.

It is not OK when a misunderstanding is being defended as "it's just a matter of opinion". Not everything is a matter of opinion.

If you think bad of people from the outset, you can only insult and alienate them. If you start out thinking good of people.

Huh? "insult and alientate"? Dude, I _did_ think good of you, you seriously have to read better.

(no subject)

Date: 2005-05-14 12:09 am (UTC)
From: [identity profile] gustavolacerda.livejournal.com
Just the fact that you put it on the subject. Since you were correcting him, the subject should indicate "correction", but when you say "ignorance", you are making it personal when there is no reason to. The beginning and the end tend to set the tone for the message.


I disagree
So you're siding with Erik Naggum?

Btw, do you have a way of automatically checking this page for replies?

(no subject)

Date: 2005-05-14 12:17 am (UTC)
From: [identity profile] gustavolacerda.livejournal.com
My general belief is that low-stress situations are better for learning than high-stress ones.

The stress that comes from knowing you're wrong may be useful, but there's no reason to create the extra stress that comes with an impression (even if it's not fully substantiated) of hostility.

I believe that a testosterone-charged flame-war where honor / status is at stake provides far from optimal learning conditions.

(no subject)

Date: 2005-05-14 06:58 am (UTC)
From: (Anonymous)
If someone thinks I was being hostile to him, he seriously has to take a course in reading comprehension.

I believe that a testosterone-charged flame-war where honor / status is at stake provides far from optimal learning conditions.

"flame-war", "shouting-match"? What the * are you guys talking about?!

Pleas point out _any_ statement of mine that was insulting. (And saying that someone does not know something does not count as insulting, but is a factual observation.)

(no subject)

Date: 2005-05-14 08:56 am (UTC)
From: [identity profile] gustavolacerda.livejournal.com
If someone thinks I was being hostile to him, he seriously has to take a course in reading comprehension.

It's not semantics, it's pragmatics.


Pleas point out _any_ statement of mine that was insulting. (And saying that someone does not know something does not count as insulting, but is a factual observation.)

Again, it's not what you said, but how you said it.


I have the same tendency myself, and often find myself embarassed or mocked for being too straightforward (in the good cases, it turns into a good laugh), so I find it somewhat odd that I'm the one suggesting you be more "tactful".

February 2020

S M T W T F S
      1
2345678
9101112131415
16171819202122
23242526272829

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags