Which programming language should I learn first?
Asked by
DrewJ (
436)
December 24th, 2010
For the past year or two I’ve been really into developing websites and phone apps. However, I’ve never been able to because I don’t know how to code. I’m seriously considering going to school for web programming but before I make that step I want to teach myself as much as I can. I know there are a lot of different programming languages, html, java ect.
My question is what order I should learn the different languages. Assuming I want to know everything there is to know about development social networking sites and web applications and such.
Observing members:
0
Composing members:
0
8 Answers
Python
Ruby
Choose one of the above as your server-side language of choice. You will live this language, so choose wisely. (I chose Python, but both are somewhat similar and do the job quite well.) Once you are familiar with one of the languages, I would recommend installing either Django for Python or Ruby on Rails as a web framework. I don’t think those are the most popular choices, as PHP, Java, and C seem to take the majority, but most developers will tell you this is the way to go.
For the client-side part of any web application to be built, you must know the ins and outs of HTML to be able to write ’‘beautiful HTML.’’ Again, this is personal opinion, but careful HTML can prevent design mess and help create more “modern” web applications. You’ll then need to know CSS and most likely Javascript. Finally, knowledge of jQuery or the MooTools framework will come in handy to enhance your client-side using Javascript.
You asked for the order of these languages, so I would recommend learning them by difficulty, ascending:
HTML
CSS – Prerequisite: HTML
Javascript – Prequisite: HTML, possibly CSS
Python/Ruby
Django/RoR – Prerequisite: Python/Ruby, HTML is needed for templating. This brings together all your code knowledge to build a base of a web application.
If you don’t know HTML, learn that first. You should be able to pick up the basics in a few hours. HTML has a couple partner languages including CSS, which is used to control presentation (how a page looks) and JavaScript, which is used to control interaction (how a page works).
These languages are considered “front-end” languages, because the code written in them is usually executed on the “client-side” (meaning, in a user’s web browser). This has the added benefit of allowing you to view the source code of any web page you use (like Fluther) and figure out how it works.
After you’ve learned HTML, CSS, and JavaScript, you’ll probably want to learn a server-side language. There are a lot more of these to choose from, since you have complete control of your server environment (clients, on the other hand, conform to a common standard). You should choose the language that makes the most sense to you. I’m quite fond of Ruby (both the language, as well as the community). Learning a language like Ruby will allow you to make a website that does almost anything.
If you want to get into development for phones, that’s a different story. Each phone has it’s own development language. iPhone apps are written in a language called Objective C using Apple’s Cocoa Touch API. Android apps are written in Java. Windows Phone 7 apps are written using Silverlight.
I strongly discourage you from starting in Web programming first.
Web programming requires concurrent knowledge of many separate technologies, and contains lots of pitfalls with which a beginning programmer need not deal.
I would recommend learning Python first, since any computer can be equipped with a Python interpreter and Python is pretty much the same everywhere. Also, there are plenty of great Python tutorials online: try googling “dive into python” or “how to think like a computer scientist – python” for examples. Play around with Python on your computer, use it to script common tasks, etc. for a while. Once you feel as though you have a handle on programming, then give Web programming a whirl.
You can learn HTML concurrently. HTML is not difficult. It’s not a programming language but a markup language (says so right on the tin). I recommend learning XHTML because it encourages good coding habits and is likely to be future-proof.
Learn HTML and CSS at the same time. They are both easy and should be used together.
When you get into Web programming you will probably need to learn PHP. Don’t learn it first, though- it’s an ugly kludge of a language. Sadly, it is nearly ubiquitlous on the Web, so you’ll probably need to know it eventually.
Really good answers above as far as order to learn things in for web programming, so I’ll just say I agree about that.
A few things I wanted to add
— Try a bit of everything as you’re able. Something will stand out as your “thing” and that’s where you’ll want to dig deeper. Some people love the design process and only code when needed, others get their enjoyment out of programming, some get down with optimizing servers and networking. Usually there’s sort of a center for your interest and you generally learn the pieces that touch that as needed. Find that center for yourself and you’ll be happiest, unfortunately there’s too much out there to learn it all in depth.
— Same goes with languages and libraries, try several and see which one comes most naturally for you and follows how you think. It’s surprising how something jumps out and you find yourself using one over other options to solve problems.
— Everyone is different, but after reading a book I always find a new skill doesn’t really sink in until I actually build my first project using it. So find something you want to do and just get started. It helps keep me interested and lets me develop real solutions right away then refine them as I learn more
Enjoy.
I started with MBASIC, Fortran IV and Pascal. Of course that was over 40 years ago!
Decide if you want to learn an object-based language or a dat/variable (logic) based language.
There is a lot of great advice here already. But are you interested in design and engagement from users or interactivity, or are you interested in harvesting, collecting and analyzing data and information?
Just pick one, they all lead back to each other. Web design utilizes both, but many people excel at different sides of the equation.
@funkdaddy I like your points.
While a production site can be made by just one guy (Many of the apps built on Rails Rumble are built in 48 hours by a single programmer/designer), the building process is easily separated into categories and distributed to a number of employees. So I say specialize in an area after getting a taste of everything. Then look for a company or a few friends to lighten your work load.
I started with C. It’s easy to learn other languages knowing some basics of C. So i would say C.
Answer this question
This question is in the General Section. Responses must be helpful and on-topic.