## PowerShell is open sourced and is available on Linux

Long HN thread ensues. Many of the comments discuss the benefits/costs of basing pipes on typed objects rather than text streams. As someone who should be inclined in favor of the typed object approach I have to say that I think the text-only folks have the upper hand at the moment. Primary reason is that text as a lingua franca between programs ensures interoperability (and insurance against future changes to underlying object models) and self-documenting code. Clearly the Achilles' heel is parsing/unparsing.

As happens often, one is reminded of the discussions of DSLs and pipelines in Jon Bentley's Programming Pearls...

## Comment viewing options

### and insurance against future changes to underlying object models

But how are the programs shielded from future changes to the underlying string format?

Wouldn't typed object in fact, force the creation of smaller purpose programs, using transformation functions (more programs) between them smaller programs to provide interop?

### Ability to fix bugs

Why would we discuss inter-operability in an article about open sourcing a language?

All I see is the opportunity to fix bugs / step through the execution engine. Which is amazing news.

Anyway, the real powerful feature of PowerShell is PowerGUI, which was acquired by Dell after so many of their engineers were using it. It will be interesting to see if Dell supports it on Linux and Mac OS X.

PowerGUI is what separates PowerShell from BeanShell and other open source typed shells on Linux and Open Solaris. Also, PowerShell's Integrated Scripting Environment (mini-IDE) is way more powerful than BeanShell.

It's pretty clear (to me) that for people who prefer typed shells like BeanShell, PowerShell will dominate the market.

Clearly the Achilles' heel is parsing/unparsing.

Ehud, why is that? Mono already has the underlying system calls on UNIX that already do all the CLR object wrapping. If you're talking about performance, then sure. But if you're talking about compatibility, then that is not an Achilles' heel.

Also, performance is changing. People centralize logs now. It would make sense to have a PowerShell interface to some ElasticSearch back-end if you really wanted to grep huge amounts of logs.

### I meant the Achilles' heel

I meant the Achilles' heel for the classic approach, consisting of pure text pipelines and that's it (and hence the use of adhoc parsing when needed, of the sort people in the thread I linked to mention).

### PowerGUI gone?

Anyway, the real powerful feature of PowerShell is PowerGUI, which was acquired by Dell after so many of their engineers were using it. It will be interesting to see if Dell supports it on Linux and Mac OS X.

Currently PowerGUI is not even available for Windows from Dell Software. The download link goes to a List of Trials where the program is not listed! A Dell Community forum post says "development of PowerGUI is on hold".

### Do we really have to choose

Do we really have to choose between typed pipes and unstructured text? I can imagine a type of structured text, like some type of limited AST with a lispy structure, albeit without the parenthesis given the common allergy to them.

I imagine that approach could have the worst of both worlds, but perhaps there's an incarnation that's also the best of both worlds.

And we've discussed typed shells before, of which ocaml-shcaml is perhaps the best example.

### in this day and age

it'd have to be json

### We have to choose

... but I agree, we should choose to just use something like S-expressions or JSON or YAML or... Given the (by design) extremely loose coupling between various external programs, a very general format without much in the way of semantics is a good thing, but you really want to have just enough structure to avoid the absurdity of having to use cut or the classic awk -F: '{print\$2}' just to get at the piece of information you need. (IOW, navigating to the information you want would be helped hugely by a semi-structured format.)

### Well, you can always use NoSQL

That's Strozzi NoSQL, a relational database based on Unix tab-separated text files, as opposed to NoSQL the concept, which would be more justly called NoREL.