Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon.

Pages: 1-

Programming in Practice

Name: Anonymous 2007-12-22 23:16

Im a freshman in college right now, learning C in Computer Science.

What I was mostly wondering was, how does programming work in practice? How much do you really need to know by the time you graduate from college (I plan on getting my MS, btw), and what should I spend my time learning now in my spare time outside of class?

Name: Anonymous 2007-12-22 23:33

How much do you really need to know by the time you graduate from college

How to make a 'hello world' program using a design pattern in Java is all you need to be top-tier.

Name: Anonymous 2007-12-22 23:51

>>1
what should I spend my time learning now in my spare time outside of class?

Everything possible. Write a lot of code, read code, and read about programming in general, especially its history.

The first thing you should learn is that while manual memory management is not the worst thing in the world, it's a waste of your time in every situation, unless you're coding for a machine so small you can keep the contents of its memory in your head. Garbage collected languages aren't objectively slow. There's a very good reason that GC is either in or coming to every currently used language but C.

I'm astonished and impressed that your college is teaching you plain old C from the get-go. You're a step ahead of all the guys who are getting Sepples or Java as their first exposure to programming. In a lot of ways, C provides more room for stylish programming than either of those two. By that I mean that it gives you a simple set of fairly regular primitives (pointers, structs, variables, loops), and lets you go wild without a mind-numbing class structure to abide by and, worse, create, and without a bunch of features that don't work well together.

As for what you really need to know: not much, depending on how good you are at getting hired. You're going to graduate feeling like a total nub, at least with a BS. This is to be expected, and it's the same in every field. You'll get to do a whole lot of learning on the job. With an MS, I have no idea. I don't talk to many people with postgraduate degrees.

What you probably want to have, as a programmer, is a good enough understanding of program design that you could take a project from idea to final product without more help than a bit of advice. You should be able to do this in at least one language, and be almost able to do it in a few more. You want to have historical knowledge good enough that you don't get a blank look on your face when Algol and PL/I come up. Ideally you should have some knowledge about the archicture of historical computers, and deep knowledge about the architecture of modern computers. Know assembly language well enough to interpret a printout and reason about the code's efficiency, since ASM is a direct representation of the instructions sent to the CPU. But don't get too caught up in theoretical efficiency without profiling your code.

Name: Anonymous 2007-12-23 6:38

>>3
abstraction is so you can refactor the code behind the data without having to break functionality. this is trivial in OO languages when you pass around objects and not plain pointers to data structures. not so in c.

Name: Anonymous 2007-12-23 21:07

>>3
You're a step ahead of all the guys who are getting Sepples or Java as their first exposure to programming.

Specially true.

Name: Anonymous 2007-12-23 21:35

>>4
This is trivial in real OO. It's also trivial in C. If you think objects with methods in them are the only abstraction around, you need to read SICP.

Name: Anonymous 2007-12-23 22:27

I am prog troll.

Name: Anonymous 2007-12-23 23:50

>>4
See >>6

Name: Anonymous 2007-12-24 5:52

faggots use program ot acheive things, what assholes they don't understand.
programming is not about computing things, I write volumes of code but I dont ever run it because im not a faggot. Writing code proves that youre a god, running it just takes that away and makes you another shit faced heap sack queues stacks trees..

Name: Anonymous 2007-12-24 6:11

>>9
bad troll is bad

Name: Anonymous 2007-12-24 6:16

>>9
your words don't even make sense. what are you trying to say?

Name: Anonymous 2007-12-24 14:03

>>3
Op here.

Thanks for the detailed description, I appreciate it. But, if I'm not really expected to know much by the time I get out of college, what's the point of college? Sure, you might say it's to get a piece of paper, but is that really it? Is there nothing I could really do to further my position before going into the quote-unquote "real world"?

Any suggestions on languages to learn outside of school for future work (thus, not C or Scheme or Haskell etc, but stuff I might actually use rather than just learn from. I'll be learning those in college anyways)? I've been learning C which I enjoy, and have also been learning Python on my own (great how they interact, btw), and know Java due to my High School Computer Science courses (AP Exam is in Java now instead of C, which is heavy frowns), and have been trying to learn Web Development stuff. Any suggested references outside of any O'Reilly books (since I already know they generally publish really good shit)?

Finally, my basic plan for the future is to go into Software Engineering, since from what I've read it seems interesting, although I'm pretty much open to any opportunities that come up. What kind of jobs should I try to get for internships and the like? How much should I worry about "padding" my resume, and if so what do you think would be the best way to go about doing that?

Just wanna be as prepared as possible before I head out into the work place to find fun, interesting work. Sorry for all the questions, thanks again though ;)

Name: Anonymous 2007-12-24 14:08

>>12
It's not just languages you need to learn. College is useful in that you will learn the basic theory that underpins everything in the field, and have access to many people who know a lot more about it than you do. Use them wisely.

Name: Anonymous 2007-12-24 14:37

>>12
But, if I'm not really expected to know much by the time I get out of college, what's the point of college? Sure, you might say it's to get a piece of paper, but is that really it?

Yes and no. You'll learn a lot in college, but you won't turn into an expert programmer without going far above and beyond your courses. You'll probably get more out of your courses and your professors if you go in knowing more as well. Colleges tend to sacrifice depth of education for breadth and keeping it within 4 years, but they're still an excellent environment for learning if you work at it. If you're doing an MS, you'll probably learn a whole lot in those final years.

Any suggestions on languages to learn outside of school for future work (thus, not C or Scheme or Haskell etc, but stuff I might actually use rather than just learn from.

If you're lucky you'll get to use a fair amount of C. If you're really lucky you'll get to work in Lisp. Java or .NET are fairly likely, and some bad luck could land you a C++ job. Good knowledge of scripting languages (Python, Perl, shell scripting) will probably stand you in good stead anywhere, and if you're working on something web-based Ruby might be good to know, as well as some of that AJAX stuff.

The bottom line is that there are so many kinds of programming jobs that it's hard to pick one language you should know.

Name: Anonymous 2007-12-24 15:12

All the software in the world is written in C, so obviously you'll have to know it in order to understand why your open source ed-itor crashes.

Name: Anonymous 2007-12-24 16:44

>>13
>>14

Then, what should I be looking to do outside of college, "above and beyond" the courses that I'm taking? I already plan on looking for internships every summer to get work experience. Still, what can I do exactly that will help me on my way to becoming a quote-unquote "expert programmer"?

Name: Anonymous 2007-12-24 16:45

/prog/ is not your guidance counsellor.
GTFO.

Name: Anonymous 2007-12-24 21:29

>>16
All the stuff mentioned above. Spend a few hours (almost) every day programming and a few hours reading to expand your knowledge. Apparently it takes ten years to become a master at anything, but you can compress that a bit. Coursework isn't going to up your required hours of learning enough on its own, but along with extracurricular studying it will take you far.

This isn't rocket science. Just take learning what you want to know into your own hands.

And yes, internships are extremely valuable.

Hang out on where expert programmers are. But try to pick a place where they seem to have wide knowledge. Hanging around some kind of ``C++ expert'' will only damage your brain. Just lurking on a board full of guys who have been doing good work across platforms and languages for decades is very valuable.

Name: Anonymous 2007-12-25 11:35

>>16
Also, try things like Project Euler.

Name: Anonymous 2007-12-25 13:25

>>16
Algorithms, data structures, programming concepts, cryptography et al.
Also mathematics.

Name: Anonymous 2007-12-25 23:52

if you know ANY C at all youve already been retarded to the point of not ever being a competent programmer

Name: Anonymous 2007-12-26 0:14

>>21
You're thinking of Sepples. C could be cleaner, but it's not brain damaging.

Name: Anonymous 2007-12-26 4:41

>>22
This is why we can't have nice things

Name: Anonymous 2007-12-26 10:09

>>22
Linus Tarballs? In my thread? It's more likely than you think.

Name: Anonymous 2007-12-26 16:40

>>19
That Project Euler site is excellent. I've only been on there a day and already I've solved 20% of the puzzles, but they're getting increasingly difficult. Some of them are brutally hard.

Also, it's really humbling but enlightening to have brute forced your solutions, but then go into the forums and find that others have taken some much better and more elegant approaches. I've gained more insights into mathematics and computer science in the past few hours than I have for the past few years.

Name: Anonymous 2007-12-26 19:57

>>21

Wow, this is a pretty good troll

Anyone who thinks that is a fucking retard though.

Name: Anonymous 2007-12-26 21:16

I distinctly remember two instructors I had when I learned C.

The first taught my intro to programming class (in C), and I hated how he basically restricted us to a subset of C and told us to write dumbed-down code; all assignments were to have no pointers, loops had to be either while() or for() (no do...while()), break, continue, and goto were not allowed, the conditional operator was banned ("you can do it like this but it makes it harder to read so don't use it"), and all expressions were to have no more than 3 terms (now that I look back, we were essentially restricted to 3-address-code). I fucking hated it, but still got around 98%. The final project required about 30 lines of code to complete, and I remember losing marks because I accidentally used continue in one loop. No matter how much I argued with him that it was perfectly valid and readable C code he wouldn't get it, just saying "it's harder to read like that" -- I was the fucking student and the instructor thinks my code is too complex? WTF. He eventually changed to teaching Java and died of age a little bit after that.

My second instructor was awesome. She (yes, a female) let us learn the basics of C ourselves. K&R was the required textbook for the course, and every day in class she'd give us one or two lines of extremely tricky code and have us figure out what it did. The assignments were bloody tough too, not necessarily long but definitely needed thinking and creativity. She considered programming more of an art, was definitely not afraid of goto, break, continue ("the language gave us these powerful features, use them to the fullest") and her advice was "readability is in the eye of the beholder, don't let others hold you back". The final exam was a single page of dense code with two problems: "State the output of the above program" (I think it was a moon phase calculator or something like that) and something about modifying it to work with 5-digit years. Didn't do so well, only about 80%, but I'd definitely prefer her over the other guy.

Your experiences, /prog/?

Name: Anonymous 2007-12-26 23:00

I had two instructors I had when I learned C.

The first taught my intro to programming class (in C), and I hated how he basically restricted us to a subset of C and told us to write dumbed-down code; all assignments were to have no pointers, loops had to be either while() or for() (no do...while()), break, continue, and goto were not allowed, the conditional operator was banned ("you can do it like this but it makes it harder to read so don't use it"), and all expressions were to have no more than 3 terms (now that I look back, we were essentially restricted to 3-address-code). I fucking hated it, but still got around 98%. The final project required about 30 lines of code to complete, and I remember losing marks because I accidentally used continue in one loop. No matter how much I argued with him that it was perfectly valid and readable C code he wouldn't get it, just saying "it's harder to read like that" -- I was the fucking student and the instructor thinks my code is too complex? WTF. He eventually changed to teaching Java and died of age a little bit after that.

My second instructor was awesome. She (yes, a female) let us learn the basics of C ourselves. K&R was the required textbook for the course, and every day in class she'd give us one or two lines of extremely tricky code and have us figure out what it did. The assignments were bloody tough too, not necessarily long but definitely needed thinking and creativity. She considered programming more of an art, was definitely not afraid of goto, break, continue ("the language gave us these powerful features, use them to the fullest") and her advice was "readability is in the eye of the beholder, don't let others hold you back". The final exam was a single page of dense code with two problems: "State the output of the above program" (I think it was a moon phase calculator or something like that) and something about modifying it to work with 5-digit years. Didn't do so well, only about 80%, but I'd definitely prefer her over the other guy.

Name: Anonymous 2007-12-26 23:22

No one is afraid of goto.... you totally misunderstand Dijkstra you idiot

Name: Anonymous 2007-12-26 23:24

>>27
I had two instructors. One was some old guy who basically restricted us to a subset of C. The other was a hot female C instructor who held the hippy ``code imitates art'' view. The final exam was a moon phase calculator. I did okay in it (I got 80 percent)

Name: Anonymous 2007-12-27 0:57

>>27
They're both failures. The first somehow got the idea that simple constructs make simple programs when the reverse is often true, and the other believed that writing and deciphering cryptic code was somehow artful.

Name: Anonymous 2007-12-27 6:24

>>27
The first was an ENTERPRISE QUALITY fag, the second was an EXPERT PROGRAMMER

Name: Anonymous 2007-12-28 2:20

>>1
Writing code outside of class helps a lot, but be sure to pay close attention in upper-level CS classes.  From my experience, everything I learned from my CS curriculum was only a strict subset of the knowledge I needed on the job.  Looking back, I wish I would have gotten around to taking courses in real-time systems, fault-tolerant systems, and the graduate-level courses in computer architecture and operating systems.

There are plenty of real-world applications that are so demanding that they need to be built from the hardware level upward and require custom-tailored system software.  Keep in mind that there is high performance software (and hardware) running car engines, networking and communications equipment, audio/video equipment, avionics, military weapons systems, and so forth.

Name: Anonymous 2007-12-28 14:11

>>33

DONT HELP HIM!!!

Name: Anonymous 2009-03-06 12:39


Which show Dvorak is faster than Qwerty.

Don't change these.
Name: Email:
Entire Thread Thread List