PDA

View Full Version : a good programming language?




tycheong
Nov 3, 2008, 11:14 PM
so I'm in eighth grade right now
and the high school I'm going to go to teaches java and computer science AP
I'm really interested in beginning to program (i don't have experience) and my parents also want me to get a bit of a head start in java or any programming language (my mom wants me to do robotics club :P ).
some of my high school friends have got internships at the apple campus (my school is very close to the headquarters) from computer related classes at school and from robotics club and i want to have the opportunity for an internship...etc
but i have no experience
what are some simple or easy programming languages?
is java a good beginning?
what can you do with java?
thanks!



lee1210
Nov 3, 2008, 11:43 PM
so I'm in eighth grade right now
and the high school I'm going to go to teaches java and computer science AP
I'm really interested in beginning to program (i don't have experience) and my parents also want me to get a bit of a head start in java or any programming language (my mom wants me to do robotics club :P ).
Good for you. Initiative and a self-starting attitude will take you far.


<snip>
what are some simple or easy programming languages?

This might not be the right question to ask. Better might be "What's a good language to start with?" or "What's a good language to learn if these are my goals?". It might be easy to learn some sort of BASIC variant, but perhaps not best in the long run. I always think a strong foundation in C will go a long way, but there are many that will disagree.

is java a good beginning?

It can be. Java FORCES Object-Oriented Programming from your first program. To write "hello, world" in Java you must make a class, write a method (with a number of keyword modifiers like "public" and "static" that you may not understand at all), and either import a few levels of the System package, or write out a long series of package references... all just to print a line to the console. In reality, this isn't a big deal, and you're likely to just copy the code from someplace, but my point is that you can't take things gradually, really.

With Java, you have to start:
1) Learning how to think about programming and problem solving
2) Learning about control structures, and procedural programming
3) Learning about variables, and assigning values to them
4) Learning about objects, how they are declared, etc.
5) Learning about class vs. instance methods
6) Learning about packages
7) ..., etc.

This isn't much more than a slightly lower-level language like C, or an OOP language that doesn't force Objects from the get-go (Objective-C, C++, Python, Fortran 95+, etc.), where you can cut your teeth on some of the above topics without having to take them all on at once. I think there are a lot of benefits to this, but if you start with java you'll pick it all up eventually.


what can you do with java?
thanks!

You can do almost anything with Java. It is a general-purpose language, and has a wide set of applications. There are a few things that you can't do directly with Java (generally low-level system interaction), but you can normally access such functions with C, then access them from Java using the Java Native Interface (JNI). That's not something you have to worry about yet, but I just wanted to give an example of something that's a little more difficult with Java. Otherwise there are desktop applications, embedded applications, complex server-side software systems, and everything in between written in Java. Anywhere that a JVM will run, you can use Java.

Whether you go with Java or another language, get programming. If you take to it, it will be a great benefit for you to get such an early start.

Good luck!

-Lee

ManWithhat
Nov 4, 2008, 12:26 AM
At UW-Parkside, we learn Java as our main language. Anyways, after completing the program (graduating in December), I think Java was a great choice for a first language.

Although syntactically similar to Java, I like C# quite a bit better. I will also suggest that after you program quite a bit with Java, that you start learning C/C++. It's not that it's more difficult (more tedious maybe), but it has concepts that C#/Java don't use in the same way such as pointers, passing by reference vs. passing by value, etc.

A few tips for learning:
1. Find a site with some programming projects or exercises. Learning it just isn't enough. You need to practice.
2. If you learn the basic concepts of programming, you can easily learn any language after your first. Don't try learning them all at once. Concentrate on one, the others will come easily afterwards.
3. Theory. Learn it. While associate degrees might give you more of a technical experience, the theory gives you a much better understanding. My operating systems class where we learned threading (among many other things) was quite an eye-opener.
4. Have fun with it. If you get frustrated, that's part of programming sometimes. Working through something is how you learn. Doing a fun project gives you the motivation to work through such problems. To learn Objective-C and Xcode's interface, I made my Dad a Harley Calculator.

Aea
Nov 4, 2008, 12:32 AM
I would choose PHP or another non-OOP enforcing high level language, with the reason being is that you can make very functional programs without getting into all the complexities of languages like C, or Java. You'll get PHP down quickly, and it will help you learn Java in the process.

lee1210
Nov 4, 2008, 12:39 AM
I would choose PHP or another non-OOP enforcing high level language, with the reason being is that you can make very functional programs without getting into all the complexities of languages like C, or Java. You'll get PHP down quickly, and it will help you learn Java in the process.

I mean no offense, but a language with no formal specification, with weak typing, etc. frightens me for beginners. PHP has its place, but I don't feel like it is as a learning language. Obviously others will disagree, but I feel that it lacks rigor that a beginner needs.

-Lee

NickFalk
Nov 4, 2008, 04:04 AM
Actually I think learning a non-OOP language is the worst thing you can do. I grew up with Basic and Pascal and when I returned to programming after several years of abscence, OOP was really hard to get to grips with.

Apart from that I don't think it matters much where you choose to begin. As long as you learn the basic concepts, learning a different syntax isn't that hard.

Now, I finally got to grips with OOP through BlitzMax, a little known basic-dialect. It's a really nice modular variation, and I believe well suited for beginners. (The good thing about basic is that the syntax resembles normal English). Now, some will argue that this is one of the reason why BASIC is the wrong path go go down.

So, my advice is to try your hand at Java first. If you find Java too hard to wrap your head around BlitzMax might ease your way into the wonderful world of programming. :)

TheReef
Nov 4, 2008, 07:23 AM
I'd recommend REALbasic, it's object orientated and uses BASIC.

I mean no offense, but a language with no formal specification, with weak typing, etc. frightens me for beginners. PHP has its place, but I don't feel like it is as a learning language. Obviously others will disagree, but I feel that it lacks rigor that a beginner needs.

-Lee

I feel PHP is pretty easy to get to grips with. The main problem is needing a local web server, the whole browser based experience might hinder your creativity (ie refreshing page to get results and the limited things you can do with web pages - ok somebody's going to prove me wrong ;)).

Cromulent
Nov 4, 2008, 07:40 AM
I'd recommend REALbasic, it's object orientated and uses BASIC.



I feel PHP is pretty easy to get to grips with. The main problem is needing a local web server, the whole browser based experience might hinder your creativity (ie refreshing page to get results and the limited things you can do with web pages - ok somebody's going to prove me wrong ;)).

I'd stick to either C or Python myself for a learning language. C because it is the foundation of just about every major language in use today and Python because it is a well respected object orientated interpreted language.

PHP, REALBasic and others of the ilk are not the kind of language that will teach you the necessary skills that people like Apple will be impressed with in my opinion.

liptonlover
Nov 4, 2008, 08:03 AM
I'd recommend REALbasic, it's object orientated and uses BASIC.

Since you don't have enough opinions yet, I'll throw mine in. :D
First, I'd say stay away from BASIC. I haven't used REALbasic, so I don't know if you'll avoid the problems by going with it instead of another BASIC. But anyways, I started with a BASIC background. It was very easy, which was awesome. But when I moved to a serious language, (ObjC) I found things so different, and found that BASIC is so messed up with naming conventions, that I nearly gave up. The object oriented part was fairly easy. It was getting over what I learned in learning BASIC that was hard. So, no no no no no. Don't do it.


C is probably your best bet.
1. It's the most common language. Almost every programmer knows it.
2. It's the base for ObjC and C++, should you choose those languages.
3. It's a procedural language, so you don't need to worry about OO stuff.
4. There's so many examples, so many tutorials, so much free code you can see that it should be a breeze to learn.
5. You don't even have to learn more than C... you could stop there and be a professional. Most people don't, (I heard one programmer say you're not a programmer unless you learn a new language each year) but you could.
If you want to learn C, go to www.cprogramming.com. It's the BEST place to learn C, and you can learn C++ too.

Something that wasn't mentioned about Java is that it is cross-platform.

Cromulent
Nov 4, 2008, 08:26 AM
Something that wasn't mentioned about Java is that it is cross-platform.

So is C technically. As long as there is a compiler for that platform and you stick to standard C there is no reason why your code should not work.

lazydog
Nov 4, 2008, 08:53 AM
I don't think you will ever regret learning Java or C. They will always be really useful to know and will open up more avenues and possibilities in the future. I'm not a big fan of PHP. You can run it from the command line but it doesn't really offer anything in particular that other languages don't, plus it has all the problems that Lee gave (which some people would argue are desirable features). As for RealBasic, you could have real fun with it. It will get you up and running fast and producing GUI applications in no time. In my opinion RealBasic is a pretty good and complete oop language.

I wouldn't worry too much about which language to invest your time in. If you get hooked on programming you'll probably end up knowing 3 or 4 by this time next year!

b e n

ManWithhat
Nov 4, 2008, 09:29 AM
So is C technically. As long as there is a compiler for that platform and you stick to standard C there is no reason why your code should not work.

If that's the case, C# is also multi-platform now. :P

Anyways, I stand by Java. C is more complex, and teaches similar concepts. Start with the easier and work your way to the hard.

eviltobz
Nov 4, 2008, 09:34 AM
if you want to get into apple then objective-c and cocoa would obviously be a good combo to impress them, and c would be the ideal first step along that path.

c is a great language to understand imho. it is far enough away from machine code that you don't get bogged down in the finest of details like moving data back and forth between ram and registers, but it does make you understand a lot about what the computer will do as a program runs in terms of allocating memory, copying data around etc all of which can be useful when writing code in higher level languages.

i worked as a visual basic programmer for quite a while, during which i saw some nasty inefficient code from people who obviously weren't used to thinking about what was going to happen when it was used in anger by a bunch of people simultaneously because at the higher level it just looks like you're doing something a nice easy way: get some data, get another bit of data, add it on to the first bit, loop around about 100 times and you've got the data you need, and a system that is ground into the dust. re-arranging that into get a bunch of data in one hit, then arrange the big load into the format needed made the code a bit less simple to understand but speeded it up by a factor of about 100. getting that good understanding of code at a lower level means that you're less likely to design horribly inefficient apps.

lee1210
Nov 4, 2008, 10:36 AM
Since some BASIC dialects have been discussed here, it seemed like it was a good time for this:

It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.
-Edsger W. Dijkstra

Source: How do we tell truths that might hurt? in Selected Writings on Computing:A Personal Perspective.

We have obviously seen a few examples here that not everyone is mutilated beyond regeneration, but BASIC definitely stunts one's growth as a programmer, in my opinion.

What I am willing to bend on is some assertions that it's better to start OOP, rather than build towards it. I don't think this is unworkable, but I feel that when one is first starting to program, there's so many new things that must be learned. I think that adding concepts that aren't particularly applicable for small programs as one is beginning to learn can muddle things. I feel that learning how to work with objects, how their methods work, etc. is much easier once you know what a function is, etc. If one picks a language by which OOP is supported, but optional, the pathway is more direct when one is ready to learn about objects, and they don't need to adjust to a new environment. On the flip side, if one learns a pure OOP language, then moves to a procedural language, a lot of knowledge will transfer, but some problems may seem more daunting when one is unfamiliar with things like structs to transport a "bundle" of data, since they are used to doing so with Objects.

Also, starting with Java I feel that some concepts get missed. Is Java pass-by-reference or pass-by-value, or can you do both? So often people are passing around objects, that this can get muddled and lost. It's strictly pass-by-value, but so often that value is really a pointer to an object. But you don't really know it's a pointer, since there aren't pointers in Java. Perhaps some think it is archaic to deal with passing conventions, pointers, memory-allocation, etc. but I think that these concepts make you well-rounded, and do apply to higher-level languages where these things aren't immediately applicable.

As eviltobz stated, knowing these things can help you be more careful with your algorithms because you have some idea about what's going on "underneath", and might have a better idea of the complexity of, say, inserting an element into a dynamic data structure. Without knowing the specifics, one might think that every insert into a balanced binary tree has O(log(n)) complexity, or not think about the complexity at all. In reality when the tree needs to be rebalanced, an insert can be an O(n), so the true complexity of such an operation is amortized O(n). Just knowing about pointers isn't going to teach you that, but there are plenty of other examples where low-level knowledge makes for a better high-level programmer.

I suppose one example is assignment, with or without something like clone. It seems like a pretty basic operation. In some OOP languages, assignment of an object results in a user-authored or system-generated copy of all of it's fields, perhaps even a deep copy of dynamic data structures stored in the object. This can be very costly, but how would one expect that with a simple assignment statement? Understanding the difference between a single value that is pointed to by many pointers vs. making many copies can be helpful in deciphering this sort of situation.

This ended up much longer than I intended. I guess my main argument for avoiding object-orientation up front is to save complexity. Especially languages that allow operator overloading, like C++, you can be very surprised by what a simple x = y + z; operation actually does when these are not primitives.

To the OP: You've now been told to use a great many modern languages, and not to use each as well. If Java is going to be of the most use to you in the near future, it isn't going to hurt you to start there. The learning curve might be a little steeper, but you'll get there. I would highly recommend learning straight C sometime in the future, though, as I think it forces a stronger understanding of how the machine works, and other important programming concepts that are hidden away from you in higher-level languages.

-Lee

lazydog
Nov 4, 2008, 12:21 PM
Since some BASIC dialects have been discussed here, it seemed like it was a good time for this:


-Edsger W. Dijkstra

Source: How do we tell truths that might hurt? in Selected Writings on Computing:A Personal Perspective.

We have obviously seen a few examples here that not everyone is mutilated beyond regeneration, but BASIC definitely stunts one's growth as a programmer, in my opinion.

-Lee

That quote is I think at least 30 years old. To compare RealBasic to the BASIC of those days is pointless.

b e n

Cromulent
Nov 4, 2008, 12:25 PM
That quote is I think at least 30 years old. To compare RealBasic to the BASIC of those days is pointless.

b e n

Yeah, BASIC 30 years ago was much better :p.

liptonlover
Nov 4, 2008, 12:36 PM
BASIC is BASIC... it never had any set standards, but if you call your language a BASIC language then that's what it is. And if that's what it is, then in my opinion it's not good. Like I said before, the biggest problem in moving to ObjC/C/Cocoa from BASIC was naming conventions. The major languages as far as I know all use the same names... but to me a method was a function, because that's what they were called in BASIC. Or, sometimes even a subroutine. Anything I wrote that the compiler understood was a command. Different name there too. That's just two little examples.
And modernizing BASIC doesn't help, that's what I've used *professionally* and I had the problem. I've used old BASICs, new BASICs, BASIC with GUI, advanced BASIC, whatever you want to call it. All told, I've used 5-6 BASICs. And all of them got in the way of me learning a "professional" language.
[/rant]

mufflon
Nov 4, 2008, 01:08 PM
something that hasn't been aired is the fact that the OP is in the 8th grade. Programming, atleast to me has a strong correlation with "fun" - I'm only at uni, so I haven't experienced the nerve wracking outside world. Self studies might be dentrimental as what one learns might be irreversable views of the programming vocation.

I would rather propose the OP gets a lego programmable robot and gets the industry standard (+/-) -a good and reasonable initiation into OO and object interaction.

If programming with instant gratification seems too easy then java is also a good inlet into OO

lazydog
Nov 4, 2008, 01:14 PM
Why are programmers so prejudiced? How many of you have actually used RealBasic? If you did you would realise that it is not BASIC :rolleyes:

b e n

cube
Nov 4, 2008, 01:40 PM
You can program LEGO in Lisp/Scheme and Prolog. Haskell seems more tricky to find currently.

liptonlover
Nov 4, 2008, 02:28 PM
*raises hand* I didn't REALLY get into it, but I have tried REALbasic. The language, which I barely touched, actually wasn't that bad. But I would avoid it just for the IDE interface. It was horrible. Give me xcode, instruments, and IB any day over REALbasic.

lee1210
Nov 4, 2008, 02:36 PM
I will readily admit my prejudice. All I have to read is that REALBasic is a dialect of BASIC, and I'm done. It may barely resemble the "old" BASICs, but I have a guttural reaction that prevents me from taking any dialect of BASIC seriously.

The quote may be 30 years old, but having had discussions with "modern" BASIC users (or former users) recently, I think it is still applicable. REALBasic may be the best thing since sliced bread, and I may be greatly narrowing my horizons as a programmer by avoiding it, but it's a chance I am willing to take. It may not warp and derange the mind of a new programmer like it's forefathers, but I still can't recommend it.

-Lee

P.S. Will a (the?) REALBasic compiler compile "classic" basic, or have the syntax rules actually changed rather than simply evolved? I would still be quite scared if it will allow for the old constructs. A brief anecdote to explain why:
My company has a 20-some-odd year old product originally written in Fortran 66/77. As time went by, new compilers (f90, g95, gfortran, etc.) became available, and the language was modernized. But the new compilers (and the language itself) still allowed for Fortran 66 and 77 constructs/style. As such, people (and not grizzled old programmers, these are 20-somethings) continued to use them because they could, and it's what they were used to. New loop control constructs, internal subroutines, etc. were ignored in favor of goto and its wretched ilk.
This is why REALBasic concerns me. If it allows any of the tomfoolery of its ancestors, that allows the sins of the past to be repeated.

rev316
Nov 4, 2008, 02:41 PM
Java.

You don't spend the time to knock down syntactic issues that you'll probably spend with C.


If time permits, I'd just go to C++.

liptonlover
Nov 4, 2008, 02:43 PM
C++? Isn't that the worst language to start in? I've never tried it, but I've heard things... :eek:

I'm actually kinda glad I've gone through BASIC. I now know better than to use it, I probably wouldn't have understood other languages back then so I couldn't have started as soon, and I can now warn others :cool:

ChrisA
Nov 4, 2008, 04:21 PM
so I'm in eighth grade right now
and the high school I'm going to go to teaches java and computer science AP
I'm really interested in beginning to program (i don't have experience) and my parents also want me to get a bit of a head start in java or any programming language (my mom wants me to do robotics club :P ).
some of my high school friends have got internships at the apple campus (my school is very close to the headquarters) from computer related classes at school and from robotics club and i want to have the opportunity for an internship...etc
but i have no experience
what are some simple or easy programming languages?
is java a good beginning?
what can you do with java?
thanks!

The exact language hardly matters. What you need to do is learn to write programs. This means decomposing problems into smaller problems and so on many steps. To write complex things like games or robot controlers most of what you need to learn is not the language so much as the "environment". The OS and all the libraries (and the guts of a robot) are much more complex then any language. It's like writing a novel or a movie script. It is not enough just yo know how to type in English, yo need something to say.

Ok but you do ned to say it in some language. Start with C. C++ and Objective C are both super-sets of C. Start by writing simple programs that run at the command line. Move to C++/Objctive C later. The move will be natural. Java is "C-like" and if you know C++ you can adapt quickly.

I was once hired to program in Ada. I told the interviewer flat out that I did not know Ada becaue it was new. It worked out OK. I just read a book and kept the refference manual open. Once you understand how to write software, then with some new language you can just look up the syntax for (say) a switch or case statement or whatever.

BTW, I started in the 8th grade also. That was before there was an IBM PC. back in the punched card era, before glass screens. But even there there were robots and asembly language. You would learn a lot it you worked on a micro-controller. Like a PIC or AVR and directly controlled hardware and leard how software can interact with a transitor switch to control a motor. But learn C first. I started over 30 years ago. One would think a lot has changed from 1970 but no. The only change is cheaper hardware.

TheReef
Nov 4, 2008, 05:01 PM
I find REALbasic excellent for building programs in the shortest amount of time. You think of an idea, you code it.

It's really…basic…my ideas almost translate to code on the fly no need to worry about memory management etc (but still need to declare).

I haven't found myself limited by it at all (which probably says something about my experience :p), I like the way it handles oop, it's really simple. There are a lot of very useful built in functions and classes (as opposed to traditional BASIC where you'd have to find the libraries?). Your own classes can inherit from supers which is really good too, saving a lot of time (original Basic doesn't have oop). I feel REALbasic makes oop really simple to grasp.

Also I've never programmed traditional sequential type BASIC so can't comment on how it compares.

REALbasic is no match with C in terms of performance (or compiled file sizes for that matter), but it's great for RAD very very good.

I'm currently learning C++ (not using a GUI yet, just Terminal in Xcode), I think for quick projects or spur of the moment ideas, I'm always going to go back to REALbasic, it's just so good.

lazydog
Nov 4, 2008, 06:42 PM
Hi Lee

I can take on and respect Liptonlover's comments as he's actually used RealBasic, but honestly, how can you resign RB to the scrap heap of defunct 70s languages without knowing anything about it?

b e n

craig1410
Nov 4, 2008, 07:07 PM
Hi,

My opinion for what it's worth is to choose a language which is mainstream so that you can take advantage of tutorials, books and direct assistance from fellow programmers. Here is a link to an index of the most "popular" languages:

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html

Java is not a bad choice but it has some quirks and some imperfections as a language. Look up BlueJ which is a beginners Java teaching environment.

Ruby is a great language to learn with as it is truly object oriented but also does away with lots of unnecessary punctuation and is hugely feature rich. Not as mainstream as Java but maybe worth a look. Don't confuse with Ruby On Rails which is a framework based on Ruby. For learning programming stick with the Ruby language on its own.

Python has many of the advantages of Ruby and is a bit more mainstream. I've never used Python but it is well respected and definitely worth looking at.

Stay clear of PHP - it's messy! I've tried to get into it a few times but I just don't enjoy using it.

C/C++/ObjC are all fine but you should go straight to the one you are most likely to use. For Mac development go straight to ObjC, for general purpose OOP development go to C++ and for general purpose non-OOP go to C. They are obviously related but best to think of them as separate and use the one most relevant to you.

Visual Basic/C#/.NET etc are best avoided in my opinion as they are proprietary and have limited platform compatibility and tend to require a complex IDE like Visual Studio to get going. In my opinion, to get a good grounding in programming you need to stay close to the machine and feel comfortable with what is going on. If everything is hidden behind complex libraries and a complex IDE then you tend to lose touch. Visual Studio can also be a royal pain in the a$$ at times...

Good luck - I hope this was helpful!
Craig.
:)

lee1210
Nov 4, 2008, 07:23 PM
Hi Lee

I can take on and respect Liptonlover's comments as he's actually used RealBasic, but honestly, how can you resign RB to the scrap heap of defunct 70s languages without knowing anything about it?

b e n

I have struck a nerve, apparently. I stated, I thought clearly, that my reaction was purely knee-jerk. So far I haven't had access to a device with flash, and a programming language which doesn't have a free compiler makes me a bit nervous. I will try to take a look at the demo when I'm at a computer again. I try to stay as language agnostic as possible, and I will try to say nothing else nasty without first-hand experience.

-Lee

tycheong
Nov 4, 2008, 07:41 PM
thank you everyone!
i haven't exactly chose a language (ill look a bit more into all of them) but java and C are the most common right? I will at one time, most likely, learn several languages but i think i'll start with java as thats wat i'm going to be learning next year
so you basically write code using a complier, correct??? from my understand a complier is basically something that takes code that i've written, processes it, and turns it into an executable program?????? wat are some compliers (free ones please) and is Xcode a complier? if im not making any sense then please correct because i am a tad lost here

lazydog
Nov 4, 2008, 07:44 PM
I have struck a nerve, apparently. I stated, I thought clearly, that my reaction was purely knee-jerk. So far I haven't had access to a device with flash, and a programming language which doesn't have a free compiler makes me a bit nervous. I will try to take a look at the demo when I'm at a computer again. I try to stay as language agnostic as possible, and I will try to say nothing else nasty without first-hand experience.

-Lee

No you haven't hit a nerve :) But re-reading my post I do come over a bit strong. My sincere apologies. I enjoy reading your posts, keep them coming!

b e n

TheReef
Nov 4, 2008, 08:25 PM
Stay clear of PHP - it's messy! I've tried to get into it a few times but I just don't enjoy using it.

Messy? I think it's clean haha. :)
I agree debugging through a browser isn't fun, everyone has their differing opinions.

liptonlover
Nov 4, 2008, 08:50 PM
wow... this thread asks the same question as a million others, but it's generated almost a debate instead of just a few helpful posts.

I get a little confused between them, but basically a compiler actually creates an executable, which is platform specific. ObjC is a compiled language I believe.
An interpreter, which is common for BASIC variants, requires the user to download an application. Any app created with an interpreter isn't an actual executable. It needs to be run in the background through the interpreter, and the interpreter goes through all the code every time it's run or something like that. Anyways, it's old fashioned and slower. But I'm pretty sure that's how java works, and it works fine for them.

Just so you know, xcode is an IDE (Integrated Development Environment) not a compiler or interpreter. It uses other tools in the background to actually create the executable I believe. I'm really not sure about anything I've said in this post, so any corrections will be read with interest.

lee1210
Nov 4, 2008, 09:10 PM
No you haven't hit a nerve :) But re-reading my post I do come over a bit strong. My sincere apologies. I enjoy reading your posts, keep them coming!

b e n

on the topic of tone, my original post w/ Dr. Dijkatra's quote was probably too serious in tone, it was meant with a bit more humor than I conveyed. To be fair I use fortran daily, and Dr. Dijkstra called it an infantile disorder that is too clumsy, risky, and expensive to use (can't quote directly from my phone). =)

To the OP:
A compiler is a program that translates from one computer language to another. Most commonly it is converting a high level language to assembly language, which is then turned into executable machine code by an assembler.
javac is Sun's free compiler.
Xcode is an integrated development environment. It includes an editor, interfaces to compilers such as gcc and javac, interfaces with debuggers like gcc, and allows high-level build configuration.
For now you should be fine with a text editor and javac and java from the terminal to compile and run programs. Xcode, netbeans, and eclipse are all IDEs that can be used, but I recommend against them while you are getting started.

Good luck! Get coding!

-Lee

Cromulent
Nov 4, 2008, 10:03 PM
wow... this thread asks the same question as a million others, but it's generated almost a debate instead of just a few helpful posts.

I get a little confused between them, but basically a compiler actually creates an executable, which is platform specific. ObjC is a compiled language I believe.
An interpreter, which is common for BASIC variants, requires the user to download an application. Any app created with an interpreter isn't an actual executable. It needs to be run in the background through the interpreter, and the interpreter goes through all the code every time it's run or something like that. Anyways, it's old fashioned and slower. But I'm pretty sure that's how java works, and it works fine for them.

Just so you know, xcode is an IDE (Integrated Development Environment) not a compiler or interpreter. It uses other tools in the background to actually create the executable I believe. I'm really not sure about anything I've said in this post, so any corrections will be read with interest.

Not sure how you came to that conclusion (for the bold part). Interpretors are still highly relevant today, in fact probably more so than they have ever been due to the speed of modern computers. In the past you needed to compile code to make it run at a reasonable speed. Now anything runs fast, heck even Javascript is fast in browsers.

lee1210
Nov 4, 2008, 10:04 PM
<snip>
I get a little confused between them, but basically a compiler actually creates an executable, which is platform specific.

Nearly. In most cases the compiler creates the assembly code that represents your high-level program. The assembler then generates the binary machine code that represents the assembly instructions. The linker then combines all of your binary files into a single executable. Generally this is done in one step as far as the programmer is concerned, but you will notice different messages when things go awry when compiling vs. linking, etc.


ObjC is a compiled language I believe.

True.


An interpreter, which is common for BASIC variants, requires the user to download an application. Any app created with an interpreter isn't an actual executable. It needs to be run in the background through the interpreter, and the interpreter goes through all the code every time it's run or something like that.

Some languages are distributed as source, and compiled at run time, then run. This is a little awkward, but this is still considered an interpreted language (perl is an example). Some are distributed as source, then interpreted in small chunks (perhaps line by line) by the interpreter. BASIC and Smalltalk are examples of this. There are other interpreted languages that use some sort of intermediate representation that is higher level than machine code, but lower level that the original source to get some of the benefits of interpretation and compilation.


Anyways, it's old fashioned and slower.

Nah, not necessarily. Javascript is popular now, so Just-In-Time compilers for javascript have become a big deal, and its execution is now very fast.


But I'm pretty sure that's how java works, and it works fine for them.

Not exactly. Java is a strange one, as are Microsoft's CLR languages. They are compiled down to machine code. But not a real machine. They are compiled to the Java Virtual Machine instructions, called bytecode, or Common Language Runtime instructions, called Common Intermediate Language. At runtime, these instructions have to be compiled/interpreted again down to the actual machine code based on the platform/architecture the JVM or CLR is running on.


Just so you know, xcode is an IDE (Integrated Development Environment) not a compiler or interpreter. It uses other tools in the background to actually create the executable I believe.


Yep. Xcode mostly uses gcc and javac to do compilation. There are plugins that allow other compilers like gfortan to be used, as well.


I'm really not sure about anything I've said in this post, so any corrections will be read with interest.

Not corrections, so much as expansion of the points. =)

-Lee

liptonlover
Nov 4, 2008, 10:47 PM
Thanks both of you for the corrections, I learned a lot :)

I came to the conclusion that it's older because I know that most BASIC languages were interpreted, as they were more for hobby leisure users than serious devs. And again, since it's so much slower, I assumed we had gotten past that for the most part. I stand corrected.

lazydog
Nov 5, 2008, 03:22 AM
on the topic of tone, my original post w/ Dr. Dijkatra's quote was probably too serious in tone, it was meant with a bit more humor than I conveyed. To be fair I use fortran daily, and Dr. Dijkstra called it an infantile disorder that is too clumsy, risky, and expensive to use (can't quote directly from my phone). =)
-Lee

Yup, he was spot on with Fortran.

b e n

MacRumors Guy
Nov 5, 2008, 05:48 AM
I think python is a good language to start. It's full featured, simple (a lot less verbose than java), and has support from big companies.

craig1410
Nov 5, 2008, 08:11 AM
Messy? I think it's clean haha. :)
I agree debugging through a browser isn't fun, everyone has their differing opinions.

Yeah, I didn't want to go into lots of detail but that's the sort of thing I'm talking about. PHP is very C-like in syntax and I have no problem with that but to set up a working "beginners" programming environment using PHP would be more work than something like C or Java. I know you can get one-click installers but you still need to be aware of the various layers behind the scenes.

To the OP, if you are going down the Java route then you will need to get hold of the Java JDK (Java Development Kit) from Sun. If you have a Mac then this will probably already be installed (Guys, is this installed by default on a Mac or does it come with XCode?). XCode 3 is a good IDE and you will want to use it before too long but to begin with I'd suggest just hand compiling code written in a text editor to get a feel for what is going on. Sun have a Java Tutorial on their website which will guide you through the first steps or you can get a good book. Here is the Sun Java Tutorial:

http://java.sun.com/docs/books/tutorial/

Feel free to ask further questions if you get stuck.

Cheers,
Craig.

Edit: That serves me right...in the Getting Started section on the above tutorial it now recommends using an IDE such as NetBeans (very good IDE by the way and perhaps easier to get to grips with for a beginner than XCode) rather than command line. I guess things have moved on since I did the tutorial back in the mid 1990's... :)

pilotError
Nov 5, 2008, 08:33 AM
Stick with Java since it you have access to it in school. It's pretty powerful these days and you can get a lot done with it.

Once you have some of that experience under your belt, you can move on to C++ / C. What is robotics done in these days? I worked on controller code for these mini robotic arms in 1986 in school using C. :eek:

I would hope that someone created a nice Java class to manage all the nitty gritty stuff by now.

TheReef
Nov 5, 2008, 07:06 PM
Stick with Java since it you have access to it in school. It's pretty powerful these days and you can get a lot done with it.

Once you have some of that experience under your belt, you can move on to C++ / C. What is robotics done in these days? I worked on controller code for these mini robotic arms in 1986 in school using C. :eek:

I would hope that someone created a nice Java class to manage all the nitty gritty stuff by now.

Lego Mindstorms can be done in NQC (Not quite C), there is a Mac version for it too!

http://homepage.mac.com/rbate/MacNQC/index.html

Ti_Poussin
Nov 10, 2008, 09:14 PM
I'm a computer engineer myself. I would recommand you to begin with C++, it may seem complexe to begin with, but if you learn it, you will find C#, Obj-C, Java a breeze to understand after that. Take a good book and don't try to code a game at first ;-)

The lower level you can get is the better. Assembly is still a good thing to learn in the long run for those who are really serious about programming. But for most, C still a pretty low level to them.

I would suggest you do in this order:
1- C++ (learn the basic of functions, template, algorithme, design pattern... take your time here to understand well, this going to take 80% of your learning time here)
2- C (learn how it work under the hood of C++ for string as exemple, you don't need to go too much deeper except if you want to learn it, still a language for many embedded system)
3- Java (that shouldn't be long after the C, you will understand the back end of Java pretty quickly with a C/C++ background, I personally don't really like it performance wise or capability, but it's use out there. I prefer handle my pointer myself and who need a garbage collector anyway?!? bad programmer?!)
4- Obj-C (if you want to program for the Mac platform) / C# for Windows
5- Python (good for small script, pretty language I love it so much)

If you really have this much time to spare, take a look at those:
Assembly, Bash, Javascript, perl

here's a few hello world for many language:
http://roesler-ac.de/wolfram/hello.htm

Get the OO (object oriented) concept soon, that's why I say C++ over C to start, don't be afraid of UML design, if you can take a good book to understand that may give you a great edge to use design pattern. I think I never say it enough, design pattern are you best friend in programming, use them!

If you master C++, you may want to give a look at boost with it's shared_ptr, scope_ptr, scope_lock, bind... it make C++ way better.

lucidmedia
Nov 10, 2008, 09:42 PM
Stick with Java since it you have access to it in school. It's pretty powerful these days and you can get a lot done with it.

Once you have some of that experience under your belt, you can move on to C++ / C. What is robotics done in these days? I worked on controller code for these mini robotic arms in 1986 in school using C. :eek:

I would hope that someone created a nice Java class to manage all the nitty gritty stuff by now.

well, its not full "robotics" but check out the arduino open source project. It is built upon Processing (which is built upon Java) and is designed to make it easy to prototype physical interfaces / sensors / etc.

I also vote for you to jump into OOP from the outset. Java would be my vote.

gibbz
Nov 10, 2008, 09:44 PM
Python is extremely user-friendly and a great introduction to object-oriented programming.

craig1410
Nov 11, 2008, 07:27 AM
I'm a computer engineer myself. I would recommand you to begin with C++, it may seem complexe to begin with, but if you learn it, you will find C#, Obj-C, Java a breeze to understand after that. Take a good book and don't try to code a game at first ;-)

The lower level you can get is the better. Assembly is still a good thing to learn in the long run for those who are really serious about programming. But for most, C still a pretty low level to them.

I would suggest you do in this order:
1- C++ (learn the basic of functions, template, algorithme, design pattern... take your time here to understand well, this going to take 80% of your learning time here)
2- C (learn how it work under the hood of C++ for string as exemple, you don't need to go too much deeper except if you want to learn it, still a language for many embedded system)
3- Java (that shouldn't be long after the C, you will understand the back end of Java pretty quickly with a C/C++ background, I personally don't really like it performance wise or capability, but it's use out there. I prefer handle my pointer myself and who need a garbage collector anyway?!? bad programmer?!)
4- Obj-C (if you want to program for the Mac platform) / C# for Windows
5- Python (good for small script, pretty language I love it so much)

If you really have this much time to spare, take a look at those:
Assembly, Bash, Javascript, perl

here's a few hello world for many language:
http://roesler-ac.de/wolfram/hello.htm

Get the OO (object oriented) concept soon, that's why I say C++ over C to start, don't be afraid of UML design, if you can take a good book to understand that may give you a great edge to use design pattern. I think I never say it enough, design pattern are you best friend in programming, use them!

If you master C++, you may want to give a look at boost with it's shared_ptr, scope_ptr, scope_lock, bind... it make C++ way better.

Hi,
While I respect your opinion and agree with much of what you have said, I feel it's only fair to point out that many of the low-level skills you are referring to here would only be advantageous for a small proportion of programmers.

Most programmers don't need to know the low-level details of what is going on under the surface and would be better served spending time getting to know about the frameworks, libraries and development tools which will help them to write, debug and maintain their programs.

I think it also harsh to say that only bad programmers need garbage collection. GC systems are pretty advanced these days and can relieve the "busy" programmer of much of the mundane memory allocation and de-allocation duties which they would otherwise need to do manually. I do agree that programmers need to be aware of memory consumption and leaks and watch out for the pitfalls which even modern GC systems can let you fall into. However, GC has its place and allows the programmer to spend more time thinking about design, coding & testing strategies.

Speaking of testing, I don't know if anyone else has mentioned it but the OP should definitely get into the habit of thinking about testing right from the start of any project. Look for references to "Unit Testing" and "Test Driven Development" for more info. Think of these techniques as a safety net - even the world's best trapeze artists sleep better if they know they have a safety net beneath them. In the programming world you will make mistakes, what matters is that you discover those mistakes as early as possible and have the opportunity to fix them.

Regards,
Craig.

knightlie
Nov 11, 2008, 08:22 AM
Another vote for Java here. I've completed a number of Java-based university courses, and leaning OOP principals with it has transformed my programming in every other language I use. Java is a nice, easy language to start with, and BlueJ is a great learning tool (I'd say get into Netbeans once you are ready to have a go with a full IDE). After that, move onto some of the other recommendations here, like C++ or C#.

PHP is okay - I use it for web development - but as has been said, it's such a loosely-typed and "messy" language that I feel you need to know what you are doing before you learn it. It's too easy to chuck bad programs together with loosely-typed languages; learn a strictly-typed one first.

Speaking of testing, I don't know if anyone else has mentioned it but the OP should definitely get into the habit of thinking about testing right from the start of any project. Look for references to "Unit Testing" and "Test Driven Development" for more info.

BlueJ, if you choose to use it, has unit testing built in. My Open Uni course covered it.

liptonlover
Nov 11, 2008, 09:53 PM
I probably already recommended this link in this thread, but that would have been for C. www.cprogramming.com is also for C++. They have extensive tutorials, from basic to advanced. They also have a TON of links. It's old but I don't think the language has changed so it should be fine for C++ as well.

Also, low level stuff/assembly has been mentioned a few times. I always wondered HOW a computer runs on 0s and 1s. I knew the basics, but not really. Now I can count in binary, and I know how it works. I also know basic assembly. I can't write a line of assembly, but I know how it works and it doesn't look like random stuff. I also know hexidecimal, though not as well as binary. And I learned all this from
http://www.amazon.com/Code-Language-Computer-Hardware-Software/dp/073560505X
It's an AMAZING book. It goes very in depth, it's funny enough to be interesting in that respect, it covers a fascinating topic, and it walks you through making a real computer. It goes a TON into the history of computers and the computer language. It covers circuits, and later chips, including looking inside earlier ones that one can make sense of. It goes through assembly, and on to almost modern computers. If you want to know how your computer works, which I think is invaluable indirectly, get it.

Wow I dind't mean to write so much. Sorry!
(Get the book!!!!)
Nate

bubulindo
Aug 3, 2010, 05:51 AM
well, its not full "robotics" but check out the arduino open source project. It is built upon Processing (which is built upon Java) and is designed to make it easy to prototype physical interfaces / sensors / etc.


Although Arduino is a really really useful and well engineered development system for embedded devices, I find the language used to be very... superfluous. If you're starting on programming and electronics it is a great learning platform, but if you have experience with embedded electronics, you'll feel impaired by it. The greatest challenge for me was that the programs written in Arduino are way larger than the C counterparts for the same functionality. But again, there's a bit more freedom in C.

Which leads me to agree with other posts, that C and lower level languages are really good to give you an understanding on how the processor (computer, microcontroller, etc,etc) works.

Regarding the languages, I believe the way to go would be to start with object oriented first. Since it's the first language you'll learn, you can't get frustrated by the way things are done. You can't compare it to other languages. ;)
Also, you get more time and disposition (since you'll be doing it on your own free will) to get to really learn all the small details that matter so much.
Then, if you feel inclined, you can take on C.

Just my 2 cents...

Cromulent
Aug 3, 2010, 07:40 AM
Although Arduino is a really really useful and well engineered development system for embedded devices, I find the language used to be very... superfluous. If you're starting on programming and electronics it is a great learning platform, but if you have experience with embedded electronics, you'll feel impaired by it. The greatest challenge for me was that the programs written in Arduino are way larger than the C counterparts for the same functionality. But again, there's a bit more freedom in C.

First of all, nice thread necromancy.

Second, there is nothing stopping you using C or Assembler on an Arduino. In fact I started using an Arduino to teach myself a bit of Assembly programming a little while ago but stopped while I did my Uni stuff.

I just use a standard GCC toolchain built as an AVR cross compiler and the rest is exactly the same as any other C / Assembler programming. Although the AVR libc is a little odd.

I had far more trouble getting to grips with CPU diagrams and circuit layouts etc on the data sheets than the programming side.

phatqao
Aug 3, 2010, 09:41 AM
i was able to build a miniclip-type sprite based game after two semesters of college java, i think it's a great starting language. it forces you to learn object-oriented programming from the beginning, and a lot of rules (such as variable typing and syntax) are enforced strictly by the compiler...i think this is good for a beginner because it forces you to make sure you get your code exactly right every time (regarding the rules of syntax at least - that's not to say that any program will work right the first time!)

After being taught Java by a professor, I'm teaching myself BASH scripting and Perl - two less-strictly enforced languages - from some books, and I'm so grateful to have started with a strong foundation on a strongly typed language. learning by myself on something like Perl, in which objects are secondary (compared to java) and variables don't have to be typed would have been way more difficult and confusing.

Java is more complicated to grasp at first than some of the simpler languages (i can speak for BASH and Perl), but ultimately it gives you a better understanding of the concepts that will carry you far. Plus it's not too hard to get to the point in Java where you can make really cool programs.

For now you should be fine with a text editor and javac and java from the terminal to compile and run programs. Xcode, netbeans, and eclipse are all IDEs that can be used, but I recommend against them while you are getting started

also, may i recommend Smultron as a text editor? It color-codes text for you in a lot of different languages (including java), which makes it way easier to catch mistakes and follow your code. http://smultron.sourceforge.net/

Hope that helped.

macsmurf
Aug 3, 2010, 05:17 PM
Another vote for java.

Although verbose, Java adheres closely to the object oriented paradigm. Python and Ruby are languages that also incooperates the functional paradigm. That's very powerful, but can also be confusing for beginners. C is a very nice language but you risk getting caught up in details that can be difficult to debug.

C++ and Obj C are both supersets of C with an entirely different paradigm built on top which can be confusing.

A lot of colleges teaches Java in Programming 101 for many of the above reasons. Also, there are many great beginner books on Java because it is used so widely as a teaching language.

I would probably start with Java and learn it well. Then go learn C if lower level is more interesting (robotics is an area where C is very useful) or go to ruby if you have an interest in functional concepts. Or both :)

BubbaMc
Mar 18, 2011, 05:45 AM
If you really want to understand how computers work, learn how to make simple programs in assembly language. It will give you great insight - fun too!

Then I'd suggest C and Objective C.

kalsta
Mar 18, 2011, 06:15 AM
You guys do realise this thread was started in 2008? The OP probably has his own software company by now.

And now here's my 2 cents… :) I reckon Ruby is a great language to learn programming. It's totally object oriented and very easy to get started in with a good tutorial. For the beginner, I've not seen a better introduction to programming than this tutorial:

http://pine.fm/LearnToProgram/

Bill McEnaney
Mar 18, 2011, 02:57 PM
You can program LEGO in Lisp/Scheme and Prolog. Haskell seems more tricky to find currently.
Here's an online version of an excellent book about Scheme programming (http://htdp.org/).

Racket is a free interactive development environment including the book suggests (http://racket-lang.org/).

You can learn more about Haskell (http://www.haskell.org).

firewood
Mar 18, 2011, 04:16 PM
Learn more than one language.

My vote for a great starter language is Basic. Programming literacy was at an all time high when every personal computer (including the Apple II) came with Basic built-in. Djikstra's humor non-withstanding, some of the best programmers I know started out with that. There are several implementations of Basic for Mac OS X.

C is great if you want to get into low level programming, or move on to Objective C for iOS apps, and really understand the guts of the language. Smalltalk is also a good preparatory language for Objective C.

Javascript is the lingua franca for web apps and HTML5.

Java will get you into enterprise and Android programming. PHP for web server stuff. Maybe Python for scripting.

Possibly Lisp or Scheme and Haskall to get a head start on CS academics.

iPave
Mar 18, 2011, 04:59 PM
What do you want to program? If you are interested in Mac/iOS development, C, C++ and Objective C are good to start with. If you are more into web development, I'd suggest to start with HTML and CSS (I don't know if these are actually considered as programming languages, but anyway, they teach some very basic things). After that, it is easier to move to PHP and JavaScript. At some point you also need to learn how to use databases (SQLite for Mac/iOS development and MySQL or PostgreSQL for web development).

balamw
Mar 18, 2011, 05:17 PM
UoMy vote for a great starter language is Basic. Programming literacy was at an all time high when every personal computer (including the Apple II) came with Basic built-in. Djikstra's humor non-withstanding, some of the best programmers I know started out with that.

I would assert that had more to do with the fact that BASIC was the OS on many of these early computers. You booted it and ended up in the BASIC interpreter. In many cases if you wanted it to do anything you needed to know some BASIC. I spent many moons subscribing to magazines like Byte and Compute! That came with listings of programs you could type in and modify to your heart's content, they were less fun when you got the code on floppy and no longer had to work for it.

By the time the computers got big enough to support other OSes like CP/M, DOS and GUIs such as Mac OS and GEOS this phase was over. Windows put the final nail in the coffin, by not providing a GUi enabled scripting tool out of the box. You could still run BASiC in a DOS window, but not really take advantage of the new OS. Apple at least tried with HyperCard.

If the iPad dumped you into an interpreter or even something like HyperCard by default more people would write code.

B

coolbeans777
Mar 19, 2011, 01:07 AM
Honestly, I think you should start with an extremely simple high level language such as python or ruby. I started programming with python, and I think it's a great beginner's programming language simply because there are options for object-oriented programming, but you don't NEED to actually use objects and classes and such. I think learning a language like python allows you to learn programming and ease yourself into the concepts of object-oriented programming. However, that might not be the best option for you if you're not good at teaching yourself things. Another option would be to jump straight into Objective-C, the main programming language that all Apple software is founded on.

Sydde
Mar 19, 2011, 01:23 AM
If the iPad dumped you into an interpreter or even something like HyperCard by default more people would write code.

Are there even tools for coding directly on an iPad?

firewood
Mar 19, 2011, 03:04 AM
Are there even tools for coding directly on an iPad?

There were 5 or 6 Basic interpreters in the iTunes App store last I checked. Several other programming languages as well. There are Javascript development apps suitable for building iPad web app web clippings using a dropbox in the cloud as an intermediary.

Mac Player
Mar 19, 2011, 07:01 AM
Hi tycheong,

let me tell you a secret: Every programming language in the world is crap.

Since every programming language is crap, my recommendation is to pick whatever language is most used to do the things you want to do.

balamw
Mar 19, 2011, 08:47 AM
There were 5 or 6 Basic interpreters in the iTunes App store last I checked. Several other programming languages as well. There are Javascript development apps suitable for building iPad web app web clippings using a dropbox in the cloud as an intermediary.

Good to know. I hadn't checked back again since after the C64 emulator came back with BASIC intact sometime last year. The javascript ones are particularly interesting since it basically allows you to run limited but arbitrary, code from your iDevice using the interpreter that is already there.

B

hayesk
Mar 19, 2011, 08:51 PM
Hi tycheong,

let me tell you a secret: Every programming language in the world is crap.

Except LISP. :D

Bill McEnaney
Mar 20, 2011, 12:56 AM
Except LISP. :D
Every programming language is crap except Lisp? Hayesk is a poster computational linguistic good taste. :D But I beg to differ. Every programming language is crap except Lisp Haskell, Prolog, Curry, and Python. :) ;)

firewood
Mar 20, 2011, 02:08 PM
let me tell you a secret: Every programming language in the world is crap.

Agreed...

...except for machine code. That's the only one that isn't just layers of abstraction cr*p. :)

Blakeasd
Mar 20, 2011, 02:09 PM
Look at this post:
http://programmersweb.blogspot.com/2010/09/choosing-programming-language.html

SidBala
Mar 20, 2011, 08:45 PM
C has always been the best language to start with.

Then do C++.

After that depending on platform:

Mac - Obj-C

Win - C#

chown33
Mar 20, 2011, 09:08 PM
...except for machine code. That's the only one that isn't just layers of abstraction cr*p. :)

A simple ADD or MOVE instruction is just layers of abstraction on NAND gates.

NAND gates are just layers of abstraction on transistors.

Transistors are just layers of abstraction on electromagnetic quantum effects.

Electromagnetic quantum effects are just layers of abstraction on quarks.

Quarks are just layers of abstraction on tiny little turtles that swim in a sea of aether. Then it's just turtles all the way down.

Which is why any language that has turtle graphics is obviously the least abstracted from the true nature of reality.

Bill McEnaney
Mar 21, 2011, 10:19 AM
Quarks are just layers of abstraction on tiny little turtles that swim in a sea of aether. Then it's just turtles all the way down.
And absolute infinity is just another layer of abstraction on turtles all the way down.

kuwisdelu
Mar 21, 2011, 12:42 PM
Which is why any language that has turtle graphics is obviously the least abstracted from the true nature of reality.

I don't remember what it was, but the first programming I ever did way back in middle school was some app where you had to type in commands to get a colored turtle to move and draw things on the screen.

lee1210
Mar 21, 2011, 12:55 PM
I don't remember what it was, but the first programming I ever did way back in middle school was some app where you had to type in commands to get a colored turtle to move and draw things on the screen.

LOGOwriter. Awesome.

-Lee

jiminaus
Mar 21, 2011, 03:54 PM
LOGOwriter. Awesome.

-Lee

Ah yes. Logo. My 2nd programming language. Taught in the last 2 years of primary school. The teacher introduced it to us by having us all go outside and act like turtles. I probably enjoyed that more than most. :o

FD 10 RT 90 FD 20 RT 90 FD 10 RT 90 FD 20 RT 90

balamw
Mar 21, 2011, 03:59 PM
Ah yes. Logo. My 2nd programming language.
One of my first jobs was helping out in the Apple II lab with the Logo class for the younger kids senior year in HS. Good times. Came in handy a few years back when trying to figure out why some HPGL plotter output from an instrument was FUBAR. :p

B