Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.
Due to ongoing issues caused by Search, it has been temporarily disabled
Please excuse the mess, we're moving the furniture and restructuring the forum categories
You may need to edit your signatures.
When we moved to Xenfora some of the signature options didn't come over. In the old software signatures were limited by a character limit, on Xenfora there are more options and there is a character number and number of lines limit. I've set maximum number of lines to 4 and unlimited characters.
There is a limited amount of matter and energy in the universe that is within our cosmic horizon. Nothing you build in this universe is potentially infinite. Everything you can build can be reduced to a very large finite state machine.
The finite lifetime of a living creature will end long before it eats the observable universe.
That is yet another reason why barehl's prattle about Turing machines versus linear-bounded automata was silly. Any degree of intelligence that can be demonstrated within a bounded lifespan cannot depend on a difference between classes of automata that cannot be observed within bounded time.
It is silly to say, as barehl did, that today's working computers are Linear Bounded Automata rather than Turing machines.
In the real world, the real reason real computers aren't equivalent to Turing machines is that their ability to address memory devices, even large hard drives, is typically limited by a fixed maximum number of bits used to identify the location/cell/sector/word/whatever you want to access on a memory device, and by the fixed number of bits used to identify the particular memory device you want to access.
There is a difference between saying something silly (that today's working computers are Linear Bounded Automata but are not Turing Machines) and explaining precisely why that statement was silly.
It's sort of like the difference between an honest discussion and a discussion in which one of the participants, when quoting another, has to excise the two paragraphs that explained why his remarks were silly so he can pretend the person who explained the silliness was actually agreeing with the silliness.
The finite lifetime of a living creature will end long before it eats the observable universe.
That is yet another reason why barehl's prattle about Turing machines versus linear-bounded automata was silly. Any degree of intelligence that can be demonstrated within a bounded lifespan cannot depend on a difference between classes of automata that cannot be observed within bounded time.
The whole reason that definitions like Turing machine and FSM exist is a theoretical one. There aren't any aspects of practicality to the definition. Concepts regarding computing time, space requirements, and complexity are a separate branch of computing theory.
But yes, by the above definition, anyone making statements about computability theory and consciousness quickly comes up against physics. There's definitely some kind of disconnect in barehl's thinking on computability:
barehl said:
You would end up needing to have collections of finite state machines and then additional FSMs to decide which one to use. You quickly get into intractability where the size and complexity of the FSM grows much faster than the complexity of the problem. So, as far as I can tell, theoretically true but not practical.
In relation to Turing machines, FSMs are a mathematical concept. There is nothing about their definition that can become intractable. This would only be true if you are trying to draw out a diagram with bubbles, or physically define a computer by a series of states that define the whole computer. It doesn't matter that a computer has enormous number of states and would be totally impractical to build as a single FSM, it's still an FSM from a computability theory standpoint.
It seems that barehl is hinting at some type of computation beyond what is computable with Turing machines. In computability theory, this would be known as an oracle machine. Oracle machines aren't real though, they are a theoretical concept that helps with proofs involving relative complexity and computability. For them to be real, there would have to be some aspect of physics that presents itself as an oracle, or we'd have to be very wrong about the foundations of mathematics and logic.
Barehl thinking that the reason he hasn't yet cracked the consciousness nut is related to it beyond computation theory in such a manner seems to me like someone saying that the reason they haven't yet cured cancer is that cancer cells operate outside the known laws of chemistry and logic.
What I'm about to discuss is no more relevant to cognitive theory than linear-bounded automata or Turing machines, but denying the practical relevance of theory is a mistake that shouldn't go unchallenged.
The distinctions between finite-state automata, pushdown automata, and Turing machines are among the most important in computer science.
Compilers, for example, are eminently practical tools, familiar to every computer programmer.
When writing a compiler, there are eminently practical reasons for implementing the lexical analyzer as a deterministic finite-state machine, for implementing the parser as a pushdown automaton, and for implementing the type checker using a Turing-complete language. Those reasons are closely connected to the theoretical facts that some of the jobs performed by a type checker (such as limiting uses of each variable to its scope) cannot be performed by a pushdown automaton, and that some of the jobs performed by the parser (such as enforcing proper nesting of parentheses) cannot be performed by a finite-state machine.
The speed of the compiler is improved by implementing each module using the weakest model of computation that is capable of performing the task.
Note well that a well-written compiler's code does not itself contain any inherent limits on the size of programs it can translate. Those limits are imposed externally by hardware. Each such "limit" can be transcended by the simple expedient of running the compiler on more powerful hardware, up until we run into hardware limits such as a 64-bit address space or the size of the observable universe. Those externally imposed limits are of little or no practical importance, whereas the theoretical limits that lead compiler writers to use the appropriate theoretical model for each component of a compiler are of great practical importance.
The famous Neural Binding Problem (NBP) comprises at least four distinct problems with different computational and neural requirements. This review discusses the current state of work on General Coordination, Visual Feature-Binding, Variable Binding, and the Subjective Unity of Perception. There is significant continuing progress, partially masked by confusing the different versions of the NBP.
Introduction:
In Science, something is called “a problem” when there is no plausible model for its substrate.
Here's Beelz' reference:
The brain’s organizing principle is topographic feature maps (Kaas 1997) and in the visual system these maps are primarily spatial (Lennie 1998).
This is the important point about visual feature binding:
Another salient fact is that the visual system can perform some complex recognition rapidly enough to preclude anything but a strict feed-forward computation. There are now detailed computational models (Serre et al. 2007) that learn to solve difficult vision tasks and are consistent with much that is known about the hierarchical nature of the human visual system. The ventral (“what”) pathway contains neurons of increasing stimulus complexity and concomitantly larger receptive fields and the models do as well.
I agree. Neural networks have made a lot of progress in this area, at least for very, very specific applications. So, it's solved, right? No.
Fortunately, quite a lot is known about Visual Feature-Binding, the simplest form of the NBP.
We've made progress on two of these:
Suggesting plausible neural networks for General Considerations on Coordination and for Visual Feature-Binding is no longer considered a “problem” in the sense of a mystery.
But not the other two:
Neural realization of variable binding is completely unsolved
Today there is no system or even any theory of a system that can understand language the way humans do.
We will now address the deepest and most interesting variant of the NBP, the phenomenal unity of perception. There are intractable problems in all branches of science; for Neuroscience a major one is the mystery of subjective personal experience.
What we do know is that there is no place in the brain where there could be a direct neural encoding of the illusory detailed scene (Kaas and Collins 2003). That is, enough is known about the structure and function of the visual system to rule out any detailed neural representation that embodies the subjective experience. So, this version of the NBP really is a scientific mystery at this time.
What I'm about to discuss is no more relevant to cognitive theory than linear-bounded automata or Turing machines, but denying the practical relevance of theory is a mistake that shouldn't go unchallenged.
The distinctions between finite-state automata, pushdown automata, and Turing machines are among the most important in computer science.
Compilers, for example, are eminently practical tools, familiar to every computer programmer.
When writing a compiler, there are eminently practical reasons for implementing the lexical analyzer as a deterministic finite-state machine, for implementing the parser as a pushdown automaton, and for implementing the type checker using a Turing-complete language. Those reasons are closely connected to the theoretical facts that some of the jobs performed by a type checker (such as limiting uses of each variable to its scope) cannot be performed by a pushdown automaton, and that some of the jobs performed by the parser (such as enforcing proper nesting of parentheses) cannot be performed by a finite-state machine.
The speed of the compiler is improved by implementing each module using the weakest model of computation that is capable of performing the task.
Note well that a well-written compiler's code does not itself contain any inherent limits on the size of programs it can translate. Those limits are imposed externally by hardware. Each such "limit" can be transcended by the simple expedient of running the compiler on more powerful hardware, up until we run into hardware limits such as a 64-bit address space or the size of the observable universe. Those externally imposed limits are of little or no practical importance, whereas the theoretical limits that lead compiler writers to use the appropriate theoretical model for each component of a compiler are of great practical importance.
The way you are using these terms is related to computational complexity theory, not computability theory. Computibility theory doesn't care about practicality or speed. Your concerns seem to have more to do with how many steps are required to complete a problem in relation to the problem size, and how much memory is required in relation to problem size. For instance, a pure FSM is desirable because it is always O(1) in relation to memory requirements.
Actually, you are more closely describing practical computing patterns, not theoretical ones. The models used to describe computability have been co-opted as programming patterns for computation. They are still two different things.
Write whatever program you what using whatever computational pattern you want, it's still implemented on a computer that is made up of billions of interlinked FSMs. All a compiler is is a complicated way of programming a giant FSM.
I mentioned, for example, the theoretical fact that finite state automata cannot enforce the context-free constraint that parentheses (and curly braces etc) must be properly nested. That's computability theory, and has nothing to do with computational complexity. That and related facts of computability theory explain why finite state automata are used in lexical analyzers but are not used in the parser modules of compilers.
Actually, you are more closely describing practical computing patterns, not theoretical ones. The models used to describe computability have been co-opted as programming patterns for computation. They are still two different things.
They are known as models of computation. We can prove mathematical theorems about those models. They are executable, so we can and do use those mathematical models to write programs.
Regular expressions recognize/decide exactly the same class of languages as finite state automata, and are theoretical models in exactly the same way that finite state automata are. You may insist that using regular expressions to perform computation is a matter of co-opting the theoretical concept of regular expressions, but you shouldn't be surprised when computer scientists (and many programmers) look at you funny when you say that.
Write whatever program you what using whatever computational pattern you want, it's still implemented on a computer that is made up of billions of interlinked FSMs. All a compiler is is a complicated way of programming a giant FSM.
You appear to be confusing two different levels of abstraction: (1) programs, and (2) programs running on particular hardware.
The programs themselves are realizations of a model that's mathematically equivalent to Turing machines. (That was proved in 1936 when the lambda calculus and Turing machines were published within months of each other. Soon thereafter, the authors of those papers, Alonzo Church and Alan Turing, proved their models were equivalent even though they looked very different.)
With current technology, the hardware we use to run most programs is usually limited by engineering decisions that make the hardware faster and cheaper to manufacture, but that's just a peculiarity of current hardware. We know how to build hardware that would be equivalent to a Turing machine until you run into limits imposed by the size of the observable universe and the practical cost of extracting resources from distant galaxies. For whatever reason, you are emphasizing those physical limits, which have no practical importance and are even less relevant to discussions of cognitive theory.
No. A compiler is a translator that translates from one language to another. The source language is usually Turing-complete. The target language doesn't have to be Turing-complete, but it often is, as when javac translates from Java to JVM byte code.
I mentioned, for example, the theoretical fact that finite state automata cannot enforce the context-free constraint that parentheses (and curly braces etc) must be properly nested. That's computability theory, and has nothing to do with computational complexity. That and related facts of computability theory explain why finite state automata are used in lexical analyzers but are not used in the parser modules of compilers.
Go open your compiler source. It's probably using either a 32 bit or 64 bit integer to keep track of parentheses depth. It might be programmed in the style of a push down, but it's actually a FSM.
Regular expressions recognize/decide exactly the same class of languages as finite state automata, and are theoretical models in exactly the same way that finite state automata are. You may insist that using regular expressions to perform computation is a matter of co-opting the theoretical concept of regular expressions, but you shouldn't be surprised when computer scientists (and many programmers) look at you funny when you say that.
Then they aren't aware of the serious theoretical implications of computability classes.
The programs themselves are realizations of a model that's mathematically equivalent to Turing machines. (That was proved in 1936 when the lambda calculus and Turing machines were published within months of each other. Soon thereafter, the authors of those papers, Alonzo Church and Alan Turing, proved their models were equivalent even though they looked very different.)
With current technology, the hardware we use to run most programs is usually limited by engineering decisions that make the hardware faster and cheaper to manufacture, but that's just a peculiarity of current hardware. We know how to build hardware that would be equivalent to a Turing machine until you run into limits imposed by the size of the observable universe and the practical cost of extracting resources from distant galaxies. For whatever reason, you are emphasizing those physical limits, which have no practical importance and are even less relevant to discussions of cognitive theory.
There's actually a specific type of machine that this refers to. It's called an LBA, or linear bounded automata. A Turing machine with a bounded tape. If you further limit the machine so it has a fixed length tape regardless of the input length, which is more inline with what computers that we can build in this universe are actually capable of, the computibility class drops even further.
Yes, with mathematical language definitions, they can meet the requirements of certain computibility classes, especially with lexical parsers. A parser language can intentionally limit itself to a given computibility class, but the most important thing about this limitation is most often memory and time requirements, returning us to complexity classes.
Your statement that this only matters if we have a problem we need to solve that would require more states than the computer has is true. It's also true that such a problem would likely take more time to process than the lifetime of the universe, so in this universe, it really doesn't matter.
I think there is violent agreement here. Consciousness exists in this universe and assuming it operates using known physics, it can be represented with a FSM. Worrying about whether or not we can build a "real" Turing machine is pointless. The important part for this thread is that barehl is claiming that he needs to develop a computibility class beyond Turing machines. My point in this is it simply isn't possible from a computibility standpoint to go beyond even just an FSM. Your point seems to be that any such distinction beyond FSM is pointless, we can use FSMs to building "arbitrarily" large LBAs.
My compiler source is online at GitHub, so you can open it too. To make that easier for you, my remarks below contain some links to relevant source code.
I will also provide a few links to other resources you would do well to examine.
Although I happen to have written that particular parser generator myself, its inputs are largely compatible with those of a parser generator written by Charles Fischer and described in the various editions of his textbook. There are hundreds of other parser generators that translate augmented context-free grammars into executable pushdown automata. Most compilers incorporate a parser implemented as a pushdown automaton generated by one of those parser generators.
In my compiler, the core of the lexical analyzer is a deterministic finite-state automaton generated directly from an augmented list of regular expressions using bog-standard computability theory as taught in undergraduate courses on the theory of computation. Although I happen to have written that particular lexical analyzer generator myself, it is similar to hundreds of other lexical analyzer generators and regular expression libraries. (Note that many "regular expression" libraries incorporate ad hoc extensions that allow them to handle a few things that transcend the class of regular languages.)
You're making the same mistake barehl made. The only bound on the size of an LBA's tape is derived from the size of its input. Before you supply the input, there is no bound on the tape size that will be required by the LBA.
That's why the technology needed to build an LBA is essentially the same as the technology needed to build an unbounded Turing machine. That's why barehl's claim that current computers are LBAs but not Turing machines was so silly.
You appear to be using words you don't fully understand, as in the "lexical parsers" phrase I highlighted. People who write compilers use the phrase "lexical syntax" to refer to the layer of syntax that can be described by regular expressions, reserving the word "parser" to refer to the component that parses the context-free syntax that regular expressions are incapable of describing.
A parser language can intentionally limit itself to a given computibility class, but the most important thing about this limitation is most often memory and time requirements, returning us to complexity classes.
Although it is not technically incorrect to refer to any Turing-recognizable language as a "parser language", the programming community in general and compiler writers in particular seldom use the word "parser" in connection with any computability class other than the class of context-free languages and pushdown automata, or in connection with some subclass (e.g. unambiguous CFLs, LR(k), LALR(1), LL(1)) that is more extensive than the class of regular languages.
The most important thing about the relevant (sub)class of context-free grammars is its expressive power, not its memory and time requirements. That is especially true for subclasses of the deterministic context-free languages, which can be parsed in linear time and linear space. There is, for example, only a small constant factor of difference between the space and time consumed by LR(k) versus LALR(1) versus LL(1) parsers. The fact that LR(k) grammars are more expressive than LALR(1) grammars, which are more expressive than LL(1) grammars, is far more important than that small constant factor of efficiency.
If you don't believe me, you should ask someone who's had to deal with shift-reduce conflicts in yacc or a similar parser generator. (You could, for example, ask me.)
There is violent agreement between us concerning the irrelevance of barehl's discussions of computability to his cognitive theory.
There is considerable disagreement here between you and me concerning the theoretical and practical importance of computability, mainly because you're just wrong on so many details.
Consciousness exists in this universe and assuming it operates using known physics, it can be represented with a FSM. Worrying about whether or not we can build a "real" Turing machine is pointless. The important part for this thread is that barehl is claiming that he needs to develop a computibility class beyond Turing machines. My point in this is it simply isn't possible from a computibility standpoint to go beyond even just an FSM. Your point seems to be that any such distinction beyond FSM is pointless, we can use FSMs to building "arbitrarily" large LBAs.
No. That is not my point, and by suggesting that is my point you are very nearly accusing me of making some of the mistakes you're making.
When I responded to barehl, my main point was that he didn't seem to understand that LBAs are no more finite (or infinite!) than Turing machines, and are no more difficult to build than Turing machines. On that point, you appear to be burdened by the same misconception as barehl.
Once I began to address your remarks instead of barehl's, my main point has been that the distinctions between regular, context-free, and unrestricted languages (or, equivalently, between finite-state automata, pushdown automata, and Turing machines) are not just theoretical, but are also of great practical importance.
I used compilers as my example because most programmers are aware that compilers are important---even if, like you, they don't really understand how compilers work.
So sorry I did not realize your compiler was written is scheme. When I think of compiler, I think of LLVM, GCC, etc. Fine, it's defined in language as using a limitless stack. However, within your scheme implementation, your stack pointer will still be 64 bits on x86-64. You are not a pushdown. You can claim that the way you wrote your compiler was with a limitless stack, but you cannot implement such a thing in reality. Every scheme implementation you use or can possibly build will have a bounded stack. Saying you can do a thing is very different from actually being able to do it.
You're making the same mistake barehl made. The only bound on the size of an LBA's tape is derived from the size of its input. Before you supply the input, there is no bound on the tape size that will be required by the LBA.
Which is why I added "If you further limit the machine so it has a fixed length tape regardless of the input length, which is more inline with what computers that we can build in this universe are actually capable of, the computibility class drops even further." Which your reply conveniently clipped.
That's why the technology needed to build an LBA is essentially the same as the technology needed to build an unbounded Turing machine. That's why barehl's claim that current computers are LBAs but not Turing machines was so silly.
The distinction between LBA and Turing machine is still important from a computability standpoint. There are many problems that involve a bounded input, but have unbounded space requirements. But again, I'll give you the practical standpoint. We can't actually build either, so when it comes to building computers, it doesn't matter. And as you imply, when building an actual computer, you have to build the input tape as well. If you had the tech to build an unbounded input tape, you could build an unbounded Turing machine just as well.
You appear to be using words you don't fully understand, as in the "lexical parsers" phrase I highlighted. People who write compilers use the phrase "lexical syntax" to refer to the layer of syntax that can be described by regular expressions, reserving the word "parser" to refer to the component that parses the context-free syntax that regular expressions are incapable of describing.
So sorry I swapped the word parser for analyzer. The word parse literally means to analyze. I understand that in general parser is used to refer to the thing that processes the output of the lexical analyzer, but how incredibly pedantic.
The most important thing about the relevant (sub)class of context-free grammars is its expressive power, not its memory and time requirements. That is especially true for subclasses of the deterministic context-free languages, which can be parsed in linear time and linear space. There is, for example, only a small constant factor of difference between the space and time consumed by LR(k) versus LALR(1) versus LL(1) parsers. The fact that LR(k) grammars are more expressive than LALR(1) grammars, which are more expressive than LL(1) grammars, is far more important than that small constant factor of efficiency.
The two things are a tradeoff. Expressive power vs memory/time requirements. If you can write something using only a regular grammar, that's a big win when it comes to processing it from a memory/time requirements point of view. You only bump up the expressive power if you need to, because it means an increase in memory/time requirements.
When designing a grammar/language, think of the logic behind making it an expressive as it needs to be, but no more. You then know exactly what automaton is needed to parse the grammar. And the reason that is important? Speed and memory requirements of different classes of automaton are vastly different.
BTW, my favorite example will always be people wishing the HTML was regular.
On the flip side, I've seen plenty of grammars produced by people that have gone way beyond what they needed. Such a pain.
There is considerable disagreement here between you and me concerning the theoretical and practical importance of computability, mainly because you're just wrong on so many details.
Every imaginable analyzer run on any imaginable computer can understand precisely one grammar, regular. Anything else you can keep pumping until you run out of memory. The usefulness of using computability classes to classify grammars is that it determines which automatons will find the grammar to be computable. That alone would not be useful. After all, if we could just grab a pushdown off the shelf instead of a FSM, who would care? Again, the reason it matters is it maps quite directly to complexity classes.
Once I began to address your remarks instead of barehl's, my main point has been that the distinctions between regular, context-free, and unrestricted languages (or, equivalently, between finite-state automata, pushdown automata, and Turing machines) are not just theoretical, but are also of great practical importance.
In the context of compilers, computability theory is used directly to limit/measure complexity. I say this because everything that gets built in the end is an FSM. Limiting the expressiveness of your grammar simply allows you to limit the time/space requirements of the FSM you use to parse it. And of course with anything beyond a regular grammar, you have to also impose artificial limitations, such as maximum nesting depth, or have them imposed on you by reality.
I used compilers as my example because most programmers are aware that compilers are important---even if, like you, they don't really understand how compilers work.
It might be technically true that computers are actually finite state machines. They do, after all, have a finite number of states (at least if one disregards the possibility of hardware modifications during runtime) and in theory one could draw a next state transition table for every one of those states (plus every possible external input).
But finite state machines, as defined in computing theory, are in fact a terrible model for general-purpose computers. The "finite" number of states in current common computers is an exponential function whose exponent ranges from the billions to the trillions. (To be clear: the number of states isn't billions or trillions, it's 2 to the power of billions to trillions.)
Furthermore, practical computers are no more the ideal of finite state machines than they are the ideal of universal machines. They aren't the ideal of finite state machines because unlike in an ideal finite state machine as defined in computing theory, the entire state of the entire machine is not available for the selection of the next-state transition. There is no general next state transition table for the machine's entire state. Only a small portion of that state (typically, the states of a few registers and some control signals, or the state of one particular address in memory) is available for any one operation.
In practical terms, that's as much or more of a violation of the strict technical definition of an FSA as the stack or tape (or total number of possible states) not being infinite is a violation of the strict definition of a stack automaton or universal machine.
In any case, no practical programming is accomplished by enumerating the action to be taken for each of vast numbers of specific individual machine states. (There are very rare exceptions.)
So which is a better (albeit imperfect) mathematical model of a general-purpose digital computer: a finite state machine with an unfathomably vast number of states and no compete next state transition table; or a universal machine whose tape is not quite infinite and might therefore overflow given certain starting configurations? Obviously, the latter.
Maybe not obviously? Let's look at a case. I'll take the classic example of parsing the language anbn (that is, a number of a's followed by an equal number of b's).
For anbn, in a finite state automaton, we need about 2m states to parse a subset of the language such that n <= m (m is the maximum beyond which our machine will fail due to "overflow").
In a pushdown automaton, we need only a handful of states, but we also need a stack. The mathematical abstraction has an infinite stack, but any real-world physical machine will have a limit on the stack depth. We need m stack elements to parse a subset of the language such that n<=m.
If we figure that a state or a stack element or a single turing machine tape segment each requires approximately the same amount of hardware (we'll call that amount of hardware a "bit"), there's not much practical advantage to the stack machine. (We should probably also consider the additional hardware for the next state transition table, but that's still linear with m).
But that's no longer the case for a universal machine. We can design a TM with a fixed number of machine states (maybe a few dozen) that encodes the necessary count of a's and countdown of b's using a place-dependent code on the tape, so that the number of positions needed on the tape increases as the log of m instead of m.
What difference does that make? Well, this being the limited finite real world and all, suppose we have enough components on hand to build about a billion bits of hardware. We make an FSA, and find we can parse anbn for n<= 500,000,000 before getting an overflow. We disassemble the FSA and make a PDA instead, and find we can parse anbn for n<= 1,000,000,000 before getting an overflow. So we disassemble that and make a TM. How much does that change m, that practical real-world-important limiting figure?
We then find that our m is now comparable to 2 to the billionth power. I can't type that number into this post in decimal; it would flood for tens of thousands of pages.
And, of course, any real-world general-purpose computer, when properly programmed for the task, can count a's and b's easily beyond the billions. Because its workings are such that they're far better (though still imperfectly) modeled by an ideal TM than by an ideal finite-state machine.
At some n which is much less than our TM's m, the TM will lack sufficient time to finish parsing anbn in the total lifetime of the universe. (So would an FSA or PDA, if we had enough material to build enough bits to get their m that high in the first place, which we don't.) So actually, in practical terms m is not limiting in any way for the TM.
Of course, some might say, this difference is only a performance/runtime/memory-requirements issue. But if we want to make any comparison to models of human cognition, which had to evolve from simpler systems by means of genetic variation and input (selection) from the environment, again a finite-state machine is likely to be a poor model. There is nothing in that evolutionary history that suggests the possibility of evolving adaptive responses for each of a vast number of possible states individually.
I think your idea that you have a savings where one grows logarithmically and ones grows linearly is false. In computers, FSMs typically aren't represented using a storage element for each state. You store that state in a register, the length of with grows logarithmically with the number of states.
In what follows, the spoilers supply supporting details or historical context, or explore relevant side issues.
To emphasize that what I say below is the mainstream view among computer scientists in general as well as among compiler writers, I'm going to cite specific theorems from
Michael Sipser. Introduction to the Theory of Computation, Third Edition.
Cengage Learning, 2013.
As stated in Sipser's Preface to the First Edition, that book was "intended as an upper-level undergraduate or introductory graduate text in computer science theory." As you might infer from the "Third Edition", Sipser's book has been a successful textbook.
It is, in fact, the standard undergraduate-level textbook for courses that cover both both computability and computational complexity. Sipser's book so dominates that market that my colleagues would be moderately surprised if I were to use any other textbook when teaching the undergraduate course on theory of computation. I used Sipser's textbook this past semester and will use it again during the spring semester.
As noted at Wikipedia, Sipser is Dean of Science at MIT, a fellow of the American Academy of Arts and Sciences, a fellow of the American Mathematical Society, and an ACM Fellow.
Personal note: Shortly after Sipser joined the math faculty at MIT, he served on my dissertation committee. That was a long time ago, and he did not recognize or remember me when we last spoke a couple of years ago.
Theory is relevant to practice. It provides conceptual tools that practitioners use in computer engineering.
—Michael Sipser, Introduction to the Theory of Computation.
Compilers, for example, are eminently practical tools, familiar to every computer programmer.
When writing a compiler, there are eminently practical reasons for implementing the lexical analyzer as a deterministic finite-state machine, for implementing the parser as a pushdown automaton, and for implementing the type checker using a Turing-complete language. Those reasons are closely connected to the theoretical facts that some of the jobs performed by a type checker (such as limiting uses of each variable to its scope) cannot be performed by a pushdown automaton, and that some of the jobs performed by the parser (such as enforcing proper nesting of parentheses) cannot be performed by a finite-state machine.
Go open your compiler source. It's probably using either a 32 bit or 64 bit integer to keep track of parentheses depth. It might be programmed in the style of a push down, but it's actually a FSM.
The source code of my compiler refuted RussDill's idea of how it keeps track of nested parentheses. My compiler's parser is indeed programmed as a pushdown automaton, because that's what it is.
RussDill responded by acting as though the specific compiler he had asked me to examine is atypical:
The LLVM project is mostly about what compiler writers call the "middle" and "back end", which has absolutely nothing to do with parenthesis depth or parsing in general. There are many affiliated projects that add a front end to LLVM. The LLVM project itself includes a complete compiler named clang.
The clang parser, like the parser in my compiler, is implemented as a pushdown automaton. It is hand-written, mostly using recursive descent, whereas my parser is a computer-generated recursive descent parser. Another difference is that the clang parser uses operator precedence instead of recursive descent to parse unparenthesized expressions; this is merely an optimization that reduces the number of recursive function calls.
The clang parser does keep track of the depth of parenthesis nesting, using an unsigned short instance variable (as opposed to a single variable as suggested by RussDill). That instance variable is used only in an assertion (as a sanity check) and during recovery from syntax errors (to skip characters following an error until it gets to the matching parenthesis, where it can resume normal parsing). That variable is not needed when parsing correct programs, because the nesting of parenthesized expressions is handled using recursive descent.
To my surprise, the clang parser imposes an arbitrary and fairly small limit on the depth of parenthesis nesting. I see no reason for this.
The parser in the Gnu C compiler (gcc) used to be a table-driven pushdown automaton generated by bison, which is similar to yacc. The gcc compiler now uses a recursive descent parser similar to the one in my compiler except the gcc parser is hand-written instead of machine-generated.
Fine, it's defined in language as using a limitless stack. However, within your scheme implementation, your stack pointer will still be 64 bits on x86-64. You are not a pushdown. You can claim that the way you wrote your compiler was with a limitless stack, but you cannot implement such a thing in reality.
Programs have meanings independently of any particular hardware on which they may run. Were that not so, we would not be able to write portable programs that behave the same when run on dissimilar hardware.
RussDill dismisses that, because his argument falls apart if he can't appeal to restrictions imposed by the hardware.
Linear-bounded automata recognize context-sensitive languages. Turing machines recognize the larger class of languages that are generated by unrestricted grammars.
The two things are a tradeoff. Expressive power vs memory/time requirements. If you can write something using only a regular grammar, that's a big win when it comes to processing it from a memory/time requirements point of view. You only bump up the expressive power if you need to, because it means an increase in memory/time requirements.
To abstract away from constant factors attributable to hardware, which used to get bigger and faster every year, the theory of computational complexity uses asymptotic notation.
As I have explained in my previous posts, LR(k) parsers run in linear time and space. The important difference between LR(k) pushdown automata and finite automata is not computational complexity, but expressiveness. LR(k) grammars are capable of expressing the context-free syntax of programming languages, and LR(k) pushdown automata are capable of checking that syntax. Regular expressions are not as expressive as LR(k) grammars, so they cannot express the context-free syntax of programming languages, and finite automata are not capable of checking that context-free syntax.
When designing a grammar/language, think of the logic behind making it an expressive as it needs to be, but no more. You then know exactly what automaton is needed to parse the grammar. And the reason that is important? Speed and memory requirements of different classes of automaton are vastly different.
As I have said several times now, LR(k) pushdown automata and finite automata both run in linear time, and both use linear space (assuming we count the size of the input as part of that space).
RussDill is saying there's a vast difference between linear and linear. That's silly.
Every imaginable analyzer run on any imaginable computer can understand precisely one grammar, regular. Anything else you can keep pumping until you run out of memory. The usefulness of using computability classes to classify grammars is that it determines which automatons will find the grammar to be computable. That alone would not be useful. After all, if we could just grab a pushdown off the shelf instead of a FSM, who would care? Again, the reason it matters is it maps quite directly to complexity classes.
The complexity classes considered by the theory of computational complexity do not distinguish between the linear time and linear space used by an LR(k) pushdown automaton and the linear time and linear space (counting the input) used by a deterministic finite automaton.
The important difference between LR(k) pushdown automata and finite automata is not complexity classes, which are the same for both, but computability. LR(k) pushdown automata can decide languages that finite automata cannot.
The LR(k) languages are also known as the deterministic context-free languages. They are recognized by the deterministic pushdown automata. In Sipser's Third Edition, those facts are stated as Theorem 2.66 and Lemma 2.67.
The fact that LR(k) languages can be parsed in linear time and space by a deterministic pushdown automaton (which I refer to above as an LR(k) pushdown automaton) is stated (and often proved) in mainstream compiler textbooks. The efficiency of LR(k) parsing is one of the reasons computer scientists look askance on programming languages whose context-free syntax is not LR(k).
Fun fact: The context-free syntax of C++ is not LR(k). This was not discovered until it was too late to fix. Fortunately, C++ can be parsed using an LR(k) parser augmented by some ad hoc workarounds that cannot be programmed while staying within the limits of pushdown automata, but are not hard to program using a Turing-complete language.
In the context of compilers, computability theory is used directly to limit/measure complexity. I say this because everything that gets built in the end is an FSM. Limiting the expressiveness of your grammar simply allows you to limit the time/space requirements of the FSM you use to parse it.
It's hard for me to understand why someone would continue to insist that the difference in computability (expressiveness) between LR(k) grammars (generating languages that are decided by deterministic pushdown automata) and regular expressions/grammars (generating languages that are decided by finite automata) is important only because the linear running time and space needed by deterministic pushdown automata is greater than the time and space needed by finite automata.
It seems to me that people who say such things simply do not know what they're talking about.
And of course with anything beyond a regular grammar, you have to also impose artificial limitations, such as maximum nesting depth, or have them imposed on you by reality.
That's like rejecting the usefulness of Maxwell's equations because charge is quantized.
Scientists create simplified models of reality. They create these scientific models because simple theories that allow us to understand and to make predictions about the world are amazingly useful.
In science, the general rule of thumb is "Everything should be made as simple as possible, but no simpler." Albert Einstein said that more precisely:
Einstein said:
It can scarcely be denied that the supreme goal of all theory is to make the irreducible basic elements as simple and as few as possible without having to surrender the adequate representation of a single datum of experience.
RussDill insists all languages are regular, and all automata are finite, because reality. Let's see whether RussDill's approach is simpler than the mainstream theory I've set forth. Let's see whether RussDill's approach makes it easier to understand what's going on in real programs such as compilers.
To give credit where credit is due, both barehl and Myriad have already challenged RussDill on this:
There is a limited amount of matter and energy in the universe that is within our cosmic horizon. Nothing you build in this universe is potentially infinite. Everything you can build can be reduced to a very large finite state machine.
That is true for any specific problem. But it isn't really true for general problems. You would end up needing to have collections of finite state machines and then additional FSMs to decide which one to use. You quickly get into intractability where the size and complexity of the FSM grows much faster than the complexity of the problem. So, as far as I can tell, theoretically true but not practical.
It might be technically true that computers are actually finite state machines. They do, after all, have a finite number of states (at least if one disregards the possibility of hardware modifications during runtime) and in theory one could draw a next state transition table for every one of those states (plus every possible external input).
But finite state machines, as defined in computing theory, are in fact a terrible model for general-purpose computers. The "finite" number of states in current common computers is an exponential function whose exponent ranges from the billions to the trillions. (To be clear: the number of states isn't billions or trillions, it's 2 to the power of billions to trillions.)
I think your idea that you have a savings where one grows logarithmically and ones grows linearly is false. In computers, FSMs typically aren't represented using a storage element for each state. You store that state in a register, the length of with grows logarithmically with the number of states.
As Myriad says, the number of states grows exponentially. As RussDill said, the number of bits needed to represent a state grows only logarithmically with the number of states.
To get serious, let's return to one of the examples RussDill himself suggested (the parser in my compiler), and let's compare the simplicity and usefulness of the mainstream description of that parser against the simplicity and usefulness of RussDill's insistence that we think of it as a finite state machine.
To simplify the comparison, let's think of the parser as a mere syntax checker, ignoring the machinery that converts the input into an abstract syntax tree.
In the mainstream description, the parser is a deterministic pushdown automaton with only one interesting state and a stack alphabet consisting of 44 symbols. The stack symbols are divided into 22 non-terminals and 22 "return addresses" that represent a position within the right-hand side of some production. There is a direct and obvious correspondence between that pushdown automaton and the context-free grammar from which it was generated, automatically, by my parser generator.
Although the number of non-terminals happens to be the same as the number of "return addresses", that's just a coincidence.
Sipser's Lemma 2.21: If a language is context free, then some pushdown automaton recognizes it.
Sipser's proof of that lemma is constructive: It tells you how to convert an arbitrary context-free grammar into a pushdown automaton that recognizes the language generated by that grammar.
That automaton is really simple:
Push a bottom-of-stack marker.
Push the grammar's start symbol.
Repeat the following:
If the top of the stack is a non-terminal, pop it off the stack and replace it by pushing the symbols on the right-hand side of some production for that non-terminal, selecting that production non-determistically.
If the top of the stack is a terminal that matches the next input token, pop the stack and consume the token.
If the top of the stack is the bottom-of-stack symbol, then accept if all input tokens have been consumed, else reject.
For an LL(1) grammar, we don't need the non-determinism because we can tell which production to use by looking at the next input token.
We don't have to push all of the symbols on the right hand side of the selected production, because it's enough to know where you are within that right hand side. In a recursive descent parser, that information is represented by a return address.
In RussDill's description, the parser is a deterministic finite state automaton, but RussDill can't tell you how many states that DFA will have until you give him a complete bit-level description of the hardware on which the parser is running. Even then, RussDill won't be able to tell you how many states that DFA will have until you tell him what the input will be.
With the mainstream description, the description of the parser is independent of the hardware and is also independent of the input. With RussDill's description, the parser can't even be described until you know both the hardware and the input.
I'm going to do RussDill a favor by ignoring the fact that his description always depends on the hardware. Let's just calculate a hardware-independent lower bound for the number of states RussDill's description will need when parsing a few typical inputs. We can calculate that lower bound by raising the number of stack symbols (44) to the maximum depth of the stack (which depends upon the input).
One of the reasons for writing your own compiler is that you can then easily modify the compiler to report information such as the maximum stack depth. I'm sure RussDill won't object to using my own compiler to obtain this information, because he's the one who suggested we look at that compiler in the first place.
As our first input, we'll compile Larceny's standard R7RS/R6RS/SRFI libraries. That involves almost a million state transitions, with a maximum stack depth of 1620. For that input, RussDill's description of the parser as a finite automaton will involve about 2.47 × 102663 states. We can distinguish that many states using less than 8850 bits.
As our second input, we'll do a full system build of Larceny from source, omitting the final step that compiles those standard R7RS/R6RS/SRFI libraries. That involves over ten million state transitions, with a maximum stack depth of 11472. For that input, RussDill's description of the parser will involve about 4.9 × 1018854 states. We can distinguish that many states using less than 62700 bits.
Maybe it's just me (and barehl and Myriad), but I doubt whether RussDill's description of my parser as a finite state automaton with a supra-astronomical input-dependent number of states is going to be any simpler or more useful or more practical than the mainstream description of that parser as a pushdown automaton whose structure can be read directly off of the LL(1) grammar from which it was generated.
To be fair, we'll have to await RussDill's detailed explanation of those states.
For the past two years I had no idea why the comments on here were so hostile and dismissive. And then today I read Christopher Langan's paper, The Cognitive-Theoretic Model of the Universe: A New Kind of Reality Theory. His theory gave me a good laugh, but then it occurred to me that people here probably see me the same way. Of course, that gave me another good laugh.
Years ago my sister thought that a Commodore 64 was the same as a Vic 20. That surprised me at the time because I knew that almost nothing about them was the same. The C-64 had a different processor with a port used for bank switching, different video chip with sprite graphics, a dedicated sound chip, more than 10x as much memory, and even different I/O chips. And then I realized that if you didn't know what was inside, they looked like the same computer with a different colored case. I suppose that along those same lines my ideas could look similar to Langan's. But this is what Langan says:
The CTMU says that by its self-generative, self-selective nature, which follows directly from the analytic requirement of self-containment, reality is its own “designer”. Other features of the generative grammar of reality imply that reality possesses certain logical properties traditionally regarded as theological or spiritual, and that to this extent, the self-designing aspect of reality is open to a theological or spiritual interpretation. The CTMU, being a logical theory, does not attempt to force such an interpretation down anyone’s throat; not all semantic permutations need affect theoretical structure. What it does do, however, is render any anti-theological interpretation a priori false, and ensures that whatever interpretation one chooses accommodates the existence of an “intelligent designer”…namely, reality itself. In light of the CTMU, this is now a matter more of logic than of taste.
Reminiscent of Descarte's Meditations on First Philosophy which makes some good observations about the mind but then claims that it proves the existence of God: So God — a being with infinite formal reality — must exist (and be the source of my idea of God).
Uh huh. If I ever start trying to rationalize intelligent design or prove the existence of God, someone should just shoot me.
It's sort of like the difference between an honest discussion and a discussion in which one of the participants, when quoting another, has to excise the two paragraphs that explained why his remarks were silly so he can pretend the person who explained the silliness was actually agreeing with the silliness.
You aren't trying to have an honest discussion. I don't why you pretend that you are. A Turing Machine is the most basic device that can run a useable program. Back in the early days there wasn't any magnetic tape or RAM. And since paper tape once punched could not be reused it was necessary to specify a tape of infinite length.
It's funny how when I try to make a technical point you claim that I'm being overly precise and then when I generalize you claim that I don't understand the true technical differences. I'm done playing semantic games with you.
You aren't trying to have an honest discussion. I don't why you pretend that you are. A Turing Machine is the most basic device that can run a useable program.
Lexical analyzers and parsers are usable programs. Computer writers use them, and computer programmers in general rely on those programs being usable, even if they don't realize it.
Lexical analyzers and parsers are routinely implemented as finite automata and pushdown automata, respectively. Both of those classes of automata are less powerful/expressive than Turing machines.
Back in the early days there wasn't any magnetic tape or RAM. And since paper tape once punched could not be reused it was necessary to specify a tape of infinite length.
The un-reusability of paper tape is not the reason Turing machines are defined to have a tape of unbounded length whose cells can be reused indefinitely.
Fine. I will, however, continue to correct your mistakes whenever I feel like it. Readers of your posts should not assume they are correct simply because I haven't bothered to note any errors.
A Turing machine is a mathematical model of computation that defines an abstract machine[1] which manipulates symbols on a strip of tape according to a table of rules.[2]
A Turing machine is not a physical device. It is a mathematic model that can run any program al all.
A Turing machine has a tape that is defined to be to be infinite in length:
The machine operates on an infinite[4] memory tape divided into discrete cells.[5].
... Physical description
In his 1948 essay, "Intelligent Machinery", Turing wrote that his machine consisted of:
...an unlimited memory capacity obtained in the form of an infinite tape marked out into squares, on each of which a symbol could be printed. At any moment there is one symbol in the machine; it is called the scanned symbol. The machine can alter the scanned symbol, and its behavior is in part determined by that symbol, but the symbols on the tape elsewhere do not affect the behavior of the machine. However, the tape can be moved back and forth through the machine, this being one of the elementary operations of the machine. Any symbol on the tape may therefore eventually have an innings.[17] (Turing 1948, p. 3[18])
Sorry boys, I'm done wading in the kiddie pool. You can high five each other without me if it makes you feel better. I'll post something when I have more progress. Later.
Sorry boys, I'm done wading in the kiddie pool. You can high five each other without me if it makes you feel better. I'll post something when I have more progress. Later.
Sorry boys, I'm done wading in the kiddie pool. You can high five each other without me if it makes you feel better. I'll post something when I have more progress. Later.
Looks like you think insults will encourage people to take you seriously barehl!
The progress that you can make should start with learning what the definition of a Turing machine is - they run all programs including useless ones on an infinite tape.
Looks like it's been about four months. I would say that the research during that time could have been covered in three technical papers.
Falsification of the Turing Test: An analysis of the TT indicates that it is not a useful yardstick for determining human-equivalence in a Church-Turing based AI.
Disproving brain/Turing Machine equivalence.
The fundamental laws of information gain in non-cognitive, non-replicating and replicating systems.
Looks like it's been about four months. I would say that the research during that time could have been covered in three technical papers.
Falsification of the Turing Test: An analysis of the TT indicates that it is not a useful yardstick for determining human-equivalence in a Church-Turing based AI.
Disproving brain/Turing Machine equivalence.
The fundamental laws of information gain in non-cognitive, non-replicating and replicating systems.
You and I see things very differently. I normally view the progress as going at a snail's pace. I've been working on a disproof of the computational theory of mind since 2014 and information gain for a couple of years. I finally had some insights that provided a formal disproof and that led to some conclusions about the Turing Test.
Yes, Hitchens' razor. Unfortunately, either agreement or disagreement without comprehension is of no value. Since no one here has any understanding of my research there is also no way to determine if I'm an attention-seeking crackpot or a scientist making genuine progress. Either conclusion has the same value.
Looks like it's been about four months. I would say that the research during that time could have been covered in three technical papers.
Falsification of the Turing Test: An analysis of the TT indicates that it is not a useful yardstick for determining human-equivalence in a Church-Turing based AI.
Disproving brain/Turing Machine equivalence.
The fundamental laws of information gain in non-cognitive, non-replicating and replicating systems.
Well, let's see. The title of the thread is "Cognitive Theory, ongoing progress", and the post was about ongoing progress with cognitive theory. I can see why you were confused. Is there anything else you need explained?
Well, let's see. The title of the thread is "Cognitive Theory, ongoing progress", and the post was about ongoing progress with cognitive theory. I can see why you were confused. Is there anything else you need explained?
Let me see if I get this straight. In the other sections people have claims of photographing ghosts, bigfoot, aliens, electric comets, the flow of dark, free energy, and all sorts of psychic phenomenon which people here apparently don't mind discussing. There have been write-ups in popular magazines of claimed technologies that are patently false such as cold fusion, nanite manufacturing, two separate devices that can draw water out of desert air, and Musk's claims about a hyper speed vacuum train.
And, yet for some reason, which I can't fathom, I draw a vastly higher standard. This dishonesty is pretty obvious but no one here seems to mind it. I suppose it could be due to some aspect of human relations that I'm not aware of. Perhaps I've violated some playground rule that has given people here permission to pile on. I don't know.
But, if honesty means anything to you then try answering these questions:
What law of physics have I claimed could be violated?
What proven theory have I disagreed with?
Where is the attention seeking such as a website, Youtube videos, Facebook page, or crowd funding?
When have I sought validation, praise, or agreement here?
Do I claim to have working hardware or systems?
Do I claim to have a completed theory?
Do I state with certainty that I can solve consciousness or that I can do it in a short period of time?
Where do I resort to supernatural or mystical claims?
1. To the best of my knowledge, none.
2. Again, none that I'm aware of. I do disagree with the computational theory of mind, but this theory hasn't been proven in 70 years.
3. I don't have any of these. Instead I choose to post in an obscure, low traffic forum.
4. My research doesn't depend on agreement. Like all science, if it is correct, it works whether anyone believes it or not; and if it is wrong then it fails regardless of belief, praise, or wishful thinking.
5. Until you have a working theory I don't see how research could begin on systems or hardware.
6. After 4 1/2 years I still cannot explain how consciousness works.
7. I think that if consciousness can be solved then I have a good chance of doing it. I don't know how long that might take.
8. Simply put, I don't. I think the mind is entirely a product of the brain and I think it has a mechanistic explanation.
So, what progress have I made that seems so impossible?
I created a model of the awareness system in the brain back in 2015. I created Knowledge Theory in 2016. Since then I have made some progress in defining free will. I have some speculation about cognitive development in primates and why sapiens seemed to be the only species to acquire a general version. I finally came up with a disproof of the computational theory of mind. I guess it's strange to me that if someone posted a link to Kastrup's "proof" of Idealism people here would take it at face value and discuss it as though it was a real theory with some connection to reality even though the idea is ludicrous.
The issue isn't that your claims are outrageous (they may be, they may not be). The issue is that you have done nothing beyond making the claims. What is the content of knowledge theory, what is your model o the awareness system in the brain, how have you defined free will? Etc. You decline to go into details, so there's nothing to discuss.
Maybe you have done all of these things, I just don't see the point in your telling that you've done them without discussing how. If someone posted a link to Kastrup's "proof" of Idealism people here might discuss it because they'd actually have the content of the supposed proof to discuss.
You haven't actually posted any content for us to discuss, only claims that said content exists.
That is 3 unsupported claims, not papers. Given the previous posts that show some ignorance about Turing machines, it is unlikely that thee claims are about real Turing machines.
The Turing test makes your first claim obviously wrong.
The Turing test, developed by Alan Turing in 1950, is a test of a machine's ability to exhibit intelligent behavior equivalent to, or indistinguishable from, that of a human. Turing proposed that a human evaluator would judge natural language conversations between a human and a machine designed to generate human-like responses. The evaluator would be aware that one of the two partners in conversation is a machine, and all participants would be separated from one another. The conversation would be limited to a text-only channel such as a computer keyboard and screen so the result would not depend on the machine's ability to render words as speech.[2] If the evaluator cannot reliably tell the machine from the human, the machine is said to have passed the test. The test does not check the ability to give correct answers to questions, only how closely answers resemble those a human would give.
And, yet for some reason, which I can't fathom, I draw a vastly higher standard. This dishonesty is pretty obvious but no one here seems to mind it. I suppose it could be due to some aspect of human relations that I'm not aware of. Perhaps I've violated some playground rule that has given people here permission to pile on. I don't know.
How can you not see why your claims are met with derision?
So far this entire thread has been you making unsupported claims followed by nonsensical excuses for why you can't back them up. My understanding is that you can't explain anything until you are completely finished, in any case we wouldn't understand it, you won't post explanations to this site anyway, and you need to wait for political change to occur before what you know can be revealed.
They be. Those are some pretty fundamental concepts barehl is claiming to have established and/or overturned, without any evidence of it happening. The arrogance and excuse-making only confirm the woo.
An actual paranoid genius, the kind barehl is trying to emulate, wouldn't be here posting his "progress" for the purposes of attention, he'd be quietly crouched over his surplus army field ration while going over the proof again just to be sure.
Let me see if I get this straight. In the other sections people have claims of photographing ghosts, bigfoot, aliens, electric comets, the flow of dark, free energy, and all sorts of psychic phenomenon which people here apparently don't mind discussing. There have been write-ups in popular magazines of claimed technologies that are patently false such as cold fusion, nanite manufacturing, two separate devices that can draw water out of desert air, and Musk's claims about a hyper speed vacuum train.
And, yet for some reason, which I can't fathom, I draw a vastly higher standard.
Are you really sure these are the kind of peers you want to be compared to? Because so far you're doing a great job of making sure no one takes you any more seriously than they do bigfoot or darksuckers.
Nothing is moving in the foundations of physics. One experiment after the other is returning null results: No new particles, no new dimensions, no new symmetries. Sure, there are some anomalies in the data here and there, and maybe one of them will turn out to be real news. But experimentalists are just poking in the dark. They have no clue where new physics may be to find. And their colleagues in theory development are of no help.
The self-reflection in the community is zero, zilch, nada, nichts, null. They just keep doing what they’ve been doing for 40 years, blathering about naturalness and multiverses and shifting their “predictions,” once again, to the next larger particle collider.
That looks so god awful familiar. Theories (like Global Workspace, IIT, etc.) based on wishful thinking that still can't be reconciled with evidence. Plugging away with the same limitations and methodologies that we used 60 years ago. The continuing desperate hope that the next version of Watson or Alpha Zero will at last shed some light on AGI.
The problem is also not that we lack data. We have data in abundance. But all the data are well explained by the existing theories – the standard model of particle physics and the cosmological concordance model. Still, we know that’s not it. The current theories are incomplete.
Yes. There is excellent work being done everyday in computer science, behavioral science, cognitive science and neurology. Everything we do within computer science has already been well explained with computational theory. But we know for a fact that it is incomplete.
I am merely summing up predictions that have been made for physics beyond the standard model which the Large Hadron Collider (LHC) was supposed to find: All the extra dimensions in their multiple shapes and configurations, all the pretty symmetry groups, all the new particles with the fancy names.
They were all wrong. Even if the LHC finds something new in the data that is yet to come, we already know that the theorists’ guesses did not work out. Not. A. Single. One. How much more evidence do they need that their methods are not working?
We could be talking about perceptrons, neural networks, deep learning. Money spent on "self-driving" cars that still don't work. Every single prediction that human reasoning could be nailed down with computational theory has failed miserably over and over and over. Every attempt to create brain models or reasoning models using computational theory has failed.
The perceptron goes back to 1957 and The General Problem Solver to 1959. The Lighthill Report in 1973 stated, "In no part of the field have the discoveries made so far produced the major impact that was then promised".
XCON dates to 1980. The Japanese 5th Generation Computer Project dates to 1981 and DARPA's Strategic Computing Initiative to 1983. Cyc dates to 1984 and Deep Learning to 1986. A decade later it was realized that XCON was too brittle and Cyc still couldn't reason. Even by 2001 the goals had not been met.
By 2007, DARPA was at it again with its Grand Challenge Program and a decade after that, no significant progress.
Deep systems, convolutional systems, feed forward, back propagation, and recurrent neural networks all seemed to come together in 2012. This was it. Now we are at Alpha Zero and still no path forward.
If you look at the sociology of science, bad incentives create substantial inefficiencies. If you look at the psychology of science, no one likes change.
Developing new methodologies is harder than inventing new particles in the dozens, which is why they don’t like to hear my conclusions. Any change will reduce the paper output, and they don’t want this. It’s not institutional pressure that creates this resistance, it’s that scientists themselves don’t want to move their butts.
It's much easier to work on a new algorithm than to create a new field of science. It's far easier to come up with a new spin on existing neural networks than delve into new theory.
I am afraid there is nothing that can stop them. They review each other’s papers. They review each other’s grant proposals. And they constantly tell each other that what they are doing is good science. Why should they stop? For them, all is going well. They hold conferences, they publish papers, they discuss their great new ideas. From the inside, it looks like business as usual, just that nothing comes out of it.
I agree with this too. If it were left up to Deep Mind, IBM, Microsoft, Tesla, Fujitsu, military, graduate and post-doc research we would never move forward. I used to think that this board actually gave a damn about science, that people here cared about evidence and critical thinking. Instead, the mantra of skepticism often seems to be just another tool in gamesmanship, a way to push your own biases and hopes without having to explain them.
How many times have I seen people here parrot, "Extraordinary claims require extraordinary evidence"? I suppose they feel good when they do this, but they don't seem to realize that moon hoaxers, flat earthers, and anti-vaxers use the same arguments.
If that had been the attitude then Goddard would have never bothered with laboratory experiments to prove the Ideal Rocket Equation; he would have instead insisted that Tsiolkovsky prove it conclusively before he would even discuss it. Kepler would never have worked on a sun-centered model and no one at CERN would ever have been looking for a Higgs particle. The "prove it first" chorus isn't science and never has been; proving it is science.
For me, for someone who has spent the past five years dragging the stone up the hill, perspective is a good thing to have. The lack of progress, the unwillingness to move off existing theories even when they don't work, and the inability to conceive of something new isn't just my imagination. I've got about a year to finish the theory if I want to publish in 2021. I don't even know if this is possible; maybe it isn't. But, so far, I've made more progress than anyone else in the field and I'm not stopping.
The lack of progress, the unwillingness to move off existing theories even when they don't work, and the inability to conceive of something new isn't just my imagination. I've got about a year to finish the theory if I want to publish in 2021. I don't even know if this is possible; maybe it isn't. But, so far, I've made more progress than anyone else in the field and I'm not stopping.
I'm not saying you should stop. I just don't think you're going to get anywhere.
Why don't you pick one of those fundamental scientific quandaries you've claimed to disprove and actually disprove it, instead of finding more rogue geniuses to compare yourself to?
Hours ago I sat down at this table, and I've been waiting for someone to serve me dinner. No one has. I'm so disappointed.
No, the table isn't in a restaurant, it's in the kitchen tables display at an Ikea. But they serve food here, right? And it isn't dinner time. And I haven't actually asked anyone for dinner. People keep coming by and asking me what I want, but I figure if they're so dumb they have to ask, they aren't going to be competent to prepare any dinner I'd be willing to eat. So I ignore them.
What a worthless place this is.
On the upside, while I'm sitting here hungry and fuming in self-pity, I have plenty of time to post in this thread. So, barehl, what do you want from other members here?
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.