Need a push in the right direction.
I can't seem to figure it out with Google, so it's time to post it in forums. I don't know what the best route to take is, and I don't know how to word it appropriately for a Google search, even if it would know. Here is an overview of where I'm at, and where I'd like to be; any help would be appreciated.
I know a little bit of Perl, a decent amount of HTML and CSS. I am very bad at JavaScript and know nothing in PHP. I can usually put Bash scripts together quickly. I can usually understand things if there is a sufficient analogy, or if there are enough examples given. I don't know much of the proper terminology (classes, variables, array, list, literal, lexical, et cetera) for the things in programming. So far, I seem to be best at autonomous scripts, or scripts with some user interaction. My biggest struggles seem to happen when I need things to "talk" to each other (inter-process communication??). Usually, I can kludge together enough code to get the software communicating, but I still have lots of trouble with hardware/software interfacing. I don't know the best order to go about these things, mostly because I'm sure some of them "build upon" knowledge learned in others, but not necessarily vice-versa. I'd like to be able to:
Any ideas on what to do next/where to look? |
My first reaction is: "One step at a time."
Start with what you said about HTML, CSS, and JavaScript: I am in the same boat---I can put together a simple site in basic HTML+CSS, and I have read the book on Javascript. If I ever need to do something in a website using JavaScript, I'll go back and figure out how to do it. Once you understand the basic concepts of programming, it may be best to figure out specific things as you need them. If you're going for a degree in CS, that's a different story. |
My gut reaction would be to start from the thing you think will be the hardest, and immerse yourself in it. If you think learning assembly would be hardest then give yourself a bunch of incremental assignments (for instance, get 'hello world' working; move on to Fibonacci; write some linked list processing) in assembly. One of the more easy to understand books on the subject might be Structured Computer Organization by Andrew S. Tanenbaum.
The reason I say to do it this way is you'll get the fundamentals down first. Everything else flows from understanding the _how_ and _why_ of the computer in front of you. |
A shotgun approach won't work. Well...ultimately it will, but you'll spend many years before you think you know anything.
As the others have said, you need to focus on one aspect of it, drill into that, then expand from the base this gives you. You'll still be years at it, but you won't feel nearly as lost along the way. From the list you gave I would say you should start by mastering C/C++. I think this would give you the maximum leverage for what you want to do. Find yourself a project that you can do with either C or C++, then make it work. You'll learn a lot. |
In fact, these are a LOT of different directions.
Quote:
But as you probably want to create native linux code, you should take a look at QT. Although this requires learning C++ first, which leads to: Code:
[*]Code in C++. Quote:
Quote:
So, my tip would be: Use an existing framework. jQuery seems to be quite popular. Quote:
Quote:
Probably kernel hacking, see threads about getting started with this ;) Quote:
Quote:
Quote:
|
Sweet! Thanks, folks. I figured learning Assembly and working my way up would provide the most "thorough" experience, but I didn't think that would be the most practical. I don't mind so much about cross-platform compatibility; I plan to use some form of Linux as my primary operating system until I'm forced to do otherwise... But that's where the AJAX would come in (web interfaces for the non-Linux users).
I think I'll start with C++, at least for now, and see how things go from there. I'm still quite unfamiliar with the concepts of headers, libraries, classes, objects, et cetera, but I think I can find what I need now that I've got a sort of starting point. For now, I think I just have one more question: Would I be better off using Ubuntu, Debian, or Slackware as a "main" development workstation OS? (I'm thinking in terms of compatibility and ease-of-use regarding libraries/IDEs/SDKs/et cetera...) Right now, I'm using Kubuntu, simply because that's what I currently have installed on one of my larger partitions. |
Quote:
Quote:
|
If kubuntu suits you, just use it.
|
Quote:
|
Quote:
Quote:
|
Stroustrup is just awfully wrong there. You can't write good C++ code without exactly knowing what happens in terms of memory management, you are forced to understand the new and delete operators, the differences between data/bss segments, heap and stack, otherwise you will fail. C teaches you this without added complexity.
If you want to learn something simpler, without having to care about these issues, better start with java or C#.NET. C++ is NOT suitable for this. |
C#.NET ???????????
then the OP would have to work with a crap OS. this is a linux forum. Learn C and C++, a scripting language (perl?), and shell scripting. learn to use the vi editor. (vim) learn sed, grep, sort, uniq, cat, fmt, join, paste, make, tar, cpio, find, fold, wc, xargs etc. (unix utilites) |
Quote:
|
Quote:
unless there's a linux or open source version? |
Quote:
|
All times are GMT -5. The time now is 03:11 AM. |