perl, powershell, syntax soup?



On Aug 8, 2:04 pm, Robert Uhl <eadmun...@xxxxxxxxxxxxxxx> wrote:
Bill McCleary <mcclear...@xxxxxxxxxxxxxxxxxxxx> writes:

Sure there is. Its syntax. There are psyops agents in the CIA that would
*kill* to know how Larry Wall devised such a deviously devilish mindjob!

There's a good reason for Perl's arcane syntax: it is derived from shell
syntax. In shells, symbols are the default and variables are the
special case, so symbols are unquoted but variables must be indicated
with a dollar sign. This convention was inherited by awk, where it made
less sense, and thence by perl, where it made even less sense. However,
it did provide an opportunity to indicate different types of variables
with different sigils, with '$' used to indicate strings & numbers, as
in shells, and @, %, & and * used for other types.

Then there are all the implicit argument rules and such which _can_
often do what the programmer means...and can just as often not.

Then there are references and classes, which are a neat hack.

Perl is a language whose design decisions made since at every step of
the way, but whose final overall design is, frankly, ugly. I understand
how it got where it is, and back when the choice was shell or perl, the
answer was easy: perl. But nowadays there are better scripting
languages like Python. Also, better dynamic languages like Common Lisp
are freely available. So I don't see much reason to use Perl anymore.

recently i started to learn PowerShell, which is a scripting lang but
also a shell. First of all, PowerShell was a fantastic shell lang,
based on modern design, in the early 2000s, as opposed to unix's 1980.
It was known as Monad, and has a lot features. It was based entirely
on .NET, and support all unix shell's advantages and concepts.

though, i was rather surprised, that its syntax has a lot similarities
with perl or unix shell. Piping “|”, dollar sign “$” for vars,
redirect “>”, append “>>”, logic operator “&”, predefined var such as
“$_”, “$?”, heredoc, array “@(1,2,3)”, array access “$x[3]”, “$aa[2]
[1]”, hash “@{'a'=1; 'x'='5'; 6=4; '6'=7}”, boolean operator “-eq”, “-
ne”, “gt”, string expansion (aka “interpolation”) “"x is $x"” ...

so, that was a surprise for me. The key to note is that PowerShell is
a cleanly designed from the ground up of a shell language, however,
one gets the sense that perhaps a shell language which requires
brevity must have syntax soup syndrome. The above examples barely
illustrate PowerShell's brevity, because it has a lot more advance
syntax sugars that i have yet to understand.

i haven't studied this issue in depth, but in my opinion, one could
have a brief syntax yet based on a consistent syntax system, as
opposed to ad hoc syntax soup. Mathematica is a example. For a
exposition on this, see:

• The Concepts and Confusions of Prefix, Infix, Postfix and Fully
Nested Notations
http://xahlee.org/UnixResource_dir/writ/notations.html

Here's my PowerShell tutorial. Right now pretty basic:

• Xah's PowerShell Tutorial
http://xahlee.org/powershell/index.html

Incidentally, I recently converted some tasks to Common Lisp from
Python. Wow...the speedup was _amazing_. And this was simple stuff:
scan in a CSV file then apply a function to every item. While it wasn't
_slow_ in Python, it blazed in CL. Dunno how well Perl would have done;
somewhere in between I guess.

Try Ocaml, it'd blow python or perl or Common Lisp to pieces.

unscrupulous self promotion:

• Xah's OCaml Tutorial
http://xahlee.org/ocaml/ocaml.html

Xah
http://xahlee.org/


.



Relevant Pages