Thursday, April 25, 2013

A one-sided chat with Kevin about the nature of CS

My friend Kevin, a physics student from Australia, likes to ask me random questions over Facebook chat.

Kevin:
What are the main opportunities and purposes of programming?
(besides doing numerical calculations)

Me:
The way I see it is that the ability to do calculations quickly lets you automate all sorts of processes.
That sounds boring, but the possibilities are endless--


You can do all the tasks you did before, but faster and more precisely.
This allows you to tackle complex tasks like creating graphics or large number crunching 
or predictive programs that can put things into categories based on data they've already seen.

Plus, this ability to automate illuminates new possibilities that people didn't think of before.
I'm not sure anyone thought it was possible to model individual molecules of a cell membrane + all the surrounding water——
but with fast computers and the ability to harness them through programming, you can!
So certainly that is the most straightforward thing, simulation, large data crunching, graphics, language processing, etc

But there's more! And I think it's even better.
Now that you now have the power to do tasks more quickly by programming a machine,
you really have to have a deep understanding of the process for which you're writing code.
You have to understand all the steps in order to get the correct result when programming,
and if you want to have the computer take fewer steps to do what you want it to do,
you have to understand the task so deeply that you can calculate it in some other, probably highly creative way.
In order to understand problems and tasks so deeply,
you need to decompose any task into its simplest elements.
You need to distill it down into the bare minimum
The funny thing is that then,
you start to see patterns among vastly diverse tasks.
Maybe when you get to the bottom of the problem, you really just need to connect dots with lines in a certain way
The crazy thing is that you are really getting to the heart of what information is--
what makes your physics simulation the similar to how your body translates DNA, it's all information!

So I'd say that computer science is really understanding the nature of solving problems, 
which you can do with a computer, but that is really independent of any machine.

No comments:

Post a Comment