![]() |
Learning to Program
Now that schools out, i'll have alot more time on my hands and i'd really like to learn how to program. I'm a computer science major, but i haven't taken any core CIS classes yet just general education stuff. Anyway, where should I begin my endeavor? Since I have a little C++ experience I was thinking about starting there. Anyone know of any good books I should pick up? I'd appreciate any suggestions.
-DG |
Re: Learning to Program
What do you plan to do with your CS degree? Right now there are two basic camps, Java and .Net. It's probably a toss up which one is going to be ahead by the time you graduate, but both will have large code bases.
There are pretty good free tools out there for Java but you can also get educational versions of the .Net languages. There are some pretty good Step by Step books out there for C# .Net and ASP .Net. C++ is becoming more of a nitche language at least in corporate America. Whatever you learn make sure you enjoy process and documentation because you'll be doing more of that than programming. Again, my experience is working for EDS and Accenture, working for large bidnesses, your milage may vary if you work for a small ISV or a small company. |
Re: Learning to Program
kerowo:
I'm pretty sure I want to go in to software engineering. |
Re: Learning to Program
That's a little vague. Who do you want to apply to when you graduate.
|
Re: Learning to Program
C++ is not going anywhere, and learning C++ before learning .net and java is going to be a lot easier than the other way around.
Focus on C++, get a few books, I don't know any books in particular, but I'm sure somebody else can recommend one. And while it is true that a lot of the actual development you will be doing in the field will be in languages other than C++, people who understand the fundamentals (which a powerful mid-level language like C++ will provide) can program in anything. And of course you still have places like Google which do most of their development in C++. |
Re: Learning to Program
Don't most programmers kind of hate C++ or am I wrong?
|
Re: Learning to Program
I agree with pokergrader. Learn one language well, and you'll be able to pick up (most) other languages pretty fast.
A lot of people start out with C. It's a pretty basic language that gets you pretty close to the hardware, but not as close as Assembler. Many current languages, i.e. Java and C++ (obviously) have their roots in C, so it's a good basis in that respect, too. As for books to learn C, the so-called "bible" of C is a book called The C Programming Language written by the two creators of the language, Kernigan and Richie. I would also recommend a book called Programming in C by Kochan. |
Re: Learning to Program
Unless you are going into an industry that uses C, which is pretty much embedded devices, some systems programming, or some other niche there is no real reason for most programmers to spend a lot of time with C. If you know you are going to be working with a technology, learn that technology, if you don't know what technology tell us what industry you want to end up in.
|
Re: Learning to Program
[ QUOTE ]
C++ is not going anywhere, and learning C++ before learning .net and java is going to be a lot easier than the other way around. [/ QUOTE ] I definitely disagree with this. I learnd Java first, and its a much more natural progression. You can learn Java which takes care of a lot of mundane details for you, and has better documentation. Once you've got that down moving to C++ is fairly straightforward. You just have to learn the things that you now have to do yourself. I also think that learning C++ is a lot harder to do 'academically'. There's a lot more tricks that you have to pick up, that are really hard to do without a bunch of experience in it. But I definitely agree that C++ isn't going anywhere. It'll be around for decades still. Although it won't be the most popular language and will start to fade away. |
Re: Learning to Program
[ QUOTE ]
That's a little vague. Who do you want to apply to when you graduate. [/ QUOTE ] Thats kinda the problem I'm having at this point. I only have a vague idea of what I want to do, and I'm miles away from being able to answer a question as specific as who I want to work for. Developing software sounds appealing, and from what i've read software engineering is a field that is growing rapidly and is both financially and personally rewarding. So thats kinda where I'm at right now. -DG |
Re: Learning to Program
[ QUOTE ]
[ QUOTE ] That's a little vague. Who do you want to apply to when you graduate. [/ QUOTE ] Thats kinda the problem I'm having at this point. I only have a vague idea of what I want to do, and I'm miles away from being able to answer a question as specific as who I want to work for. Developing software sounds appealing, and from what i've read software engineering is a field that is growing rapidly and is both financially and personally rewarding. So thats kinda where I'm at right now. -DG [/ QUOTE ] I stick with my recommendation of learning Java first. I think its fairly easy to learn, is used in industry a lot, and relates well to a number of other languages. I actually believe a language like Python is what you should start with, but I don't think there are very many good resources to use, so if you're learning independently, its probably not a good choice. The nice thing about programming though is that a programming language is only the surface. Any monkey can learn to program (an infinte number of monkeys typing on an infinite number of computers will eventually write a completely bugless Widows Vista?) a good developer (ie. somebody who will have a job here in NA for a good length of time) knows concepts and principles that he/she can quickly learn to apply in any new language. Learning programming languages is a lot like learning real languages in the sense that each additional language you learn, makes the next language easier to learn. |
Re: Learning to Program
jjshabado:
i really appreciate your input. any suggestions on books I should pick up? |
Re: Learning to Program
Learn C/C++
It is annoying and can be bitch hard at times. This is a good test - if you can take/enjoy it, you will love life as a programmer [img]/images/graemlins/smile.gif[/img] edit: C/C++ is also by far the most powerful language (besides ASM) - as in you will have a hard time crashing a computer programming Java/.NET - with C++ a typo could do it. Also a good thing. |
Re: Learning to Program
[ QUOTE ]
Learn C/C++ It is annoying and can be bitch hard at times. This is a good test - if you can take/enjoy it, you will love life as a programmer [img]/images/graemlins/smile.gif[/img] edit: C/C++ is also by far the most powerful language (besides ASM) - as in you will have a hard time crashing a computer programming Java/.NET - with C++ a typo could do it. Also a good thing. [/ QUOTE ] All of these are reasons to NOT learn C/C++ as a first language. Spending 4 hours debugging an unintelligible compile or runtime error is not time spent well. Its taken me months of working with C++ to really start to feel like I have a handle on all the complex subtleties of the language, and I know it'll be years before I have a true mastering. With Java I understood the language in a lot less time and started mastering it a lot faster. Learning C++ as your first language is akin to learning to read using an encyclopedia. Sure being able to read an encyclopedia is more useful/rewarding then reading Dr. Seuss, but its silly to start there. OP, I'm going to ask a few of my friends that learned Java on their own to see if they have any good recommendations. I learned it in University after learning Pascal and a few other simpler languages and never learned it on my own. So I don't really know of good resources for doing that. |
Re: Learning to Program
My first real language was Java, but I started with LISP. (Ok, AI guys use LISP for real programming, but they don't count.)
I honestly think that one's first language doesn't have to be useful. There are some serious ideas that you need to get your head around in programming. After you learn how to think in this goofy way that programmers think, learning your second language will be easy; your first language should be one that makes that intuitive leap the easiest. So I guess I vote java. -Sam |
Re: Learning to Program
Yeah the more I think about this, jjshabado is right. Java has a much better "compiler" which will make debugging easier, you wont have to bother with libraries for things like Threads and Sockets, and it forces you to learn OO.
The first language is just a starting point, and Java is going to be much more user friendly. I just have to defend my friend C++, since it still runs the world. |
Re: Learning to Program
If you are thinking of java, I can recommend eclipse as a open source ide
|
Re: Learning to Program
[ QUOTE ]
I actually believe a language like Python is what you should start with, but I don't think there are very many good resources to use, so if you're learning independently, its probably not a good choice. [/ QUOTE ] There are tons of books on all aspects of python. This and this are generally considered the best for learning the language. There are some public domain books for download here. You can also go to python.org. They have a pretty good tutorial and I'm sure they have links to other resources. |
Re: Learning to Program
[ QUOTE ]
Don't most programmers kind of hate C++ or am I wrong? [/ QUOTE ] It's a love-hate kind of thing. More hate than love, I guess. |
Re: Learning to Program
[ QUOTE ]
[ QUOTE ] Don't most programmers kind of hate C++ or am I wrong? [/ QUOTE ] It's a love-hate kind of thing. More hate than love, I guess. [/ QUOTE ] I learned C first (well actually I had a college course in Fortran using punch cards (yes, I'm an old fart), but never did any serious programming in it. While there is something to be said for learning an easier language first, if you can program in C, you can program in anything. If you want something to run fast, write it in C or C++. If you want to get the program written fast, use Java, Perl, C#, etc. Compiled executables will always outperform interpreted or run-time compiled languages, so C and C++ are the workhorses for device drivers, OS kernels, word processors, spread sheets, etc., where shaving every nanosecond counts, whereas languages like Jave, C# and perl are used for smaller things like web applications or middleware, where maximizing programmer productivity is more important. |
Re: Learning to Program
[ QUOTE ]
[ QUOTE ] [ QUOTE ] Don't most programmers kind of hate C++ or am I wrong? [/ QUOTE ] It's a love-hate kind of thing. More hate than love, I guess. [/ QUOTE ] I learned C first (well actually I had a college course in Fortran using punch cards (yes, I'm an old fart), but never did any serious programming in it. While there is something to be said for learning an easier language first, if you can program in C, you can program in anything. If you want something to run fast, write it in C or C++. If you want to get the program written fast, use Java, Perl, C#, etc. Compiled executables will always outperform interpreted or run-time compiled languages, so C and C++ are the workhorses for device drivers, OS kernels, word processors, spread sheets, etc., where shaving every nanosecond counts, whereas languages like Jave, C# and perl are used for smaller things like web applications or middleware, where maximizing programmer productivity is more important. [/ QUOTE ] I work in high-performance computing, specifically parallel computational fluid dynamics. It would mostly be a complete joke to program in anything other than C or fortran and I program almost exclusively in them. Performance hits in any other language are too large and MPI interfaces in those two languages are well built and straight forward. I do a bit of image analysis in python, but only because it's easier to handle image files and it's not computationally expensive anyway. There are certain efforts to use python in HPC, but that mainly works because all the modules are written in C anyway, python is just used for the scripting. I've never used punch cards, but I still regularly use fortran77. If anyone wants to talk about a pain-in-the-ass language, lol. [img]/images/graemlins/smile.gif[/img] |
Re: Learning to Program
if your school is part of msdnaa you can score visual studio free. email cs dept.
|
Re: Learning to Program
Just read this whole thread. I had no knowledge of, nor interest in, computer programming. Now I do. Funny how hating one's job makes one interested in other things.
So ... what did OP decide? |
Re: Learning to Program
i think he chose c.
[ QUOTE ] Funny how hating one's job makes one interested in other things. [/ QUOTE ] what do you do? |
Re: Learning to Program
I am a sports writer for a suburban newspaper covering an NFL beat. In the offseason, I have to work desk shifts, which last until 1-2 a.m.
Every newspaper within a 100-mile radius is on a hiring freeze, and many are laying off. My species will be extinct within a matter of years, if not months. You asked. |
Re: Learning to Program
[ QUOTE ]
I've never used punch cards, but I still regularly use fortran77. If anyone wants to talk about a pain-in-the-ass language, lol. [img]/images/graemlins/smile.gif[/img] [/ QUOTE ] I have programmed f77 almost every day for the last 3 years...god damn I hate fortran. As you say though, if your code has to be v. fast, fortran and c are still likely the best choices. If absolute speed is not your goal then there are lots of languages that are easier and more *fun* to program in. Python, ruby, php etc. Perl is also a wonderful tool to have in your arsenal if you work in *nix environment. |
Re: Learning to Program
[ QUOTE ]
software engineering is a field that is ... personally rewarding [/ QUOTE ] lol I would recommend java. agree with other people that it is the easiest to really understand EVERYTHING that is going on. I remember when I was learning C++ it seemed like there were huge swaths of my code that I'd just ignore because I didn't understand that part. Not only that but there is a VAST amount of free tools, libraries, tutorials, docs, etc. available. |
| All times are GMT -4. The time now is 07:00 PM. |
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, vBulletin Solutions Inc.