I disagree with the line of thinking that ease of obfuscation = flexibility = definition of the best programming language.

All programs in all programming languages can be obfuscated. The quality of a language that allows a program to be especially obfuscated is not so much related to flexibility, as much as it is related to the number of language contexts, the allowable set of tokens in a language, and the large scope of operations possible using these tokens.

In the simplest sense, this may relate to 'flexibility', however, there is no evidence that a language with a simpler, or more rigourous syntax, is any less capable, or 'flexible' than a language with a looser syntax, or a richer set of built-in operators. Assembly language has far more flexibility than Perl, in that all Perl can be represented using Assembly language. To many, most programs written or generated in Assembly appear obfuscated without any manipulation at all. This does not make Assembly the 'best language' for programs to be written in.

Obfuscation is an art. Obfuscation is the opposite of poetry. Instead of creating patterns, and token sequences that are pleasant to the eye, obfuscation is the creation of apparently random token sequences that are impossible to ungroup or derive true intentions from. Although obfuscation is the opposite of poetry, it shares qualities and traits with poetry. Languages that provide the best opportunities for obfuscation, or poetry, are those that are not internally consistent, contain numerous contexts, and subtle differences, even for apparently similar token sequences.

Larry Wall believes that programming languages that contain these traits are more naturally familiar to most programmers. The Perl programming language has followed an accelerated evolution that attempts to mimick the evolution of human languages such as English. For this reason, Perl represents an excellent language for those inclined to practice the art of obfuscation.

I personally believe that these qualities of Perl make it popular, but do not make it better. I believe that Perl has evolved to the point that it is a significant competitor in terms of capabilities, even with languages that have been designed from scratch to be excellent, because of the number of talented people that have been drawn to use Perl, or develop Perl. Perl would be nothing without the rich libraries provided by CPAN, or the forced evolution by people who were not satisfied with Perl 4.x and earlier.

Perl is a capable language because it was honed into a capable language over several years. The ability for Perl to be used as a language to practice the art of obfuscation is not a trait that I actively seek out when determining the proper language to be used for a product.


In reply to Re: Re: About Obfuscation by MarkM
in thread About Obfuscation by Ananda

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.