I am attempting to teach myself programming and am at a bit of a loss as to who to apply any of what I am learning. I read through books and they teach the theory of the code, but I fail to grasp its actual application. I would like to code professionally but I have no concept of what it actually entails.
I am a "hands on" type of learner and come to you all looking for some guidance as to how to develop into a diverse and skilled programmer. Any advice or resources would be greatly appreciated.
the easiest way to start programming is to do web programming and PHP is the defacto standard in web programming. You also have to know html/css and javascript. The nice thing about web programming is you get immediate visual response, whereas you will spend months making stupid console programs in most any other language. Once you get good at web programming you can start making money making websites for people.
Name:
OP2012-05-10 18:43
I am currently working through CSS and Java script for the reason that it allows business opportunity via the internet. I am also teaching myself through java and C++. The theory and concepts are simple enough, but I don't really know I can use all these variables and "classes" to make something useful.
Am I right to deduce that software is just "hard code" working through user friendly GUI's?
>>4
1. CSS isn't a programming language. Neither are Java or C++.
2. You will not be a professional programmer for the foreseeable future. Don't ``learn'' through the lens of prospective employment, because then you will not learn anything at all.
3. No software worth using comes with a GUI, and focussing on GUIs will make you miss things that matter. Use standard streams and command line arguments and love them.
4. Your first language should be Python.
Thanks for the response. Could you explain to me why Java and C++ are not programming languages? What constitutes a worthy language? (I hope I am not opening pandora's box with this question)
>>7
I think what >>5 meant is that if you learn C++ and Java at face value, you are really not programming but just sticking pegs into slots without any understanding of what youre doing. To be competent in C or C++ requires a deeper understanding of what programming is...the theory. I think Java is safe enough you can work on reasonably large projects before complexity will sneak up and bite you. If you are satisfied with just doing web programming, you dont need to know theory. If you want to do C/C++, then you are going to spend many years studying before you make anything significant.
Name:
Anonymous2012-05-10 19:19
>>8
While I would love to create complex projects I know that is a step that is still many moons away. This whole process of trying to learn and really understand computers makes me feel like a spec in front an ocean of information. There are so many languages and it is a bit confusing as to where to start. I believe, and correct me if I am wrong, that programming languages are (simply stated) a set of instruction that control the hardware to process information, make calculations, etc.
So from what I have gathered here.
-Learn Python
Q: At what point should I move to another language?
Q: What language should I follow up with?
Q: Are there any common coding problems that I can attempt to solve?
Thanks again.
Name:
Anonymous2012-05-10 19:32
Q: At what point should I move to another language?
only you can answer that question. There are web programmers who only know scripting languages and make a lot of money just using scripting languages. Some jobs require knowledge of C/C++, some jobs require knowledge of Java/C#. I dont understand why you think I can tell you which language you should know.
Q: What language should I follow up with?
same answer as first question
Q: Are there any common coding problems that I can attempt to solve?
Just doing the exersizes in beginners programming books should teach you enough to be able to do stuff on your own
>>8
No, what I mean is that Java and Sepples are shitty languages, and so are you for lumping C in with Sepples.
They're clusterfucks of horrible syntax and terrible standard libraries. They will teach bad habits and make programming a chore.
>>9
Follow Python with C. You'll know when you're ready.
As for common coding problems, people will point to Project Euler and the like, but they're not all that useful. What you should be doing is looking for things a computer could be doing for you but isn't, and then implement them.
Thanks for the guidance. I'm currently reading through the Python documentation. Hopefully it will provide some insight.
Name:
Anonymous2012-05-10 19:48
OP, if you want to be any good at programming you'll need to specialize early on. I suggest JavaScript because of the HTML5 hype. You can use node.js for the backend so you're all set. Or use PHP+SQL for the backend. This is the easiest way to start programming.
The slightly more advanced way is to read SICP and implement the exercises in Racket. You'll be well on your way to reaching satori but you'll need to learn a real world language first. Perhaps Python.
>>12
Also, once you get to C, never compile anything without -Wall -Wextra -pedantic. Trust me, it will make you a better person.
Python gives you an idea of what programming is all about, C teaches you rigour and attention to detail. After that all you need is some SICP video lectures and you'll never go far wrong.
Will -pedantic fuck my with my initialized structs?
I have something like
typedef struct item {int prop1; float prop2} stuff;
stuff items[2];
items[0] = (stuff) {5, 4.5};
items[1] = (stuff) {4, 3.2};
and I'm not using -pedantic because I don't know if initializing structs like that is a stupid GCC extension.
>>20
It's standard C, but it's C99 it would work with almost* every modern compiler on the planet. *It doesn't work with MSVC, but MS doesn't give a fuck. Microsoft logic: Why spend money to improve the C compiler when you can lock developers into .net?
Name:
Anonymous2012-05-10 23:29
>>20
Depends on the other flags, if you pass -pedantic with something like -std=gnu99 or -std=c99 compound literals will work fine.
What won't work fine though is having no semi-colon after float prop2.