View Full Version : Basic programming...where to start?
joeMan
11-22-2004, 10:10 AM
First of all, I'm thinking of changing majors in college (let's not go into all the details here - it would take too long) - anyway, I am seriously considering a Computer Engineering Science (CES) degree. I feel this way because I really dig technology, computers, and both hardware and software.
My friend, who owns a media firm and writes all his own code for clients websites and stuff, told me that if I wanted to get started in programming, I should learn C. He said C is probably the most common denominator any more these days (if there even is one any more with so many programming languages out there). He then told me as far as web based stuff, that I should start learning HTML, and then probably some Java Scripting. He said that, for instance, C and HTML aren't the same - the knowledge of each is unique and independent from one another -BUT- that knowing them both would be very useful as a basic foundation for where it sounds like I wanna go.
Can anyone out there with some programming knowledge confirm this?
I want to get a good book or two to teach me from the start, step by step programming for writing my own little programs and stuff, and then for website coding too. I can find the books (your recommendations are welcome), but mainly I just want someone to point me in the right direction so I don't waste my time.
I hope some of you here at the BE can offer some ideas/guidance. Thanks.
pointreyes
11-22-2004, 10:45 AM
You live in Sacto? Are you going to the ARC or CSAC? Both are good colleges for learning about programming. Personally, I find C good for learning the rudiments of programming logic. However, many colleges are now just going straight to Java. For web based development there are many, many technologies-getting the proper logic flow down and having a strong skill in planning a project are in a way more important to obtain because then you will know what technology to use for the project at hand.
e.g. I'm currently working on a desktop application in Access that another customer wants to use over a wider area. So instead of using Access with DAO technology, I will be using SQL Server, Transact-SQL, ADO, COM+, and Access for the technologies (customer did not want and/or could afford to switch to web based in this case). I will thereby be making a desktop application into an Enterprise Database application with a huge amount of the work handled by the server instead of the customer's desktops.
When developing a web based application, I normally use HTML, XML, JavaScript, ASP, SQL. If I was developing OSes (like Linux) the language needed is C. However, like already mentioned, C provides you with a sound understanding of the rudiments to programming. Thoses rudiments will apply to everything you program.
Shayd
11-22-2004, 11:42 AM
Hey Joe,
If you where going to be doing OS type work like PR had mentioned, then going thru the Major learning curve of C and its pointers is a must know.
For starting, I would go with something that will give you the ability to quickly learn tool use and structured design. Personally I would recommend getting C#, or a Java GUI type compiler. It will teach you much of the C-type language elements, but you can ignore memory allocation and pointer issues starting out. I would even suggest Visual Basic for a good learning tool, though some might disagree, however you can learn bad programming practice with any tool, not just VB. Also, the C#/Java route will be a nice lead in to web programming as well if that is the direction you are heading.
If you have any more questions, feel free send me a PM or post.
KingTermite
11-22-2004, 03:34 PM
Ok....first of all, your friend is right that C seems to be the grandaddy of just about every programming language since in some form or another. Like everybody before me said, if you want to get low-level and powerful, C is still the language of choice.
However......since you haven't changed majors "yet"....how much do you know about the internal workings of a computer? Good points were made about a sharp learning curve with things like memory allocation and pointers, although you can still do a lot in C before you "have" to get to that point.
Languages like Java or C# force you to go object-oriented which is where much application software is going (if not already there) nowadays. Even some of the web scripting stuff is somewhat object oriented....and don't let anybody kid you that OO programming and non-OO programming are so similar that its a non-issue. When I first started with OO (after C being my first "real" language), it was quite a paradigm shift.
Although...once made I liked that paradigm shift. I prefer OO much more to straight C.....however I must admit if I just need something quick and dirty, C is always where I end up.
All that being said.....you still need to pick a language. I would suggest if you want to get low-level and into the "good stuff", then go with C. If you want to stay higher-level and application oriented then I would probably go with C# (Java is dying a sloooow death). C# is very OO and also has a huge built-in framework (.net framework) for you to do stuff with (just like java has....only its even bigger).
Whichever way you go, let me make some suggestion.
If you go with C, FORGET about deeper subjects like pointers and memory allocation for a while. You'll get to it in good time...no rush.
If you go with Java or C#, stick with console apps.....GUIs are a whole new level of complexity...even over pointers and memory allocation. They are easy in C# (Visual Studio) and Visual Basic, but they really don't teach you "programming"....so its kind of a waste. Do console apps to learn REAL programming.
Do NOT go with Visual Basic...its not good as a procedural language because you spend most of your time looking up with Microsoft's function call is for this or that. It allows you to do OO, but it doesn't force you and I've never seen anybody do OO in it "right".
Whichever language you go with, stay way from GUI development...just go with basic console applications to start out with.
Now, for books as you asked for.
If you go with C, then the "bible" and I find it still the best C book on the planet is "The C Programming Language" by Kernighan and Ritchie. This is the book that the men (K&R) who invented C wrote to explain the language. It is written very well, its very concise explains things at its simplest terms.
If you go with C#, then I like Deitel&Deitel's C# for experienced programmers. I know you say you aren't experienced, but I reviewed this book side by side with its counterpart "C# for beginner programmers" and its the exact same book except the expert book has more chapters at the end that go into advanced topics. The first 1/2 or 2/3 of the book "is" the beginners book.
I can't recommend a book for Java.....I have two. One I learned with, I wasn't impressed with (for learning anyway). The other may be good, but I never really got into it...it was free from a Java class I took (its Deitel&Deitel's Java book).
I'll also chat with you via PM if you have more questions. I'd be happy to help.
joeMan
11-22-2004, 03:42 PM
Awesome. Thanks guys. Yes, I attend UC Davis, very near Sacramento. I did my GE/Lower division stuff at CRC (Cosumnes River College) - a jc right by my house.
I looked at VB.Net books today at Fry's. The one I thought was cool was a "I'm gonna hold your hand through all your first steps" type book - which I need. I forgot the title of it or who wrote it. Anyway, it sounded and looked cool because it spoke of VB.Net being a programming tool that already has lots of the basics built in. The thing I thought was bad about that though is that I would just learn to take for granted a lot of the underlying program knowledge by using all those built in functions.
So, I looked at HTML too. It seems real easy, and there are TONS of those same type of HTML baby steps books. Step by step beginners type format. Very good for my level of (un)knowledge at this time.
The one I actually bought today, however, is called "Beginning C" Third Edition by Ivor Horton. It's in The Experts Voice series by Apress. It's a 600+ page black and yellow book - maybe you guys have seen it around. Anyway, it is also extremely fundamental at first and builds up from there. The guy totally takes it slow and puts it into a non-intimidating format, so I grabbed it.
I already have a hex editor (freeware) called "Hackman 8.01" - it seems real good so far. It even has some built in lessons to get you going on it. I did those - super easy and fun.
I Googled "freeware compilers" and got a bunch of good hits - there are sooo many to choose from. I suppose I should ask you now - what freeware compiler do you guys think would be good for me to get started?
Thanks again.
Whoa - King Termite! Your post appeared as I was typing this so I haven't read it yet...standby...
Okay I'm back from King Termites post. A lot of good advice there, thank you very much. I see you recommended a C book for me, cool, I can always take this one back to Fry's and get that one instead. Man, you guys rock! :rock: Thanks again.
KingTermite
11-22-2004, 03:49 PM
Going away from VB is a good idea....like you said yourself....there's lot of built in functions you must know about...and you spend time learning that and not just "programming". In fact....without guidance, you may have trouble distinguishing what is "programming" and what is VB specific stuff.
Your Ivor Horton book is a good one I've heard. I've never used it, but I've heard good things about Ivor Horton. However the K&R book really is the bible and the simplest book you could probably get. It's pretty old...you could probably find a "used" on on Amazon for less than $20.
Freeware compilers for C are relatively plentiful I suspect. I don't know them all, but Cygwin is a pretty popular one...although it puts a whole "unix like environment" overtop of your pc to play with (which may not be a "bad" thing).
pointreyes
11-22-2004, 11:06 PM
KT knows what I'm going to say here. :p
Install Linux and use gcc. I don't recommend MS' Intregrated Developer software for C/C++. Borland might have a free C compiler as well. Just stay away from MS' IDE until you are better suited with understanding C because with MS' C++ IDE you will have another learning experience. :rolleyes:
BTW: I attended ARC. I also worked at the bookstore. I lived not very far from CSAC. I miss Sacto every once and a while. I have always like that location for the beach and the mountains. Now I'm really starting to miss Point Reyes. :)
joeMan
11-22-2004, 11:33 PM
Ya, I like Sacramento too. It's getting very crowded up in here though. Traffic is like L.A. at rush hour a lot of the time and it's just all about people, people, people and BIG Target and Wal-Mart and Lowe's an Home Depot shopping centers popping up everywhere. And strip malls with those stinky old Baskin-Robbins/Togo's combo shops - (why did they do that?? I don't want to smell pastrami, cheese steak, or meatball sanwiches when I go in for my double scoop of dessert! - It just ain't right... :lol: ) Still, I like it here despite all my ranting. The good side? Well, you're right, it's convenient to many places San Francisco 90 minutes, Lake Tahoe 100 minutes, Yosemite easily within range (only a few hours away). Snow skiing is not far in winter, and all the water recreation you could want in the warmer months - Folsom Lake, Sacramento River, American river (rafting), etc.
Aside from missing your previous homes, how do you like where you live now?
My friend, Floyd, said the same thing to me about Installing Linux and using gcc. He said that when you go Linux, it already has all the tools you want built in - it sounds like raw programming bliss. But I don't want to build a machine just for Linux - I'm already strung out $$ as it is building a super righteous PC for my daughters Xmas present.
I suppose I could install a removable drive bay, install Linux on that HD and then boot to that Linux HD whenever I need to. The rest of the time I could just boot into XP already existing on my RAID array. Or, I could install another SATA drive on my last open Promise SATA plug and choose whether to boot XP or Linux (my PC should detect two OS's to choose from at that point shouldn't it?)
Aside from going Linux I feel like I'm being guided toward starting with just plain old C, and a freeware compiler, no?
KingTermite
11-23-2004, 04:24 AM
KT knows what I'm going to say here. :p
Install Linux and use gcc. I don't recommend MS' Intregrated Developer software for C/C++. Borland might have a free C compiler as well. Just stay away from MS' IDE until you are better suited with understanding C because with MS' C++ IDE you will have another learning experience. :rolleyes:
BTW: I attended ARC. I also worked at the bookstore. I lived not very far from CSAC. I miss Sacto every once and a while. I have always like that location for the beach and the mountains. Now I'm really starting to miss Point Reyes. :)
For absolute "beginning level" coding, I'd agree that gcc is a better choice. However, once you build up to any "level" of coding past simple executables (like using libraries, compiling your own libraries, etc...) then Visual Studio is leaps and bounds easier. The IDE is menu driven and is not that hard to learn, but having to start learning how to create makefiles (like with gcc) can be much harder. Additionally, MS Visual Studio has a much richer debugging capability.
So, gcc (or cygwin which is nearly the same I believe) is a good start for the very beginning, but once you get going, I'd recommend getting visual c++.
Borland does offer a free compiler, but it is only there old Turbo C++ 1.0 compiler which isn't really worth much in today's environments. I'd take cygwin over it any day.
Powered by vBulletin® Version 4.1.8 Copyright © 2012 vBulletin Solutions, Inc. All rights reserved.