By using this site, you agree to our Privacy Policy and our Terms of Use. Close

Forums - PC Discussion - What is a good programming kit to start with?

I remember using BlueJ and Eclipse when I first started to work with Java.



Around the Network

Kit? IDE? What are we talking about, exactly?

The general convention is that Python is a good starting point, as it is a powerful language that is both rather easy to use, and teaches some good coding practices, however in my opinion, it is too high a level to start with. I recommend learning the basics with C and then moving on to a higher level language.

A good book for C: https://www.amazon.com/Programming-C-4th-Developers-Library/dp/0321776410
You can find online courses just about anywhere, but I recommend starting with edx.org , with tutorialspoint ( https://www.tutorialspoint.com/cprogramming/ ) as your guide on most C topics.



Any language should do really. Programming is more about the concepts than the syntax. Once you learn a style of programming in one language, you can pretty much do it in any. After you learn a few languages it only takes a day or two to learn the syntax of another one. 

I started with python, as that was taught at my university (Carnegie Mellon Unversity.) You can see all of the course content here, and if you are motivated you probably could even learn from the content. Just click a semester and the "schedule" tab. There are written and video tutorials. The nice thing about python is that you don't get bogged down with syntax errors as it is quite forgiven, and fixing syntax errors is quite boring when you are first starting out. That is why it is good for beginners. 

There are tons of free courses online to learn from as well. I recommend udacity. 

https://www.udacity.com/course/programming-foundations-with-python--ud036

Anyway, you should start with basic iterative stuff, learning what data types, loops, variables, functions, etc are; learning basic data structures: lists, sets, etc. Then learn object-oriented programming. Once you learn object-oriented programming what you can do really opens up. I'd recommend switching to a C-based language at that point, Java or C# are good options for beginners. Java is especially useful since it is used in most industry, but you can use for C# for game-engines like Unity. After you are comfortable with the basics of object-oriented programming you can learn recursion (and the basics of functional programming) and slightly more advance data structures (linked list vs. array list; hashsets; trees; graphs; etc.) 

And at the end of the day it is all about practice, practice, practice. The more you program the better you'll be at it. Think of unique projects that you'll like to create, and hack at solving them for a few hours per day. Do you want to make an android app? Well download android studio and make your app. Do you want to make a webpage? Learn CSS/HTML and a Javascript interface, make your webpage. A database? Learn SQL (it takes a week at most) and construct a mock database. A 2d or simple 3D game? Download a game library for Python, C# or C++; create some assets, etc. The best way to learn for many people is to just make something, and google until it is made. Although you'll need the basics down first (at the very least object-oriented programming.) 



spurgeonryan said:
Xen said:
Kit? IDE? What are we talking about, exactly?

The general convention is that Python is a good starting point, as it is a powerful language that is both rather easy to use, and teaches some good coding practices, however in my opinion, it is too high a level to start with. I recommend learning the basics with C and then moving on to a higher level language.

A good book for C: https://www.amazon.com/Programming-C-4th-Developers-Library/dp/0321776410
You can find online courses just about anywhere, but I recommend starting with edx.org , with tutorialspoint ( https://www.tutorialspoint.com/cprogramming/ ) as your guide on most C topics.

Damn,  I had my hands ona C for dummies book and left it. Also forgot it was python,  thought it was Java that was easy.  Once you learn python what can you accomplish?

 

Is it C that we use here or is html actually html?

Python is multipurpose, though it excels in scientific and website applications. Great when you need to build a robust program quickly. Great to learn programming, great to process data, works for games even, though it is not the best language available for it.

I would assume that this website mostly uses HTML and PHP, though I have no idea really.



spurgeonryan said:
Xen said:
Kit? IDE? What are we talking about, exactly?

The general convention is that Python is a good starting point, as it is a powerful language that is both rather easy to use, and teaches some good coding practices, however in my opinion, it is too high a level to start with. I recommend learning the basics with C and then moving on to a higher level language.

A good book for C: https://www.amazon.com/Programming-C-4th-Developers-Library/dp/0321776410
You can find online courses just about anywhere, but I recommend starting with edx.org , with tutorialspoint ( https://www.tutorialspoint.com/cprogramming/ ) as your guide on most C topics.

Damn,  I had my hands ona C for dummies book and left it. Also forgot it was python,  thought it was Java that was easy.  Once you learn python what can you accomplish?

 

Is it C that we use here or is html actually html?

Python is very universal. Most Visual Novels are programmed with it (RenPy, the Py stands for Python), Civilization IV is programmed in Python, it's used in servers, and so on.

One thing to note with Python however is that there are basically 2 versions. There's Python 2.x and Python 3.x, 2.x is the older version but still mostly used, while 3.x is more modern, clearer and faster, but doesn't have nearly as much plug-ins and whatsnot working with it compared to 2.x



Around the Network

I starter with BASIC on C128 and I can't program shit nowdays so I don't recommend that.



spurgeonryan said:

I tried SAP before but quickly lost interest. I have a Perl book for dummies,  Java,  SAP again. One of those a good starting point? Wish there was an online site. 

Why SAP? Everybody hates that s**t

 

Use what is the most fun for you.



Ignore anyone who claims that some language like C, Java or something similar is a good starting point.
Those languages are far from being well suited for beginners; sure, some people might still manage to successfully learn them as their first language, but the danger of failing frustratedly is way too high.

Peter Norvig, who is director of research at Google, years ago wrote a great article on learning programming. It has the somewhat disillusioning title "Teach yourself programming in 10 years" - a sarcastic reference to the popular "... for dummies" / "teach yourself ... in 21 days" books, but it's full of honest and valueable tips and recommendations:
http://norvig.com/21-days.html

I really recommend you read the entire article, as disillusioning as it might first be, but here's a few very true and good tips from the "Appendix: Language Choice" section of the article, about choosing a good first programming language:
- Use your friends (if you have friends who can program, it's a good idea to start with a language that they are familiar with)
- Keep it simple. I quote "Programming languages such as C++ and Java are designed for professional development by large teams of experienced programmers who are concerned about the run-time efficiency of their code. As a result, these languages have complicated parts designed for these circumstances. You're concerned with learning to program. You don't need that complication. You want a language that was designed to be easy to learn and remember by a single new programmer."
- "Play", or in other words: Start with a language that has an interactive shell. This might be the best tip of all, as it is one of the mayor reasons why people who successfully learned programming almost always started with a programming language offering an interactive shell - be it Basic, Python, Javascript or whatever.

Based on these tips, here's what Peter Norvig recommends as possible candidates as a reasonable first programming language for people who are sufficiently old: Python, Scheme, Javascript (especially for it's popularity).
A language he doesn't mention, but that I was quite impressed by, was the free software "DrRacket". It's basically a dialect of Scheme/Lisp with builtin support for images (as a kind of data type), and there's a free accompanying book from MIT online called "How to design programs".
The "prologue" of this book is the best introduction into programming I've ever witnessed - in just a few pages, they do a terrific job of teaching you to program the animation of a launching rocket:
http://www.ccs.neu.edu/home/matthias/HtDP2e/part_prologue.html

For DrScheme, there's also the free book "How to design worlds", that focuses on teaching the basics of programming games/"worlds":

http://world.cs.brown.edu/


Unfortunately, DrRacket might be a great language for learning to program, but it's not a popular, widespread language; you probably won't program a commercially successful application with it.
But that is something I'd strongly recommend to you anyway: Do NOT do the mistake of trying to start with a language that appears to be the commercially most useful choice. Do not start with Java, just because commerical Android apps are usually written in Java, for example. Or C, for similar reasons. I know, it's extremely tempting and seems like the most straighforward choice, but it's usually the straight way into failure.

If languages like Scheme, Lisp etc. are too academic for you, and you definetely want to start with something popular, "real world relevant", choose Python or Javascript/HTML. Choose a language that allows you early have satifactory feelings of success, without going though an extremely steep and frustrating learning curve first.



I don't know of any good online tutorials, unfortunately, and I've tried looking once for someone. I mean, there's lots of good tutorials but often, they don't have any practical exercises so you never really learn to use the stuff they teach. Unless you have a good imagination or lots of passion so you can come up with your own exercises, it's probably going to be hard to learn without someone providing you exercises. In this light, finding a good MOOC would probably be the best way to learn programming. For example, this MIT course seems pretty decent (at a first glance). In case you end up with a MOOC but not that one, you might want to know what some have a schedule, some don't. Pick one that suits you.

It seems social learning platforms, such as freeCodeCamp, are also a big thing thing these days, but I don't really have experience with them so I don't know how good they are. Still, it's an option you might want to be aware of.

You might have noticed I haven't talked anything about languages or stuff like that. That's because it doesn't matter. Pick the one with the materials that best support your learning. Most programming languages ought to be pretty easy enough to learn with any half-decent materials, unlike what some people here have been telling. Also, most programming languages work a lot like C, so once you learn one language, switching to another one is pretty easy.

Personally, I learned Java first because that what was used to teach us programming in university, and I can't say I had any trouble because of the language choice. There's some parts you always need but probably won't understand at first (i.e. the boilerplate needed for methods) , but that's not really a problem for learning. Of course you'll probably end up starting with Python because it's really simple to use and there's probably lots of great learning materials for it (including the MOOC I linked earlier), so this part about Java doesn't matter. Still, I want to emphasize that most languages are more or less equally difficult (or easy) to learn. If you go with C (or C++) though, prepare to spend some extra effort to learn about memory management and pointers. It's not hard, but that's some mandatory extra learning you don't see in most more modern languages.