Off-Topic Discussion > Programming

Why Learning to Code is So Damn Hard

<< < (2/3) > >>

ScottFreeCapital:

--- Quote from: Mongoose on February 16, 2015, 05:58:00 pm ---I once had to spend almost 3 full days wrestling with a coding project for a college class before I was able to get the damn thing to function properly.  That's about the time I determined that I wouldn't be involved in any sort of career that required programming.

--- End quote ---

Honestly, usually at least half a day of every week I go to work consists of frustration and not figuring something out. Some weeks the entire week is spent on one tiny problem. Just depends on what you're doing. As a career, it ends up being to where certain projects are really easy where you have gotten experience in a certain area before and have done the basic function of whatever it is you're creating while other projects become nightmares of complexity, or building out some thing you have zero experience with and do not really understand.

As a result, every tiny little thing is highly rewarding once you get it to work. To me, that makes the whole process kind of addictive.

Rheyah:
I have been scientific coding (which as we all know isn't real coding) for around 4 years now.  The biggest barrier to my learning more code practice is that I simply do not know the capabilities of the machine I am using and that any such knowledge is buried behind five years of jargon.  Reading StackOverflow for example is like reading another language written by people who are wanting to make themselves as impossible to understand as they can.

Throughout my battles I have grown comfortable with Python, C++, C, Fortrans 77-95, some Javascript, Java and a few other languages with MPI in F90 (F77 MPI is a *****) and C++..  I can't pretend to be an expert on any of them.  In fact I am probably far, far below the coders who work on the SCP.

This is on top of doing theoretical plasma physics.  The result is that I am an expert on precisely **** all.

I sometimes hate my life.  Most of the time though, I just sleep it off :)

potterman28wxcv:

--- Quote from: Rheyah on October 30, 2016, 03:36:21 pm ---I have been scientific coding (which as we all know isn't real coding) for around 4 years now.  The biggest barrier to my learning more code practice is that I simply do not know the capabilities of the machine I am using and that any such knowledge is buried behind five years of jargon.  Reading StackOverflow for example is like reading another language written by people who are wanting to make themselves as impossible to understand as they can.
--- End quote ---
It's all math really. When you do scientific computation, you take a look at the total amount of operations you're going to make your machine compute, and you get an idea of how feasible it is.

I am working on an implementation of Alexnet, a neural network to recognize images (I need to port it to an embedded architecture). My boss just asked me how much it would cost even though i didn't start the implem yet. I just computed with pen and paper how many multiply-accumulate (basically doing S = S + a * b) the computations would require (there are a lot of them in convolutions, and there are a lot of convolutions in neural networks), and it gave them an idea of how much time it would take to process an image.

Usually, there are two bottlenecks : either you are not fast enough to compute, either the data does not arrive fast enough to your processor. You need to consider the two aspects to know the capabilities of your machine. If you use MPI (distributed computing and Cie), it's more complex to assess though.

Then there is also all the parallelism issues - typical example, you take a program, you make it parallel, and oddly you realize that the parallel version actually runs slower than the sequential version. So you dig, and you realize that you have assigned too many threads, and that the program spends half his time switching thread..

Evaluating scientific computing performance is a very complex subject, since you need to know how it works under the hood. But this is a great skill to acquire :) Once you got that, computer science is not black magic anymore, and it all makes sense.

Mongoose:
Reading these descriptions makes me assume one needs a supercomputer for a brain in order to tell supercomputers what to do.

potterman28wxcv:

--- Quote from: Mongoose on October 30, 2016, 09:12:31 pm ---Reading these descriptions makes me assume one needs a supercomputer for a brain in order to tell supercomputers what to do.

--- End quote ---
Not really - you don't need a supercomputer to play chess, or to take your car and travel somewhere, or to figure out what to buy for dinner.

Just like everything in life, programming a supercomputer has a set of rules that you need to learn - once you got them, and once you're familiar with the environment, it doesn't require much reflexion really. Just like any other job out there.

The only required skills are curiosity and logic.

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version