Learning a Language

I really hate this feeling of wanting to learn a new language (I’m not talking French or German here, btw) and not knowing where to start. I find that the only way I can get my head around learning something is if I need to learn it. When I started with PHP I needed to learn it for work and I wanted to write my own guestbook script (and what a complete failure that was at first!) and so it was relatively easy.

My mum bought me a book on Perl for Christmas, and I thought “I’ll have this down to a tee by March”. I’ve not got past page 3 yet. I want to learn Python, Ruby, AJAX and all that other fancy stuff with awesome buzzwords. Where the crap do I start?

28 Comments

  1. Why don’t you learn C? Should be easy as you already know PHP. Once you know C, you’ll pretty much know all the other ones based on it too, so I guess it would be really helpful. I don’t know it though, I suck at progging languages and I’m still struggling to learn PHP…

  2. Jem

    31 Jul at 3:29 pm

    @Adastra: it’s another one on my list, it really is. The problem is not picking a language though, rather where to start. If I don’t have an immediate need to use the language, I find it very hard to get into it.

  3. Python is my scripting language of choice. It’s a very C friendly language and it’s very C like. Since I knew C, I picked up Python instantly. I think you’ll find that Perl and Python are totally different from what you know. PHP is a shell (around Perl). It’s meant for anyone and everyone to learn. It’s not meant to be hard, and it wasn’t meant for you to have to know a lot about actual programming to learn it. It was designed to make web design easy. To start, you’ll need to learn some basic programming (Like writing a hello world program). Python is an excellent beginner language. A lot of schools use it for their CS 1 language. You’ll need to download the compiler and SDK from their site, and then you’ll probably need a book on intro to programming with Python. Sit down one weekend, write your hello world program, and you’re on the right start. Personally I would go with Python rather than Perl to start, but that’s only because I’m a C kind of girl. C is a language that is very close to the machine. It’s for your more powerful server side stuff, not so much the client side stuff.

  4. Jem

    31 Jul at 3:40 pm

    @Kimmie: I have the advantage that I did basic programming (or started it) in college. While I’ll have forgotten most of what I know I’m hoping it’ll be a good start for getting my arse into gear and picking up something new. I’ve all but given up on the idea of learning Perl at all. It seems the more I look around the ‘net the more people are talking about it as ‘the dead language’. I’m not sure if it’s worth me spending any time trying to get into it (past the basics which I’ve picked up looking at other’s scripts.)

  5. ASP (grin), since it’s a useful skill for a professional developer’s toolkit. Plus, once you dabble in ASP you can then dabble in ASP.NET and complain about its non-compliant HTML output :)

  6. I hate perl. I remember my teacher loving it, but I could just never get into it. The whole retrieving variables bit from forms was just crazy. It’s a weird language, as far as I’m concerned. Python is probably the easiest langauge out there to learn. If you know PHP, switching the python would be a breeze. http://www.ibiblio.org/obp/thinkCSpy/ Is the textbook (or a similar one to) the one we used in college.

  7. I’m actually studying Computer Science here at my school (and Java is the language of choice). I was wondering however, what kind of advice you could offer for getting into PHP. What kind of books did you use? What techniques did you use to help retain your knowledge of the language?

  8. How about… the first page of the book? :) (I apologize if that was offensive!) I’ve taught dozens of people my first language which is American Sign Language. Granted, it’s a little different than a computer language like Perl.. but I think the concepts are similar: don’t get overwhelmed by how much there’s to learn. Just take one step at a time.

  9. Jem

    31 Jul at 5:26 pm

    @Asia: I think different people learn at different paces and in different ways, but I know a lot of people find it easier to learn something if you ‘need’ to – as I said in my post. I started with PHP5 for Dummies, and it was quite a good book. It taught me some good techniques and the basics I’d need to write my first script (my BellaBook guestbook script). After that I just kept creating things, even if there were perfectly good scripts out there that were doing what I wanted already. I think the turning point in my skills was when I wrote my weblog script – I had to research a lot of stuff I didn’t know and it helped me get to grips with the php manual (php.net) I would say get a beginners book to learn what the various predifined variables/etc are (although with a background in CompSci you should get through it quickly) and then get stuck into a project of your choosing.

  10. Perl is most definitely not a dead language. It’s just that no one new really uses it. A lot of compiled code still in use today is written in old “dead” languages, like COBALT. I guess you really just kind of need to pick a project that you think you’ll use some stronger script for. Then once you have a goal, you have reason to really get into learning it. I wrote all of my blogging code in C. You could rewrite BellaBook in a new language. I’d say write your own version of PHP… but… if you’re going to do it right (and a really good job of it) you need to know a lot of discrete mathematics. The bad thing is… you really need your website on your own server box to do a lot of the cooler things you can do with these more powerful languages.

  11. I know a bit of Python, and I found it pretty easy to pick up. The only issue I had was that we never seemed to do anything interesting with it (yay, I can draw a hideous chartreuse circle with a black border!). I have no idea what you could use it for. I have a book on Python I’d let you borrow/buy. To do AJAX, you need a decent grip on XML and an even more decent grip on Javascript. I have a friend who coded his portfolio site using AJAX, so I know it’s possible to do some simple yet useful stuff with it, but… ehhh. I like Gmail’s use of AJAX, and my WP poll plugin called Democracy, but I find most uses of it superfluous. Even the portfolio site. I won’t recommend C++, but that’s because I had a horrible experience with it. You might turn out to love it, I don’t know. Sorry this comment isn’t terribly helpful – it’s just my experiences with these languages. I’m awful at teaching myself stuff.

  12. Learn C/C++/C#? If you have those down, everything else falls into place. Ok, so maybe it’s easier for me, since I study computer programming and had a course where I found out that each and every programming language has the same basis… just different commands.

  13. @Meggan: LOL! I had a horrible experience with C++ to, :D. Never learn ColdFusion, though, it really does suck. Basicly, it’s an addon to HTML. , wow! I love how they put cf before each tag… I got to about page 67 in my C++ book before I decided to read some weird manual. I think, Jem, that you should learn an actual languages (Japanese, Spanish, etc) because you can makea lot of money translating whole websites with your language. I think it would be cool to learn (ruby on rails is slow, :P), like, VBScript, or a program that you could integrate with your already great PHP knowledge. Then, you can do things like making a script that outputs stuff to a MySQL database and be like “w00t! This is from a program I made! YEAH.” Another cool programming language to learn would be Action Script, because it’s easy and you can make flash stuff with it. You could make something that integrates with your PHP work, so you wouldn’t have to work on something completely new.

  14. i wanna learn PHP but im a slow learner when it comes to that stuff. i heart Perl is hard but who knows. depends on the person i guess. good luck in finding which one to start with.

  15. Try learning java, I did, and I haven’t used it since. Now there was 3 months well spent. :)

  16. javascript :P .net type stuff is probably useful to learn from an employment point of view (ehh, I should know) but it’s evil.

  17. Why don’t you finish with PHP? You’re already on the road to becoming an excellent PHP programmer, and your creativity is obviously still there. It’s hard to learn a language for the sake of learning it. It’s much easier when you have a goal in mind an learning the language is the way to meet that goal. Master PHP. Don’t just become proficient, but try and master it. It’s not going anywhere soon. Think of what would be beneficial. Perl is excellent for quick and dirty scripting of admin tasks on the *nix side. You could do it for Windows as well but your company might not like that. You could learn VBScript and WMI to be able to create Windows administrative scripts that not only make your job a lot easier, but makes you look good and gives you a good understanding of classes and reusable code. ASP is also a good idea. I always shunned it because it had been a Microsoft product and the availability just wasn’t there for personal use as much as Perl/PHP were. When I started working with IIS however, my tune changed. It’s an easy and powerful language to pick up and it’s gotten me a few brownie points by whipping shit up that’s being used, like personnel databases and asset tracking. C is for people who are serious programmers. I’m not suggesting that learning C makes you a serious programmer, but it allows people to do things that the normal every day programmer doesn’t need to do (memory manipulation). It’s really a language for solutions that need to be quick and intensive. C++ is probably easier to grasp since it’s standardized and would teach you OOP concepts, but like C lacks a lot of comforts offered by high level languages. (I lean towards .NET) ASM is as low as you can go and you’d be pimp as shit for knowing it. I skimmed a book on it and the theory was easy to grasp, but the actual coding seemed tedious and difficult. I’m not sure how often one would need it unless you were an active developer. Java is very popular and still in demand. I just hate how Java programs look. C# is an alternative to Java in a way that the .NET framework has a lot of built in functionality to make it easier for the programmer to get the job done. Python seems to be the new Perl. I haven’t gotten to Ruby yet because everything I haven’t felt the need to move from PHP yet. Ruby’s approach is to be simple and almost semantic, and it’s gaining a strong footing already. There’s always Visual Basic (or VB.NET) which is one of the easiest languages to use when making desktop applications. It’s intuitive, but if you’re a serious programmer (as in your salary depends on your product) it’s too slow and bulky. If you care what others think of you then you might skip this as most geeks will call you a newb for it, regardless of your accomplishments. AJAX doesn’t need to be difficult. I have a book on AJAX itself and another with PHP/AJAX. It’s a lot of code for simple tasks. Fortunately, there are a lot of frameworks that allow you to have AJAX functionality without all the coding headaches. Check out Prototype or SAJAX. At the end of the day, think of what you actually want to accomplish with the new language. Make sure your decision is based on what’s practical and not what would be cooler or make you more geek worthy which is the case with a lot of people. Good luck though. (C#!)

  18. I’ve tried Perl before, and though I didn’t have the time to continue it, I felt it was pretty easy. Definetly better than PHP, which I struggled a lot with before deciding I should just go study for the SATs. Heh. Good luck with whatever you decide to do :D

  19. I’ve been reading a book on Python right now, but I haven’t even really mastered PHP yet so I’m not even going to try to put more on my plate then I can handle. But I think if you’ve got PHP down for the most part, definitely try Python. Not that I know anything about how you take to a language, but psh, :P Have fun with it, that’s for sure.

  20. Ha ha! At least you got the PHP thing down… I haven’t even managed that yet, haven’t even started :-( You will do it, it comes in time I find. Peter

  21. Perl is a good one to start with since its got a lot of similarities to PHP. I was supposed to work on a Perl project for one of my professors this summer, but it kinda fell through…

  22. Pfft. And here I was thinking I might be able to give you a shove in the right direction with Italian.

  23. Give yourself a project. See what the languages are used for and decide to create something beautiful. ;-)

  24. I find it’s easier to learn something when you know (even if vaguely) what you want to do with it. I found it difficult to learn PHP because while it was amusing for a littl while playing with it, I didn’t have any idea what I should make with it. Eventually I grew bored with it. So yeah, if one of those languages seem useful to you because you have an idea of what to use it for, then maybe that one might be the one to start off with.

  25. I was supposed to learn Perl a while ago. Anything I ever taught myself was kind of gleaned, you know? You learn on a need-to-know basis. I was supposed to learn PHP this summer on my own, didn’t, and now I’m going to have to kick ass to learn it while I complete these PHP projects. Basically, I’d take a highlighter to that book and just read. Not many people actually use Perl, true, but it’s very powerful and has its advantages. Lots of people don’t take the time to learn Perl. From what my… whatever he is, boss, mentor, fellow geek person… says, it’s easy once you get it and it makes a lot of sense. I think you’ll like it if you like PHP :D But really, you might be better off if you think about what you want to do with the knowledge, even if you don’t release. You can write a shopping cart script just for kicks ;P Evidently those are pretty advanced, by the time you’re done, you’ll be a Perl Mastah! Hahaha…

  26. I say forget Perl; learn Python and Ruby. How? Rewrite Bellabook in those languages!

  27. I’d suggest getting some form of workbook (with acitivies) and work through those. It’s often easier to learn from example. Even if you got a book on C# you could apply the activities to other languages. But I guess I’m lucky, I’ll be learning Java in university :) I’m just waiting for that before I start trying to self-teach myself for the same reason you’re having trouble – I wouldn’t know where to start.

  28. I always find that the only way to learn a language (computer or spoken) is just to dive into it. Not necessarily at the deep end, but it really helps to be trying to achieve something with it rather than just learn for the sake of learning. First you have to pick a project, then decide to do it in whatever language you want to learn. It really helps if you’ve got a friend who knows the language so you can go to them for help – books are never as convenient as humans for explaining things. Since you already know PHP, you’ll find before long that any language is just a different way to say the same thing. You know the hard part – breaking down a task into logical steps that the computer can accomplish – so the rest is just semantics.