views:

1346

answers:

11

I don't know Python. I always think maybe I should take the time to sit down and learn it though. I know C++, C#/VB.NET, Java, and PHP. I am a student, so there's no job requirement that says I must always use x language. I've already seen Python around here at my school... But then again, there is also a LOT of Java.

What's my incentive? Why should I learn Python? Why shouldn't I? Would it be useful to know?

A: 

It's the highest level language I've ever seen

hasen j
have you seen ruby?
Ricket
Forget Ruby. Have you seen any functional language?
Milen A. Radev
I have, and python supports functional paradigm AFAIK (at least most of them)
hasen j
+6  A: 

Python provides dictionaries and sets as basic data types. You can extend it by writing extension in C or C++.

Python is available on all OSes even Symbian. What makes Python good is that it removes the extraneous code work so that a programmer can put his/her attention to the application logic.

Xolve
+1  A: 
  • Python is like a new/better PERL. It makes it possible to write pretty complicated system scripts in a very compact and easy to read way.

  • Python is fine for big projects as well.

  • Python offers access to a LOT of libraries, whose API is most of the time far simpler than what you can meet in other languages.

  • Python is pretty fast for a dynamic language.

  • Python doesn't care whether you are more about OOP or functional programming. You're free to adopt both programming styles.

poulejapon
+1  A: 

Python is widely used in the real world, especially as glue between other languages, but also on its own.

It's also a quite fun language!

Joonas Pulakka
+1  A: 

Extremely:

Read these key distinguishing features from Python website. Quoting here:

* very clear, readable syntax
* strong introspection capabilities
* intuitive object orientation
* natural expression of procedural code
* full modularity, supporting hierarchical packages
* exception-based error handling
* very high level dynamic data types
* extensive standard libraries and third party modules for virtually every task
* extensions and modules easily written in C, C++ (or Java for Jython, or .NET languages for IronPython)
* embeddable within applications as a scripting interface

Read about Application Domains it can be used for (also taken from Python website) . Quoting the top level app domains here:

  1. Web and Internet Development
  2. Database Access
  3. Desktop GUIs
  4. Scientific and Numeric
  5. Education
  6. Network Programming
  7. Software Development
  8. Game and 3D Graphics

My personal experience, its easy to learn. And gives immense satisfaction after writing a nice concise program.

Swanand
+2  A: 

It really depends on your environment. As a scripting language, it's pretty powerful. There are some excellent web development frameworks for it. In academic science it's pretty much taking over owing to the popularity of NumPy and SciPy. In UNIX admin, it's a lot more stable than something written in PERL.

In a .NET or Java environment, it can be used to perform scripting duties, but you don't need to use its general purpose programming capabilities.

Julian Birch
A: 

I guess it's gained quite a momentum since Google started using it in their Google Apps platform.

hced
+1  A: 

Currently I use PHP in my job but Python for home projects. I've found it much easier to make small scripts and the like in Python rather than PHP. At first I found it very hard to make larger things in Python but that's because it handles things in a different way to PHP, the namespaces were very very confusing but even in the early stages of my project I can see how it'll be useful later.

Ultimately Python will be as useful as you want it to be, if you want to devote time and energy to becoming good with it then it will serve you well as it runs on all major platforms.

Teifion
+3  A: 

Python is certainly not the highest-level language (a drag-and-drop object/flow editor, or DWIM would be), but it IS high-level compared to languages like C, Java, or (to a lesser extent) C#. The important parts for me are:

  • REALLY RAPID DEVELOPMENT: anyone who knows python and C++ can write code much faster in python. It's probably just because you don't have to spend so much time writing boiler plate and declaring types etc., but the end result is lots of time saved. The obvious interpreted language speedup (not having to wait on compilation) is there too of course.

  • Very portable (linux, OS X, Windows, phones, etc.)

  • Very readable

  • HUGELY powerful (metaclasses, monkey-patching, etc. let you create advanced tools like ORMs and adapt/re-use other people's code easily). The functional programming tools like map and filter, and list comprehensions are pretty handy too.

  • Reasonably fast, with tools available to compile to a binary

  • TONS of libraries available, for everything from systems admin, to games, to web 2.0, to hard science.

  • Decent unicode support (although it took a while to fully mature, it's been better than, say, Ruby's unicode for a while now, and just leapt far ahead to about where Java is)

Lee B
"a drag-and-drop object/flow editor" would be a "higher" level language? I suppose GUI interactions are a language of gestures, but my experience with these (especially the REALLY expensive commercial ones) is that they aren't actually at a higher level; they're just a GUI.
S.Lott
Granted, they could be just GUIs. But Automater, for example, is certainly higher-level than most code: http://www.barebones.com/images/bb1/bbedit/automator-action-lg.jpg
Lee B
+1  A: 

Some incentives for learning Python:

  1. Google seem to be pretty keen on Python in general (Not just appengine), and they are a big employer...
  2. Python is the basis for quite a lot of interesting new OSS applications which often means that some of the better professional developers are choosing to use it in there spare time. It also means that there's lots of good code to read and understand.
  3. Python is one of several good choices for platform independent applications (I have a fully operational development environment running on my phone (Not that I use it much)).
  4. There's good support for writing websites (DJango and other frameworks) and massively scalable websites (Google appengine)
  5. As a student (or a professional developer) its always useful to get experience with as many programming languages as you can, to get an understanding of the length and breadth of different ideas and approaches.
  6. Its a fun language to learn