Thread: New to programming, is C++ the way to go?

  1. #1
    Registered User
    Join Date
    May 2010
    Posts
    2

    New to programming, is C++ the way to go?

    Hello everyone!
    I am a high school student and I'm planning on taking a hardware engineering program at university in a couple years. Before I get there, I want to get familiar with some programming language (or a couple of languages) as it will help me a lot and I will need to know it anyways. I've done some research and it seems that C++ is one of the best languages to learn for what I'm wanting to do, which would be things related to computer/os-hardware communication and software to aid in certain computer tasks (not really for web-programming). Can someone say that C++ would be the language to learn? Is there any other programming language(s) I should learn along with (or after) C++? Would Microsoft Visual Studio 2010 be the best environment for me to use for writing and compiling my code?

    I found a book on amazon.ca, entitled An Introduction to Programming With C++, here: An Introduction to Programming With C++: Amazon.ca: Diane Zak: Books. Has anyone heard of or read this book? It seems pretty good for a beginner like me. Would someone recommend something better?

    The only real experience I have with programming is writing ActionScript 3.0 code for Flash.

    Thanks for your time! I appreciate any replies!

  2. #2
    spurious conceit MK27's Avatar
    Join Date
    Jul 2008
    Location
    segmentation fault
    Posts
    8,300
    Hardware engineering as in "hardware" engineering?

    Yeah, C/C++ is a great place to start. Although, this is kind of like walking into St. Peter's Basilica and asking if anyone thinks taking Jesus into thine heart is a good idea.

    Seriously tho, while some of the regs around here would rather put C++ on their toast than jam, and attribute near mythical properties to it (in relation to other common languages) which it does not really have in quite those proportions, it's great and you'll love it and it's totally appropriate to your goals. IMO.

    But it is "multi-paradigm" or not, it is still only one perspective on programming. Don't forget that!
    C programming resources:
    GNU C Function and Macro Index -- glibc reference manual
    The C Book -- nice online learner guide
    Current ISO draft standard
    CCAN -- new CPAN like open source library repository
    3 (different) GNU debugger tutorials: #1 -- #2 -- #3
    cpwiki -- our wiki on sourceforge

  3. #3
    Registered User
    Join Date
    Mar 2007
    Posts
    416
    Like MK27 said, you're on a C/C++ forum so most of us are going to say that's the way to go.

    I learned C/C++ from reading internet tutorials when I was in high school. It definitely takes time to learn, but it can be rewarding in the end in a lot of ways. Don't limit yourself to just C/C++ either, look at other languages too. However, pick a language and learn that first, do not try to learn too many things at once.

  4. #4
    Registered User
    Join Date
    May 2010
    Location
    Australia
    Posts
    10
    C and C++ are two great options, I am a bit of a hobbiest however, and I must point out, that if you intend on getting low-level with hardware, a lot of chips that you will work with will NOT have a compiler, in this case, the ONLY option is using assembly code, but as a rule of thumb, the first thing written for popular chips is - you guessed it - a C or C++ compiler.

    I'd recomend learning C and C++, but don't neglect assembly, also the kind of assembly used in the low level schema is not the IL used by modern operating systems, if you want to get down and dirty with a processor, then you have no other option these days (as far as IBM go) than to use DOS, FreeDos is still available, and maintained, I've seen new programs for it dated this year.

    Besides C, C++ and Assembly, not much else is really even used in low-level circut building.

    EDIT: It really depends on how low-level your work will take you, the futher down the hardware chain you go, the more valuable Assembly will be, for example, if you intend on just setting up networks and working with conventional IMB and Apple based machines, say like setting up hardware in an office, forget Assembly, you can acheive much more with C or C++.
    But, if you are going down to the circuit level, and wanting to build tailored target specific machines, Assembly is invaluable, in fact, if you plan on designing your own chips, they will use unique pseudo-codes not found in Apple(6800 descendants) or IBM(8086 descendants), requiring you to manually plot binary values to build even a basic Assembler (Building an Assembler is the first step to making a new chip-set operational - then - using the Assembler, one typically writes a C or C++ compiler, and edits these files with a text editor (NO INTELLISENSE or any exciting features found in modern iterations of Visual Studio, more like Notepad for Console. A C compiler is much quicker and easier to write than C++, so often the C++ compiler is written in C - Linux is a good prep if you want to build your own OS, but since you said you want to work hardware, this may be incidental.) Either way, getting into hardware can be much more to learn than simple software design, preping up on a wide variety of electronics may be better then spending to much time with programming, depending on what you have planned....
    Hardware Engineering is a broad topic that can cover anything from heavy duty mainframe style powerhouses through to digital watches and washing machine circuitry, not exactly sure where you want to be in years to come, and you don't have to elaborate, just pointing out that the general field of Hardware engineer has many specialist branches...
    Last edited by feeder74; 05-03-2010 at 10:43 PM.

  5. #5
    Registered User
    Join Date
    Jan 2007
    Posts
    330
    I think we can be objective about it when we say C++ is the best choice when you want to do hardware engineering in the future.

    C++ has all the features needed to do that low level style coding that is sometimes needed and it provided the options to abstract it.
    Another plus is once you know C++ you can learn for instance java *very* quickly after and not the other way around. Java embedded is used a lot too these days I hear but C and C++ are still dominant. And again, once you know C++, learning java is a matter of reading a book in a week and learning the API's while being productive

  6. #6
    Registered User
    Join Date
    May 2010
    Posts
    2
    Thanks for all the great replies everyone! I'm hoping to work with things along the lines of videogame consoles, MP3 players, phones and graphics processors, desktop computers - things mostly geared towards the entertainment business. HERE is what I'm looking at taking (Electrical Engineering). I've also looked at Computer Engineering but that seems like it's less hardware and more software stuff. But I'll need some basic programming skills as an electrical / hardware engineer. It looks like I'll be learning a little C++ for now.

Popular pages Recent additions subscribe to a feed