←back to thread

IRCd service (2024)

(example.fi)
105 points pabs3 | 3 comments | | HN request time: 0.539s | source
Show context
epistasis ◴[] No.45755969[source]
A couple decades ago I remember somebody using awk in programming competitions, as a stunt, and doing surprisingly well. For tasks involving text processing it has a huge advantage, and it ends up doing ok with other stuff.
replies(3): >>45756120 #>>45756493 #>>45757286 #
ajross ◴[] No.45756120[source]
What I always point out though is the bathtub curve of that perception.

Awk started life as a unique, weird, but extremely clever and expressive environment with which you could do tricks that were impractical anywhere else. And that's sort of back where it is now.

But for a solid decade and a half, awk was a forgotten dinosaur that no one cared about. Because in the era where Everyone Knew Perl, awk had no home. Perl was awk but bigger and better.

But now all us perl nuts have moved on or gone silent, all the kids are writing code for node or python or whatnot, and No One Knows Perl.

And in a world where no one knows perl, awk looks clever again.

replies(2): >>45756779 #>>45757400 #
1. rtpg ◴[] No.45757400[source]
Does perl have an awk-y mode? Or is this just "perl has a bunch of regex-y things to make everything flow well".
replies(2): >>45757947 #>>45759781 #
2. shawn_w ◴[] No.45757947[source]
It has options to split up input into fields and loop over every line for one-liners, yeah. For a trivial example,

    awk '{ print $2 }' foo.txt
becomes

    perl -lane 'print $F[1]' foo.txt
I'm one of those people who out off learning awk for a decade+ because I knew perl, but when I finally picked it up I found it's often simpler and cleaner. I still switch to perl for complicated processing but awk can get a lot done.
3. ajross ◴[] No.45759781[source]
As mentioned it actually does have modes that assume various loops over the input. But it also has a bunch of syntax that naturally lends itself to that kind of very-narrow-text-dsl kind of code. Things like implicit variables, "postfix if", BEGIN/END blocks, all make awk-like just as easy to express as in awk. And then you add on top of that a much more capable base engine (despite awk's reliance on regex matching, it's still stuck with regular unix extended expressions) and library ecosystem.

Again, in 1998, in the early perl 5 era, you'd be looked at as a nut if you seriously tried to argue for doing some new tool in awk, even a tiny script. Everything worked better in perl.