An Approach To Specific Declarative Computer Programming Paradigms

Posted in Computer Science, Mathematics with tags , , , , , , , , , on 29 August, 2008 by Woititz Luka

In this article we will explain and discuss the declarative family of the fundamental style of computer programming. Mostly, we will focus on the functional and logic computer programming paradigms.

In computer science, the functional computer programming paradigm is basically a fundamental style of computer programming that treats computation as the evaluation of mathematical functions and avoids state (in the contrast with the imperative computer programming paradigm that emphasizes changes in state) and mutable data. Computer programming languages that use the functional concept as the fundamental style of computer programming, are using as their basic model or theoretical framework for describing functions and their evaluation two existing concepts. The lambda calculus (the theoretical framework for describing functions and their evaluation) and the combinatory logic (that is a notation, commonly perceived as more abstract than the lambda calculus and basically introduced to eliminate the need for variables in the mathematical logic).

There are some well known concepts and characteristics of the functional computer programming paradigm. Iteration is in the functional style of computer programming usually accomplished via recursion. Recursive functions are calling themselves and allowing an operation to be performed over and over again. Common patterns of recursion can be factored out using higher order functions, catamorphisms (defined in the category theory, denotes the unique homomorphism for an initial algebra) and anamorphisms (that are the categorical dual of catamorphisms). Higher-order functions are functions that can take other functions as arguments, and return them as results. In the functional computer programming paradigm we also meet characteristics and concepts that make it pretty different from other fundamental styles of computer programming, like for instance the pure functions. Pure functions are functions that have no side effects. A function or expression is said to produce a side effect if it modifies some state in addition to returning a value. Computer software developers therefore do not really like to use pure functional computer programming languages, because the pure functions do not accept input, produces no output, and interfaces with no external devices. An example of a computer programming language that uses a purely functional computer programming paradigm is Haskell. It uses a strong (that is used to describe situations where computer programming languages specify one or more restrictions on how operations involving values having different data types can be intermixed) and static typing discipline, with non-strict (and delayed evaluation, that is the technique of delaying a computation until such time as the result of the computation is known to be needed) computer programming language semantics. Not all computer programming languages with the functional fundamental style of computer programming are pure. For instance, computer programming languages LISP and Erlang, that use multiple fundamental styles of computer programming. The computer programming language Haskell offers powerful new ways to encapsulate abstractions. There is a simple, basic difference between declarative (more specific, functional) and imperative computer programming paradigm. The first technique uses the concept of the “what” question and the second of the “how”. Those two concepts are simply shown by a computer software algorithm that sorts a sequence of numbers into ascending order using a standard known method.

Computer software algorithm written in the C computer programming language:

void Sort(int a[], int b, int c)
{
{
int d, e, x, y;

if (b < c)
{
e = b;
d = c;
x = a[c];

do
{
while ((e < d) && (a[e] <= x))
e = e+1;
while ((d > e) && (a[d] >= x))
d = d-1;
if (e < d)
{
y = a[e];
a[e] = a[d];
a[d] = y;
}
} while (e < d);

y = a[e];
a[e] = a[c];
a[c] = y;

Sort( a, b, e-1 );
Sort( a, e+1, c );
}
}

Computer software algorithm written in the Haskell computer programming language:

Sort [] = []
Sort(x:xs) = Sort(filter (< x) xs) ++ [x] ++ Sort(filter (>= x) xs)

Although the source software code algorithms can speak for themselves and practically show you the difference between the “what” and “how” concept of the functional and imperative computer programming paradigm, we simply just can not forget the computational theory and optimization in computer science. The mathematical science really gives the theoretical basis for the functional computer programming paradigm concepts for problem solving, but there is another issue that practically effects computer software developed in it. Usually, (for instance the computer software compiler Glasgow Haskell Compiler) software compilers translate and produce inefficient machine software code (the issue is even more visible by using computer software interpreters like for instance Hugs or GHC). I do not claim that the software compilers really need to be optimized, but for example computer software compilers like GCC (for the C computer programming language) translates source software code algorithms to better, more rational and efficient machine software code. That could be changed by a optimization or by redeveloping the computer software compiler.


(Image source from the Lemonodor HTTP server.)

The logic fundamental style of computer programming is basically the use of mathematical logic for computer programming and is a part of the declarative computer programming paradigm. Very well known is the computer programming language Prolog, developed in the year of 1972. The fact that there are alternative ways of executing a logic software algorithm has been characterized by the equation:

    Algorithm = Logic + Control

The term “Logic” represents a logic computer software and the term “Control” represents different theorem-proving strategies.

We know many different extensions of the logic computer programming paradigm. Inductive logic fundamental style of computer programming is concerned with generalizing positive and negative examples in the context of background knowledge. Concurrent constraint logic fundamental style of computer programming combines concurrent logic and constraint logic (allows some predicates, declared as constraint predicates, to occur as literals in the body of clauses), using constraints to control concurrency. The abductive logic computer programming paradigm allows some predicates, declared as abducible predicates, to be incompletely defined.

The functional logic computer programming paradigm aims to amalgamate the most important declarative computer programming paradigms, namely functional and logic computer programming fundamental styles. It has a more expressive power due to the availability of features like function inversion, partial data structures, existential variables, and non-deterministic search. It has also a more efficient operational behavior since functions provide for more efficient evaluation strategies (lazy/delayed evaluation, deterministic reductions) than predicates.

The functional and imperative computer programming paradigms are however very different. As I recently pointed out, the most visible differences are side effect functions, which are used in the imperative fundamental style of computer programming to implement the state and input/output concept. The pure functional computer programming paradigm completely disallows side effects of functions used in the computer software algorithm. Disallowing this concept for referential transparency (which are properties of parts of a computer software), which makes it pretty easier to optimize, verify and parallelize software, as well as to easier develop automated computer software to execute those tasks.

The efficiency issue of software developed in computer programming languages that use as its fundamental style of computer programming the functional orientation is not just effected because of the computer software compilers and interpreters, but also because of other conceptual issues. These computer programming languages have automatic memory management (the act of managing computer software memory) with garbage collection (which is a form of automatic memory management). In contrast, computer programming languages that use the imperative fundamental style of computer programming use explicit memory management. Why is this an issue? It is an issue, because functional computer programming languages were perceived as less efficient in their use of the central processing unit and memory. It is however not a rule. Modern computer programming languages like for instance Python, Java or Perl, that use the imperative computer programming paradigm, also perform automatic memory management. The worst case slowdown was shown to be exponential. Situations where such slowdowns arise occur very rarely in practice. Computer software compilers and interpreters of the computer programming languages Objective Caml and Clean (that also use the functional fundamental style of computer programming) produce relative efficient machine software code and execution speed of the software algorithm that could be compared to machine software code developed in the C computer programming language.

- שָׁלוֹם ולהתראות ,לוקה

Copyright © 2008 by Luka Woititz

The Limits Of Computer Software Algorithms That Are Implementing Strong Artificial Intelligences

Posted in Computer Science with tags , , , , , , , , on 22 August, 2008 by Woititz Luka

There are several practical computer software algorithm implementations of weak artificial intelligence engines. They were created with different theoretical concepts and techniques, like for example with a practical computer software implementation of a evolutionary algorithm (or a genetic algorithm, which is probably the most popular type of a EA algorithm). An evolutionary algorithm is a subset of evolutionary computation, a generic population-based metaheuristic optimization algorithm. The interesting concept techniques of data mining and artificial neural networks are useful, but are they the right way through which we will get to the right answer of strong artificial intelligences?

Based on the fact that a computer software algorithm of a strong artificial intelligence is executed on a computer machine, we know that the algorithm must have a executable form that the machine understands (computer machine software code). Although we are not very skilled for reading source software code of first generation computer programming languages, we have other practical displaying concepts that make the computer software algorithm more readable and practical for human beings. Of course I am talking about the second and third generation category of computer programming languages. Most practical computer software implementations of a weak artificial intelligence were developed in high level computer programming languages (the third generation category). The most powerful practical concept for problem solving on a digital computer machine is surely the low level computer programming language Assembly (the second generation category). It is basically the perfect mix of a little high abstraction representation and the full computer hardware access and control. As an opposite to high level computer programming languages that use a relative high level of abstraction and one or more specific computer programming paradigms (fundamental style of computer programming), the low level computer programming language Assembly uses a low level computer programming paradigm and a relative low level of abstraction. The basic syntactical rules are called “mnemonics” that are a high representation of the operation codes in the central processing unit in a computer machine defined in the ISA (Instruction Set) architecture.

Both, second and third generation computer programming languages, have their good and bad sides. High level computer programming languages have a high level of abstraction, as we said, what practically means that a computer software developer can solve a problem in probably less time, because the computer programming language offers him a high level of syntactical and semantical rules. The bad sides are or could be (I am adding the very high level computer programming languages as well, also known as the fourth generation category), that a computer software compiler or interpreter is not correct or inefficiently written (developed), what practically means that we have inefficient computer software algorithms. And there comes the computer programming language Assembly in the game. A computer software developer can exactly define the flow of instructions for the central processing unit, plus has all access and control to the computer machine (“hierarchical protection domains”, also known as protection rings are meant here). As we said, both have their good and bad sides, so we will now come to the bad side. Because of the low level of abstraction, and the precisely defined instructions for the central processing unit of a computer machine, you can imagine that the process of developing complex computer software algorithms (strong artificial intelligences) can be a very interesting deal that could take a very long trip. That is the main reason why we developed third and fourth generation computer programming languages (some people also say that there was another reason why, like for example because the second generation computer programming language was too complex, et cetera, but I personally disagree with these arguments).

And because there were now third and fourth generation computer programming languages of course, no one saw a reason why he should use concepts from the second generation for problem solving. Most people say that these higher generation categories offer more computer programmer productivity and flexibility, what is of course a fact, but in my opinion they also support the computer programmers laziness. As we said, there is also the negative fact that the computer software developers don’t have full control of the computer hardware and software as well.

Hierarchical protection domain for the 32 bit CPU unit device.
(Image source from the Wikipedia HTTP server.)

Because we developed our own very high and high computer programming languages we had to develop our computer programming paradigms or simply the fundamental styles of computer programming (an practical opposite of the methodology of computer programming, which is the style of solving specific software engineering problems). There are a lot of computer programming paradigms in the wild, including the three most basic categories. The imperative or procedural, object oriented and declarative (which encapsulates also the functional, logic and constraint) computer programming paradigm. There are also some other less popular, but widely spread ones, like for example the aspect oriented, recursive, reflective or meta computer programming paradigm. Most of the critics has gained the object oriented computer programming paradigm. Many articles were written against it, some of the arguments were completely justified in my opinion. The fact the the theoretical concept of the object oriented computer programming paradigm is that all modules (as represented in the procedural computer programming paradigm) and other art concepts of the computer software developer must be an object is simply unrealistic. Furthermore, the concept of bounding the data structures and functions (in this computer programming paradigm also defined as “methods”) is simply funny. Also spreading the data type definitions all over the computer software algorithm is an issue. Some people may argument that this representation is a misunderstanding of the theoretical concept of this computer programming paradigm, but the fact is that a lot of mathematical scientist would agree on the counterargument that a computer programming paradigm must have a syntactical mathematical basis. It is however a double-edged sword.

The new age brought us new concepts for problem solving at the very high level of abstraction. The fourth generation, also called DSL (Domain Specific Language) computer programming languages developed a new kind of computer programming paradigm, like for example the “language oriented” style of computer programming. It is not just a new computer programming paradigm, but it is also a completely new approach and concept in the world of computer software engineering, we could almost say maybe a little revolution in the future.

The language orientation is a computer programming paradigm via the meta computer programming paradigm in which, rather than solving problems in general purpose computer programming languages, the programmer creates one or more domain specific computer programming languages for the problem first, and solves the problem in those languages. This concept seems at the first look a little bit unpractical, but it is not at all. The only issue that could appear in my opinion is that a computer programmer could not process a optimization as needed. That means that developing computer software algorithms with the language oriented computer programming paradigm could produce inefficient computer software.


(Image source from the JetBrains HTTP server.)

This image shows the mainstream computer programming with a general purpose computer programming language.


(Image source from the JetBrains HTTP server.)

And this image shows language oriented computer programming with domain specific computer programming languages.

There is the actual issue. Usually the fact that a computer software controls more parts of the computer software developing process than the computer programmer can cause issues. The field of computer science called algorithmic efficiency is used to describe properties of an algorithm relating to how much of various types of resources it consumes. The process of making computer software as efficient as possible is known in computer science as optimization. Most people using very high level computer programming languages would probably argument that the computer hardware is evolving and getting more complex. They would argument that the computer hardware’s data processing is fast enough to cover this inefficiency. But this is not true. The slow execution time in the central processing unit of the computer software would be visible for a average user. A practical example was the computer software interpreter of the Java computer programming language. The computer software interpreter executed the intermediate software code too slow, plus the computer software compiler translated the source software code to inefficient intermediate software code, what simply caused very bad popularity. This issue was more or less corrected. The last problem in the Java computer programming language would be that it forces the software developers in a specific fundamental style of computer programming (object oriented computer programming paradigm). It is by the way of course generally known that it does not have good computer hardware access and control, so it is basically not very well suited and useful for computer operating systems, software device drivers development, et cetera.

The main question in a practical implementation of a computer software algorithm that represents a strong artificial intelligence is the following. Are the current computer programming languages, or more in general, practical concepts for problem solving enough to solve a problem of this range? Do we need different computer hardware? Where are the limits of computer software algorithms, if there are any at all (if we’re not looking at the computer hardware in this issue). That are the main questions that the mathematical science can foresee and the practical implementations are able to prove.

- שָׁלוֹם ולהתראות ,לוקה

Copyright © 2008 by Luka Woititz

The Main Issue Of Strong Artificial Intelligence

Posted in Computer Science with tags , , , on 19 August, 2008 by Woititz Luka

This article may or may not be seen as another part of a recent article named “Conceptualization Of Strong Artificial Intelligence“. The article had a great philosophical thinking and background, although it wasn’t really surveyable for most people because it had deep philosophical aspects that could not be understood by all people.

Therefore this article will try provide a nice view of the reason, why there still isn’t a good practical conceptualization of a strong artificial intelligence out there. As an opposite to the recent article, this one will go and show you the problem systematically. However, I just wanted to note as well, that you will not find such a deep, fundamental philosophical aspect in the content of a book of artificial intelligence as represented here in this article.

There are two different sides while trying to develop and conceptualize an computer software algorithm of a artificial intelligence (of a strong type of course). Those two sides are the main, basic sides. You can think of those two sides as a left hand side and a right hand side. On the left hand, we have the basic, fundamental philosophy of artificial intelligence. We try to develop concepts that will develop concepts and therefore bring as the true basis on which we can build (develop) practical implementations of strong artificial intelligence. On the right hand, we have all the theoretical as well as practical capabilities that gave us the nature (rules of physics) to make practical implementations of the deep philosophical basis.

At both sides, we try to research and conceptualize as much as possible. The main key of a strong artificial intelligence is to combine a perfect and extensive solution of both sides. Only a great fundamental basis of philosophy (theoretical concepts) and its practical capabilities will bring as the ultimate solution we are searching for.

And last but not least, there is the major main problem and issue of the compatibility. When we are focused at the left hand side, we make great progress in the fundamental philosophy, but are therefore not focused on the practical implementation, so we basically swim away in the philosophy. And as well as on the other, right, hand side, we can make great progress on the practical concepts of problem solving, but we lose the fundamental basis of concepts while thinking of a practical solution and manifestation of the problem.

Many people would think now, why we don’t simply break the problem of strong artificial intelligence into those two sides, and let one research team work on the one hand side and the other team on the other side? The answer is simple. Compatibility. While working on the fundamental philosophical basis on the one side, they will never make it, because they will not include the capabilities of the practical implementation. And while working with practical implementations on the other side, they will never make it as well, because they are not using the new concepts of fundamental philosophy that could lead them to the hypothetical solution of a practical conceptualization.

This is the main compatibility issue between the two major sides that will just both, together, bring us the ultimate solution at we are searching for. This main compatibility issue shows us that the sides are currently asymmetric. When we find and develop a theoretical concept (the ultimate philosophical basis) that will be compatible and fit with the practical capabilities of a hypothetical solution in a computer software algorithm, than we will find and bring the symmetry of the two sides together, and therefore develop the true strong artificial intelligence.

If the world will have enough patience, than I can promise it will see a new, very bright light on the sky very soon.

The major compatibility issue.
(Image source from the Science Museum HTTP server.)

- שָׁלוֹם ולהתראות ,לוקה

Copyright © 2008 by Luka Woititz

The Mathematical Paradox

Posted in Mathematics with tags , on 17 July, 2008 by Woititz Luka

What is the probably most common mathematical paradox in the world? If you think a little bit, or even ask yourself you will see that it has surely something to do with the every day thinking of average people. Are the people fault because they take the whole mathematical science as a paradox? Not really, it is the fault of the educational system in the United States of America, as well as in Europe.

So, what is this paradox all about you might ask yourself? It is basically the wrong thinking about the mathematics at all. The educational systems in the world are teaching mathematics, but not the history and philosophy of it at all (or maybe a very little bit, probably in better educational system or specific schools). Kids (and adults as well) today, have, because of the wrong education, an unclear view of the whole concept and meaning of the mathematical field. A practical prove of this “hypothesis” is very simple. Try to ask a guy that has finished a high school (in the United States of America of Europe, it doesn’t matter), if he can tell you in just one sentence what mathematics is. I am quite sure that most people will not answer you, or will say an incorrect answer. Why? As I mentioned, the simple fault of the educational system that has political influences.

So, what is the mathematical science all about? In one simple sentence formulated, the mathematics is basically the mother of all science fields and the universal language that tries to describe the rules of the nature in an objective way.

Of course we can not argument this field and claim that every human that has finished high school doesn’t know the definition, some people simply learn things by themselves, but we look at the whole educational system and actually make an average that shows these negative results.

The question still remains, what can we do to change it? Not very much, the politics has also a strong influence on the educational system, so we can basically be an activist in this field, simply show our opinion on the elections and write articles for high school professor and the greater population like this one is.

So how important is the mathematical science? It is basically very, very important. It is the mother of all science fields (the deepest history of mathematics has begun for about more than 70 thousand years ago). Basically, no field or science on planet Earth is that old as mathematics is (just sports is maybe as old as the Homo s. sapiens itself, but it is not really a science field). The fundamentals and theory of the computer science (and theoretical computer science) field relays on the pure mathematics (more specifically for example the graph, number, computational and computational complexity theory, et cetera). The field of cryptology is a scientific field of the mathematical and computer science (early cryptography just mathematical). There is more or less no scientific field in the world that would not include some concepts of mathematics in it. The Greek word “μάθημα” (mathematics) basically means study and science, so as you see, it is simply a practical conceptualization of the scientific concept.

We went a little bit off the topic. In general however, the educational system must change and educate the children from the first primary school class on in this direction. If the teachers in the primary schools and the high school professors would respect that and educate the children in this right direction there would not be people that think like that. This knowledge would not just help the people for further education (on universities for example), but give them a general knowledge as well. I do not need to mention university professors (scientists), they usually know their field very well.

I however hope that this very common mathematical paradox will disappear through the time, while the educational system will change, so the teachers will understand the seriousnesses of this paradox and treat it as a real issue.

The Rhombus by Escher
(Image source from the North Carolina HTTP server.)

- שָׁלוֹם ולהתראות ,לוקה

Copyright © 2008 by Luka Woititz

Analog Organic Organisms Versus Digital Artificial Intelligences

Posted in Computer Science with tags , , , , on 7 July, 2008 by Woititz Luka
  • Citation: “In my opinion, and the artificial intelligence people will fight you on this till hell freezes over, artificial intelligence is not human intelligence. It’ll never make it. Consciousness is not digital. It’s analog and we can show that very clearly.

Dr. Edgar Mitchell, “From Astronaut to Academic Outlaw,” The Wave Magazine, 7 July 2008, <http://www.thewavemag.com/pagegen.php?pagename=article&articleid=24660> (7 July 2008).

Dr. Edgar Mitchell is an American pilot and astronaut. He was the lunar module pilot of the Apollo 14. He obtained the Doctor of Science degree in Aeronautics and Astronautics from the Massachusetts Institute of Technology. He’s interests include consciousness and paranormal phenomena and as it looks like artificial intelligence as well.

In this article I will discuss a little bit about this argument and assumption, or maybe even further, a reproach. There is just one truth in this citation, when he wrote that the people working in the field of artificial intelligence would not appreciate this opinion.

So, lets continue. Are the organic\living organisms on planet Earth analog? Yes they are. Are artificial intelligences digital computer software algorithms? At this point, yes they are. So, is Dr. Mitchell telling the objective truth and facts? No, he really is not, not at all. Dr. Mitchell is basically thinking too much “organic”. The nature found a way to create live. The nature used oxygen, carbon, hydrogen and nitrogen to create organic organisms, but that doesn’t mean that it is the only way to create live (I don’t mean necessary organic, artificial as well). Of course every scientist would say that we don’t really know how the nature made organic organisms and consciousness. We can use them as a little model or skeleton to see what we could artificially do, but maybe it is not the right direction.

Consciousness is not surely analog. The nature used this way (maybe we could say technique) because it was probably the most convenient way, considering on the possibilities it had (or still has). That of course doesn’t mean that a artificial organism could not have consciousness. It could probably have a consciousness that is very different from our own (I mean better, more rational, more intelligent). I have discussed this philosophy in an recent article.

The point is that we do not know how consciousness really “works” and we do not know if there is really just one way to create it (analog, as Dr. Mitchell says). If we take the nature as an example or model, it seems so, but it is not a fact or objective truth at all. Computer hardware can be, in theory, much more complex than the organic organisms are at this time (computer hardware is at this time faster and has more space for data capacity on storage medias as organic organism created from the nature do), so why would you think just for a second like that.

Of course I give all my respect to Dr. Mitchell, I hope there is no misunderstanding, but I hope that all people just understand that he is a good scientist at physics and maybe not that much in some other fields. The time will certainly show who was right and who simply wrote his opinion on the current assumptions.

Although the argument of Dr. Mitchell is very direct and understandable, I really don’t see what exactly should be analog on natural neural network, for example? A mistake in the core of the argument?

Dr. Mitchell
(Image source from the LevelBeyond HTTP server.)

- שָׁלוֹם ולהתראות ,לוקה

Copyright © 2008 by Luka Woititz

The Dawn Of Monopoly And Capitalism

Posted in Various with tags , , , , on 7 July, 2008 by Woititz Luka

Capitalism is an economic system in which property is owned by private persons and operated for profit. When monopoly (pure oligopoly exists when a specific individual or enterprise has sufficient control over a particular product or service to determine significantly the terms on which other individuals shall have access to it) gains power over the capitalistic economic system and world market, than we have a problem. This problem is already present at the technological world market.

In this article, I will try to point out how capitalism and especially monopoly, can change the world to worse.

Of course, as you may expect, the first major technical corporation that we will mention will be the Microsoft Corporation. The company was recently judged for world market monopoly and Bill Gates retired as well (although he retired, we don’t really expect that he will have less power over the company, based on the assumption that he still surely owns more than 70% of the company). Some people think that Bill Gates is something like a hero, because he made one the largest corporations on the planet from his garage, but he isn’t at all.

Real capitalism is never nice for all the people in the world. You basically can not make a company that is that large, without harming someone. The monopoly is a great problem in the world market. The Microsoft Corporation concluded that many contracts (with their computer software and operating systems) with other companies, that provide and make computer hardware, that it is basically in more than 80% of the supply in the world market impossible to buy a computer, without buying the computer software from the Microsoft Corporation (for example the Windows operating system, family NT).

Many companies steal ideas from others so they can be more competitive at the market. A practical example is the Apple Incorporation. They stole ideas from the Xerox Corporation’s computer laboratory and used them for their own one. Many users (“believers”) of the Apple company say that this is the only argument against the company, but this is not true as well. First of all, the Apple company did not create the operating system kernel them selves, but they simply used it from the operating system of the family BSD (the Berkeley Software Distribution), that was and still is a free computer software. Can you image that? Hundreds of people around the world are developing an operating system, than a company takes the operating system kernel and uses it for their own operating system that is not a free computer software. No, it is not against the law, but it is simply very unethical. Of course we are not at the end of the beautiful list. The Apple company has (as all people know) very expensive computers. Is that a problem, you might ask yourself? A user may now think, that every buyer can buy what he wants, but this is not the whole truth. The supply of the Apple Incorporation on the market is simply deceptive. So, the company is deceiving buyers, because the relationship between the supply and the market price has a big gap. There are other problems in the Macintosh operating system as well, like for example the user unfriendly computer software, et cetera. Of course issues with computer software execution time and so on.

So, where does the average user see the monopoly of the Microsoft Corporation? Well, its basically like an example with the milk and the bread. Because the provider company of the milk and the provider company of the bread concluded a contract you will have to buy the bread as well if you want to buy the milk. Is this good? Yes, for some people that want always bread with their milk is it alright, but not all people want that. Some people would just simply like to buy milk (a computer without the software) and they can’t. That is the monopoly. Other companies at the market just do not have the chance to make these contracts with the companies, so that people would have more choice what exactly to buy. They basically farce the purchase and that is absolutely not right!

Milk Handcuff Bread
(Image sources from the Discovery Education, Handcuffs and Satterth HTTP servers.)

- שָׁלוֹם ולהתראות ,לוקה

Copyright © 2008 by Luka Woititz

Conceptualization Of Strong Artificial Intelligence

Posted in Computer Science with tags , , , , , , , on 6 July, 2008 by Woititz Luka

There are several definitions of artificial intelligence. Some define it as “the study and design of intelligent agents,” where an intelligent agent is a system that perceives its environment and takes actions which maximize its chances of success. It is surely a branch of computer science and one of the most mysterious fields that are yet almost unknown at all.

Where is the limit, where we can say that a computer software algorithm is really intelligent? Some people say that it is impossible to develop “real” (strong) artificial intelligence, but I must disagree at all. There is a small definition that I and Jure Sah (primary known under the nickname “DustWolf“) have made about where is that limit. We used logic and the philosophy to make the definition:

  • “An artificial intelligence is a real intelligence, when one or more Homo s. sapiens define it as intelligent.”

So, how can we be sure that we can develop strong artificial intelligence? We can not be 100% sure until we really develop it, but we can make a mathematical probability and approximation, where we get a useful information that we are interested at. The answer is yes. We are not trying to create and develop a computer software algorithm or machine that works the same as a living organism. In the universe we know that there are two kind of things. The things that are the animate nature and things that are the inanimate nature. But we are trying something else. We try to develop a third space of organisms, the artificial intelligences. Yes, of course it will not be the same as the animate nature, it will be something better, more rational, more intelligent. It will be more or less a combination of the animate and the inanimate nature (practically, it will have all the characteristics of living organisms and some of the inanimate nature, for example, it will not consist of organic tissue). That is the conceptualization of the real strong artificial intelligence with his input and output devices (things that we can touch). But of course that is not intelligence, it is an abstract conceptualization.

We have tried a couple of concepts that should solve the problem of artificial intelligence, including decision trees, computer software evolutionary and genetic algorithms, data mining techniques, artificial neural networks, et cetera. Are we really at the right path for the problem solving? That are the main questions. The problem is that we don’t really know what to solve and that is the reason why we don’t exactly know which concepts to use for the problem solving. Are the current computer programming languages really enough for this problem solving? Maybe we must create a new computer programming language, or probably even further, we must create new concepts for this kind of problem. We don’t know yet, we must try.

Of course knowledge and science is not always enough for a breakthrough. Not all people can study and create artificial intelligence, that is interesting. You need your own mind, logic and philosophy because the current knowledge might not be enough for this problem.

Brain
(Image source from the AC HTTP server.)

At this state now, we more or less believe that the problem solving concept for an interesting artificial intelligence (probably not a really strong, but anyway) could be the concept of the artificial neural networks or probably something relative “near” around it.

If we have “luck” and we are able to develop really strong artificial intelligences, than it will surely have a great, major effect on the Homo s. sapiens species and probably on all living organisms. Because we are “intelligent” and complex there could be a lot of ethical and law limits. The believers of god could misunderstood the situation, law would have another major problem, our infrastructure could be at risk and another great war could take place (no I don’t dream about the war of the artificial intelligence against our species, but terrorists or probably some communities of believers against the others, et cetera). As you can however see, if we can create and develop strong artificial intelligence, there could be a lot more problems than we think about at this time.

It is however important to understand that if we take a way\path (concept for problem solving), and see that it will not solve the actual problem, than we must search for it around the concept or even take another way. Knowledge will not save and bring us 100% to the actual concept at all, I even went further and thought that you really need to think extremely abstract (that are our current experiences), that means to be “a little” genius (I really dislike to write and discuss about that word, because we can not define a genius precisely). It could be a Homo s. sapiens that is not like the average, or probably has a different brain structure (a lot of people have these characteristics), and that is the reason I try to avoid this word.

This is just a little article about the philosophy of artificial intelligence\life, but I will try to include as many things as possible, so that people can be convinced to believe the truth and objective facts (not all people have this amount of abstraction).

So, unprofessional (and probably most of the professional) people believe and have “a lot” of arguments against our thinking of this creating and developing. I have heard a lot of these arguments, including that it is not possible for a artificial intelligence, in theory ,to “feel”, “love” or regenerate themselves, as living organisms do, as well as to throw an robot conceptualization of an artificial intelligence in a wood, so it can prove that it is intelligent (this argumentation was made by Silvio Vojtic, an mechanical engineer from the City of Zagreb in Croatia, Europe).

These arguments are in my opinion strange and a little bit funny. If you use just a little bit of your gray cells in your brain, you will see that everything is possible. An practical conceptualization of an artificial intelligence can regenerate themselves without a problem and it can fell (through the input device) and love even in a different way than we can. Everything that is written (in Homo s. sapiens in the natural neural networks in the brain, as well as in the deoxyribonucleic acid, et cetera) can be rewritten in a different way (a better, more rational way), or even taken as a little model or skeleton to see what we need and what we should actually artificially do.

So, an artificial intelligence is not a cat, who must adapt to an environment like for example a wood (it could, but it is not the point). It primary lives in an abstract world, a digital world, and it can be the king of it (if you don’t believe this, try to take a cat from his every day environment, and put it into another environment, maybe the digital world). Yes, maybe it could adapt, but not very well, because it is not meant for it. That is the point. We’re not searching for a solution that the nature gave, because an artificial organism is not an living organism, that means that not all the principles for the one can be used, or are compatible with another. We are searching for something else, the third thing in the universe that can be better, more rational, intelligent and has a lot more powerful characteristics than living organisms do. They can adapt to the environment quickly, because they are not really limited in the practical conceptualization as we are, the core is a abstract software algorithm that can, in theory, be used in every practical manifestation.

- שָׁלוֹם ולהתראות ,לוקה

Copyright © 2008 by Luka Woititz