Question from a reader who's getting ready to go to college and considering a future in computer science.
I really don't know the first thing about programming or computer science, so if you could give me a very basic outline of what those two things entail it would be much appreciated.
Google knows better than me. :)
But here's a go:
Every application (some people call it a program) that runs on your computer (called a desktop application) or on the web (called a web application) has to be programmed, i.e. coded. Meaning, you have to write the logic, the instructions that are then interpreted (i.e. turned into something that works) by the system that the application runs on.
So, for example, Notepad is a simple application that runs only on Windows systems. It was built using one or more programming languages and tools which lets you develop applications for Windows. You need Windows to run that application. By the way, Windows itself is an application, only it's an uber-application of sorts, i.e. an operating system which makes your computer functional and able to run other applications.
The web is a much cooler place to build applications for. One major reason is anything you create for the web just needs a modern web browser to run... and modern web browsers run on every system (Windows, Mac, Linux, even mobile phones). So right away the application you build works for most everyone. Another major reason is that web applications (like Gmail) can be accessed from anywhere, instead of being confined to your computer like a desktop application (like Notepad). That's because the application is really running on some computer out there ("in the cloud" as it's referred to) which serves it to any web browser that requests it (hence it's called a server).
Whether developing for the desktop or the web, there are various "languages", each with their own syntax (style of coding). There are also various "frameworks" or "platforms", which make it easier to write certain types of applications (in certain languages) by giving you a kick start so to speak. They do this by bundling certain core code and providing certain methods that you can then leverage to write your application more rapidly.
Many languages and frameworks are proprietary (owned by one corporation, who licenses their technology and the tools needed to write applications using that language) and many are "open source" (its creators give it free to the world, and many people then contribute to it, making it better for all).
Every application typically has several parts to it, from a programming standpoint. You need a language (i.e. a method of creating instructions) for the logic part of your application (i.e. if this then do this, or if that then do that), which is called a scripting language. You need a database language, for querying the database where all your application's data is stored (e.g. your user's name, their login information, whatever), which you then use in your logic (e.g. if the user is logged in, print "Hello" plus their name to the screen). You also need a display language, because creating nice visual interfaces for your application requires its own mannerisms and programming methods -- so it handles things like font sizes and colors and layouts and graphics and what not. All of this stuff (logic + database + display) works hand-in-hand to form an application. There are many more pieces to the overall puzzle, but that's beyond us right now.
One of the most popular web programming languages (it's a scripting language) is PHP. It handles all the logic for sites like Facebook. One of the most popular database systems is MySQL. Then, of course, there's HTML which handles the display side of the equation for web applications.
It's a lot of fun -- like building legos, only it can help people and change lives.
I never took computer science, but I learned a lot from mentors who did. It'll give you a firm understanding of how computer systems work, of advanced programming concepts and more. But don't expect it to teach you the languages and skills you'll need to know when you get out of college. For that, you have to play around yourself -- get involved in programming while you're in school, take on a project, contribute to an open source project. Hands on is everything.
Don't let anyone bore you along the way. It's very exciting, very fun, there's many different areas to focus on within it, and it's an ever-growing, every-important part of our economy and of civilization in general.
How's that? :)