There are two things ordinary users care about:
- User experience¹,
They don't care about:
- The language used by an app,
- If it uses design patterns or not,
- Whether the code is readable,
... but a programming language can have a minor effect on user experience. An application which uses Java will require Java to be installed on the machine. This is not always an easy task for users with no technical background. The same applies for C# if it uses newer versions of .NET Framework on the versions of Windows which have older versions.
... but some users, such as:
- Developers who want to create software products which are interoperable with your app³,
- System administrators who need to deploy your app in the shortest amount of time, in an automated way, on thousands of machines,
will all be concerned by the technology you use, and a choice of a language will become a feature.
OkCupid, a dating website, uses C++. Since it is a website, it really doesn't matter which language is used behind for the end users. It would have been Ruby on Rails or JSP, nobody would see the difference, as soon as the user experience and the features stay the same.
Google Closure compiler requires to have both Java and Python installed. This impacts the user experience for a person like me who would like to install Google Closure compiler on a server and then create a service to use it from other machines on the local network, given that installing components like Java on the server is out of question in my case.
Side note: why do we care about languages?
If languages don't matter from user's point of view, the choice of a language is still important. Choosing the right language in a given context and given skills of your team means having less bugs, to be able to fix bugs faster, to improve creativity, to use a bunch of tools to enhance the quality of the application, etc.
One of the challenges of a project manager is to pick the right tools and languages to ensure that the product can be delivered on schedule within a given budget.
¹ Performance is not mentioned in the list, since it is already inside user experience. An application which responds fast enough provides a good user experience. An application which feels slow and unresponsive provides bad user experience. The choice of a language has small to no impact on the perceived performance. Any good interaction designer would tell that there are plenty of ways to enhance perceived performance without doing code profiling and optimization.
² Given that user experience counts much more than features, since there is no benefit from putting hundreds of features if no ordinary user can use or even find them. This also explains the actual trend to over-concentrate the efforts on user experience, while reducing the number of originally projected features.
³ Unless it's a web app or an application which provides an API which can be used from nearly any language.