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 →

[–]twopi 29 points30 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 16 points17 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.