• What language should I learn to program in?
    25 replies, posted
You probably get asked this question a lot. I am 28. I teach Digital Media & Technology (mainly web and photo manipulation and graphic design stuff). I tend to focus more on the development side of things and client interaction in the course (it's not a computer science or computing studies course - it falls under technology, same as metal work, woodwork and food tech, except our tools are on the computer). However, I'd like to move the course in a more programming oriented direction (or at least split the course into two strands to cater for different students). HTML and CSS I am fine with (I know they aren't programming languages). I can use some php, and tend to forget about it after I have done what I need to do with it (however, I am familiar with it to the extent I have been able to sit down and modify some CMSs to suit my students needs). I did asp at uni, but that was 8 years ago and I can't remember a thing about it. But I want to get into some programming - real programming. Maybe develop some games (I've got ideas, but no way to implement them). I can use gamemaker/GML and use it to teach younger students, but it doesn't satisfy my desire to actually know how to program. So, does anyone have any recommendation of what language to start with (I am considering Java) and maybe some good books or websites to begin with. I downloaded Code::Blocks but am lost. Same with Dev C++ - I open it up and I am like what are all these options. I'm not a complete nub when it comes to programming. I understand the basics (like, the absolute basics), so I'm pretty much still a nub, but not totally. So - help/advice :) Cheers
Whichever tickles your fancy. You should probably look around C, C++, C#, Java. Get a book, or read tutorials on the Internet.
Nicely worded :) I recommend C#, you will be able to find tons of help on the internet. First do some console applications to learn the syntax of the language, then if you want to start doing visual applications, try the SFML library or XNA. I recommend SFML.
Where did the sticky go? somebody bring it back please. I keep thinking "Has that thread resurfaced again? Oh, it's another one." The constant feeling of deja vu is starting to get to me. I don't really blame the OP, all of last week's have dropped to mid-page2. We should have a sticky about choosing a programming language though.
COBOL is always useful.
C# is probably more useful than Java. What sort of thing do you want to do with the language? For games I suggest C++ and OpenGL but afaik C# is just as good.
I would recommend python: imagine PHP, but good! Less tongue in cheek, python is a solid, very multi-purpose language: it's slow, but computers are so fast that you can use it for pretty much anything. Also, python doesn't try to be too clever, it just does OOP very well. I say that because it seems to me like Ruby sort of wants to be a functional programming language. After that, move onto C# ideally, or perhaps Java to get in the mindset of strict types, and C style languages, and then move onto C++. This might all seem like a boring waste of time, but trust me, every one of these languages is useful in itself. After that you might like to try Haskell, simply because of how different it is! You could learn Haskell at any point (even to start with, if you're determined enough) but programming in Haskell forces your mind to open: you start to see ways to solve problems which you simply wouldn't have thought have before, and the whole language is exceptionally well designed. All of these have free implementations: if you want to start with python, then I learnt from "Beginning Python". For your first programming language, it is definitely worth having a book, which can act as a quick reference, often even better than the internet. It also covers points which most tutorials won't look at.
you should probably NOT use python, or haskell. contrary to popular belief you don't need to learn any "beginner" languages. go straight to what you will find most useful. if you're intending to teach kids how to use some rendering library like directx/opengl you should probably use C++(or C#, it has bindings for both) as these languages can be used for many many other common development tasks. .NET w/ C# is really nice and simple, and your kids will probably be able to pick it up quick. (as they would with python, but python is useless unless they're going to go work in a unix environment)
My Head of Department recently did a sabbatical where she learnt a whole bunch of languages. I don't know to what extent she learnt these, but she has also been praising C# (She also did php, java and python). I downloaded visual studio c# express - is this a good starting point? C# also appeals to me because apparently XNA uses it? Am I right or completely wrong? I do want something with a fairly user friendly IDE, which VSC#E seems to be. I figured python would be simple to learn, but it's uses outside of many engineering applications would be limited. EDIT: And thank you TheBoff - I am not disregarding your advice either. I have had students who are keen to learn python (their parents are engineers and recommended it), although it's not me that is teaching the programming course next year (thank goodness), but the HoD, although the student in question has opted to take a first year undergrad comp sci course. I may look into python in the future (I did start the undergrad course - my school ran a personal development course in python - but I broke my arm about 8 weeks in and couldn't type for six, so I missed out and couldn't catch up). Thanks for the advice. When I feel up to the challenge, I may look at those too, but I'd like to learn one and understand it well and then I have heard it is pretty simple (to an extent, I guess it's relative to each person's understanding) to pick up another language. Thanks :)
C#, Python or Ruby and you can't go wrong.
Shouldn't this be considered a choose for me thread? I just got banned for those like a week ago
[QUOTE=Layley;26502296]Shouldn't this be considered a choose for me thread? I just got banned for those like a week ago[/QUOTE] Oh please
[QUOTE=Lukasaurus;26497439]I figured python would be simple to learn, but it's uses outside of many engineering applications would be limited. [/QUOTE] Can I just say how nice it is to have a question asked by an intelligent and polite human. It's a bit of a refreshing change here. I must disagree with Soda: I used python on windows with no problem for many years. It has applications far and wide away from engineering: in fact I wouln't have thought it terribly useful for engineering as it's rather slow, but you live and learn. I've used it for web development reasonably significantly (I wrote the script that does API generation for the web.py project :D), some amounts of games development (the pyglet library is good for this, although there is also pygame) and a tiny bit of GUI development. That is not to say that C# is not a very good language, and you seem smart and driven enough that you should have no problem picking it up when you start with it. It is also very useful. The slight downside is that, although there is support under linux courtesy of the excellent mono framework, you will probably have to rewrite any GUI sections of your application to use something like GTK# if you want to use it on linux. Judging by his comment, Soda has never seen Haskell, which is not really a beginners language. I will re iterate that if you really want to become "good" at programming, it is worth knowing one pythonesque language (including Lua and Ruby), one C#esque language (see also: Java) and C[++] because they all work in different ways, and open your mind to different ways of thinking about problems, and how the computer is actually working to solve the problems. If you find that you really enjoy it, it is also worth learning some dialect of assembly: MIPS (you can use the SPIM emulator) is quite nice, although you might like to learn x86 as it's what your CPU actually executes. x86 is an absolute pig though, so be warned. These will really show what your computer is doing under the hood, which is helpful when it comes to optimizing programs, for example. It is also very worth learning a functional programming language, like Haskell (I don't believe Soda has ever used Haskell, judging by the way he dismisses it as a "beginner language": Haskell was written by some of the smartest minds in Computer Science, and it shows), as it will really open your mind. Functional programming, and recursion by extension, are hugely elegant ways of thinking about problems, which you would otherwise not really consider.
[QUOTE=TheBoff;26506879] in fact I wouln't have thought it terribly useful for engineering as it's rather slow[/QUOTE] From what I understand Scipy (and Numpy) are starting to challenge Matlab. I don't know for sure, but Scipy might be backed by a C library and it's not pure Python.
Wasn't eve online written using some form of python? pretty sure it has uses outside of engineering seeing as how many many people use it. Oh and i recommend c++, mainly because i use it and find it more intuitive to work with than other, more abstract, languages :3
I have a feeling Python is used to customize Civ IV. If I am remembering it correctly the map generator, AI and complex scripted events can be done using it.
Both Civ IV and Eve online have significant python components. A large amount of Civ IV is written in it, with mainly the graphics and engine being C++. I know less about eve, but it uses "stackless python", which is quite a cool dialect.
Thanks for the advice. Now, I know I can't jump straight into the "fun" stuff, although I do consider the learning fun. With Visual C# (or any language), am I better to start with windows form applications, or console applications? I am working through some tutorials, but they seem to be focusing on form applications, and the only console app was the mandatory "Hello World". I know that's total basic stuff, and while I understand the structure of many statements, I don't know the syntax, so going over the basics is good. So, console or windows form apps to learn with - or a bit of both? At uni, we did c++ console apps and learnt all about records and classes and objects and whatever but I hardly remember anything (although I am more familiar with c++ than other languages, but I chose C# because the HoD also knows it). This tutorial I am working through is for creating a calculator - probably pretty simple for most of you guys. My library has books which I am going to borrow since most of the uni students have finished for the year, so they are available.
Personally i prefer console apps, because then you spend less time worrying about how nice the output looks, and more time actually creating the thing. Oh and not to be rude, but i would ignore anything soda says. Purely out of principle more than anything else
When you're just trying to learn a language, I would also say that the console is probably is your best bet: it's a lot quicker to dump information to the console when you're trying to figure out what something does, than fuck around with your GUI. I guess VC#'s excellent debugger slightly nullifies this, but it's still much easier to modify console output than GUI output.
[QUOTE=Lukasaurus;26511928]Thanks for the advice. Now, I know I can't jump straight into the "fun" stuff, although I do consider the learning fun. With Visual C# (or any language), am I better to start with windows form applications, or console applications? I am working through some tutorials, but they seem to be focusing on form applications, and the only console app was the mandatory "Hello World". I know that's total basic stuff, and while I understand the structure of many statements, I don't know the syntax, so going over the basics is good. So, console or windows form apps to learn with - or a bit of both? At uni, we did c++ console apps and learnt all about records and classes and objects and whatever but I hardly remember anything (although I am more familiar with c++ than other languages, but I chose C# because the HoD also knows it). This tutorial I am working through is for creating a calculator - probably pretty simple for most of you guys. My library has books which I am going to borrow since most of the uni students have finished for the year, so they are available.[/QUOTE] Because making form applications is so easy in comparison to C++ many tutorials usually jump right into them. It's really not necessary to make console applications to start out with -- but you might if you want to write programs that have no other function than to output something. If you want to learn syntax there's a bunch of different exercises which are good -- such as [url=http://99-bottles-of-beer.net/]trying to output the 99 bottles of beer on the wall song[/url] or calculating pi to x digits(gauss-legendre/machin) or making a simple grapher(would introduce you to GDI+ as well). You don't really need to start in one spot, it's really best to go with whatever interests you the most. [quote] Oh and not to be rude, but i would ignore anything soda says. Purely out of principle more than anything else [/quote] Oh and, not to be rude, but I would ignore anything this guy says. Purely out of the fact that him and others like him began programming last year.
[QUOTE=Soda;26514832]Oh and, not to be rude, but I would ignore anything this guy says. Purely out of the fact that him and others like him began programming last year.[/QUOTE] I agree, that was rude of him. But you're not much better than him by assuming what his programming experience. And how do we know you've been programming for more than a year... you never post content in WAYWO!
OP should check out [url=http://stackoverflow.com/]Stack Overflow[/url]
[QUOTE=Ortzinator;26516010]OP should check out [url=http://stackoverflow.com/]Stack Overflow[/url][/QUOTE] I don't think that's fair. That answer applies to all non-shitty questions asked on this forum. Despite much noise there are many good answers in this thread.
Pythonm
[QUOTE=Soda;26514832]Oh and, not to be rude, but I would ignore anything this guy says. Purely out of the fact that him and others like him began programming last year.[/QUOTE] 3 years and nearly a half, according to the timestamp on my earliest project, have programmed for the psp and computer in c and c++, built a few python programs, dabbled in lisp, and could do lua with a few references. What was that about being crap at programming? And unlike you, i can produce examples of things i do as well, instead of regularly producing contentless posts and inciting the forums to anger. Edit: No wait, you made cornflower blue. OT, many people find python to be a quite a good language to get into, and you can get it to actually do things without massive hassle. Oh and if you want to make a game with it, theres always the stuff which comes with blender which ive heard is quite nice?
Sorry, you need to Log In to post a reply to this thread.