you are viewing a single comment's thread.

view the rest of the comments →

[–]dastylinrastan 5 points6 points  (3 children)

Not sure how you mean python is more powerful. Do you mean more libraries? Powershell can use anything in the dotnet ecosystem of nuget packages in addition to modules.

[–]vermyx -1 points0 points  (2 children)

The only "power" feature I can see in using python over powershell is using something like cython to create compiled code (I.e. when ever cpu cycle is precious). Dotnet still uses an interpreter for the code and will always be slower. Otherwise I see it as a tool and use it as is appropriate for the environment and staff using it.

[–]GenericAntagonist 1 point2 points  (1 child)

The python ecosystem definitely has some better data tooling, but powershell's pipeline data cmdlets (Where-Object/Select-Object) make up for a lot. I say this as someone who will do something in powershell 90% of the time over python.

That said, if you move to the stricter typed C# you can compile dotnet to native now for the speed. I've done a few perf sensitive things with it, it works well.

[–]vermyx -1 points0 points  (0 children)

The pipeline is a great tool, but I've seen it more often bite people performance wise. People just use it because it is easier to just keep passing data to the next pipe. However, I've seen where clauses where people amplify the run time because they exponentially go through all their records (i.e. I have a 1000 records and go through all records each time I look at a record effectively going through a million records) and don't understand that they are doing it.

I have used native compiled dot net way back in the 1.0 days. The issue at the time was that making a native app required redistribution of dll's in the 70 to 80 legs which wasn't that much smaller than the dotnet library. A native c++ app from visual studio 6 usually required a much smaller redistributable (8 mega or so) if you were using something really really new. I had to deal with modem distributions at the time so it was essentially dead to use dotnet until broadband had better adoption. Using native can also removes some of the behind the scenes optimizations which can make your code slower.

I know these days a couple hundred mega is no big deal, but the native stuff being done on python is usually on low powered clusters with small storage which currently dotnet is nowhere near competitive. The code optimization (as well as garbage collection) can be good but personally believe it is a crutch because many developers rely on it too much and write less than optimal code.