| New Reply |
Bad programming skills = biggest hurdle to astronomy research |
Share Thread | Thread Tools |
| Jan16-11, 11:24 AM | #18 |
|
|
Bad programming skills = biggest hurdle to astronomy research
This isn't as either-or as it is seeming in this thread.
There are engineers who specialize in writing scientific code. They are fully capable of taking the differential equation (or whatever) and programming the discretized solution. The better ones can do it in any type of hardware. They are fully capable of debugging the physics on their own as long as the physicists supply the test problem and expected answer. The terabytes/day of data problem is totally different. For this you must use computer scientists. It's just not what engineers or physicists do. |
| Jan16-11, 12:27 PM | #19 |
|
Mentor
|
A few are saying it's either-or. Those are the ones who are saying that programming should be turned over to the IT department. my opinion: Yech.
What I've been saying is that scientists and engineers can learn to program well. It's just not something that most can pick up on their own. Some training is needed. Colleges require students of science and engineering to take a minimum of two or three calculus classes, and often quite a bit more math beyond that. Very few require students of science and engineering to take anything beyond an introductory computer programming class. A lot don't require *any* classes in computer science. |
| Jan17-11, 10:05 PM | #20 |
|
|
And it really shouldn't be surprising once you think about it. Just because you are a professor of English literature doesn't mean that you can write good short stories. |
| Jan17-11, 10:07 PM | #21 |
|
|
|
| Jan17-11, 10:12 PM | #22 |
|
|
|
| Jan17-11, 10:16 PM | #23 |
|
|
These courses, in particular: |
| Jan17-11, 10:20 PM | #24 |
|
|
Also if you take the attitude "that's not my job" you aren't going to last very long as a physics student. If you start generating multi-gigabyte/second data, and you don't know the CS to deal with that, then learn it. |
| Jan17-11, 10:23 PM | #25 |
|
|
Personally, I think a poetry course is pretty useful for writing good code, since some of the issues that you run into in writing elegant C++ are the same issues that you run into when you write English poetry. |
| Jan17-11, 10:34 PM | #26 |
|
|
I'm going to side with two-fish here, especially with regard to working on the bigger projects with dozens and dozens of people.
Working on the bigger projects is where you get a lot of experience in a lot of things. Everything from large scale project design to optimization to effective integration of multiple code bases (think libraries or amalgamation of smaller repositories) is where people need to see the forest from the trees and have a depth that is a synonym for experience. Also a lot of programming that is taught can be way too theoretical. If you're designing a GUI widget, you have to get your hands dirty and not be stuck in some analysis paralysis where you are overanalyzing the design, structure and so on. Like twofish said with the writing, to get good at writing you have to write: you can only theorize so much before you have to physically do something to learn. |
| Jan18-11, 02:19 AM | #27 |
|
|
Waiting for data to process is not labor intensive. Waiting for physicists to gather good data is the labor intensive part. Data gathering algorithms are extremely important in this process. Researchers are not blind to this issue and grad students with excellent programming skills are not rare. This may have been issue 30 years ago, but, not now.
|
| Jan18-11, 09:16 AM | #28 |
|
Mentor
|
|
| Jan18-11, 09:16 PM | #29 |
|
|
1) real world problems are invariably team graded. Your "grade" depends a lot on how competent the person next to you is. So is it unfair that you get a bad "grade" because the person next to you is incompetent. It may be unfair, but it's real, and one skill is to figure out how to deal with that. 2) real world problems tend to be vague and ill-defined. Classes you get a well defined assignment. Much of the work in real work programming involves figuring out what you need to do. When you do get a set of marching orders, more often than not, those orders are either contradictory or flat out impossible, and dealing with that is part of real world programming. 3) class assignments are short and throw-away. in the real world, you have to work with a pre-existing system, and you never are in a situation in which you have to start from scratch. Also sometimes you have to deal with something that is badly written. This means that you tend to have emotional reactions to good/bad code. In a class they teach you rules, but there is no emotional connection to through rules. In real world software development, you see bad code, and you react with horror since you know that you'll be spending the next three weeks going through ten thousand lines of code and fixing things. You can get a lot more experience if you work on an open source project. Also I wasn't kidding when I said that it helps you if you take a course on writing poetry. Poetry classes are usually set up so that you write something and then you go to a room where everyone else in the class tells you how you can improve it. That's usually the dynamics of code reviews. |
| Jan18-11, 09:52 PM | #30 |
|
Mentor
|
|
| Jan23-11, 08:13 AM | #31 |
|
|
This seems like a good thread to ask this question but what languages would you guys say are the 'best' for writing astrophysics tyoe simulations (i.e. 3+ body problem simulations).
I began with Maple before I had any intentions to program these types of problems and have moved onto Matlab as maple isn't the best for high end computing. I have a feeling C++ would perhaps be a good shout but since I have a course on Matlab this year I'll be mainly working with that. I also find that the more I work with languages like Matlab the more I seem to understand C++ code despite never having worked with it. I read somewhere that you should look at programming less in terms of learning a language and more in terms of learning the basics and fundementals of programming such as OOP. |
| Jan23-11, 06:41 PM | #32 |
|
|
This is a website I found a while back, its a great comparison of programming languages and their speed.
http://shootout.alioth.debian.org/fa...g-language.php I think you're right in choosing C++ as a language, as you can see, C is minimally faster, but slightly more annoying to code at times so C++ is a happy medium. Speaking of happy medium, I tend to fall into that category when it comes to this topic, my schooling (while not finished) was for Astro-Engineering, but I now hold a job as Linux Sysadmin and have done a rather extensive amount of programming. I think what someone mentioned before its like we have to learn all over again, we've gotten so used to fast computers and not caring about efficiency, but when you are dealing with this large of numbers, it is like going back 30 years with computing power. Unfortunately, I agree that it's a vicious cycle of astronomers not being programmers and vice versa, it makes it hard to program efficiently when you don't know what you're programming, and it takes years of practice to know how to program efficiently. while(astronomer == programmer) { printf(&efficient_program); } EDIT: Coming from a background in a variety of languages, I agree with what you said about learning the basics of programming over the language, you'll learn quickly most languages are very similar and you can adapt to them quickly. |
| Jan23-11, 07:52 PM | #33 |
|
|
Wow, very interesting link! Why is FOTRAN Intel so slow? My professors always told me to use either C/C++ or FORTRAN since they were the fastest.
FORTRAN is nice for MPI/OpenMP integration too (if you want to parallelize things). I'm sure C also has MPI/OpenMP integration, but I'm not sure if it's as fluid. |
| Jan23-11, 08:24 PM | #34 |
|
Mentor
|
Note well: I am not a Fortran advocate. Far from it; I gladly abandoned the language a couple of decades ago. One doesn't have to be a Fortran advocate to say that those benchmarks are more than a bit suspect. That said, Fortran does not always look so bad at debian.org. In the n-body problem Fortran is the winner: http://shootout.alioth.debian.org/u3...php?test=nbody. |
| New Reply |
| Tags |
| inquilinekea |
| Thread Tools | |
Similar Threads for: Bad programming skills = biggest hurdle to astronomy research
|
||||
| Thread | Forum | Replies | ||
| PhD and programming skills | Academic Guidance | 3 | ||
| Astronomy Research?? | Career Guidance | 1 | ||
| Research Skills | Academic Guidance | 1 | ||
| Necessary Programming Skills? | Academic Guidance | 8 | ||