13

I do not know any programming languages at all. I will self teach myself and need to know the best place to do so where I can learn from a most basic level. Where is a great place to begin learning a language? What language is best to learn first? Is it silly to learn Ruby first?

Here, I came across someone saying that learning some of the higher languages can make you 'lazy' if you learn them first. Like Ruby amongst others.

For my first language, my husband is advising me to learn Ruby (for his own personal interests). However, I need some independent advice of how to get started and what language I should learn first. I will eventually learn Ruby and then Rails.

Four months ago, my husband ordered a text of objective C because he thought he would take it on. I flipped through and it was clearly starting at a place more advanced than where I am coming from.

I have dabbled with a Ruby tutorial and I don't get it. I get what I am putting in is what I get, but I don't understand what is leading up to that. I need to know ALL the rules first. I then looked up computer languages and stared researching binary code which helped a lot, but not where I want to start. I don't have a lot of time right now in my life (with four kids) to go back that far. If I were going to school, that would be different.

Any advice you could give is most welcomed.

14
  • I gotta ask, how did you find this website if you know no languages and I'm assuming never visited Stackoverflow? Also, don't bother learning binary code at first (or ever, heh).
    – Sergio
    Feb 25, 2011 at 20:29
  • @Sergio: Hubby probably recommended OP to come here (since it sounds like he already knows Ruby). And binary code is good when studying assembly (something I think everyone who's serious about programming should do, but maybe not right at the begining if they're self-teaching). Feb 25, 2011 at 20:33
  • @Frust: I don't picture someone who is freshly starting learning assembly.
    – Sergio
    Feb 25, 2011 at 20:36
  • 2
    Which Ruby tutorial did you work with? I liked Why's Poignant Guide to Ruby. mislav.uniqpath.com/poignant-guide Feb 25, 2011 at 20:46
  • 1
    @Sergio: Oh, I found the site myself when I searched: what is the best way to learn a language. My husband only knows front end html and whatever else he needs with his work... velocity? He is a product manager for a software company, not a programmer. He has no patience (but he's loved). I wanted to look at the binary code because I needed to know what in the day is going on with languages? What languages build other languages and so on. How does the computer 'get it' was another. He couldn't answer my questions. Feb 25, 2011 at 20:53

7 Answers 7

2

Ruby won't let you down in the long run. Keep at it! Don't give up!

If you want a fun introduction, try Hackety Hack. It also is by the esteemed why the lucky stiff - the same guy that brought you tryruby and Why's (poignant) Guide to Ruby. He also mysteriously disappeared from the internet in August of 2009, but I digress.

Hackety Hack assumes no programming experience. It's as much fun as a butterfly net. Give it a try. Oh, and don't worry so much about what's really happening in the 00000s and 1111111s. That's important, but first you want to get used to telling the computer what to do. Boss it around without worrying about why it listens. Think about all of the other things that you use but aren't exactly clear how they work - a toaster, genetically modified food, and mood-altering chemicals.

1
  • Interesing... The binary things I was reading was a site done in 2009 from him as well. Hmmmm. Hmmm. Thanks for the reply... everyone has been so generous with information. My husband has been chuckling since I told him what site I found. He was impressed with the great answers! Since I have such green questions, I could have easily been shooed. So pleased... this must be a great community! Feb 27, 2011 at 1:56
6

http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00-introduction-to-computer-science-and-programming-fall-2008/

You can watch MIT's introduction to computer science course. They use python, and the text-book is even available for free.

http://see.stanford.edu/see/courseinfo.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111

You can also watch Stanford's intro. course. They use Java.

http://www.youtube.com/watch?v=zmYqShvVDh4

Lastly, you can watch Cal-Berkely's intro course as well. I believe they use Scheme or some other dialect of Lisp.

2

Why do you want to learn programming languages? Each has a different purpose and some are better at teaching certain concepts than others. Do you want to develop software, or learn about the more theoretical side of computer science? There's a big difference, and which one you choose affects how you should go about.

It sounds like you understood the low-lying concepts easily, so it might be the case that C is a good introductory procedural language; it's one of the first I learned although it isn't relevant today in a practical sense. The C for Dummies books I had were good at teaching the language from a very, very basic level. For something more practical, Python is probably a good choice.

For more theoretical stuff, maybe try learning Lisp with Structure and Interpretation of Computer Programs. It is probably a bit harder to grasp, though.

1
  • Right. I definitely want to produce software and if I enjoy it, I think in the future, I would be interested in the theoretical side of it. Feb 25, 2011 at 21:02
2

Suggestions based on the question and many comments:

  • The urge to know exactly what is going on deep in the machine is strong, especially in curious developers. I would caution you to suppress this urge for now. If you don't, it's more likely that you'll grow frustrated and toss the whole thing aside. If programming is for you, you're going to run into many, many tools that hide the details from you. This is actually considered a good thing - it let's you focus on your problem without thinking too much about what's behind the curtain. Don't lose that curiosity. Just tuck it safely away for now.
  • If you can't stop yourself from thinking about the details, consider buying a book like The Elements of Computing Systems: Building a Modern Computer from First Principles. It will walk you through building your own (simulated) computer. It starts with the absolute basics (logic gates) and builds and builds and builds until you have a complete computer with hardware and software. When you're done, you'll have hands-on experience with memory, modeling processors, operating systems, virtual machines, and even parsing code. Read the reviews. This book is amazing.
  • From your comments about tryruby.org, it sounds like you may be putting too much pressure on yourself. It may feel like you need to memorize, but that's not the point. The authors are introducing concepts. They want you to get a feel for the language (and like it). As they move from demo to demo, they don't expect that you've mastered what's come before. You'll have plenty of time to look things up when it's needed (I've been doing this a long time and I still looks things up daily).
  • If you have a specific software goal, be sure to share it. For example, if your goal is a web application, there are tools that make web apps easier and tools that don't. Starting a web application from scratch with C is a little like starting to build a table by cutting down trees.
  • Finally, remember that learning to program takes time. Many of the people contributing to this site have spent tens of thousands of hours learning to program. It's not always easy. In fact, sometimes it stinks. Still, the experts here started exactly like you. They didn't know the first thing about programming. They stuck with it and became strong programmers and you can too.
1
  • Thanks! I liked that book (well, just flipping through it). I think it will come in handy when I have that urge to know something deeper. I agree with 'hiding' the details to be a good thing. Feb 27, 2011 at 1:50
2

I assume you know how to program and we are not talking about the first language you will learn in your life.

In this case, the best way to learn a new language is getting a gig where you have to use it. For real.

OK, you can try to read some book about the language first, but if you are not with a real problem to solve, you will stall. Without real problems, you will only do "homework" programs, that work only with few data or few people using it.

The best way to learn a language is programming, making mistakes and realizing what went wrong.

1

Start with an environment designed for education and computer literacy. Most computer books are not.

Go to the local library and look at the "dummies" books, the "idiots" books, even something old from the children's section of the library on Basic or Logo. There are also websites with educational materials for children on the Squeak and Alice programming languages.

Pick the book (or whatever) that seems the easiest and most fun, whatever the programming language. Once the basic idea of programming clicks, then you can move on to books on more currently popular or useful languages, and they will then seem a lot easier.

1
  • If you don't want to become a "lazy" programmer you need to find some educational materials on assembly language. Edmund Scientific actually still sells a cardboard "Cardiac" computer for this purpose. (They used this in the CS for non-majors course at a UCBerkeley several decades ago.)
    – hotpaw2
    Feb 25, 2011 at 22:37
1

I have understood that Python is a good choice for a first programming language.

The first language is important as it molds your brain for what to learn later. You can always learn more languages later if you need to, but the first one is crucial here. Assembly for instance, is important for the same reasons that haiku writing is important to authors.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.