Which book to read (& learn) first?
November 9, 2006 3:29 PM   Subscribe

I picked up and was given the following books: Learning Javascript, Real World XML, Learning C#, and Learning PHP & MySQL. Since these are books I intend to read anyway, I was wondering which one should I read first?

I've been out of the IT world for the last two years. My background is tech support and server administration. I'm looking to get back into the IT world and I'm interested website programming (I'm not good with page layout/design/graphics...yet). As I mentioned, I know that I'll work my way through these books first, but I'm looking for suggestions as to which one to kick off my merry adventures.
posted by badger11 to Computers & Internet (13 answers total) 3 users marked this as a favorite
 
Learning Javascript. It's in the browser, so you've already got everything you need to get started. Also, it's really important to know for modern web development. Along the way you'll probably pick up plenty of HTML and CSS knowledge, and it provides a jumping off ground for XML or JSON if you so wish.
posted by mto at 3:54 PM on November 9, 2006


Javascript -> PHP & Mysql -> XML -> C#
posted by null terminated at 4:15 PM on November 9, 2006


I'd say PHP & MySQL first. This is partly political -- I think javascript is way overused & should be avoided wherever possible due to standards compliance issues (that are probably only going to get worse with IE7). Also, I have yet to work on a web project which required javascript knowledge beyond what could adapted from already-existing code snippets on the web. Not so for PHP & MySQL.

Finally, CMS's (content management systems) that are PHP/MySQL based are rapidly becoming ubiquitous. I've been spending the last month immersing myself in Drupal because everyone and their grandmother seem to want their sites built with it. CMS's are pretty much useless without being able to go under the hood and figure out what's going on.

Bottom-line -- you can learn javascript as you go, but I don't think that's as true with PHP/MySQL.

It might not be a bad idea to pick up a book or do some research on CSS too. Style sheets can be trickier than they should be, especially if you're attempting to modify some poorly-designed out-of-the-box template.
posted by treepour at 4:39 PM on November 9, 2006


These are all bad bets. Why? Because they concentrate on learning a particular language, not at learning to program.

Now, one or more of these may also introduce that, but I've no way of knowing that, so I'll recommend basic foundation book sin several languages.

Also, please understand that 3rd generation languages (of which javascript, C#, and PHP are three examples) are very different from 4th gens like SQL. One ook purporting to teach both is suspicious.

And understand that MySQL is only barely conformant enough to be really called SQL. Learning MySQL first is a bit like some poor deluded enthusiastic Japanese kid who "learns" English by solely watching 50s-era horror movies, and who then flies to NY and tells his cabbie, "I vant to suck your brood."

Concentrate on the basic building blocks. Want to understand the language from which most of the commonly used 3GLs arose? Learn C by reading K&R.

Want to understand Object Oriented programming? Learn C++ (and after that all other OO languages are much easier). Read Koenig & Moo's Accelerated C++. Or read one of Eckels's Thinking In books. Read the textbook Working Classes: it's an admirably concise CS 101 text.

Learn ANSI SQL so you can use any database, then learn MySQL's quirks.

Learn to program, then learn the quirks of individual languages.

Become a real programmer, not a code monkey who just knows how to do a couple of things in a particular language.
posted by orthogonality at 5:07 PM on November 9, 2006 [2 favorites]


What task are you trying to accomplish? Unless you have a more tightly constrained goal, most people's recommendations are going to be more about their prejudices than your needs.

(Oh, and when Ortho recommends you start work with C++ to learn the OO mindset, he's just trying to HURT YOUR BRAIN)
posted by Leon at 5:18 PM on November 9, 2006


Leon has a good point about adjusting your learning to your goals. But ortho also has a good point about learning to program. I'd assumed you'd had at least some programming experience. If you don't, it might not hurt to take an intro to programming class or pick a "dummies"-like book (for whatever language tickles your fancy).

If you're interested in making yourself marketable, I'd say learn what's in demand and fill-in knowledge gaps as you go along. If you're interested in this stuff more for self-edification, then ortho's austere & admirably principled route might be best.
posted by treepour at 5:31 PM on November 9, 2006


PHP -> Javascript -> MySQL

PHP so you can build some basic interaction.

Javascript so you can snaz up that basic interaction - by making the static HTML interface more dynamic. This allows you to get into AJAX techniques which talk to your PHP backend.

Mysql is basically just SQL and database concepts. so that will help you get you to writing data to flat files (not that there's anything inherently wrong with that).

by this point, you'll have no trouble with XML. (i don't know where C# fits in, but i guess it will teach you object oriented methodology, so then you can start to work on larger web projects with more developers?)
posted by kamelhoecker at 5:39 PM on November 9, 2006


I teach college level web programming and I second null terminated's advice of Javascript -> PHP & Mysql -> XML -> C#

I'd start with Javascript because it's easy and all you need is a browser and a text editor to get started. Plus, Javascript is an Object Oriented language, so you'll get some background in that. All these languages (Javascript, PHP and C#) are similar to the C programming language, so once you know one, the others are going to be very easy to pick up.

PHP/Mysql is a fine solution for web-based databases that are not high-volume. It's free and there's tons of support out there for when you're baffled. You'll need a web server running PHP and mySQL or you'll need to rent space on one.

Once you understand how databases work, XML is a whole lot easier to understand.


C# - Never done it. I understand it's handy to know if you want to work for a large corporation; once you know PHP/mySQL and XML, you might not feel the need to explore it -- kinda depends on your goals.

Good luck!
posted by chocolatepeanutbuttercup at 5:55 PM on November 9, 2006


Haha, C++ to learn OO, oh boy. That a good one!

Oh, wait, you were being serious?

I say forget all those, and get Learn to Program first. Then worry about learning a language to get paid for.

The main thing is to learn how to think and solve problems in code - once you can do that the languages are just tools you can pick up as you go. But if you try to do the first thing with a crappy language for learning (ie c++) it will make things much more difficult.
posted by rsanheim at 9:09 PM on November 9, 2006


Oh, crap, I could write an essay, but haven't the time... random thoughts instead...

You need to really, really, really understand OO programming and design, in your gut, if you want a professional future in software development. None of the books you suggest will get you there. Try Ambler's "The Object Primer" for starters, but realize it's just a start.

The rest is just languages and tools. As orthaoganality alludes, you need the foundation principles. I wouldn't start with C or C++, these days. Java, Python, C#, even VB (.NET, not the 'classic' tosh) all have anything you need to put the principles into practise. I wish I could suggest you run away from PHP, but it's becoming an industry standard, much to my dismay, so we pragmatically hold our noses and get on with it. Same goes for javascript.

Javascript is an Object Oriented language, so you'll get some background in that.

No. Javascript is a universally (but inconsistently) implemented browser scripting language, so we're all forced to be proficient in it. That doesn't make it good. It's a dreadful compromise language that has evolved to try and emulate far better OO languages and tools. Sure, you can write OO javascript. But nobody in their right mind actually does. We've all got better things to do with our lives. Trying to learn the fundamentals of OO programming with Javascript is like training to be a chef using only one blunt knife.
posted by normy at 10:43 PM on November 9, 2006


Response by poster: Thanks everyone, I appreciate the answers. I'm already comfortable with SQL (the MySQL &PHP book was a gift). Same with HTML and (just scratched the surface of CSS in class). Sorry to have left that out.
posted by badger11 at 10:46 PM on November 9, 2006


I'm going to have to almost entirely disagree with normy. Javascript has its weaknesses, but it's also incredibly flexible and quite capable, including supporting basic OO just fine. The only big OO annoyance I'm familiar with has to do with some of the hoops necessary for inheritance (and that might not be such a bad thing at the very beginning, since inheritance is a bit flogged when it comes to introductory OO pedagogy).

Learning PHP and Javascript after HTML has an advantage: it's pretty easy to leverage what you already know to produce visibly rewarding results fairly quickly. You code your basic markup, then you throw little programs into the document for dynamic stuff.

It also has a disadvantage: people who do this run the risk of beginning to think of documents as programs, and all programming as producing documents. This approach transfers poorly to other problem domains or even large web projects -- even in a web context, it's better to be thinking of programs as operating on data to produce documents.

If you think you can avoid that pitfall, picking PHP or Javascript first would be find. If you're not sure... you might try C# first, though Python or Ruby might be a better choice. You're also likely to get a bit better OO grounding from the C# book than you would from most PHP and Javascript books -- however capable *both* of those languages are, most of the texts out there are poor.

XML last. XML's largely useless until you have some other language to manipulate it with.
posted by weston at 11:32 PM on November 9, 2006


Javascript is a fine language - its doesn't "emulate" OO, it _is_ OO. It just uses a prototype model of OO instead of class based, which means it ends up feeling and looking a lot different from Java or C# or PHP.

I agree it probably wouldn't be the best way to learn OO for the newbie, but its well worth learning once you have something like Java or Ruby down. Learn it the right way, too, which means as a first class language and not just as something to copy and paste scripts off the web with.

And don't blame JS for all the browser incompatibilities of the past ten years, thats not Brendan Eich's fault.
posted by rsanheim at 1:32 AM on November 10, 2006


« Older Why is copying a DVD so hard? No, seriously.   |   What happened to my knee? Newer »
This thread is closed to new comments.