I've been programming on and off for a few years now. I'm mostly self taught, but did take 2 courses in highschool that dealt with very basic programming. I've aways really enjoyed it, but found myself held back from completing any projects due to my lack of knowledge. After this happened I would always find myself learning a new language. I'm wanting to start getting a bit more serious about this, so I need to narrow things down a bit, and really set out to learn a couple languages well, rather than know the basics of a whole bunch. There's kind of two parts to my question, so I'll split it up.
I do a bit of web dev, and a bit of server scripting since I got my home server set up. I'm fairly competent with HTML and CSS, and can throw together a decent looking webpage with no issues. I'm not too bad with PHP/SQL, and I've dabbled in Python (and really want to learn more of it!). This portion is pretty good, imo. My only real questions here are:
2.) Is there anything else that is "fundamental" to web and server dev that I don't know already?
Now on the the actual important stuff I'm wanting to start developing basic applications, mostly interacting with USB ports and other external interfaces, as well as communicating with servers. I'm currently taking Electrical Engineering, so I'd like to get a bit of a head start on all this (we don't have any programming until next semester). I've done a bit of C (mostly microcontrollers, nothing too crazy though), a bit of C++ in the courses I mentioned previously, quite a bit of Visual Basic, and a little bit of Java. I'm wondering which of these I should pursue to achieve what I am wanting to do. C is mandatory, as microcontrollers are programmed in C; I'm going to be learning that portion of it anyways, so if all it means is learning to use some new API's to make computer apps, that's fine. People seem to be quite fond of Java, and I've seen LOTS of talk of C# lately.
I'm open to pretty much anything. I'd like to narrow down to a couple languages, and really learn them well.
C, as you say, is the language for low-level programming. If you've never tried C# then have a look at the C# edition of Visual Studio Express; to my mind it's Java done properly and it makes Windows programming relatively easy (it can also be used for server side Web programming). And, with Mono, you can use it on Linux.
If you want to try something a little less mainstream, have a look at Smalltalk. There's a very good free implementaion available from Cincom.
I'll definitely look into the PC side of programming in C. I figure if I'm going to learn one part it anyways, may as well it entirely.
I'll look into C#/Mono, and I'll definitely take a look at Smalltalk.
EDIT: Any suggestions for resources for C/C#? This was part of my problem previously, that I couldn't really find any material to work off in between the "beginner" and "advanced" stages. Websites are fine, Books are fine as well. I really have no preference
For nix MonoDevelop is the only thing i have found. If you are doing it in windows and can get your hands on visual studio, then i would highly recommend doing it. For me it is without a doubt the best IDE i have used to date.
Alright. I would prefer to program on nix, but I'm willing to use Windows. I have used Visual Studio before (actually got a copy from my school ), and I do like it. I'll just run it on my Win7 VM, heh.