SeanMc wrote:I am back. I'm still struggling to choose a first language. There is just so many contradicting opinions of how to start programming, and I might just not be a very logical thinker.
You should probably seek help for your procrastination. And I'm fairly certain, among the first three recommendations will be something like "just do it".
SeanMc wrote:
I hope I'm not too unrealistic. I do want to understand low-level works and OSDev someday. Maybe I'm trying to force it too much?
Force what? It doesn't look like you've done much if anything if you still can't choose a language.
Considering your lack of discipline, grab Java and go make a calculator app.
"Certainly avoid yourself. He is a newbie and might not realize it. You'll hate his code deeply a few years down the road." - Sortie
[ My OS ] [ VDisk/SFS ]
The world is full of contradicting opinions. It is even more so in the computer world, where infinitely many solutions exist for any given problem, and any solution someone has come up with is the product of his own creative choices. All these opinions are correct, even though they seem conflicting at first, simply because they exist in different domains, in the intellectual worlds of different people. You need to see each of these opinions as the results of an individual's experience and choices, accepting their variety and seeing beyond their conflictual appearance.
You seem to be afraid of your disability. Please, don't be. Try something, anything. Go as far as you can, even if it's not perfect remember that there will be some good in what you are doing. Try to build upon that: code can be refactored, bad parts removed and good parts kept from one iteration to the next.
You say you want to work with limited resources, how about learning 16-bit assembly? Crazy things have been done with less than 512 bytes of 16-bit code. And really the PC has quite standard low-level stuff, it might be an interesting starting point to gain insight into how computers work. An alternative could be to learn C and Unix, which is also highly standard and is still widely in use today (contrary to 16-bit PC systems), but that is a much more complex system and you might get overwhelmed rapidly.
Another thing is that even though I figure that I love programming, my very weak spot that's stopping me sometimes is that I suck with problem-solving skills. Can you suggest exercises to help this area of mine?
Sorry for sounding too picky about languages though, there are so many. I don't want to give myself a hard time either, like learn C if it's too overwhelming at first.
Oh well, I'm sure a lot of posters here were like me at one point.
The choice of programming language is not really that big a deal; all are fairly straightforward to learn. C is a good choice because so many examples and tutorials use it (and it is good at dealing with low-level stuff). Problem-solving skills come with experience. You need to keep practising with simple stuff and read as much as you can. TBH, if you feel you have poor problem-solving skills then OS programming may not be a good first choice; you really need to become familiar with a programming language, and learn a few basic data-manipulation algorithms, before jumping in at the deep end.
If you're wanting to get into OS development quickly, you'll want to learn C and assembler. But I don't recommend that you try to get into OS development quickly. It's an advanced topic, and you need to have a steady grounding in C and be ready to learn a LOT of assembler before you can expect to get anywhere. Personally I recommend that you spend a year learning and working with C first, then learn a bit of assembler, then try OS development. C isn't that hard to learn really, when you get into it. And although I personally learnt assembler "along the way" when I first started OS development, I know that there are many mistakes I could have avoided if I'd known it better before I started.
When you start writing an OS you do the minimum possible to get the x86 processor in a usable state, then you try to get as far away from it as possible.