Become a MacRumors Supporter for $50/year with no ads, ability to filter front page stories, and private forums.
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.
 
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
 
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.
:)
 
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
 
thanks!

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
 
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
 
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.
 
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
 
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.
 
<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
 
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.
 
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
 
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.
 
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... :)
 
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.
 
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
 
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.
 
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.
 
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.
 
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.

craig1410 said:
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.
 
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
 
As an Amazon Associate, MacRumors earns a commission from qualifying purchases made through links in this post.
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...
 
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.
 
Register on MacRumors! This sidebar will go away, and you'll see fewer ads.