Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re^2: What Perl CAN'T do?

by Perl Mouse (Chaplain)
on Dec 14, 2005 at 10:55 UTC ( [id://516579]=note: print w/replies, xml ) Need Help??


in reply to Re: What Perl CAN'T do?
in thread What Perl CAN'T do?

perl cannot be written in Perl
If your statement is true, Perl is a less powerful language than say, BASIC or Cobol. See, perl is written in C, a Turing complete language. BASIC, Cobol, and almost any serious language (with the exception of some very domain specific languages) is Turing complete, which means that anything that can be done in one language, can be done in the other.

perl is written in C. Hence, perl can be written in BASIC and Cobol.

Luckely, your statement is false. Perl is a Turing complete language, and hence, perl can be written in Perl.

Perl --((8:>*

Replies are listed 'Best First'.
Re^3: What Perl CAN'T do?
by tirwhan (Abbot) on Dec 14, 2005 at 11:17 UTC

    The OP's question does not make much sense when viewing it from a theoretical point of view (as anyone who understands Turing completeness knows and your post explains). I can as much write perl in Perl as I can carve my name onto the face of the moon with a toothpick or tattoo "I blow goats" onto the forehead of my least-favourite head of state. Both of these things would be possible if I dedicated my life to them and managed to obtain the support of a large enough community of people. I would however consider them to be practical impossibilities. Rewriting perl in Perl has pretty much the same prerequisites and is just as impossible. Do feel free to prove me wrong though :-)


    Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. -- Brian W. Kernighan
      I shall prove you wrong then. To write perl in Perl all that you need to do is write a C interpreter in Perl. But since there are plenty of working C compilers, all that you really need to do is emulate what a C compiler compiles to. Thus you need to write a virtual machine that implements the assembly language of any chip that will run Perl. Which seems to me like a doable, if useless, project. :-)

        While that would probably be doable (and useful^Wprofitable^W erm interesting ;-), it's rather grasping the wrong end of the stick, isn't it? To really have perl you'd need the equivalent of Ponie and Parrot written in Perl5. I know about PPI, and that could probably be a huge first step in the right direction for a parser, but it still doesn't give you the parsing capabilities of the current perl compiler (let alone the runtime etc.).

        Anyway, this subthread has gone for long enough since about two posts ago, and you (tilly) know far more about these things than I do, so if you say it would be practicable to write a program which parses, compiles and runs any given Perl program in Perl5 itself then I'll shut up and downvote myself :-).

        Now, what would be interesting IMO would be an implementation of a Perl6 to PIR compiler in Perl5, sort of a Pugs-in-Perl. I could see someone gathering enough interest to start and complete such a project (though the result would probably have less practical usefulness than Pugs).


        Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. -- Brian W. Kernighan
      Well, the OP has acknowledged that. He states in his posting that he knows there are a lot of things you shouldn't do in Perl. But he's interested in what you are not able to do in Perl.

      If you are answering a different question than is stated, please indicate so in your answer. I wouldn't have replied at all if you had done so.

      Perl --((8:>*

        I wrote my first post before the update. Also, even in the context of the OP's update, it is still impossible to write perl in Perl (if this were an assignment handed out to me @work I'd go look for an employer/client who isn't barking mad. Crazy people sometimes pay the bills handsomely, but never for very long, and certainly not long enough for such a project). You need to understand that "impossible" can mean "impossible in practice" and in respect to the OP's question that is the only definition that makes sense (as I explained in my last post).


        Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it. -- Brian W. Kernighan
Re^3: What Perl CAN'T do?
by sub_chick (Hermit) on Dec 15, 2005 at 06:33 UTC
    That is an interesting point there Perl Mouse...I honestly had no idea that perl can be written in perl. Funny thing is I was pondering that fact just the other day. Thanks for the statement. This being said, what other languages besides C and Perl are able to be written with their own syntax?

    "Es gibt mehr zu Leben als Bücher, kennen Sie. Aber nicht viel mehr " -(Der Smiths)

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://516579]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (3)
As of 2024-03-28 18:22 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found