It occurs to me that part of the problem I have been having with learning to program may be a result of my belief that I already know something about programming, from my experience with BASIC in high-school. While, at a purely rudimentary level, this belief is correct it may be blinding me to a larger fact: that in trying to learn to program in a language such as C++ I need to not only learn the language itself but to learn concepts which are all too easily overlooked due to the nature of BASIC.
By this, I do not necessarily mean Object Oriented programming... that is a concept that I believe I have grasped fairly well, since it relates back to the structured programming techniques that I was already somewhat familiar with. Black Boxes, etc. My grandfather used many of these concepts while programming with punchcards before I was born.
The concepts that I need to learn are different, though related. Things such as the game loop, soft architecture vs hard architecture, and throttling the loop so it runs at a constant speed on any system... some of these concepts are from the world of game programming, but still have viable uses in other realms... is throttling a loop that much different than throttling a network connection so as not to overwhelm a slower modem? I see these things as being very much interconnected, at least based on the reading I've been doing on the subject.
With this insight comes choices... do I go back to the programming language I am already comfortable with and attempt to learn these concepts there before moving on to higher skills? This solution, while always being an option in the future if the others fail me, feels untenable as a path forward. Do I attempt to learn objective c and the cocoa frameworks, and learn these other concepts in the course of learning that? This may be an option, but given the problems I have had with learning C and C++ in the past, it hardly seems feasible to think that I will be able to do these two things at once, though it may be somewhat easier now that I have recognized some of the concepts which have eluded me. Do I pick an intermediate language, part way between BASIC and Objective C, and learn these concepts while teaching myself a language that may later become a stepping stone to the languages I have previously had difficulty with? This may be the most viable option, though I wonder if by giving myself this easier path I am only prolonging the time until I have to face and conquer the elements of C and C++ which I have previously had difficulty understanding. Stretching out the time between now and the day when I will be able to do some serious coding of applications.
Who knows? Perhaps now that I have divorced myself from Windows, and am coming to see the real power of command line applications, I can content myself to work in that milieu until I more firmly grasp the concepts needed to make the leap into the world of Graphical User Interfaces. That desire, my impulse to start coding windowed applications, may have been the very thing that was holding me back the most.
I suppose the only way that I will truly know... is to try again.
By this, I do not necessarily mean Object Oriented programming... that is a concept that I believe I have grasped fairly well, since it relates back to the structured programming techniques that I was already somewhat familiar with. Black Boxes, etc. My grandfather used many of these concepts while programming with punchcards before I was born.
The concepts that I need to learn are different, though related. Things such as the game loop, soft architecture vs hard architecture, and throttling the loop so it runs at a constant speed on any system... some of these concepts are from the world of game programming, but still have viable uses in other realms... is throttling a loop that much different than throttling a network connection so as not to overwhelm a slower modem? I see these things as being very much interconnected, at least based on the reading I've been doing on the subject.
With this insight comes choices... do I go back to the programming language I am already comfortable with and attempt to learn these concepts there before moving on to higher skills? This solution, while always being an option in the future if the others fail me, feels untenable as a path forward. Do I attempt to learn objective c and the cocoa frameworks, and learn these other concepts in the course of learning that? This may be an option, but given the problems I have had with learning C and C++ in the past, it hardly seems feasible to think that I will be able to do these two things at once, though it may be somewhat easier now that I have recognized some of the concepts which have eluded me. Do I pick an intermediate language, part way between BASIC and Objective C, and learn these concepts while teaching myself a language that may later become a stepping stone to the languages I have previously had difficulty with? This may be the most viable option, though I wonder if by giving myself this easier path I am only prolonging the time until I have to face and conquer the elements of C and C++ which I have previously had difficulty understanding. Stretching out the time between now and the day when I will be able to do some serious coding of applications.
Who knows? Perhaps now that I have divorced myself from Windows, and am coming to see the real power of command line applications, I can content myself to work in that milieu until I more firmly grasp the concepts needed to make the leap into the world of Graphical User Interfaces. That desire, my impulse to start coding windowed applications, may have been the very thing that was holding me back the most.
I suppose the only way that I will truly know... is to try again.