EvilZone
Community => General discussion => : Libertine October 12, 2012, 08:14:40 PM
-
Hello everyone,
So I've decided to write this thread to gauge advice and opinions on the concept of teaching oneself programming. My knowledge at the current time, for the most part, extends toward HTML and Visual Basic, with some familiarity with Java. My objective would be to learn C programming in it's entirety.
I'm hoping to gather thoughts and recommendations which may hopefully aid myself in the objective as well as other determined readers who may have come across this thread and find themselves with a similar goal.
Has anyone accomplished teaching themselves the C Language? It's a given that such endeavors are much easier obtained with guidance from a qualified teacher, but for those self taught programmers, how did you find the process? How would you comparatively assess against programmers who may hold a graduate degree? What were the key elements that helped your progression from familiarizing yourself with what you were learning, to fully understanding and internalizing the skill, and eventually becoming acknowledged in the art of computer programming?
I know it will require diligence, commitment, and motivation but I don't believe I'm being too far fetched to say that such a skill would be completely acquirable with the right mindset and determination.
All opinions are welcome and encouraged. Thanks everyone :)
-
You have zero point one two five knowledge about programming. That is why you would not understand how wide the concept of programming spreads. One can indeed learn programming by a teacher in like 4 years... (they say) But that is exactly like driving a car. You can get your exam, you can drive perfectly according to the rules, but in the end you can't really drive yet. It takes allot of talent, passion, dedication and time to reach the goal of a 'good' programmer. One who can work in a business environment, one who has almost none limits to it algorithm and application building. One who can create software according to word-wide standards and programming structures. .... If you really like it, you will get there. If you don't, I hope HTML style code is still used when you are creating a soccer page for your grand-son.
-
It is certainly possible to teach your self programming. There are hundreds of books out there that can substitute a teacher. If you are stuck in something or find that the book you are learning from doesn't give you the specific information you want/need, then the internet is there for you to answer all your questions.
A good book imo to get to start learning C is "C Primer Plus", use EZ's search function to find it. Don't forget you can use "man" command on Linux to get information on specific library function. Also I suggest learning about algorithms and data structures, much overlooked subject of self taught programmers.
The thing to remember when learning is practice what you've learned. Keeping with Factionwars' car analogy, there is no point in reading how to drive if you are not actually going to drive. Practice makes perfect, that is why it is possible to have the same or better skill level in programming as a person with a graduate degree. As long as you are motivated and dedicated enough you can do anything.
-
The thing to remember when learning is practice what you've learned. Keeping with Factionwars' car analogy, there is no point in reading how to drive if you are not actually going to drive. Practice makes perfect, that is why it is possible to have the same or better skill level in programming as a person with a graduate degree. As long as you are motivated and dedicated enough you can do anything.
This was my assumption originally. I mean, ultimately I know it all comes down to practice, effort, will, determination and a lateral mindset. I'm not suggesting that this is an easy task to do by any means. You would have to make a lot of sacrifices to get ahead no matter which way you go about learning. You would have to commit yourself and practice diligently to acquire and maintain a sophistication with the skill itself. It's a computer "language" which is exactly like a vocal language. If you don't use it you lose it. So you always have to maintain command over your knowledge and skills and how to "speak" in that language. Only way to do so is consistent and focused practice and application.
I was just looking for advice mainly because even as the Admin stated above. It's a bigger spectrum of knowledge which is so expansive and consisting of so many various elements that it can be quite overwhelming especially for the self taught learner. At least this was my immediate understanding.
If you really like it, you will get there. If you don't, I hope HTML style code is still used when you are creating a soccer page for your grand-son.
I'm not sure what this above quote is supposed to mean. My opinion, although I know there are many intricacies, technicalities, and complexities to learning programming, I think there are many passionate individuals who would want to contribute themselves entirely to the acquisition of such knowledge no matter what the cost. Determination and passion is undeniably essential to succeeding in this initiative. But I wouldn't think that self doubting your capabilities because you don't hold a double masters or honorary computer engineering degree would be of best service to you if you're passionate about learning and developing your skills in the computer programming world. Being self taught may not provide you the benefit of having a skillful mentor with foresight and knowledge to anticipate your best course of learning, and show you the methods and techniques you can't see which are beyond your scope of experience, but if you are willing to work with your struggles on the path to learning I have no doubt it would be possible to accomplish.
-
This was my assumption originally. I mean, ultimately I know it all comes down to practice, effort, will, determination and a lateral mindset. I'm not suggesting that this is an easy task to do by any means. You would have to make a lot of sacrifices to get ahead no matter which way you go about learning. You would have to commit yourself and practice diligently to acquire and maintain a sophistication with the skill itself. It's a computer "language" which is exactly like a vocal language. If you don't use it you lose it. So you always have to maintain command over your knowledge and skills and how to "speak" in that language. Only way to do so is consistent and focused practice and application.
I was just looking for advice mainly because even as the Admin stated above. It's a bigger spectrum of knowledge which is so expansive and consisting of so many various elements that it can be quite overwhelming especially for the self taught learner. At least this was my immediate understanding.
I'm not sure what this above quote is supposed to mean. My opinion, although I know there are many intricacies, technicalities, and complexities to learning programming, I think there are many passionate individuals who would want to contribute themselves entirely to the acquisition of such knowledge no matter what the cost. Determination and passion is undeniably essential to succeeding in this initiative. But I wouldn't think that self doubting your capabilities because you don't hold a double masters or honorary computer engineering degree would be of best service to you if you're passionate about learning and developing your skills in the computer programming world. Being self taught may not provide you the benefit of having a skillful mentor with foresight and knowledge to anticipate your best course of learning, and show you the methods and techniques you can't see which are beyond your scope of experience, but if you are willing to work with your struggles on the path to learning I have no doubt it would be possible to accomplish.
I am just saying, on forums like this and in the real world. There are loads of people who are interested.. just like you. Just someone who gathered some basic front-end web coding and some basic common programming languages. And most of them will not follow their belief of 1 week that this is their life paths. That is not to demotivate you, but search deeper than your well written English description about some sides divided in side etc. about programming. Yes i can totally say you can learn it yourself, i skipped school years and got okay jobs on a younger age. All because programming driven me. And it took me a VERY long way to get here, and i need to defend this position otherwise i could be out in a few months of tech.. Conclusion, STOP QUESTIONING, and start learning. you got NO time to lose :D
-
I am just saying, on forums like this and in the real world. There are loads of people who are interested.. just like you. Just someone who gathered some basic front-end web coding and some basic common programming languages. And most of them will not follow their belief of 1 week that this is their life paths. That is not to demotivate you, but search deeper than your well written English description about some sides divided in side etc. about programming. Yes i can totally say you can learn it yourself, i skipped school years and got okay jobs on a younger age. All because programming driven me. And it took me a VERY long way to get here, and i need to defend this position otherwise i could be out in a few months of tech.. Conclusion, STOP QUESTIONING, and start learning. you got NO time to lose :D
Now I completely understand what you mean. And I must say you're absolutely right and I completely agree. Actions speak louder and instead of having a "belief" turn that belief into a reality. Thanks Admin :)
I just want to add. For myself personally it's never been a question of not knowing for certain whether this was something I wanted. I've had gradual exposure to computing and always had an interest in computers over the years on different levels. I think what held me back mainly, was how overwhelming those technical aspects can be without the convenience of a teacher or a school. I'm just starting to branch out onto that path now. In the mean time I plan to read a lot more and try to gather as much value from each resource I come across and understand it in its full potential so I can commit more useful and helpful information to my memory bank :) ... which will help me even more so down the road and in the short run :)
-
Don't listen to them , I've learned programming by my own uptil now, javascript and now learning c++
and yes before that I learned html5 and css(thats not programming so nvm)
but just to tell ya nothing is impossible :)
-
Don't listen to them , I've learned programming by my own uptil now, javascript and now learning c++
and yes before that I learned html5 and css(thats not programming so nvm)
but just to tell ya nothing is impossible :)
Thanks so much for the inspiration. My intention with this thread was more so to hear from fellow independent learners like yourself. To be not only receptive to the positive feedback, but to the criticism and even negative as well, in hopes of constructively moving towards a greater understanding. I wanted to approach this with an open mind, to make a post and hear the stories, the advice, what worked for you guys, what didn't work, the recommendations and suggestions, the trials and tribulations of what it takes to set out and succeed in this feat.
I'm definitely reading deeper into the subject matter. Trying to get as much value from the research as I can. I'm starting off with reading through the primer and taking notes as I go along on key points that I come across. But I figure with learning something like this, I have to remain optimistic no matter what the case. If you're studying on your own you can't be afraid of starting from the ground up. And realizing that when you have no where else to go but up, the ground might not be a bad place to be.
Because that is where your foundation lies. So before beginning to move upwards, every interaction, every detail, every articulation, every which way you can assess the overall objective as a whole, only helps propel you forward from the ground up and builds towards an even more solidified foundation to support you on the climb. That's the main reason I didn't hesitate in starting this thread. I'm sure it will help me and hopefully help others as well :)
-
You never stop learning. In a structured teaching environment like school, they only really give you the material. It is up to you to learn it, by examples preferably. It all boils down to experience and practice.
-
I find that learning something through school is worse than learning it on my own. Because when you learn something at school, you don't just get the information. You get stress, lack of sleep, exams, pressure, and all of that. When you can work at your own pace you know how much you want to learn and you don't get stressed. There are no deadlines. All you need is self motivation.
-
I find that learning something through school is worse than learning it on my own. Because when you learn something at school, you don't just get the information. You get stress, lack of sleep, exams, pressure, and all of that. When you can work at your own pace you know how much you want to learn and you don't get stressed. There are no deadlines. All you need is self motivation.
I actually prefer learning it in school, because learning programming on your own you lack the challenges to practice your skill that they provide in a structured learning environment. I hate school learning cause it's so slow, theres a lot of idiots asking retard questions, and i have to haul my ass outta bed way to freaking early in the morning. But if I were to try and learn it on my own, I would most likely never learn it as the only projects I would come up with are way beyond my reach, so I'd start them then get frustrated because of how far beyond my reach they are and as such I would never get any practice done.
Now that I've taken one programming class though, its become much easier to learn new languages because I can just apply the projects we did in my C++ class to any new language I'm trying to learn so that I can get some hands on experience.
That's just how it seems to work out for me, thought i'd point out that aspect of it mate. GL
-
Thanks for the replies and opinions you guys. Personally, I think there are pro's and con's to both self learning and learning in an academic environment. Having a teacher, I would strongly believe is ideal. The reason being, you have someone guiding you, showing you, teaching you the thing's that may not be directly evident or clear to you as a self learning beginner.
You have somebody that can anticipate things that you may not have enough experience to see coming. Take learning an instrument for example. Having a teacher who will show you what is the best way to practice, being able to see where you could possibly make a mistake, and correct it before any such mistake is made. This is the main reason students get music teachers because it's about having someone skillful and experienced show you the things that self-practice would let you miss. Showing you the things you can do to be a better musician, the techniques and advice that are reflected by their years of familiarity and experience on the instrument.
The difference I would believe with an instrument compared to computing and programming is that, with an instrument, you can harm yourself by doing a technique the wrong way. The more you do it doesn't necessarily make it improve, in fact it can be the exact opposite and only hurt your technique in the long run. Bad habits would become ingrained in your playing from having repetitively done things incorrectly, this can become very difficult to correct down the road, which is why a teacher is essential in this case. They would be able to see that coming and help you avoid such problems before they become permanent.
With computing, I would think, if you're learning to program and the program doesn't work then your doing it wrong. And the more you do it wrong doesn't mean your acquiring 'bad technique' it means you don't know what you're doing and have to go back and figure out how to make it work. It may be similar to music. There might be many more ways then one to program, but like music, if it doesn't sound like it should off the sheet then its wrong.
I think with independent learning, it's possible if you can build some sort of path to progression. Because you don't really know what progression looks like from a self teaching standpoint. In a structured learning environment you can see progression because someone is giving you direct feedback and support. As a self learner the path is so wide and can split off in so many different angles, it may be hard to assess when you are failing from when you're succeeding, because you're completely left to your own devices.
But the way I see it. If I have to go about this myself I'm going to make the best of it either way. As an independent learner you may be disabled on some fronts, but you have the power of freedom, of a stress free work environment and of structuring your own path to learning. I figure if I can gather all the prerequisites to learning that I need, than steadily, slowly, and consistently the goal would be to gain a little amount of knowledge at a time. Not necessarily jump in blind and start trying to learn everything. Instead learn little pieces, small segments of information, but to learn them WELL. For every small process you learn, master it completely, and then move on to the next problem.
-
I haven't read all of the posts (as they are getting enormous lol) but I have learned programming on my own because I didn't have a teacher to goto, C isn't so bad when you get the hang of it but also, let me tell you that I've most definitely not mastered or even come close to finishing my journey with C, as it is very versatile and because of the pure size of the task itself. It's definitely different than html and visual basic, but I'd suggest using linux/bsd/some type of unix-like operating system when learning because a very nice feature that I think gets underused is the man pages :) for instance, say I didn't know what the malloc() function does, I'd type "man 3 malloc" into a terminal and bazinga! the Linux Programmer's Manual tells me the name of some related functions and such (like free() and calloc()), a synopsis of how the functions are supposed to be used and a detailed description of the function. It's totally doable, but I'd think that -- like Daemon said above -- the challenges that an educational setting would give you would help you further the actual usability of the syntax that you're learning. Everybody runs out of ideas to program unless you need to get this one thing done or you're going to get an F on it ;)
Good Luck
-
I'm learning python trough edX.org and codecademy.com. Unfortunately neither one of them teaches C programming. Maybe coursera.org has some course about C, you should check it.
Cheers!
-
I'm learning python trough edX.org and codecademy.com. Unfortunately neither one of them teaches C programming. Maybe coursera.org has some course about C, you should check it.
Cheers!
"The worlds best online courses for free" !!! :) :)
Oh my god, I'm loving this website already. Thank you so much for that link, more than words can describe. +1 for you :)
-
Has anyone accomplished teaching themselves the C Language? It's a given that such endeavors are much easier obtained with guidance from a qualified teacher, but for those self taught programmers, how did you find the process? How would you comparatively assess against programmers who may hold a graduate degree? What were the key elements that helped your progression from familiarizing yourself with what you were learning, to fully understanding and internalizing the skill, and eventually becoming acknowledged in the art of computer programming?
In my experience you do not learn programming by getting a degree or having a teacher. That will give you a (maybe good) start, but for the most part you have to work for it on your own. You can only master programming, if you keep on learning and if you think outside your own (and your teacher's) box.
I study computer science (currently working on the masters degree). They taught us Java, C, Prolog and Haskell. But so many of my fellow students are bad at coding, because they are not really interested in it. They only know and do what they where taught with the result that their code sucks. They inherited the bad habits of their teachers, they never tried other ways, never worked on projects on their own.
But one thing that is really good about studying computer science is the knowledge in math. I wouldn't know shit about math without it and I wouldn't have learned it on my own (just because I wouldn't know what I miss). Math helps to create, understand and analyse algorithms. You need it especially in certain fields like computer graphics. You need it to understand programming concepts (my book recommendation: Concepts of Programming Languages by Robert W. Sebesta)
You can learn programming without math, you will still be able to achieve most of your goals, but you will defintely miss something in the deep provided that you like to know some theory.
A degree doesn't make you a good programmer. It is always up to the student how he uses the knowledge.
I recommend to read this: http://norvig.com/21-days.html (http://norvig.com/21-days.html)
So how do you learn progamming? In my opinion you have to do your own projects, make sure you understand what you did. If it works and you don't know why (maybe because you copy&pasted most of the code), you won't learn. Keep an open mind, don't get stuck with one way of accomplishing things. Make experiments. If something is odd, try to find out why. Don't get rusty, program regularly. And read some news.
-
Can I ask why C?
I'd go with C++ myself. If you are already familiar with JAVA, the C++ will be easier since they are both OOP languages. Syntax between the languages obviously different, but the OO concepts are the same.
-
The easy way is probably not the one that teaches you most. (Just my 2 cents)
-
C++ is good to know. But C is also important because its so close to being a low level language.
@Deque
Good post about programming and degrees, its 100% true that having a degree doesn't mean you know how to program. You really do have to put in a lot of your own time so that you can learn how to program. The degree is realky just a way past HR when your looking for a job, and it also allows you to charge more for your services.
Good luck with your journey to learn programming man, its a lot of work but the end result is def. Worth it