I've been using Python for a little while now and I am enjoying it, but a few of my friends are telling me to start using a language like C# or Java instead and give these reasons:

  1. Python is a scripting language
  2. Python apps don't port well to people who don't have Python
  3. It's hard to make good GUIs in Python since it's a scripting language

I like the batteries included approach to Python and the ability to download and upload pre-built modules from PyPI is really useful to me. Is there any specific reason why Python is considered a weak language?

  • 8
    Python is far more portable then C#... – Daniel Gratzer May 14 '13 at 0:04
  • 3
    Well, if you can play Bastion (C#/XNA) on Chrome App Store, then I'm pretty sure that's not entirely true. Anyway, I think this is going to be rejected as one of those pointless "language vs language" questions. – Katana314 May 14 '13 at 0:06
  • 7
    Don't switch. Add. Either (or both) of C# or Java would be good to have in your repertoire. As would other languages and paradigms. However, from a pragmatic standpoint, become an expert in the languages and tools that you think are going to get you where you want to be. – Anthony Pegram May 14 '13 at 0:31
  • 1
    I tried to edit the post to be a little bit less opinion based. Hopefully that will allow it to be reopened. – Nathan2055 May 14 '13 at 2:50
  • 1
    You don't "switch" to another programming language. Programming languages are tools. Use the best tool you have available for each job. For some jobs it's Python, for other it's Java, for others it's C. – Philipp May 14 '13 at 12:03

Because people readily dismiss things they don't know much about with pseudo-intelligent rationalizations? I'm not much of a python fan, but those criticisms are bogus.

  1. Python is a general purpose programming language that happens to be good for scripting tasks. It's not a weakness.
  2. If you want to package software written in python with an all-in-one installer, there's almost nothing stopping you from including Python. It's not hard; you'd have to have a platform-specific installer, but this would be true for most multi-platform apps you could build. There are even tools to make that process pretty painless; see, for example http://hackerboss.com/how-to-distribute-commercial-python-applications/
  3. There are plenty of good GUI solutions for Python, and any other scripting languages. For a long list of options, see http://wiki.python.org/moin/GuiProgramming

There are fair criticisms of Python that reasonable people can make, but there's no reason to completely dismiss it based on the fact that it isn't C# or Java. For many people, that's a good reason TO use Python.

|improve this answer|||||
  • 3
    @Nathan2055 don't, no offense to Jason, but an even remotely appropriate analysis of the languages you're referring to requires vastly more information than can be stuffed into a simple answer here. This answer hardly touches on the slightest bit of any languages it speaks to. This is why your question was closed, we can't give you anything accept inappropriate answers. Go read a book, learn C# or Java, make it a learning task to do a full analysis as if you were starting a company and had to pick a language to write your software in; as if you had money riding on it. – Jimmy Hoffa May 14 '13 at 3:24
  • 2
    Yes, I certainly wouldn't want to be misinterpreted as discouraging learning other languages; I, myself, am competent in C#, Ruby, Python, and Java, and have real world experience in Groovy, Boo, C++, Perl, PHP, Delphi, and passing familiarity with Scala, F# and Lisp. It's just not cool dismiss languages (or tools) without having a reasonably deep grasp of them, particularly not for the three "reasons" your friends have given you. Learning more will do you no harm, and will likely expose you to new ways of solving problems. – JasonTrue May 14 '13 at 3:45
  • Biggest example I can think of: The original Bittorrent client? The massively-used software for transferring pir--ahh, completely legitimate material between clients? All written in Python, and most of its users never even knew it. – Katana314 May 14 '13 at 13:06
  • Python is a scripting language

    • Just because a language is scripted does not immediately make it worse. It just depends on what you want to acheive with your program. If you want fast execution speed, then Python probably isn't the right choice, but neither is Java. If you want simplicity with the ease of allowing your customers to change your source code and don't care about speed then Python is a good choice.
  • Python apps don't port well to people who don't have Python

    • Java and C# certaintly aren't any better at this. C# requires the Microsoft .Net Framework or Mono, and Java requires the Java Runtime Environment. If you want a language that doesn't require dependencies, then start writing in Assembly, or C/C++ (even in C/C++ it's going to depend on the compiler and the options you use).
  • It's hard to make good GUIs in Python since it's a scripting language

    • This is not completely true. Python has many GUI frameworks including Gtk, Qt, and many others. Wikipedia even has a whole page listing graphical applications built with or using Python including BitTorrent clients, games, and even ERP software. Granted it probably is easier to develop graphical applications in C# if you are using Visual Studio or an equivilant IDE. I can't speak for Java since I personally despise it, but my understanding is that even Java requires using a widget toolkit, the most popular of which appears to be Swing.
|improve this answer|||||
  • 2
    FYI, Assembly is also a terrible language to port to other machines ;) – poke May 14 '13 at 17:07
  • Was strictly talking about dependencies, not ease of porting. – Drew Chapin May 14 '13 at 19:14

Not the answer you're looking for? Browse other questions tagged or ask your own question.