See I for one only enjoy studying or working with computers because of the utility it affords me.
For example, if I don’t learn something that I can use later on, I might as well not bother learning it.
Like let’s say I study how the filing system works in XP. I’ve got to be able to (hopefully) use it in some way (say like being able to sort out or de-bug my system), otherwise I feel like I’ve wasted my time.
The thing is, with other studies, I don’t really feel the same. If I learn something about a piece of history, for example, I know I may never use this piece of information ever again. Yet I still don’t really feel like it’s all been a waste. This is true of most of the esoteric studies I would try my hand at.
However, this has never been the case with computers. I have ALWAYS wanted to learn something just so I could use it for something later.
So tell me, for those of you who study computers/computing/computer science full time or make it your full-time employment, what about this particular subject drives you to study it so much?
Are you like me, where you want to learn lots of stuff just so you can use it later?
Or is there some romantic aspect I’m missing here?
I can definately see that aspect in math. There’s a certain kind of elegance or beauty about pure applied logic, something that’s intrinsically very satisfying to a human being about problem solving.
But honestly, besides wanting to learn stuff you can use, I don’t get what all the fuss is about with respect to computers/computing/computer science.
For me I’ve always had an interest in computers and gadgets in general, but the real attaction for me was the puzzle factor. I love puzzles of all kinds and computers to me are just big complicated puzzles just waiting to be figured out.
Years ago, when I was a wee lad doing my Comp.Sci degree, I learned about data structures and bi-directionally linked lists. I found it not only really clever but a real revelation.
Never used it again since. But I still remember that class.
Now, after near 20 years, all the passion and fire has been beaten out of me. I only learn what I need to know and erase if from memory to make room for great recipies on the cooking channel.
I’m a software engineer, and I like my job because it demands sharp technical, creative, and interpersonal skills. You’d be hard-pressed to find too many other careers that have that mix.
I like pure computer science because it’s very abstract–so the intellectual challenge is there–but it also has a very different feel from traditional mathematics. I think that every mathematician should be required to study basic computation theory.
Heh. I still remember one of my professors telling me about when linked lists were considered graduate level material back in the 70s.
In my experience, computer science and romance are almost mutually exclusive. Your mileage may vary.
Why computer science? Well, first of all, when I got into it almost 30 years ago, it was an almost brand new field. Lots of cool stuff to work on. Hell, vector graphics were considered really leading edge. There was the fun of solving problems and, unlike more theoretical sciences, you actually produced something (even it was a stack of punched cards that spent the next 20 years in the attic).
As for, “do you learn it for fun or necessity?”, I think most computer geeks will start by obsessively learning one operating system or language. Once you’ve mastered that, all the others are pretty similar by analogy, so there’s no real reason to learn a new API set unless you have to. By then, you know the underlying concepts.
Really, the best part of computer science is that you get to design and build something that people use. At its best, that can be a lot of fun and very rewarding.
Writing computer programs is quite a lot like playing lego or erector sets (mechano). You take small functional pieces and put them together to create larger more complex functional pieces that can finally be put together to make something intriguing or beautiful or practical. If you consider a modern computer it is quite obviously impossible that it can be used in all the ways that it can actually be used. The internet is so obviously impossible as to seem almost a silly idea to even immagine. Yet both exist, computer science helps you understand how these obviously impossible things actually exist and work,.Ssimilar to how Quantum Mechanics helps you understand how impossible things like atoms exist and work. Similar to how General Relastivity helps you understand how impossible things like stars and galizies exist and work.
So what’s everyone’s favorite data structure? I’m rather fond of heaps. I don’t really USE them, but I do think they’re neat.
[quote=Bippy the Beardless]
Writing computer programs is quite a lot like playing lego or erector sets (mechano).
Yeah, I suppose it is. I never really had the COOL Legos, just the little-kid ones with the really big blocks, but I did do a lot with Tinkertoys… and K’Nex… and this one building set whose name I can’t remember, but that I used an awful lot. (It had these gray - or sometimes red or blue - globes with holes in them at different positions, into which you snapped gray or red plastic pieces of varying length. There were also triangular and square plates. Sound familiar to anyone?) As I recall, I built a spaceship.
I never got an Erector Set, though. I felt that the fact that they came with motors was cheating.
I think I study electronics, and to a lesser degree computers, because there is something wonderfully silly about having massive, complex, life-altering machines that work simply because of power being turned on and off. It also has something to do with being wonderfully complex and beautifully simple at once. No matter how complex or complicated a machine you can build, it still functions, atleast intially, by the interuption of power. Nifty.
They might not be as “classic” a data structure as a linked list or a hash table, but to me, they represent a sublime blend of mathematical theory, computer implementation and practical application.
And, C++ is a perfect platform for them, IMHO.
To the OP: people just like fiddling with computers. Like people used to like fiddling with old-timey radios or their cars. They’re just a cool gadget.
Yeah, I think that “What’s your favorite data structure?” is quite possibly one of the dorkiest questions ever. (Though an ex-roommate of mine did get that as an interview question when trying to get a TA job.)
A computer (well, software, anyway) does what you tell it to; if the program isn’t working right, then it’s something you’re doing wrong, and you have to fix it.
Unquestioning obedience + puzzle-solving fun, what more could you ask for?
And my favorite data structure is the doubly-linked list.
I became a software engineer because I love the potential for computer science to benefit humanity. The stuff I work on is rather mundane, but everything I do solves a problem someone had, thereby making their life easier, and improving my little corner of humanity. Isn’t that cool? I think it is.
I’ll take a skiplist and raise you a bidirectional squarelist!
A squarelist is similar to a skiplist. But instead of having one big list with two sets of links, you have a linked list whose nodes point to other linked lists, forming a “square.” Node A in the first list points to a second list with all the nodes that should appear between it and node B in the first list. The effect is basically the same, and it’s easy to make them recursive by adding as many dimensions as you want.