Reading about various techie sites, there is often a feeling that Microsoft Languages / Oracle etc. are considered “enterprise ready”, while there seems to be more doubt about languages such as Python or Ruby.
Why is this?
Do Microsoft languages actually have less security holes or not?
5
Some languages are designed to limit the programmer’s ability to shoot himself in the foot. Traditional language concepts perceived (in my experience) to reduce risk are:
- Strong, static type systems
- Object-Orientation
- Compilation
There’s also the fact that Microsoft/Oracle/etc often provide services other than the programming language. For example, if the company uses an Oracle database, then Java might appear as a less risky solution.
Last but not least, these companies offer corporate support not necessarily available for other technology. Buying into the whole Azure thing as a company guarantees you support and you’ll probably be using a .NET language to build on top of the platform.
Then again, it might just be because managers and other non-techies perceive other companies as more “serious”, just like companies prefer to pay for products that have free, superior alternatives (think Perforce vs Git).
4
Well, I worked in an enterprise that used Python for a lot of thing, and one of my friend wrote Ruby in a gool-ol Insurance companies, so I don’t know how much you can really say that they are not enterprise ready, but it’s true that Java/C# are more used for the “big stuff”.
What it mostly come down to is support. When you choose Microsoft and Oracle, you can call them at midnight on Christmas Eve and yell at them because its doesn’t work, and they will fix your problem. For those mission critical applications, its very, very important to be able to do that.
They also sell more integrated solutions that are pretty much guaranteed to work together. If you take C# with SQL Server and Windows Server, they integrate pretty tightly. Same thing with Java/Oracle or IBM on Power with DB2. Those solution have complete tool to manage them that fit with what is existing (user are managed trough Active Directory, it can work accross continents, completely localised in swhahili, etc). If the organization grow and need to integrate a new component, its usually pretty easy to do so with those big enterprise solutions.
In the end, its not really the language itself, it’s wether their is a big company behing that can sell tool, solution and support.
Mostly it’s because they cost money. When you build a product to make money, you have a tendency to respond to the needs of the people with the money. Enterprises like being able to throw money at a problem to get it solved.
Conversely, if you are a large business and wanted to get a feature put into free software, you can’t just pay a company like Microsoft to put it in. You generally must hire in-house expertise to implement it, or convince the community on the merits. That provides more flexibility at the expense of requiring more of a partner relationship than a client relationship with your software provider.
In other words, the business factors are larger than the technical factors, but that doesn’t mean the technical factors aren’t influenced. Enterprise software tends to be delivered as integrated turnkey solutions from tools through deployment. Free software tends to follow a some assembly required approach.