Wiki Interview With Eliezer/Software

From The Transhumanist Wiki
Jump to: navigation, search

Software

[02-23-2004] - Since the Flare Programming Language project has been cancelled, this page is now entirely obsolete. The only part that isn't obsolete is the following question:

What programming language will SIAI use in the early stages of AI development, and why?

Currently my guess would be Java, because we are almost certainly going to need it to be one of the current Big Names in programming because it's the Big Names that have very powerful development tools available. The reason for selecting Java is that it's the fastest, best-supported language that won't require us to spend the rest of our lives tracking down loose pointers. Developing in a low-level language is not good for highly exploratory work, and it just doesn't *get* any more exploratory than AI. Of course there are more complex language issues than these, but not ones that really fit into this interview.


[02-23-2004] - The rest of this page is entirely obsolete.


What is the Flare Programming Language Project and why did SIAI initiate it?

As you know, there are reasons not to put too much weight on any specific estimate of a Singularity arrival time, even if it's a range like 2005-2020. Suppose that it takes until 2020, what kind of highly leveraged actions should we take now, to prepare for the Singularity, if there are 18 years to prepare? One important move would be Earthweb technology a la Stiegler, and collaborative filtering, but we haven't moved into either of those areas yet because of the high initial investment required. However, there are also some developing problems in the software industry: tools that are beginning to break down under the load of complexity dropped on them, PC buyers that are beginning to question what they're getting from a 2GHz PC when a 667MHz one still works fine, and chip manufacturers that are still building bigger and bigger CPUs because the programmers can't figure out how to use more and more CPUs. This is not too much of the problem if the Singularity occurs in 2007, but it is a large problem if AI requires that Moore's Law continue and Silicon Valley thrive for another 20 years or longer. There are also problems with present-day tools that are just not quite right for sculpting the code level of organization of an AI, especially if scalability across parallel nodes is an issue. Present-day tools do not handle fully general parallelism very well. Now it may be that SIAI's AI programmers will be able to overcome these problems with a little extra effort, or more likely a lot of extra effort, but it is a problem that other people besides AI programmers should be interested in solving, and hence one that we can try to factor out of the AI project proper, as an open-source effort. Flare tools may not be stable enough for AI programmers to use right away, but at least there's still hope that in 2006 there will be more powerful tools around, either developed by Flare the open-source project, or with ideas stolen wholesale from Flare and not dumbed down too badly. AI projects often do give birth to new programming languages. In the past this has been for fundamentally wrong reasons, i.e., someone tries to translate their thoughts directly into code, and hence tries to build a programming language that represents thoughts. Naturally this fails absolutely to make progress on AI as such, but it often results in a more powerful programming language, like Smalltalk, for example - people think of objects with behaviors, and we think of objects that fall into categories. Smalltalk fails absolutely to capture the complexities of cognition, but it gave rise to an entire class of much more intuitive programming languages, so in addition to ideas such as scalable parallelism, and the idea of a language in which data and code have the same representation, like LISP, but which uses extensible tree structures (XML) instead of LISP's linked lists, and sundry other useful properties for making the programming language manage complexity, now that programmer effort is more expensive than computing power. Flare also incorporates some new ideas about how people think that should make it easier for programmers to translate their thoughts into code. I have hopes these idioms will be at least as much of an improvement as object-oriented programming. I emphasize again that this has nothing to do with AI *directly*. Programming languages do not solve AI problems, they just make it easier to write code, but that's nothing to sneer at either when you're tackling something as complex as AI, so that's the interaction of Flare with the AI project and with the overall flow toward the Singularity.


What is the Flare project's present status?

Currently, the one investing the most effort is Xiaoguang Li, followed by Dmitriy Myshkin. As of last I checked, there's a very primitive skeleton for the center of a simplified interpreter which compiles and can compute iterative and recursive Fibonacci sequences, which is progress, when you consider that there's nobody working on the project fulltime. Unfortunately, I can't give an estimate of what percentage of the core structure is implemented.


What are some of the reasons why a programmer would or should be interested in Flare? And in a related question, Why is developing Flare more important than developing other programming languages? Why is it not just another programming language?

Cuz it's cool. If you're a programmer you can check out the Flare site at flarelang.sf.net. Flare has some idioms which to the best of my knowledge have never been seen in *any* programming language before, let alone having them all collected in one place, but to really appreciate the depth of it takes some time. It's sort of like a C programmer looking at C++ and saying, "But I can implement these so-called virtual methods using my own function tables, what does it need to be a language feature for?", although some people just look over the summary and instantly go, "Whoa! Use XML for the data and the program, and translate the program XML into plaintext for editing! That is just soo cool!" It varies.


Why are present software tools inadequate for developing real AI? Why do you believe Flare will help alleviate this situation?

I think this question has mostly been already covered. Present-day software tools are legacies of an age when computing power was the conserved resource. Today our ability to handle complexity is the conserved resource. The idea of a trans-plaintext programming GUI that edits an underlying XML representation of the program is one example of how Flare can help alleviate this situation. Obviously there are a lot of ways this can be screwed up, but, just as obviously, an XML representation is more powerful for tools that act on text, and a transtext GUI has the capacity to be more powerful than a text GUI for humans. In other words, "Let's bring programming into the 21st century already!" It's not a question of AI needing some unique feature from a programming language, just a question of programming languages that force us to focus on things like parallelism at the code level, instead of handling it for us.


What are the estimated short-term, mid-term, and long-term goals of the Flare Project?

Getting a working demo is the short-term goal. The mid-term goal is a useful demo that people start hacking because it's useful and not just because it's cool. The long-term goal is to make Flare a first-class programming language with stable, professional-level programming tools.


What programming language will SIAI use in the early stages of AI development, and why?

Currently my guess would be Java, because we are almost certainly going to need it to be one of the current Big Names in programming because it's the Big Names that have very powerful development tools available, although, if the AI project takes long enough to boot up, it might end up being Flare if Flare is even approximately stable and useful - Flare would be a *big* help but only if it's past the beta stage, but hopefully it won't take that long for the AI project to get started! The reason for selecting Java is that it's the fastest, best-supported language that won't require us to spend the rest of our lives tracking down loose pointers. Developing in a low-level language is not good for highly exploratory work, and it just doesn't *get* any more exploratory than AI. Of course there are more complex language issues than these, but not ones that really fit into this interview.


In the context of programming a near-human level General Intelligence, what is your response to the difficulties of developing complex software because of issues of brittleness and unwieldiness?

My response is Flare. Although in another sense, of course, this is a "wrong question". AI is not complex software. AI exists above software but is not software. To build AI you must first build complex software but the AI itself is not software as usually understood. If AI inherits the brittleness and unwieldiness of complex software, then it is software, not AI. Now we may have trouble building the complex software that supports the existence of AI, and the ideal answer to that is Flare, which I mean not just as a throwaway answer - Flare was specifically crafted to deal with the programmatic issues of brittleness and unwieldiness, and the non-ideal answer to that is to write Flare programs in Java, and to use whatever existing tools help manage complexity.

Personal tools
Namespaces
Variants
Actions
Content Navigation
Network
Community
Toolbox