Omnimaga

General Discussion => Technology and Development => Computer Programming => Topic started by: lkj on January 12, 2012, 03:16:30 pm

Title: Best language for beginners?
Post by: lkj on January 12, 2012, 03:16:30 pm
What do you think? What's best to start for someone who doesn't know anything about programming?
Title: Re: Best language for beginners?
Post by: saintrunner on January 12, 2012, 03:18:23 pm
Python or Java, Thats what I did, pretty easy
Title: Re: Best language for beginners?
Post by: lkj on January 12, 2012, 03:21:29 pm
Oh, I forgot to say I'm not asking for me, I can program a bit.
I started with C and TI-Basic. But C isn't very easy I think...
Title: Re: Best language for beginners?
Post by: saintrunner on January 12, 2012, 03:23:04 pm
TI- basic? for calcs? I thought this was for computers?
Title: Re: Best language for beginners?
Post by: lkj on January 12, 2012, 03:27:28 pm
There isn't a general programming section on Omnimaga, so I posted here, but I'm asking about all possible languages, also on calcs.
Title: Re: Best language for beginners?
Post by: saintrunner on January 12, 2012, 03:39:52 pm
Ok then, well I found Python pretty easy, and Java is just plain fun!

And as for calcs, besides TI-BASIC, Axe is pretty good! It's pretty fast and is great for games! It's also pretty similar to BASIC, which is...well pretty 'basic' :)
Who is this for?
Title: Re: Best language for beginners?
Post by: lkj on January 12, 2012, 03:44:45 pm
I don't know Python and Java, but I'll try them out when I've finished my current project.

For a friend of mine, so the same age as many people here.
Title: Re: Best language for beginners?
Post by: saintrunner on January 12, 2012, 03:47:32 pm
..what is the age of most of the people here? lol, Computer languages generally take longer to learn, so I would start them on a calc language

That way they can figure out a feel for coding something
Title: Re: Best language for beginners?
Post by: lkj on January 12, 2012, 03:50:52 pm
I don't really know, but I think 14 to 30...

You're right, calc languages are easier and smaller.
Title: Re: Best language for beginners?
Post by: saintrunner on January 12, 2012, 03:51:45 pm
And they help with coding concepts! Well good luck :)
Title: Re: Best language for beginners?
Post by: lkj on January 12, 2012, 03:52:58 pm
Thank you :)
Title: Re: Best language for beginners?
Post by: Nick on January 12, 2012, 03:53:44 pm
i would recommend TI-Basic, but if he/she wants to start on pc programming, i would start with an interpreted language, most of them are much more readable than compiled, so better to start and get the point of coding..
Title: Re: Best language for beginners?
Post by: saintrunner on January 12, 2012, 03:54:53 pm
Yeah TI-BASIC will be better...but Axe will be more fun :)
Title: Re: Best language for beginners?
Post by: lkj on January 12, 2012, 03:55:51 pm
Now I remember I had started with C++, but it was a bit difficult and I got demotivated. Then I restarted with Ti-Basic
Title: Re: Best language for beginners?
Post by: Nick on January 12, 2012, 03:58:54 pm
another good point of starting with ti-basic is that you ddon't need any program to start, just the built in editor, and you can start..

all those compilers and interpreters and stuff kept me from starting to learn a language, and i'm quite sab about that right now
Title: Re: Best language for beginners?
Post by: ben_g on January 12, 2012, 04:00:32 pm
ti-basic is very good for learning to program, becouse you can just try stuff out witouth risking to corrupt anything.
Title: Re: Best language for beginners?
Post by: saintrunner on January 12, 2012, 04:05:17 pm
I suggest teaching how simple commands (like displays) work, and then if he gets that down, you can show basic movement....That is if they want to make a game
Title: Re: Best language for beginners?
Post by: thydowulays on January 12, 2012, 04:11:41 pm
I started with Python, then went to C++, then to Java, then to html, then to .NET, then to TI-Basic, then to Axe, then to z80 Assembly. I had a weird sequence going on there, but Python is a GREAT choice for beginners imo
Title: Re: Best language for beginners?
Post by: lkj on January 12, 2012, 04:15:36 pm
So you all say Ti-basic or if you want to start on pc python are the best choice.
Title: Re: Best language for beginners?
Post by: AngelFish on January 12, 2012, 04:21:11 pm
What do you think? What's best to start for someone who doesn't know anything about programming?

That's about the same as asking "What's the best spoken language to learn?" It all depends on how you think and solve problems. Python is good if you like computers and want a computer language that looks like English. Java is good if you want a language that's very safe and prevents you from making stupid errors. TI-BASIC is excellent if you tend to solve problems by reducing them to sets of very simple procedures (just like Assembly). C++ and Perl are good for no one to start off with. Ruby is a nice all-around language with pleasant syntax designed to be friendly. Haskell was designed so that people who are familiar with pure mathematics will have little problem transitioning.

You can go on and on about what different languages are good at, but the bottom line is that the best language to start off with is the language that complements your problem solving style (or styles). If you've done a lot of hardware design, then Assembly might very well be the best language to start off with. If you've done a lot of higher level math, then Haskell or Lisp would probably be better. There's no one "best" language for anything, except Assembly for speed/code size.
Title: Re: Best language for beginners?
Post by: Hot_Dog on January 12, 2012, 04:45:34 pm
Like Qwerty.55 said, it's all dependent on what you know about. To that end, I don't think ASM is "hard," it's just very different, like the difference between sign language and spoken language.
Title: Re: Best language for beginners?
Post by: Blue Raven on January 12, 2012, 04:48:48 pm
But Ti-Basic is really apart, since it's a calc language and it will teach you the basis, but don't expect programming on computer if you only learn Ti-Basic (unless you program in Basic, wich is not really interesting  I think).
And to choose wich language to start with, there's one simple rule : experiment by yourself !
Title: Re: Best language for beginners?
Post by: Munchor on January 12, 2012, 04:50:32 pm
I would never recommend TI-Basic as a starting language, because I soon got hooked on Goto's and other bad habits like not putting an ending quote ("). So I would recommend Python as a starting language, it's just perfect for starting, and it actually comes in handy many times in the future.

Clean syntax, easy to read, etc.
Title: Re: Best language for beginners?
Post by: BlakPilar on January 12, 2012, 04:52:04 pm
Well what I would have said is pretty much what Qwerty has already established, but here's what else I have to say:

My programming track record goes: TI-BASIC => VB.NET => VB6 for school => C# (my main language of choice) => C++ (still learning) => Java (still learning). I also dabble in z80 and x86/x64 Assembly in my spare time. Overall I thought transitioning between each successive language (minus asm) was fairly easy because all of the fundamentals are the same, you're pretty much just learning a new syntax. It all depends on what level you want to start on. Though, if I had to choose a language, I would say C#. The only downside to C#, in my opinion, is its use of the .NET framework. Though yes there is Mono for Linux and Mac, some code is not always portable (such is the problem with my program BexIDE, though it's not entirely my fault).
Title: Re: Best language for beginners?
Post by: Xeda112358 on January 12, 2012, 04:54:30 pm
I was going to agree that TI-BASIC is a good starting language, but ephan does make a good point about syntax. TI-BASIC is relatively lax with syntax (omitting end quotes and parentheses brings no harm), but these habits are not ones you want to keep for many computer languages.

But, for calcs, TI-BASIC, computers, Python. Of course, as Qwerty said, depending on how the person thinks and what they know, other languages might be better suited.
Title: Re: Best language for beginners?
Post by: saintrunner on January 12, 2012, 04:56:31 pm
Well you could leave stuff out on MANY calc languages
Title: Re: Best language for beginners?
Post by: Quigibo on January 12, 2012, 05:09:50 pm
I recommend TI-BASIC as well, I think it was my first language.  But Game Maker is a really cool "language".  I put that in quotes because its more of a visual programming environment with only simple language aspects.  Be sure to get an older version (like 4 or 5) because I think it got progressively more complicated and harder to use over time.  Python is excellent, but its a little unconventional in terms of its syntax.  But its very easy to program in, especially for string manipulation and math.  Java is nice in that its probably the easiest language to do lower level stuff in like Audio Input/Output, Graphics, Data Structures, etc.  There is pretty much a built-in library for everything, and when there isn't you can usually find one online and download it.
Title: Re: Best language for beginners?
Post by: DJ Omnimaga on January 18, 2012, 02:55:42 am
Actually it's possible to start with TI-BASIC without ever using Gotos,  but you need to be pointed to the right direction for that (getting used to For/While/Repeat ASAP)

Game Maker/RPG Maker/The Game Factory/RPG Toolkit isn't really programming like other languages, but that can be an option if somehow you just can't get used to regular languages (like me) and programming isn't for you even if you tried.
Title: Re: Best language for beginners?
Post by: Scipi on January 18, 2012, 10:14:17 am
I'm going to take the opposing viewpoint and suggest that you should not use a calc language as the first language. Here's my reasoning:

I first learned TI-Basic and it was pretty easy as well as whet my appetite for coding. However, when I started to transition to computer languages I found that it nearly crippled my ability to do so. Among my inability to properly understand functions, the biggest issue was, in TI-Basic, you're basically given a collection of different shaped blocks to make stuff with. Pretty simple and not in need of much creativity overall. In computer languages, you're given a bag of sand and told to create your own blocks to use, which being used to having the prefab blocks, I could not easily do at first.

Now that's TI-Basic. I will also suggest not learning Axe, because from my experience with it, it's not similar to C-style languages which make up a majority of computer languages. Axe, to me, is very weird feeling, honestly. I would also assume that users would hit the same "block" problem as in TI-Basic, albeit on a smaller scale.

Lastly I'd like to point out that with both languages, as this happened to me and still is, the programmer might start to feel paranoid about the speed of their code. They start to doubt they could do things fast because they're used to calc speeds, not computer speeds.

I would definitely suggest Ruby or Python to learn the basics then immediately switch to C++ or Java asap.

Just because it's fun to do, here's my roadmap:

TI-Basic -> C++ (failed attempt) -> Ruby -> AutoIt (failed Attept) -> C++ -> Axe (failed Attepmt) -> Z80 (I know the basics, need to practice) -> Haskell (Need to practice) -> PHP (Learning, really cool language) -> Java (Taking college courses this semester)
Title: Re: Best language for beginners?
Post by: Stefan Bauwens on January 24, 2012, 05:52:23 am
Definately TI-basic, which is essential for programming in Axe.
Title: Re: Best language for beginners?
Post by: flyingfisch on January 24, 2012, 08:48:35 am
English!

No, seriously, if you want to program calcs, try Casio or TI BASIC. If you want to program computers, do either BASIC256 (*flyingfisch nods to spyro) or QBASIC. Actually, Python is easy too, so maybe you could start there.

I cant really talk from experience because my first lang was PHP, then Python, then QBASIC (just for fun), then Casio-BASIC, then Lua. :D
Title: Re: Best language for beginners?
Post by: BigBrotherNoir on February 09, 2012, 10:34:06 am
I can see where you guys are coming from, but Visual Basic is a relatively easy language to learn. I know that there is practically no demand for it, but I learned it first, and it helps with transitioning to harder languages.
Title: Re: Best language for beginners?
Post by: flyingfisch on February 09, 2012, 10:45:47 am
Don't you have to pay for VB?
Title: Re: Best language for beginners?
Post by: Blue Raven on February 10, 2012, 09:56:41 am
Don't you have to pay for VB?
Nope, the basic version of the IDE is free, and it's really enough for an non-professional.
Title: Re: Best language for beginners?
Post by: Munchor on February 10, 2012, 10:44:34 am
Ouch, I would not recommend Visual Basic not any beginner or any programmer at all.

Firstly, it is not open source, and open source languages evolve much faster, besides the fact that you can tinker with them.
Secondly, it runs on the .NET Framework, which is Windows-only (yes, there's Mono, but it's not so good), and making developers start fresh with developing Windows-only programs is bad.
Thirdly, it has labels/gotos, which make it really (really, really, I know a guy who couldn't learn Python after VB because he missed Goto, he just couldn't do anything without Goto). And goto is bad because it may lead to very hard to read code.
Finally, Visual Basic is way too attached to a certain IDE (Visual Studio). You can program without it, but it is better used with it. This is really bad, because programmers should know how to program with a text editor + compiler too.
Oh, and the IDE doesn't work on other operating systems too, programmers should be taught cross-platform is cool from the start.

I recommend Python or Ruby, because they are both interpreted languages, and easy to understand for beginners.
Title: Re: Best language for beginners?
Post by: flyingfisch on February 10, 2012, 10:47:24 am
Ouch, I would not recommend Visual Basic not any beginner or any programmer at all.

Firstly, it is not open source, and open source languages evolve much faster, besides the fact that you can tinker with them.
Secondly, it runs on the .NET Framework, which is Windows-only (yes, there's Mono, but it's not so good), and making developers start fresh with developing Windows-only programs is bad.
Thirdly, it has labels/gotos, which make it really (really, really, I know a guy who couldn't learn Python after VB because he missed Goto, he just couldn't do anything without Goto). And goto is bad because it may lead to very hard to read code.
Finally, Visual Basic is way too attached to a certain IDE (Visual Studio). You can program without it, but it is better used with it. This is really bad, because programmers should know how to program with a text editor + compiler too.
Oh, and the IDE doesn't work on other operating systems too, programmers should be taught cross-platform is cool from the start.

I recommend Python or Ruby, because they are both interpreted languages, and easy to understand for beginners.

LOL, when I first learned Lua, after programming so much in casio basic, i had the same prob. I got over it but yeah, I was like "WHY YOU HAVE NO GOTO LUA??!"

I was also amazed that I could name a variable anything i wanted to, not just a single letter XD
Title: Re: Best language for beginners?
Post by: Munchor on February 10, 2012, 10:49:50 am
flyingfisch, I wouldn't recommend Lua, Ruby and Python are better for computers because lists/arrays start at 0, instead of starting at 1. Getting used to thinking 0, 1, 2, 3 is good for other languages and Maths in general.

Of course, though, I understand you learnt Lua for Nspire, which is our only option (no more with Ndless though!).

And yes, I'm afraid Goto creates that kind of problems :P
Title: Re: Best language for beginners?
Post by: flyingfisch on February 10, 2012, 11:04:49 am
flyingfisch, I wouldn't recommend Lua, Ruby and Python are better for computers because lists/arrays start at 0, instead of starting at 1. Getting used to thinking 0, 1, 2, 3 is good for other languages and Maths in general.

Of course, though, I understand you learnt Lua for Nspire, which is our only option (no more with Ndless though!).

And yes, I'm afraid Goto creates that kind of problems :P


Actually, I learned lua for FX-9860GII. But I should probably learn C soon. :)
Title: Re: Best language for beginners?
Post by: AngelFish on February 10, 2012, 01:24:54 pm
@Ephan:

If how quickly a language changes is relevant to a beginner, then the language is either far too new to be used by a beginner or they're in the wrong section of the tutorial book. And the problem is less that proprietary languages change less frequently and more that a good language *shouldn't* be changing much in the first place.

As for the Goto argument, it's silly to pick a language based on the fact that it chooses to restrict you by omitting the Goto statement. Python can get away with not including it because it works in a domain where it's not entirely necessary. C on the other hand can't eliminate it. The same thing applies to the argument that Goto leads to unreadable code. It's undeniably true that improper use of Goto will probably result in that. However, I've yet to see a single language where it's impossible to write bad code if you try hard enough. The key is just learning how to design good code, which solves the Goto problem as well.

Personally, I would recommend an useless language like TI-BASIC, JustBASIC (http://justbasic.com/index.html), or Matlab. Why a useless language? Because you can't learn everything there is to know about programming having learned only one language. One problem I've seen is that people who learn a useful language first have a tendency to try to apply that language everywhere, even in places it doesn't belong. A useless language forces you to move outside it while making learning that second language significantly easier.
Title: Re: Best language for beginners?
Post by: lkj on February 10, 2012, 05:20:47 pm
Would you guys recommend python3.2 or python2.7? It seems to me that most libs are still not compatible with python 3 yet, and that's very annoying if you can't use most scripts and other stuff you find on the internet.
Title: Re: Best language for beginners?
Post by: ruler501 on February 10, 2012, 05:58:24 pm
python 2.7 just because its more compatible and most tutorials are for python 2.x also I just like 2.x more :P
Title: Re: Best language for beginners?
Post by: cyanophycean314 on February 10, 2012, 08:46:30 pm
There really much of a difference between the two, so you could learn either one and just figure out the few differences. That'll mainly depend on what tutorial you find to learn for. Some are for 2, some are for 3. If you can't decide, just go with 2 for compatibility. I started with python 3, but haven't really worked with it much lately. Getting some libraries to work was very painful.

My programming history was:
Javascript -> TI-Basic -> Python -> Lua
Title: Re: Best language for beginners?
Post by: Juju on February 10, 2012, 09:19:13 pm
C# is pretty nice for a programming language.
Title: Re: Best language for beginners?
Post by: ruler501 on February 10, 2012, 10:33:28 pm
For me I learned Python->C/++->Java(currently working on)
                                           ^TI-Basic was learned at the same time as C/++
Title: Re: Best language for beginners?
Post by: Munchor on February 11, 2012, 06:27:44 am
@Ephan:

If how quickly a language changes is relevant to a beginner, then the language is either far too new to be used by a beginner or they're in the wrong section of the tutorial book. And the problem is less that proprietary languages change less frequently and more that a good language *shouldn't* be changing much in the first place.

As for the Goto argument, it's silly to pick a language based on the fact that it chooses to restrict you by omitting the Goto statement. Python can get away with not including it because it works in a domain where it's not entirely necessary. C on the other hand can't eliminate it. The same thing applies to the argument that Goto leads to unreadable code. It's undeniably true that improper use of Goto will probably result in that. However, I've yet to see a single language where it's impossible to write bad code if you try hard enough. The key is just learning how to design good code, which solves the Goto problem as well.

Personally, I would recommend an useless language like TI-BASIC, JustBASIC (http://justbasic.com/index.html), or Matlab. Why a useless language? Because you can't learn everything there is to know about programming having learned only one language. One problem I've seen is that people who learn a useful language first have a tendency to try to apply that language everywhere, even in places it doesn't belong. A useless language forces you to move outside it while making learning that second language significantly easier.

There are downsides on my arguments against starting with a .NET language, but I think all of them together proof that there are better alternatives, and I'm sure you agree.

I also don't recommend any language with forced classes/functions like C# or Java. When I started Java and C# (happened with both) I was confused as to why I needed so many lines to print "Hello World", and what did "class HelloWorld", and "public static void main (String[] args)" was all for.

Python and Ruby are better in this aspect because they offer one-line methods for Hello World, and very small solutions for the first problems.

Also, I do know it's possible to write good Goto code, but that is if you have a teacher. Many people just learn programming by their own, and there's nobody there to tell them "Be careful." ;) I'm trying to think about everyone.

Either way, your "useless language" point is very good, had never heard it and it seems quite good. A useless language should be good, but it can also be bad. I'm glad I learned Python first, because I can use it nowadays too, and I have lots of experience with it.
Title: Re: Best language for beginners?
Post by: willrandship on February 11, 2012, 09:35:20 am
I'd recommend C/C++ if you're willing, as it helps people grasp the limitations of how computers actually think, without delving into assembly. Higher-level langs like Python or Java tend to obscure those, but they still crop up in annoying ways (like how I can use an n-sized int in python, but I'm restricted to a list length of 65535 or something.)

The differences between python 2.x and 3.x are minimal enough that a beginner should probably just stick to 3. It's mostly mild syntax changes for very simple commands (anything more complex is in a library anyways)