Help for a beginning programmer (12)

1 Name: #!/usr/bin/anonymous : 2010-12-02 19:15 ID:0YMx0iLh

Hello, I've decided to delve into the world of programming, as I have plenty of free time. However, this will be self study, and so, I won't have access to courses or professors. I first plan to accustom myself with LISP via sicp, but I don't know where to go from there, or if that's a good starting point for someone with no background knowledge in programming(Or LISP).

Anyway, is there something I should read before I read sicp(Keep in mind it will be self study so I will have to substitute in anything that college courses would go over and teach that might not be in the book), and also, is there anything the book doesn't cover I might want to learn, and what would you recommend reading after that(Both in terms of a LISP book and other languages)?

2 Name: #!/usr/bin/anonymous : 2010-12-02 19:32 ID:zsxl8yqN

Why LISP? Why not the, according to me, more widespread Perl, Python, C++ (climbing mt. everest on your first try :D), C# or Java? Or, since it's extremely popular now, go web with HTML/CSS/JS/PHP?

3 Name: #!/usr/bin/anonymous : 2010-12-02 19:58 ID:k+oVhXCC

Well what would you recommend? Keep in mind my background in every department is mediocre as I've only finished high school, with no specialized classes in anything relevant. Which language and entry level books would you recommend(Availability of a job using said language would be something I'd like, but it shouldn't take control of what languages I learn, for now at least. How often the language is used is also important.), and could you give a little reason as to why you would choose it over the others?

4 Name: #!/usr/bin/anonymous : 2010-12-04 20:58 ID:9fMDOaIR

Personally I'd recommend Java. It's very portable, well documented and you can learn all about it on internet. If you're not the programmer type of a human you can find out without actually investing money into it. And if you're good enough you'll be able to switch to other languages with no problem once you've learned the basics.

5 Name: #!/usr/bin/anonymous : 2010-12-04 21:20 ID:zsxl8yqN

Most languages are very similar with the same basic "modules" only different syntax, so once you know a language very well you'll be able to learn a new one quite easily.

Java is considered a really good "learning language" since it's somewhat easy and straightforward. I'd recommend using the editor Netbeans for Java. it's simply amazing with a really nice text editor and a GUI designer when you'd like to play with that, it have everything you'll ever need.

Just like >>4, I recommend using Internet as a tool for learning. There's tons of introduction guides and stuff, the only thing you'll have to keep in mind is never to copy-paste any code, just write to remember :D

Once you know the basics, come up with some basic software that you'd like to make, and make them! Stuff like simple command line procedures and, later on, more complex GUI software. One thing that's quite popular to make is a calculator. Every time you don't know how you should write your code, google some examples and learn while doing!

6 Name: #!/usr/bin/anonymous : 2010-12-05 00:11 ID:M2SatZzY

I was going to recommend something earlier but I got lazy. As an experienced coder, I endorse >>4 and >>5's advice.

On top of Java, which will quickly immerse you in the important concepts of object-orientation (Greek for the practice of separating your program into distinct modules and treating them like, well, objects), threads, polymorphism, inheritance, etc, you should briefly work down to C++ and, if you feel like it, C. These'll gradually ease you into lower-level practices like dealing with data at the RAM level and interfacing with other hardware. You'll also pick up a more stringent but cautious conception of syntax, eg. what exactly you mean and specify with each line. Plus these are industry standard languages for intensive processing work as seen in games, financial software, simulations... so its good to know if you ever want to really get your hands dirty.

Maybe after all that you could take a crack at SICP. Be forewarned, however, that it's pretty much intended for college freshmen proficient in the calculus and familiar with programming. If you want to be a Knuth or Sussman (read: computer scientist), this is how you start. But LISP itself is a handy language to learn, as it is what one would call "atomic". Like logic and maths you build from a single element and its possible relations to others, treating the compound as elementary and adding on in the same way. It has been said that LISP enlightens you.

What are your goals for programming? Do you want to contribute to open-source projects? If so then you'd want to learn as many languages as you can. As >>5 pointed out, this is not difficult if you have kept at what you already know. Python, Javascript, Ruby, Perl if you're a masochist... If you just want a casual hobby then stick with two or three languages and make as many different things as you can imagine. Factoring in the possibility of a future job, though, you will want to spread out as much as you can. Being strong in a relatively low-level language and proficient in a multitude of others will make you pretty useful. Maybe you will even want to learn about system administration.

That said, I'm done for now. Good luck!

7 Name: #!/usr/bin/anonymous : 2010-12-05 12:39 ID:aEBg0NXp

Unlike >>6 says I'd recommend you to start programming in C before C++, C++ adds, well, headache.

Anyway, Scheme (which is a dialect of Lisp and is used in SICP) is actually a pretty good learning language, so is Python. I've never really enjoyed Java as it forces one to write in OOP (object oriented programming) which may not be the most fun way to get introduced to programming.

A very quick-and-dirty Python tutorial can be found over at sthurlow.com, remember to not download Python 3.xx from python.org as it's kind of different from 2.xx.

Remember to always experiment, this is also one of the reasons that you (according to me) should start with Python, it's really easy to experiment with.

http://projecteuler.net/ introduces you to a couple of hundred mathematical problems in case you don't know what the heck you should do.
http://www.pythonchallenge.com/ also provides some fun stuff.

The Land of Lisp and Practical Common Lisp are two good books about Lisp, LoL is more for the beginner and PCL more for the more experienced programmer.

8 Name: #!/usr/bin/anonymous : 2010-12-06 23:06 ID:hnQwVtuP

If you don't mind feeling like a middle schooler while learning the very basics of OOP and Java, I can recommend Alice, a 3D environment where your programs consist of animations. At Oxford Brookes University, where I studied CompSci, this was used for the basics.

After 3-4 months we then moved on to Processing, which is a graphics toolkit on top of Java used to create 2D (or 3D with the OpenGL extensions) pictures and animations. Then we would move on to learning Java proper - but alas, I dropped out before getting to that stage, and am now in a similar position to OP (apart from the basic knowledge I got with Alice and Processing).

9 Name: #!/usr/bin/anonymous : 2010-12-07 11:38 ID:C7T3DzJr

>OOP
>Java
>C++
>PHP

Holy Shit...
ITT Сoprophilia OVER 9000

10 Name: #!/usr/bin/anonymous : 2010-12-10 13:51 ID:0YMx0iLh

Ok. With the help of this thread, I have decided to become proficient in Javacode. Are there any guides you would recommend, or will I be fine just picking up any guides off of the internet?

11 Name: #!/usr/bin/anonymous : 2010-12-11 02:57 ID:M2SatZzY

>>9
Well, what? You wouldn't teach your kid BASIC, would you?

Or maybe you would...

12 Name: #!/usr/bin/anonymous : 2010-12-12 17:15 ID:XPcc0s0e

This thread has been closed. You cannot post in this thread any longer.