I am highly interested in learning how to program but I am unsure whether I want to lean towards web developing or software programming. Or does computer programming cover both in a nut shell? Where should or how should I start?
- Anybody can ask a question
- Anybody can answer
- The best answers are voted up and rise to the top
closed as not constructive by Tim Post♦, user281377, Yannis♦ Mar 30 '12 at 7:44
As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.
Web development and traditional client application development (which is what I assume you mean by "software programming") are very different things.
When writing a web app, you take input from a client and produce HTML as output, to be rendered in the client's browser. Web programming is basically stateless. This means that because the browser does not maintain an open connection with your server, you can't assume anything about past interactions when a new request comes in. Everything you create has to be based on the data that the browser sends you and the data you have stored in the database. (It's possible to save some data in memory on the server so you don't always need to read the database for everything if you've got the same user making a bunch of requests in a short amount of time, but since the Web connection is stateless and doesn't remain open, you have no way of knowing when they're finished, so you have to make sure all data gets stored in the database.)
On the other hand, when writing a traditional app, you generally directly control not only the data but also the code that draws what the user sees. And knowing when the program is in use and when it's being shut down is an inherent part of the program, so you can rely a lot more heavily on in-memory data, and only worry about saving data when it's appropriate to do so within the context of your program. Also, a traditional app is run directly on a user's computer and is only used by one person at a time, whereas a webserver can have to service hundreds or even thousands of connections from different people all at once.
To give a simple example, let's say you have a game where a character can walk around on a map. In a traditional program, your code draws the scene, the user uses the keyboard or mouse to tell the character to move to another position, and your program draws the movement to the screen. It's probably animated, because that's not hard to do if you know a few things about sprites.
Doing that on a web app would be very different. The user has a webpage open in their browser that displays the map and the character. They select a new position to move to by clicking on it. Your page has code in it that tells the browser to send a request to execute that move to your server over HTTP. Your server receives it. First it has to validate it, (you have to make sure it's a legal move; since the move command is just a Web request, it's very easy for someone to try to cheat by just sending the server whatever they want, whether or not it actually makes sense according to the rules,) by looking up the character's current position in the database and making sure it's possible to execute that move. Then (assuming it's valid) it calculates the effects of the move on the game, saves the changes to the database, and creates a new webpage containing the updated game map to send back to the user's browser.
This is a bit of an over-generalization (on both sides) but that's the general idea of the difference between Web programming and traditional app programming. Which one you should lean more towards depends on what it is you're interested in creating. That's really the first question you should answer. If you just say "I want to program something," then you've got no starting point. But if you say "I want to write a XYZ" then you have an actual goal, and you can start to learn how it's done.
One bit of advice, and this is another generalization, but it's a useful one. When you get down to it, programming really only consists of two basic tasks: breaking down a problem into a set of smaller sub-problems, and expressing small problems in formal logic so that a computer can understand them. If you can learn to do those two things really well, the rest is just specific techniques and gaining the experience to know which one to use where.
Interest is something that is developed when you actually work on that thing.
So IMHO you should give a try to both for some amount of time.Later find out the pros and cons of working with both.
Speaking about Computer Programming its really a very wide topic.
Web application is not just setting up a website and connecting to the database.Its much more then that.
Software Programming its not just your desktop applications.You also have your CNC programming, OS , Drivers ,Gaming and much more. Technologies that you use are also numerous.
One More thing I want you to consider is the Market condition what's the latest thing. Have a try at it cause its easier to find a job with a Latest technology knowledge then the one that is Outdated.
Web development isn't exactly programming at first.
Web development is centered on formatting and displaying a semi-static page to the user. One does not need algorithms etc for this(not much at any rate), one just needs some aesthetic sense.
On the other hand, when you program, you start off with logic. I feel that this is a better thing to do, because once you know programming, segueing into webdev is pretty easy.
The "learning web development" process is like this:
The "learn programming language" process is like this:
Web development focuses on the content displayed to the user. There really aren't too many algorithms etc involved--devising algorithms is what makes programming great--and you don't really need to apply any logical skills.
On the other hand, programming does focus on content, but it also heavily focusses on optimization and algorithms. You really have to think here. Besides, most programming languages are more structured.
Actually, over here, it really depends on what you're interested in. I find logical thinking more fun. Webdesigning only becomes fun for me when there's a large structured environment involved. The simple stuff you mostly do in webdev gets boring. For you, it may be different. You may want to try out both programming and webdev simultaneously(not too hard--they don't conflict).
Just a note:In contrast with whatever I said here, I personally started my foray into programming via HTML. I learned JS, and I went to other programming languages from there. But that's only because I focussed on algorithms even while scripting JS.
It depends on where your interest really lies. I like to communicate and interact with the operating systems directly. So I go with software programming. You get to learn about the system more.