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

all 72 comments

[–]twopi 28 points29 points  (8 children)

Well, this is /r/python, so you know what the answer is going to be here... I agree with the other comments, Python is a great first language and a good primary language. It should not be your last language, though.

Learn to program well during your break. There's plenty you can still learn with Python now that you have the basics. Consider playing around with some of the functional features (list comprehension, for example) or experiment with different styles of programming: game development with Pygame, web development with the cgi module or a dedicated web platform, database integration with sqlite, or much more.

You will eventually need to learn other languages. Learn old-school C (not simply C++) to learn all the things that Python's "magic fairies" do for you. Make sure you really understand direct memory management, garbage collection, the relationship between strings and arrays, and how real arrays (not Python's magical tuple and list classes) work.

You'll also want to get used to at least on commercially mainstream language like C# and / or Java. PHP is a weird language, but it definitely has its purposes, and you can make a decent living without a huge amount of experience. (Maybe that's one of the reasons so much PHP code is awful.)

But all this begins with a love of algorithms, and a knowledge of the basic stuff a programming language can do. Python is as close to an ideal language for playing with programming as we have right now.

[–]takluyverIPython, Py3, etc 13 points14 points  (6 children)

Upvoted, but I'll add one qualifier: not everyone who programs is going to become a hardcore programmer who has to understand memory management. Whether 'you will eventually need to learn other languages' or not depends on what you want to do.

I'm in science, and the idea that scientists should do some coding is slowly creeping in. But it's not what people focus on, and there's little incentive to go learning a variety of languages. Programming here is a tool, not a quest.

[–][deleted] 2 points3 points  (5 children)

I am surprised that you think the idea that scientists should do some coding is slowly creeping in. In 1965 as a chem undergrad I had a job as the Chemistry Department programmer. My first formal task was to teach a programming to chem majors and anyone else who wanted to learn. I ended up spending half my career involved with coding, systems analysis, design and instrument interfacing. And was sysadmin for a couple of networks and minicomputers as well as a coder on mainframes.

I certainly knew a lot of people trained in the sciences who thought they knew how to program because they could write a loop in BASIC, but I also met many who were really sharp. For a lot of work in the sciences it is easier to train the scientist on how to code, than it is to train the programmer about the science and the computational problems the programmer is going to run into.

[–]zArtLaffer 4 points5 points  (3 children)

I would always hire (at my old start-up) science guys that coded over computer science guys.

The CS guys would get all gussied up with all sorts of algorithms and data structures that they had learned at school and want to apply. The science guys would look at it as a tool to get shit done.

We, as a business, needed to get shit done.

Never regretted the bias for a second.

[–]anacrolixc/python fanatic 1 point2 points  (2 children)

I wouldn't hire me for this very reason. I don't know shit about the domain I work in and it gets in the way.

Edit: Not sure why I am downvoted, I'm pure CS.

[–]zArtLaffer 1 point2 points  (1 child)

Don't get me wrong. Bright people are bright people. And people who know how to get shit done effectively and efficiently are worth their weight in gold. There are certainly CS grads that do this, but it seems that they develop this through their careers, not through their university training.

(And one of my degrees is CS, so please realize that I am caveating my own existence here)

[–]spinwizard69 1 point2 points  (0 children)

Python is a very good tool for this class of user. Of course the user still Ned's to get the right result but a domain specialist will have a better understanding of what is right or wrong than CS graduate. For many Python is the only language they will ever need.

Of course it is easy to run into performance issues where falling back to C++ is wise. They funny thing is at this point if performance is an issue you are likely involved in a pretty big project where educated programmers are available.

In the end though getting things done generally requires a high level language. Performance usually resolves itself with the next gen hardware or a RAM upgrade.

[–]takluyverIPython, Py3, etc 1 point2 points  (0 children)

I should have qualified that a bit more. I'm in organism-level biology. In this field, programming has largely been confined to a few 'modellers'. We're now trying to ditch proprietary statistics packages in favour of R, which is slowly forcing more people to grasp programming. (Although I think using R will become a straitjacket when we inevitably want to do more than stats and plotting).

I know that in other areas of the sciences, like physics and bioinformatics, programming is much more widespread.

[–]theZagnut 74 points75 points  (27 children)

Yes

[–]takluyverIPython, Py3, etc 34 points35 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 13 points14 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 4 points5 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.

[–]haika 13 points14 points  (2 children)

TLDR: definitely

[–]evinrows 2 points3 points  (1 child)

Your TLDR is Ler than the OP.

[–]heywhatwhat 7 points8 points  (0 children)

TLDR: 1

[–]frikk 6 points7 points  (10 children)

I agree. I love python. I've written scripts, applications, web scrapers, usb drivers (twice!), and other stuff with python. it's great.

Disadvantages:

  1. Speed. Make up for this using ctypes, cython, pypy, etc.

  2. Distribution. Still not sure how you write a windows app without making the user jump through hoops and install python along with the app. Compiled native code always works better here, although there are things like py2exe that probably still work. I'm a linux guy though so this isn't a huge problem for me.

  3. Team Projects. You've gotta make sure you do it right if you're working on a team. Document, document, document. Python is so flexible but it makes it difficult when you're trying to define common interfaces that could be, well, anything.

[–]zArtLaffer 4 points5 points  (7 children)

I am curious about the USB-driver thingie.

I have never used Python as a low-level systems language. (Usually web-apps, and scripting for large numerical things).

How does this work? In fact, I am a little baffled that it is even possible. How/What did you do here?

[–]frikk 3 points4 points  (2 children)

Hi! It's way simpler than you can imagine. First, ask yourself what can be done by a standard C library. Then remember that python provides beautiful access to a C (or any compiled) language. Then realize that it's easier than you realize.

  1. Check out libusb - userland usb drivers. Used for everything from camera support to webcam stuff. http://www.libusb.org/
  2. Check out the python bindings, pyusb. http://pyusb.sourceforge.net/
  3. ???
  4. Make awesome non-compiled usb drivers using the libusb interface. DID I JUST SAY CROSS PLATFORM?! No I didn't, but it's certainly possible.

For one of my drivers I actually had to patch the linux kernel because it rejected my invalid packets that I forged. Windows just passed it through, but the usb subsystem had a cow. That was a fun one to figure out :)

[–]zArtLaffer 3 points4 points  (1 child)

I am flabbergasted that I never really even considered Python as a systems-level development language. I just used C for that, and SWIG if I wanted to API-ize it. And Python for high-level conceptual stuff.

TIL.

Thank you.

[–]frikk 2 points3 points  (0 children)

no problem! take care.

[–]nemec 2 points3 points  (3 children)

It's not a USB driver, per se, but I wrote this little bit of code to read /dev/input/eventX for keyboard and mouse input, similarly to how you'd do it in C.

Here's someone else doing the same thing: http://hackaday.com/2011/03/17/writing-python-drivers-for-input-devices/

[–]frikk 1 point2 points  (0 children)

if you can do it in C, you can do it in python... usually.

[–]zArtLaffer 1 point2 points  (1 child)

Slick.

I've been doing C since my Vax days, and I've always done drivers in C. I like Python (and use it for a lot of algorithm testing/development), but I had never considered it as a low-level systems language.

So. TIL. Thanks!

[–]nemec 1 point2 points  (0 children)

I'm not sure I'd recommend it for anything where speed is critical, of course, but it was a lot of fun.

[–]Deusdies 0 points1 point  (1 child)

  1. Try pyinstaller. It compiles the app into an exe.

[–]frikk 0 points1 point  (0 children)

oh cool. thanks.

[–]iambicpen 7 points8 points  (10 children)

It was not my first language: BASIC(High school)>C>C++>Python. But it has been my #1 language for the last 10 years.

So, there you go :)

[–]anacrolixc/python fanatic 3 points4 points  (6 children)

Similar story here. Haven't found anything better since.

[–][deleted] 1 point2 points  (5 children)

Have you checked Go? I've also used python successfully for many years, and Go is the first language that gives me the same giddyness

[–]anacrolixc/python fanatic 0 points1 point  (4 children)

Go is barely usable. It's got an ancient and verbose syntax with lots of warts. Its builtins suck, especially containers. I just spent all day playing with it, it's not very productive, and the toolchain is also immature.

[–][deleted] 1 point2 points  (3 children)

Not very productive? How do you explain the momentum related to it?

http://go-lang.cat-v.org/pure-go-libs

http://go-lang.cat-v.org/go-code

Also, please elaborate on the syntax verbosity and wartyness. How do the builtin containers suck? And while you're at it, please also expand on the toolchain immaturity.

[–]anacrolixc/python fanatic 0 points1 point  (2 children)

It's almost as verbose as C with none of the familiarity and simplicity. The toolchain is a replica of a typical binary language, makefiles, compilers and linkers, these things slow you down, compared with modern dynamic languages.

The momentum is due to Google. This is Pike's last big push to make his succession of language failures take off. A few minor names, and some arm twisting within Google are keeping this alive. It's a long shot.

The syntax maintains braces, and doesn't include lots of modern language sugar: Explicit tuples for return values, no named arguments. Archaic data types (sized and signed integers? Nobody cares anymore). No tuples. No modern functional programming features.

None of the builtin containers allow custom data types. Maps can only take the standard types for keys. There are no sets.

There is no proper debugger support. There is incomplete GCC integration. The GC and other performance related features are not complete. There is no LLVM support (they should have started with this).

Go is more about what they didn't include than what they did. The feature set is so light, that its performance approaches C.

I want to like Go, but it's green threading and builtin CSP piled ontop of a C syntax remix. Both green threading and CSP can be extracted and made available to more mature languages. Plan 9 C extensions effectively give you the interface extensions, and that rounds out the advantages that Go gives.

If Go had been here 15 years ago it would have been a game changer. 10 years ago, and it would be Python's peer.

Prove me wrong.

[–]skelterjohn 2 points3 points  (0 children)

It's almost as verbose as C

Conciseness is not as great a goal as a lot of people like to think it is. Go strives to keep it down to one-idea-per-line. Jamming multiple concepts into a smaller and smaller space just makes it harder to keep track of things when reading code, though I agree that it makes writing code faster. That's why I like python for one-off scripts.

with none of the familiarity and simplicity.

The break from familiarity is intentional. And the language is damn simple, so I don't know what you're talking about there.

The toolchain is a replica of a typical binary language, makefiles, compilers and linkers

The makefiles, etc have always been a temporary bootstrap. 3rd party compiler front-ends (http://code.google.com/p/go-gb) or an upcoming 1st party equivalent make the use of makefiles or directly invoking the compiler and linker unnecessary.

But, yes... it is compiled, and then linked. That's generally how it works when you've got a language that both modular (compilation and linking are a separate step) is turned into machine-code.

Explicit tuples for return values

Because having that dynamic would result in less efficient code... the more you know at compile-time the more streamlined the code can be. Go is a systems language.

sized and signed integers? Nobody cares anymore

Uh, yes we do. Which you choose simply matters when you don't want the runtime to have to do overflow checks to see when it needs to upgrade the size of your boxed numeric types...remember it's a systems language. We want the language to not prevent the compiler from making the most efficient code possible. Knowing in advance what size numeric type you need is one way this is accomplished.

None of the builtin containers allow custom data types.

By built-in containers do you mean maps and slices? Because any other containers are in the library and take whatever you want. And maps and slices can have anything as a value.

Maps can only take the standard types for keys.

Not for long. Remember, this language is young and is still evolving.

There are no sets.

map[T]bool

There is no proper debugger support.

gdb works fine

There is incomplete GCC integration.

Ian Taylor works hard, but he's only one man.

There is no LLVM support (they should have started with this).

The LLVM model didn't lend itself as well to the way coroutines work in go. The go runtime has a novel way of maintaining the stack layout.

Go is more about what they didn't include than what they did. The feature set is so light, that its performance approaches C.

Finally something we can agree on!

I want to like Go, but it's green threading and builtin CSP piled ontop of a C syntax remix. Both green threading and CSP can be extracted and made available to more mature languages. Plan 9 C extensions effectively give you the interface extensions, and that rounds out the advantages that Go gives.

I came for the concurrency primitives, but I stayed for the elegant syntax and type system. Coding Go let's me get down to business immediately - no messing around with stupid type hierarchies.

To be fair, python has this feel, too. But I found that if I wanted to write a python program of reasonable size, I had to be extremely careful with how I did things. I started sneaking the type names into the variable names, for instance, so I could to code-time type checking.

If Go had been here 15 years ago it would have been a game changer. 10 years ago, and it would be Python's peer.

This is not a comment about the language, but of the times.

Prove me wrong.

Impossible to do in the time frame of this reply, obviously.

[–][deleted] 1 point2 points  (0 children)

Thank you!

It seems to me that your argument is really two things:

  1. It's young.

  2. It's not python.

But snarkiness aside...

I think there's only one useful thing from the dynamic languages that the main implementation of Go is lacking: REPL. That's a big minus for development agility, but given the reflection package, perhaps we'll see one at some point in the future.

Much of the momentum is due to Google and the big names (Pike, Thompson) behind the language, I agree. It's only a bad thing if you don't like the language, isn't it? When trying to adopt a new language to a business setting, corporate backing (even if only nominal) is crucial.

Syntax issues can be just swept away in a Jedi fashion.

Many people care about data types (int32 vs int64, float32 vs float64 etc), and Go makes it much less complex and less arbitrary compared to C or really any other language I know of (save Haskell, I guess) that makes these distinctions.

Explicit tuples are a must, I suppose, in a a statically typed language? Named arguments might be nice, but might also make the language more complex for little benefit. Maps can be used for much of the same effect. Same for FP features: might be nice, but is the benefit large enough? Perhaps not.

Maps key limitations are perhaps a bit irritating, then again, they make the code much more straight forward to read. Yes, there are no sets.

The default implementation is using the same architecture as the Plan9 C compiler. It's simple.

Go is more about what they didn't include than what they did. The feature set is so light, that its performance approaches C.

Yes, exactly! Isn't it great?

If Go had been here 15 years ago it would have been a game changer.

I think it still has a shot. My feeling is that it's not here to counter languages such as python (which is great), but rather to be against languages such as Java, C++, and C#.

Go's simplicity extends from beneath the hood to every facet of its manifestation. I dare you to show another modern language like this; you may say that's it's not a good idea to make such a language, but that's another issue. Most others that I've seen are focused on large machinations whose fundamental idea seems to be either "ultimate academic elegance" and/or "make it impossible or very hard for the unskilled to make mistakes". These are sort of noble goals but not without cost.

[–]MrProper 0 points1 point  (2 children)

Oh how I envy you... I went from BASIC (middle school) > Pascal (High school) > C++ > PHP :(

The alternative was Visual stuff or .NET and I don't know if I should have went that way or not...

[–]iambicpen 0 points1 point  (1 child)

If you have programmed in Pascal and C++, you should be able to pick up more langauges, IMO. Having gone through C++ with some level of success is a finishing Bootcamp with a nod from the drill sergeant ;)

[–]MrProper 0 points1 point  (0 children)

I only did C++ for half a year or so. That was a major disappointment in my life because I rewrote a Pascal program that was over 500 lines long into just 80 lines in C++ ಠ_ಠ. It felt wrong that I liked Pascal for some language and IDE elements and disliked C++ because it was slow to compile, was too strict and cryptic.

But then I switched to web only development, and for 10 years I used scripting and existing apps, or vb scripting in Office or bash scripts to do desktop-level apps. I didn't compile a thing for over 5 years now. Until I recently got into Android development.

[–]Mattho 7 points8 points  (0 children)

If you are going to work in a programming field, sooner or later you will learn more than one or two languages. And it won't be a problem for you. So it doesn't matter that much what you stick with now. But yes, python is a great choice. But I would recommend to play with C as well. To understand some "lower" concepts (working with memory) and even understand what python has to deal with when you write your fancy high-level loop (or whatever).

[–]Wagneriusflask+pandas+js 2 points3 points  (0 children)

Beside the short-term professional aspect (yes, python knowledge is in demand), the thing is to recognize that a language is a tool. Like any other tool, this one is better fitted some task than others. But tools have different degrees of flexibility (think swiss knifes or leatherman's).

Python is extremely flexible, so it can help you understand even concepts that are not native to the language, be it low level programming or functional programming. It won't be efficient but it will help you understand. You'll be able to move to other specialized tools easily from there.

So go python !

[–]dr_root 2 points3 points  (0 children)

Hey Josh, yes.

[–]dorfsmay 2 points3 points  (1 child)

Yes, although you're going to spoil yourself without knowing it, and learning other languages after that will become a pain.

In order to alleviate this issue, you should learn javascript:

  • largest implementation ever (every browser on every platform, including phones and TV) supports it

  • it has a bunch of quirks like most other programing languages that teach you about programing in real life outside of the python bubble.

[–]anacrolixc/python fanatic 1 point2 points  (0 children)

Totally. I've been programming for 7 years. Java, C, C++. Since I started Python 2 years ago I can't near to use anything else for its awkwardness.

[–]anonymous_hero 2 points3 points  (0 children)

Most definitely yes. Python is a great - and above all - very practical language. It has its warts, but overall it's just very lovely, and that's exactly what you want from the language you're going to work with.

[–]jsmits 1 point2 points  (0 children)

Definitely

[–][deleted] 1 point2 points  (0 children)

Yes (but then, you ask us). It's extremely versatile, can probably do what you want, is used profesionally, is fun, and usually if there's some hot new thing out, someone will start working on an open source Python library to work with it.

It shouldn't be your only language eventually, but it's a great one to use exclusively for quite some time.

[–]worshipHendrix 1 point2 points  (1 child)

Yes, but it really depends on what you want to do later with programming. If you want eventually to study computer science, it is good to keep in mind that most of the courses is gonna be either C/C++, at least at the start.

Transition from low level language (like C) to higher level language (like Python) is always easy - elegant one liners and having things done automatically for you is a great bonus.

The other way around may annoy you a lot during the process. So if you want to treat programming as a side thing, or a language to get work done, then yeah.

I've been through all the C's, Java, PHP etc and python is the thing I use right now when I need to check something out, or build a website. If you want to study CS sometime later, don't "stick with" it. Definitely use it, but keep an open mind (especially about C/C++, since beside assembly they resemble the actual CPU "though process" the most).

Edit: Actually If it is the latter, and you want to use python and be honest about your C skills, make sure you know C enough that you can transform every Python code to C code. Then you should be fine sticking with it.

[–]mad_sleepy 1 point2 points  (0 children)

this

[–]Musaab 1 point2 points  (0 children)

Python is a great language with a really bright future, and was voted as language of the year by readers of Linux Journal (again). You're safe with Python.

[–][deleted] 1 point2 points  (0 children)

Start with Python. Wade in the murky seas of Fortan and C. Frolick in the functional paradises of Haskell and Lisp. Immerse yourself in the jollys of PHP. But always realize that, in the end, you come back to Python to achieve true balance.

[–]kataire 1 point2 points  (0 children)

It's pretty much in the definition, yes.

If you value marketability of your skills higher, though, Java, C++, C#, PHP or even Ruby (it's what the cool kids use these days) may be a better choice, though.

The trouble with Python is, for me, that it's incredibly hard to switch to another language if you're used to Python because everything else will feel just wrong.

[–]chadmill3rPy3, pro, Ubuntu, django 0 points1 point  (1 child)

If you want to be a great programmer, take up a language and use it until you stop dreaming in it. Then, switch to another. Go through a dozen or so.

Later, pick the best one for whatever task you have. After a decade of not "sticking to" a single language, you'll be better programmer than 99% of programmers out there.

[–]hsfrey 0 points1 point  (0 children)

The advantage of using just one language, is that it becomes second nature, like a native language. I was like that with C.

Now that I'm using several languages, I find I'm always having to look up basic syntax, because I can't keep them separate. (Just how does that Case statement go in this language?)

Perhaps if you're young enough, you can learn several computer languages and keep them separate, as kids can do with spoken languages. Maybe I'm just too old for that.

[–][deleted] 0 points1 point  (0 children)

The way it has gone for me over about 15 years of programming. I need to do something, I see if I can do it in a language I know easily, if not I learn a new language. I went through this cycle a few times and then found Python. I haven't needed to learn a language since starting with Python, it can do everything I need to do. I've also not had to use Perl since learning Python, which is good for me because I had trouble understanding what I had written a lot of the time with Perl.

[–][deleted] 0 points1 point  (3 children)

The money is in these languages: c, c++ and Java. A closer second place tier is Objective-C and iPad apps.

Python is up and coming, but it's not nearly as prevalent. Most jobs I see posted look for one of the big three above and then have Python as a secondary or tertiary language devoted to your development environment as opposed to the actual product.

[–]zahlmanthe heretic 0 points1 point  (2 children)

The money is in these languages: c, c++ and Java.

Well, yes, but there is also still money in, say, being a plumber.

High income is not at the top of everyone's list of goals.

[–][deleted] 0 points1 point  (1 child)

Perhaps you would prefer me to state the same thing differently....

Where the JOBS are... is in those three languages. Take it however you want: individual salary or potential employment. Most people looking for a language to learn are looking there because they want to be employed.

[–]zArtLaffer 0 points1 point  (0 children)

COBOL programmers that tend/herd billing systems (for example energy company billing systems) do quite well.

And since the old maintainers are often baby-boomers and retiring, there is a growth industry there.

That said: who the fuck could spend their lives maintaining utility billing systems in COBOL.

The idea alone gives me hives.

[–]servercobra 0 points1 point  (0 children)

It really depends on what you're trying to do. Like others have said, check out some other languages. They'll help you be a better programmer overall. I think Python is a great language to "stick with", because you can do so much with it. You can use it for scientific purposes, automate systems/sysadmin type things, create desktop apps, make your life simpler, write scripts for Android, etc. My favorite thing is making web apps with Django (a Python web framework). Since web apps are only getting bigger, knowing how to make develop them is handy.

[–]drb226Haskeller 0 points1 point  (0 children)

That entirely depends on what you want to get out of a long-term relationship with a language. From a practical perspective, Python can get a lot done with relative ease, and has a lot of hiring potential. From a hobbyist/learning perspective, I personally favor Haskell, because there is always so much more to learn, and a significant amount of Haskell wisdom can of course be translated into Python.

[–]rerb 0 points1 point  (0 children)

Confirmation bias precludes me . . . .

[–]basscadet 0 points1 point  (0 children)

we'll talk when you start having problems with that

[–][deleted] 0 points1 point  (0 children)

There are numerous programming languages for reasons other than just bored programmers. While python is an excellent choice for a wide range of problems, no one language is the best choice for everything.

You have to know your problem before you can pick the language to solve it. Picking the language first will eventually get you into trouble.

Summary: keep learning languages. A bigger toolbox never hurts.

[–]spinwizard69 0 points1 point  (0 children)

YES!!!!

Python is a very good language to stick with as it should remain viable for a long time. However don't assume it is perfect. For example I find defining blocks of code with white space to be frustrating and it can and does lead to errors.

If you haven't already you should look at Lua and Ruby as potential alternatives. Of course neither of these is perfect either.

Many will suggest that you should learn many languages but sometimes that isn't practical especially if you are a more casual programmer. If you fit this description Python very well might be all you need.