4 ms·
I don't think we can design this in HN comments... all I'm saying is that it should have been a Day 1 requirement that it is low-level enough to work with any m
by Touche 12y ago
I don't think we can design this in HN comments... all I'm saying is that it should have been a Day 1 requirement that it is low-level enough to work with any modern widely-used programming language, on a first-class basis.
That's what the comment I quoted is saying, Microsoft likes to do big up-front designs that restrict their platform to uses that they have already thought about.
- UK-AL 12y agoPowershell was an internal grass roots product, I think. I read it somewhere so may or may not be true.
- brudgers 12y agoSnover specifically set out to design "the next generation platform for administrative automation" in 2002. See the Monad Manifesto: http://www.jsnover.com/Docs/MonadManifesto.pdf http://www.jsnover.com/Docs/MonadManifesto.pdf And Snover's description of the process almost a decade later: http://www.jsnover.com/blog/2011/10/01/monad-manifesto/ http://www.jsnover.com/blog/2011/10/01/monad-manifesto/
- gohrt 12y agoWas there a connection to the math/CS concept of "monad", or did Snover intentionally pick a name that would guarantee eveyone would be afraid of it? from http://www.jsnover.com/blog/2011/10/01/monad-manifesto/ http://www.jsnover.com/blog/2011/10/01/monad-manifesto/ > I had had a number of conversations with our team in India where everyone shook their heads and smiled and seemed to get it but then the code clearly demonstrated that they had absolutely no clue what I was saying but weren’t telling me that. > We tried a number of times to get very precise in our documentation but time and time again, it was clear that they just weren’t getting the concept Wow, Microsoft Architechture Astronaut in a nutshell. He handwaves an idea, and then complains when someone actually writes some code and it doesn't match his imagination.
- noinsight 12y agoIt's explained in Windows PowerShell in Action that is written by Bruce Payette, one of the PowerShell designers: "before the first public release in 2006, the codename for this project was Monad. The name Monad comes from The Monadology by Gottfried Wilhelm Leibniz, one of the inventors of calculus. Here’s how Leibniz defined the Monad: The Monad, of which we shall here speak, is nothing but a simple substance, which enters into compounds. By “simple” is meant “without parts.” —From The Monadology by Gottfried Wilhelm Leibniz (translated by Robert Latta) In The Monadology, Leibniz described a world of irreducible components from which all things could be composed. This captures the spirit of the project: to create a toolkit of simple pieces that you compose to create complex solutions."
- brudgers 12y agoI'm having trouble understanding what is needed. The 'shell' in PowerShell is an interface to an operating system interface, .NET. While Microsoft's implementations of C#, &rest can call PowerShell scripts and cmdlets, it's a bit kludgey compared to calling the API directly. Other than effort, there is nothing preventing creation of a library with equivalent function in any language, and the effort is what killed IronRuby and IronPython as continuously developed projects...and they didn't use powershell. Can you provide an example?
- Touche 12y agoYou can write cmdlets in C# and VB, not just call Powershell cmdlets/scripts. You should be able to write cmdlets in Ruby, or Node.js or Brainfuck.
- brudgers 12y agoOK, I get what you want. My understanding is that the reason you can write a cmdlet in C# is because C# provides a facility to return .NET objects [more or less] and that's only in so far as it interops with the .NET API. Ruby implementations will tend to return a byte stream rather than a value a value against the .NET API. Even if Microsoft provided another API on top of the .NET API, the same situation would exist because Ruby implementations usually don't write to that API by default. It's turtles all the way down on the .NET side. Programming .NET in Ruby requires writing to the .NET interface from the Ruby program. If one wants to program to the .NET interface through Powershell from Ruby, a Ruby program can always output text that can be interpreted as a Powershell script. One way or another, the responsibility is on the program to write to an API. What would be the output of a Brainfuck program that should operate as a PowerShell cmdlet? Would it ever be more than text which can be interpreted as a PowerShell command or script?
- Touche 12y agoYou're entirely missing my point. Powershell shouldn't have been written to require .NET. Full-stop. That's a deal-breaker and highlights the quote I original referenced. Stop building high-level stuff on top of other high-level stuff where it's uses are restricted to only a small subset of potential developers.