Hacker News new | ask | show | jobs
by robertlemmen 2513 days ago
IMHO there are two different things at work here: one is the tool or language that you are using for your job. This is highly specific, and most people will not be working with Perl 5 or 6 in their day job.

However, we all need to learn general software engineering much more as well, and that is a very different piece of problem: here the tools are not specific, you can do that in any language.

More importantly, no single language will allow you to truly understand software engineering, you must look at it from different vantage points, i.e. very different languages and development philosophies. In this area Perl, especially 6, is super interesting because it allows you to study a variety of interesting concepts while still being modern and accessible (compared to the alternatives of learning LISP, Prolog and who knows what). So: studying Perl will help make you a better software engineer, you can then apply that in whatever other language is required on that day for the current job.

That said, I think most systems I have worked on in C++ and Java could have been written in Perl 5 or 6 equally well. Some things would have been easier, some others harder...

1 comments

> More importantly, no single language will allow you to...

That's one of the reasons why P6 is actually a braid of languages, plural, rather than a single language.[1]

> most systems I have worked on ... Some things would have been easier, some others harder [using a different language]...

That's another reason. The braid (which languages are mixed together), the braiding (how they're braided together), and the strands of the braid (individual languages) in the standard P6 distribution, are all mutable, evolvable, forkable, mergeable, via a principled, governable mechanism.[1]

cf Racket, except that P6 adopts the position that s-expressions aren't a good default syntax for most of the core code; macros aren't a good default approach for building up the majority of higher level constructs; automata other than turing machines need to be taken into account; and it all needs to be suitably version based so that various versions of languages in the braid, and of modules written in those languages, can peacefully co-exist.

[1] https://www.reddit.com/r/ProgrammingLanguages/comments/a4z68...