Hello all. After being interested for years and years (and years), I have finally decided to start learning how to create software and web applications. Base on recommendations, I have started with learning the basics of web design first (which I am almost done with) and then will move on to the meat of my process: learning the languages.
Problem is, I don’t know where to start PHP, Ruby, SQL, Perl, .NET, JavaScript…who knows where to begin?? I want to learn at least how to do basic programming with all of them so that I can make an educated decision as to which one(s) I will be best at. I am assuming they build on each other somewhat so following some sort of ‘order’ will make the process as easy as possible.
You’re probably thinking, “Just go to school for computer engineering, duh!” But I already have a degree and don’t plan on going back to school. I believe I have an adequate aptitude for this sort of thing, and although it will be challenging, with the support of the community I know I can do it on my own.
Thank in advance everyone and I am very sorry for the length. I look forward to hearing what all you have to say.
After years of doing what you suggest I can do nice web sites, but I do not master programming neither I have the professional knowledge nor the discipline. Now I realize that investing in a good programming course would have saved me a lot of unnecessary lost time, and helped me to master programming in less time.
1.- Basics are HTML/CSS, these are your first lessons. Go mastering these tools progressively otherwise you can be overwhelmed by so much documentation.
2.- The learning flow will take to to javascript and then, for more sofisticated websites, PHP scripting language using MySQL for the database storage and handling.
3.- Finally for RIA (Rich Internet Applications) that enhance the user experience go with AJAX based in Asynchronous Javascript.
But if you want to be a Pro, in my humble opinion the formal training is essential. Site Point is offering web training, which I consider to be very convenient.
Hello starbar, it is very understandable your physiological symptoms, I had it for years, they come from the “study barriers”.
The “study barriers” and the study technique to overcome those physiological symptoms is in this book I apply it to my daily technical study and no more problems with the body related to the study (headaches, stomachache, red eyes, dizziness, stress, etc.). I even use that study technique with my kids with great success.
A ways back I had the same intentions, to learn more about web development, in particular, XML apps.
My suggestion for web development education is to remember to remain aware of where things are happening. What runs because of the web server? What runs because of the client? As well as, what runs on the web server, and what runs on the client? The first two are not always the same as the second two.
Another thought, if you’re on Windows, is to try a WAMP suite - Windows, Apache, MySQL, (Perl, Python, PHP).
It’s been awhile since I used a suite from devside.net, but I was very fond of the clean setup and removal. There were no changes to the Windows Registry. The setup and uninstall instructions were simple and straight-forward, and they worked. As well as the reinstalls.
I think web development has more to do than any one kiind of program, and people sometimes forget it can happen in both a full-blown multi-network environment, or just one PC with a web server and an open mind.
Considering im just starting with PHP myself, i suggest Procedural PHP and dont get caught up in all the encouragement all over the place about OOP.
Up until last night my head was in a spin, trying to take in Procedural and OOP understanding at the same time, then i reminded myself why i want to learn PHP, to build a site that i have my heart set on that i cant afford to get coded by someone else.
I personally wouldn’t look beyond PHP, SQL and Javascript for the moment, to be realistic, its easy to be excited about something when you’re only talking and thinking about it.
Helluva lot harder though, when you haven’t programmed before and trying to get a whole lot of stuff to make sense.
Im determined but im experiencing plenty of stress, headaches etc while trying to take it all in, and i think you will too.
Well, I’ll admit it can all be a bit bewildering. What with everything being “ABC” acronyms, and lots of “overlap” in what things do.
.NET is a framework, not a language
SQL is a database engine, it has syntax and functions but is not a language (despite the “L”)
Javascript is (primarily) a client-side scripting language
Perl, PHP and Ruby are server-side scripting languages
To add to the confusion, some languages are compiled and others are interpreted.
Where to start? I guess it depends on what you want to do. If you’re interested in web, get the basics of HTML, CSS, and the DOM down first, Then, if you start with a “C” type language you’ll get a good foundation for a lot of other languages as many are derived from C and you’ll be able to benefit from the similarities.
I wouldn’t commit yourself to any one in particlar right away though until you get a “feel” for things.
A good place to start? IMHO a good language to get your feet wet and your hands dirty would be javascript. It has many similarities to other languages so once you get used to that you’ll be in a good place to learn others. And knowing javascript will benefit you no matter what server-side language you learn. It’s used lots.
And you don’t need to invest any great sums of money. Check out SitePoint’s References, Articles, and grab some of the Books’ free sample chapters.
And don’t hesitate to stop into the forum if you run into any snags along the way.
PHP has a low barrier to entry, but (at least up to v4) does not really encourage good practices. I consider it the Visual Basic of the web.
To be honest, I would pick one more or less at random and see how it goes. If you don’t enjoy it, persevere for a bit. If that doesn’t work, switch to a different language. If that doesn’t work, reconsider. Programming seems to be one of those things that you either do, or do not. There is no try.
Keeping things simple (I’m guessing you know HTML and CSS) you will want to learn one client-side scripting language, one server-side scripting language, one database connectivity language and if you really want to make complex apps, it couldn’t hurt to learn a RIA (rich internet app) language.
Client-Side Scripting: Learn JavaScript, it’s the only one that’s cross browser, basically it’s about making visual and constructive changes to the source code from the client’s end through their browser - think the likes of a GUI within an application, it’s essentially about interfacing with the browser renderer (it’s API).
Server-Side Scripting: Lot’s of choices here, these languages will do the leg work for your apps, sending, receiving and processing stuff between the end user and the server (and it’s database), possible choices include: PHP, ASP.NET / Classic ASP, ColdFusion, JSP (and there’s more), I recommend either PHP (if your servers Linux or Windows) or ASP.NET (Windows alone) as their both the most widely supported - This is probably the hardest one to pick from.
Database Language: Most people use either mySQL or MS-SQL Server, their almost all based on SQL (cept the expensive Oracle) but mySQL is the most popular.
RIA Language: If your doing heavy duty app development, I recommend one of these languages in preference to general scripting languages as their more built towards compiled apps running on servers rather than general interpreted programming scripts, essentially it’s down to scalability and while PHP can do the job, something like Ruby (on Rails) or Python (on Django) can really quicken the development process - At least I think so, others may not agree.
Regarding the back-end languages, you may want to read up a bit on their philosophies, to see if one in particular seems to match what you would like.
Python, for example, while being considered one of the “C-style” descendants, does not use C-style brackets. Whitespace is part of the code in Python, meaning newlines and indentation matter. If this seems appealing, then Python may be for you; for some people it looks more readable and helps enforce a style of programming you know others will be able to read.
Perl is very powerful and very flexible. It has a few philosophies, including There’s More Than One Way To Do It (“tim toady”); Making Easy Things Easy and Hard Things Possible; the Swiss Army Chainsaw of programming languages… it was created as a sort of super combination of Unix programs such as sed, awk, and the shell, while also being one of the C-style languages. If you think you’d like to eventually learn to write the most in the fewest lines (while not crossing the line into Obfuscation or “write-only” programming), Perl can do it. If you’re more familiar with Unix and Unix tools you may feel a bit more at home with Perl.
Ruby is heavily influenced by Perl, but its creator Matsumoto wanted a language more fun and less complicated than Perl, while still being powerful (and more object-oriented, which wasn’t very easy in Perl back when Ruby was first created). So, much less timtowtdy here. Ruby programmers consider the Principle of Least Surprise to be a Ruby philosophy.
Not that these are the only languages to consider, but whatever’s popular is more likely to be up-to-date and have good documentation and helpful communities. Which is another thing you may want to check out: most languages have communities where you can learn from and get feedback on code. So see what’s out there for the various languages you consider. SitePoint seems as good a place as any regarding feedback on PHP and Javascript, as the community here seems pretty strong in those areas.
No, I’m certainly not thinking that, and I’ve learned virtually everything I know from online articles or by chatting with other programmers (including online forums like this one). School gives you a lot of formal background and is good, but there are a lot of us who’ve come to the web by different paths than that.
This was excellent advice. Whatever you do on the web, the only thing your can send to a web browser that wants to visit your website is basically XHTML, CSS, and Javascript. Other languages give you lots of power, but you have to translate it into just these three technologies for web programming.
I don’t think you need to learn them all. Some will make sense to you, some won’t. You can fight your way into a language for the challenge or the fun of it, but chances are that you won’t find yourself working in it much. So here’s my quick run down of the languages you’ve mentioned.
PHP may be the most popular language and it’s very easy to learn. There is not a good body of application development material or best practices for it. If you just want to get started programming ASAP, however, there is no language that comes close.
Javascript is something you’ll use client-side (ie you can send a Javascript file to IE, Firefox, or Safari and it will “work”), it’s probably your best alternative to PHP for a flexible easy language and is more relevant given that you can use it with any back end language, PHP included. It therefore has the same downside as PHP, it will not teach you good programming habits. Javascript is also so powerful that a number of browsers disable Javascript for security reasons, meaning that your page has to be able to run fine with or without the script running which makes your life a bit more complex.
SQL is the language you use to talk to databases. If you aren’t using a database, you don’t have to worry about it. If you are, you can’t avoid working with it. At least not until you get comfortable with how it works. Then feel free to automate stuff or take advantage of 3rd party code that automates working with databases like LINQ and stuff like that. But in my experience, you won’t do well with databases if you don’t get down in the mud and figure out how they work.
.NET is a marketing / technology package from MS. It allows you to work in many different languages, so you don’t really “learn it” like you do a language.
I don’t know anything about Perl and Ruby, and really have no desire to learn them. There are all kinds of languages out there and if I took the time to learn them all, I wouldn’t get any code written. Don’t apologize for diving in and working with something that makes sense to you. And don’t apologize for branching out, but you’ll most likely have just a few languages in your toolkit that you really use.
You should also consider a good modern object-oriented language, like C# or Java. This is the opposite end of the spectrum from PHP / Javascript. They are not very flexible, they demand that you program things “the right way” or they won’t work for you. They are harder to learn, but are excellent languages for learning “how” to program.
So if you want a language without much structure, that’s easy to pick up, and that’s very forgiving of mistakes, PHP is a good choice, though Javascript is more “important” but also a little harder to deal with. If you want a language that’s NOT forgiving but teaches you good habits which will make your life easier in the long run, go for C# or Java. It’s likely that you’ll pick up some of both down the road. I know people who’ve started with PHP and later improved their programming habits by learning Java. I myself had fits learning PHP because it was too freeform; I learned C# which made much more sense to me, and I was able to pick up PHP easily after that.
I’ve seen the same thing, except the new language was Ruby. The phrase “you can write FORTRAN in any language” is apt… one thing some programmers have trouble with is learning how to write in one language, then trying to write the same way in another language. The guy I knew learned how to write Ruby in Ruby and could go back to PHP and he basically wrote Ruby in PHP, taking all the Good Things that come with a properly structured language with a sane way of naming functions. I do blame PHP’s haphazard naming methods for my colleague’s tendency to do the same with id’s and names in his scripts for the HTML elmenets… while I’m a “pick one style and stick with it” person… the result being, all the id’s I use for CSS hooks are camelCase while all the names of form controls and box id’s for his Javascript are 3 different styles.