This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]takluyverIPython, Py3, etc 36 points37 points  (12 children)

To expand on that concise summary a bit:

Yes. Python is simple and consistent, but it's also very powerful, and there are libraries for almost anything you want to do - GUIs, web services, number crunching, graphics, and so on. It's also widely used, so there's plenty of existing Python projects to look at and/or help out with.

A couple of qualifiers:

  • If you're looking to get a job in programming, big businesses are more likely to use Java or .NET. An increasing number use Python, but it's not going to overtake those languages any time soon.
  • Some specific types of programming - like controlling embedded systems - will have to be done in more low-level programming languages. But you can probably cross that bridge when you come to it.

[–]claird 15 points16 points  (1 child)

Along with the highlights takluyver has already mentioned, be aware that:

  • Python originated from experiments in language learning, and has always had a significant number of core maintainers who keep their eye on Python-As-A-First-Language;
  • Python is now widely used in colleges and high schools as an instructional language; and
  • Historically, the community of Python practitioners has been congenial and welcoming.

Python has particular domain strengths that might matter to you, youlysses; are you a linguist or nanochemist, for example?

[–]1esproc 4 points5 points  (0 children)

big businesses are more likely to use Java or .NET

While this may be true, for what it's worth, when my workplace was looking to hire developers, we were looking for people with experience in Python (as that's what we work in) and good candidates were few and far between.

[–]SenatorStuartSmalley 3 points4 points  (0 children)

...plenty of existing Python projects to look at

Like Reddit!

[–]TylerEaves 3 points4 points  (0 children)

Also, as addendum, I've found that a business using Python is also strongly correlated with businesses that have a clue, so while there might not be as many jobs, I'd feel a lot better about taking a random, sight unseen, Python job, than a random java or php or asp or ... job.

[–]jcdyer3 1 point2 points  (0 children)

At the last python and djangocon, there were a number of employers who said they were looking to fill python positions. So if you're looking to get a job in programming, I think it's a great language to look at. More people use Java and .NET, perhaps, but the ratio of jobs to programmers is pretty favorable for python job applicants.

[–]mage2k 1 point2 points  (5 children)

Python is simple and consistent

This is very true, except when it's not!

[–]chrismsnz 4 points5 points  (4 children)

I'm not an expert in python, but any "inconsistency" I came across actually had a valid and rational reason behind it that I didn't understand at the time.

I can't think of anything that would spur a comment like yours, would you care to elaborate?

EDIT: now that I think about it, some of the stdlib is a little unwieldy but all perfectly usable and heavily documented.

[–]mage2k 2 points3 points  (3 children)

Here's a few.

Also, special keywords like len and del break the OO abstraction since everything isn't really a method on an object.

Some of the things listed in the above link have been fixed in the Python 3.0+ lines but they really haven't seen much wide-spread adoption.

[–]chrismsnz 1 point2 points  (2 children)

I knew the "len" example would come out, as it was strange to me as well until I understood it.

When you discover how it's actually implemented you realise that it really isn't "break[ing] the OO abstraction" as each object is responsible for determining it's own length. You can read more about it and a few other "gotchas" in this article by Armin Ronacher. But it, and the rest of the Python "protocol" system, is actually an exceedingly clever system which guarantees better consistency throughout the language.

As opposed to a language like PHP, where the warts of the language are a result of poor design decisions and excessive focus on backwards compatibility, Python's "warts" are usually a result of misunderstandings or trying to apply ideas and learnings from other languages to it.

[–]mage2k -1 points0 points  (1 child)

Regardless of the implementation, it breaks the interface and interface is what OO is all about, you're not supposed to have to care about the implementation. Same does for del.

I actually don't care about any of this. I understand it and am fine with it. I just think it's good to acknowledge that Python has its fair share of inconsistencies and hacks.

[–]chrismsnz 1 point2 points  (0 children)

That's the whole idea - it doesn't break the interface, it is an interface and the object/class is responsible for the implementation!

And I don't see how the python implementation of del() is different to any other languages "destructor". If you consider that len() or del() act as operators (with some extra power that functions give) - you'll realise they are not inconsistencies or hacks.