The hard part about getting started with Python is not the language but the ecosystem. It’s easy to find good references on the Python language, but it’s harder to learn what packages are available, how to install them, etc. That was my experience, and Miz Nazim started with a similar observation in his article Python Ecosystem: An Introduction.
Maybe its always harder to learn a language’s ecosystem than the language itself. But I think this was the case for me with Python more than with other languages I’ve used. I wish I’d found Nazim’s article or something like it when I was learning Python.
I had the same experience. I came from Perl, and I wanted to expand my horizons with Python, but the example of exasperation I gave with Python was that when I wanted to parse HTML in Perl, I went to CPAN and downloaded HTML::Parser. In Python, I stumbled around until I found the BeautifulSoup package. How do you go looking for that for your purposes?
pip and easy_install are a good start, although the whole system would definitely benefit from some standardization. Given that one of the strengths of python is supposed to be (and imo is) the collection of libs available, this is an important feature to drive adoption
I *completely* agree that Python was one of the hardest ecosystems for me to “get”.
Actually, I’ve been programming in Ruby for years and it’s terrible. The problem is that Rails is already on version 3 and there’s really no good documentation. Here’s someone else’s blog about his experience, and they pretty much mirror mine: http://fskrealityguide.blogspot.com/2008/08/ruby-on-rails-sucks.html
I guess I’m concerned with higher-level documentation. For example, SciPy is well documented, but I didn’t know it existed when I first started using Python. Suppose you were doing web development in Ruby, but didn’t know about Rails! I admit that’s not the best example since Rails is as well known as Ruby.
I didn’t really have too much trouble figuring this stuff out. Whenever I’d hit a roadblock, I would do Google something like “Python HTML Parser” and it would almost always get me what I needed. Some of the more esoteric stuff for Windows was a bear to find. And yes, there are a LOT of excellent resources out here with crappy documentation (or none). I still love Python though.
This is true of R as well, and online search for help can be especially frustrating — I assume it’s easier to find guidance with a term like “python” than “r”… I’ve seen several good introductions to R, but none focused on the ecosystem like this.
Does anyone have a good example of what an easy ecosystem to grok would be? [I’m asking because I did not have this difficulty with Python, but I guess I might simply lack a better alternative to compare with (?)]
Mac: In my experience, commercial software tends to have a more accessible ecosystem. For example, I found it much easier to know what’s available for C# than for Python. Microsoft has an army of speakers, writers, and marketers who want you to know what’s available in their products.
Thank you for the reply John. Funny enough, I’m so much into free software that it did not even occurred to me there is a thing called “commercial software” out there! Shame on my geekness! :( [The little RMS in me is compelled to question the semantics of the word “available” though! ;)]
Open source and commercial software are quite different. I live in both worlds. Each has its advantages.
Commercial software tends to be more focused. They have a target market, and if you’re in that target market, the tools can be very convenient. But if you get off the beaten path you can be in for grief. Here’s a post that goes into this idea a little more: Microsoft developers need not apply.
As a newcomer to Python, it sometimes feels like Python is less a language than it is an ecosystem that just happens to have a language associated with it. It’s not that Python is not an execellently pragmatic language, it’s just that even a cursory experience with it makes one realize that the language itself is just the tip of a vast iceberg. I conflicted about what this means to a newcomer: on the one hand, I wish it were all more accessible and better organized; on the other, I think the chaos is part of the health of Python. Healthy ecosystems are like that: always on the edge of being out of control, no single point of failure, etc.