PDA

View Full Version : How many people here know how to program?



Internet
12-10-2012, 04:13 AM
I have a love/hate relationship with it myself. I've taken Java/C++ classes, passed them just fine, and then a year later forget everything I've learned. I love doing the algorithms, hate implementing them (the actual programming part), swear it off forever and then start fresh a year later. Almost every year. Around October.

Ritashi
12-10-2012, 04:14 AM
Currently developing a game with a small group of devs in Unity, I'm leading our programming group.

Hensler
12-10-2012, 04:33 AM
I'm a programmer. I always thought making games would be my dream job, but it turns out I just really like playing games, so now I make non-game apps and do general IT/help desk stuff. I've considered looking for more of a design role or even level design, but have never really pursued it.

kstress71
12-10-2012, 05:00 AM
I'm currently working on my first indie game in Unity, but it's slow going as I'm working alone and learning as I go. I'm really enjoying it though and hope to make it more than a hobby one day.

For my day job, I primarily do web development.

gwathdring
12-10-2012, 06:22 AM
I've never done gaming stuff, but I'm currently learning Java, C and C++ -- I'm decently comfortable with C++ but I have a fair ways to go with C.

I'm working a number of learning projects including a much smaller scale version of something like OCTGN to implement some of my object oriented work.

Mohorovicic
12-10-2012, 06:42 AM
...what is the point of learning C when you're already learning C++?

Also I'll be first to say - fuck Java

pkt-zer0
12-10-2012, 06:56 AM
I love doing the algorithms, hate implementing them
I don't really get that. What's the difference? Going from pseudocode to actual code is basically nothing.

I'm currently working on my first indie game in Unity, but it's slow going as I'm working alone and learning as I go. I'm really enjoying it though and hope to make it more than a hobby one day.

For my day job, I primarily do web development.
Same.

Internet
12-10-2012, 07:06 AM
I don't really get that. What's the difference? Going from pseudocode to actual code is basically nothing.

Same.

I don't know how or why, but I (through wholly my own incompetence) can do the math on things like NetLogo and it works, but as soon as I move to a big boy programming language I'm surrounded by a hundred errors and not really sure where they're coming from, and eventually get overwhelmed.

In the current context, I made a boardgame style overgame for a space pirate themed D&D campaign. Running the numbers in a computer to test balance would be sixty jillion [exact number] times faster than just playing it with a few friends for several games. I didn't start this to complain about my own lack of skills or ask for help; I was just curious what fellow RPS members experience was.

Wheelz
12-10-2012, 07:07 AM
I'm in my third year of a degree, majoring in Software engineering. Done abit of Javascript, COBOL, Python, and Java. And I'd like to second the motion to fuck java, and amend that we also fuck COBOL.

In terms of algorithms vs coding, I think it depends on the language you're using? For example, there arn't many annoying syntax-y type things with python, which means more time writing proper code as oposed to importing packages and spamming brackets like with Java, though I'm not sure if that's what Internet meant? (ed: -aparently not.)

c-Row
12-10-2012, 07:31 AM
Visual Basic at the office, C# in Unity at home.

Sakkura
12-10-2012, 08:04 AM
I once wrote a hello world .bat file in dos, so I clearly am an experienced programmer.

Joseph
12-10-2012, 08:18 AM
Just started my second year of a Games Programming course. Learnt C# and Java during the first year and now learning C++. I've been lead programmer in all my team projects.

I've got my work placement year coming up and I contacted Jim about doing it at Big Robot, but no luck with a reply :(

Rao Dao Zao
12-10-2012, 09:44 AM
I make websites in C# for a living. Started life in VB6, got to Python and Java at uni, and then everything in business was C# and I never looked back (say what you like about MS, but C# is some seriously good stuff... apart from that whole cross-platform thing).

I'll make a game sooner or later. ;_;

Velko
12-10-2012, 09:48 AM
Being a statistician by profession, I know some SQL and SAS and not much else. Ironically, I'm currently working in a software development project.

Kaira-
12-10-2012, 09:51 AM
Visual Basic at the office

I feel sorry for you.

Worked with C# and Java, on my freetime do stuff mainly with C++. Also done a little stuff with embedded C and experimented with JavaScript (curse upon thee) and Python and Lua (who starts arrays from 1-index these days? Seriously).

aoanla
12-10-2012, 09:59 AM
I have some C and C++ (the C++ is very rusty), some Fortran (90, a little rusty), some Go (which I'm just dabbling with at the moment), some python (which I actually use at work), and a very small smattering of Objective-C, perl and Haskell (pure functional languages scare me).

Oh, and if we're counting SQL, some of that too.

riadsala
12-10-2012, 10:08 AM
PhD in CompSci here (although that mainly involves using matlab). And I'm yet another person who plays around with C# and Unity from time to time.

Any of you folks fancy joining forces and helping me out on my game? I find working with others far more fun :) I have some overly ambitious ideas for strategy games (http://riadgameblog.wordpress.com/2012/07/16/developing-perontor-would-you-like-a-large-or-small-world/). Recently I've been playing around with some ideas for having a space game with realistic solar systems, etc. Not got very far yet, but I like to dabble. Guess I get a kick out of the problem solving.

SanguineAngel
12-10-2012, 10:15 AM
I just started learning C# the other week on my own time. If anyone can recommend some good sources I would appreciate it actually. I'm loving it so far. made a basic text based game in console and just started fiddling with graphics over the last couple of days.

My ultimate aim is somewhat fuzzy. I would love to make games and have something in mind for a later date - provided I get to that level of skill. But I also wouldn't mind taking programming skills into a work environment. I just have a standard office job at the moment.

My only previous experience is some Visual Basic simple databases at A-level 10 years ago.

riadsala
12-10-2012, 10:22 AM
All my C# has been self taught from trying out things in Unity3d. Some of it felt like a really brutal learning curve, but I think I'm now through the worst of it now [still lots to learn of course...]. The advantage of playing around with unity is that a) there's a huge friendly community to help answer questions and b) you can get lots of visual feedback on what you're doing, so it's a bit more "fun"



I just started learning C# the other week on my own time. If anyone can recommend some good sources I would appreciate it actually. I'm loving it so far. made a basic text based game in console and just started fiddling with graphics over the last couple of days.

My ultimate aim is somewhat fuzzy. I would love to make games and have something in mind for a later date - provided I get to that level of skill. But I also wouldn't mind taking programming skills into a work environment. I just have a standard office job at the moment.

My only previous experience is some Visual Basic simple databases at A-level 10 years ago.

Joseph
12-10-2012, 10:28 AM
I have a love/hate relationship with it myself. I've taken Java/C++ classes, passed them just fine, and then a year later forget everything I've learned. I love doing the algorithms, hate implementing them (the actual programming part), swear it off forever and then start fresh a year later. Almost every year. Around October.

I realise you might have been looking for some assistance when you posted this thread; even if you're not I'll post this for other people looking for assistance:

If you want to get into programming in an easy way and make some games (I imagine that's a lot of people's goal with hobby programming) then pick yourself up a copy of this: http://www.amazon.co.uk/Microsoft-XNA-Game-Studio-4-0/dp/0735651574

One of my programming tutor's practically used it as a text book when teaching us. The writing style is great (Like a person is talking to you, not a robot) and the explanations are in laymen's. You'll need Visual Studio but I don't suppose it's hard for anyone to get hold of, you're all big boys on the internet now.

Just so you know this is only really 2D, but it's great. It teaches you things in a simple way so you can have a fiddle around with what you've just been taught before moving onto the next chapter.

NathanH
12-10-2012, 10:32 AM
I know a bit of some C or other from NWN modding, other than that just R and Matlab at work.

Similar
12-10-2012, 10:39 AM
The only languages I've had any luck with were C64 Basic and LSL (the Second Life scripting language). I've tried numerous times to learn various other languages, but never felt I managed to get any kind of proper handle on any of them (though, I think that if I tried now, it might be easier due to what I've learned from LSL).

riadsala
12-10-2012, 10:43 AM
other than that just R and Matlab at work.

another academic?

pakoito
12-10-2012, 10:45 AM
I'm a programmer. I always thought making games would be my dream job, but it turns out I just really like playing games, so now I make non-game apps and do general IT/help desk stuff. I've considered looking for more of a design role or even level design, but have never really pursued it.

Story of my (still short) life. After finishing college I started working as Android Programmer, which is still not far from games and more fun than general IT :)

airtekh
12-10-2012, 10:56 AM
Also I'll be first to say - fuck Java


And I'd like to second the motion to fuck java

I have never understood the hatred that Java gets from parts of the tech community.

What's the reason(s) for this?

XisLoose
12-10-2012, 11:02 AM
CS grad here, so I played with a lot of languages (Assembly, C, C++, C#, Java, ML, Scheme etc.) but at work i'm using C/C++ and some python for automation.
Game programming always seemed like a dream to me, but i'm afraid there's barely to none work here :(
Guess I'll stick to playing games instead :)

For those wanting to learn how to program from scratch, I'd recommend CodeAcademy (http://www.codecademy.com), I like their method.

Stevo
12-10-2012, 11:21 AM
What's with the java hate =O

pakoito
12-10-2012, 11:46 AM
What's with the java hate =O

Some people like their languages as close to the metal as possible. While that's ok for some uses, it can drive programmers completely nuts, as their case shows.

Either that or they like Ruby and Python, in which case none of their programming opinions should be taken seriously because they're so spoiled we like to make them cry like little girls by overlooking their work.

b0rsuk
12-10-2012, 11:51 AM
I have never understood the hatred that Java gets from parts of the tech community.

What's the reason(s) for this?

Bruce Eckel wrote Thinking in Java, which is by many people regarded as the book for learning Java and even Object-Oriented programming. He doesn't remember how to open files in Java, and he wrote an entire chapter about it. He is a fan of Python now.

Java is very verbose and extremely complex. There are mountains of libraries and things to remember.


I have a love/hate relationship with it myself. I've taken Java/C++ classes, passed them just fine, and then a year later forget everything I've learned. I love doing the algorithms, hate implementing them (the actual programming part), swear it off forever and then start fresh a year later. Almost every year. Around October.

This is quite normal, don't be discouraged. Programming is hard, even programming geniuses (like Donald Knuth) say so. I also have a love/hate relationship with it, yet when I start doing it I get sucked in for hours. It helps when you're getting paid for it or working on a fun project.

Besides, C++ and Java are some of the least pleasant programming languages. If you'd like to try a really pleasant language, use Python. Unfortunately it's not a good fit for mobile and job offers are mostly about Django (web development) but as a hobby it's great. I wrote a nonogram solver in it. It's good for turn-based games though if it's your thing.

Game programmers, especially if they like Python, should be interested in Lua because many games use it as a scripting language. It's also okay on mobile because it compiles to Javascript nicely.


...what is the point of learning C when you're already learning C++?

Also I'll be first to say - fuck Java

This is what Linus Torvalds says about C and C++:

http://article.gmane.org/gmane.comp.version-control.git/57918

...and don't forget iphone. They abandoned C++ for Objective C. "Basic" C is simpler and therefore easier to avoid bugs with, whereas C++ has many implicit behaviors and quirks which surprise even experienced programmers.

TechnicalBen
12-10-2012, 11:52 AM
I once wrote a hello world .bat file in dos, so I clearly am an experienced programmer.

This, in Java, then my head exploded.
I really could not get a grasp of how to send data from one class to another, so completely failed to make anything of substance.
Don't get me wrong, I read the tutorial over a million times, I just fail with syntax (learning languages). So I know what I want to do, I just can't translate that into any programming language. :(

Kaira-
12-10-2012, 12:01 PM
What's with the java hate =O

Java is a great pain in the ass when you're programming for the desktop - it's overly verbose and filled with all kinds of ass-backwards design decision (no unsigned types, really?). On the server-side tho it's relatively nice and usable.



This is what Linus Torvalds says about C and C++:

http://article.gmane.org/gmane.comp.version-control.git/57918

...and don't forget iphone. They abandoned C++ for Objective C. "Basic" C is simpler and therefore easier to avoid bugs with, whereas C++ has many implicit behaviors and quirks which surprise even experienced programmers.

While I appreciate Linus greatly, his arguments against C++ are basically "stupid people code C++ and because of that C++ is a bad language". C is a powerful language obviously, but the larger the projects get, the harder the codebase becomes to manage. And that is to say that C is filled with all kinds of security holes by design (null-terminated char arrays, scanf() etc). C++'s implicit behaviors are mainly a result of holding the backwards-compatibility with C, though I do agree that having no specified order of operators (meaning "i + a * b" being unspecified behavior!) is a big sack of stupidity.

Mentalepsy
12-10-2012, 12:13 PM
I work as a programmer (though I'm no master coder), but I haven't done anything on my own since I published some NWN script suites a few years ago. Earlier this year, I realized that I needed to start taking on personal projects and learning new things again. I've since published a small Android app, and am now working on developing a PC game. I've never attempted something on this scale before, so it's been an enormous learning experience.

Why am I a programmer? Well, on a bad day, I sit and do tedious rote work that numbs my brain, so that sucks. On a good day, though, I come into the office and get paid to solve logic puzzles all day.

b0rsuk
12-10-2012, 12:13 PM
Oh yeah, Hello World in Java sounds like a joke, but it isn't.



class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello World!"); } }

This is actually the simplest, shortest, correctly* written application. You need that just to output a line of text. Unfortunately, it's quite typical.

* this forum doesn't allow me to use nice indentation

airtekh
12-10-2012, 12:42 PM
Oh yeah, Hello World in Java sounds like a joke, but it isn't.

class HelloWorldApp { public static void main(String[] args) { System.out.println("Hello World!"); } }

This is actually the simplest, shortest, correctly* written application. You need that just to output a line of text. Unfortunately, it's quite typical.

Ahh, the first line of code I ever saw. It's strange reading you saying that it is complex, because it's second nature to me now.

I'm just unfamiliar with other languages' syntax being (presumably) more concise.

Kaira-
12-10-2012, 12:59 PM
Java's "Hello World" seems so bloated because of you need to declare a class in which the main-function resides. In C++ the same would be int main(int argc, char *argv[]){ std::cout << "Hello world!"; }, whereas in scripting languages it would be something along the line of print("Hello world!") or print "Hello world!".

However, Java actually has some ridiculously overly verbose classes and functions. See for example InternalFrameInternalFrameTitlePanelInternalFrameT itlePanelMaximizeButtonPainter (http://javadoc.bugaco.com/com/sun/java/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTi tlePaneMaximizeButtonPainter.html). Yes, this is part of JDK. Also, you shold note that the Java programming convention recommends no more than 80 characters per line. InternalFrameInternalFrameyaddayadda is 78 characters long.

Xercies
12-10-2012, 01:16 PM
I've been slowly learning Python at the moment and slowly getting used to it and actually liking it, I might try a Unity project since UDK seems to have pinged me back. I do want to learn a lot more programming because it open that side of the brain where your like oh i can do so many wonderful things with this.

Berzee
12-10-2012, 01:16 PM
I know hows to program. I got a degree in it once!
Of course long before that I was using the trigger system in the Age of Kings scenario editor, which is basically the same thing.

Danny252
12-10-2012, 01:21 PM
Astrophysics student, and I've worked with Java/C++/C/Fortran/IDL/Assembly.

I'm currently snoring my way through the C course I have to take (3 weeks in and we've just discovered loops!), and have a project working in Assembly to see if we can do faster signal processing for a bit of the LIGO detector - well, that's how we've put it down; it's really just an excuse for me and my supervisor to learn Assembly and piss about with it for 8 weeks. The fact I know more than he does probably isn't a good sign... Oh well, at least I now appreciate why other languages do things so backwards some of the time (e.g. "why can I only return one value from a function without using pointers?")

apricotsoup
12-10-2012, 01:26 PM
I work with programmers, but no. Did some java back in the day but I'm fully on the art and mechanics side of things nowadays.

Wunce
12-10-2012, 01:28 PM
Hopefully I'll get some time over this summer to have another crack at coding a game, which would be my 5th attempt (C++). Last time it was the netcode which fell apart, but you get a little better every time.

I don't know about anyone else, but I far prefer building and tweaking games to playing them. Although that may be because it lets me incorporate my other passion, mathematics.

riadsala
12-10-2012, 01:34 PM
but you get a little better every time.

Very true! I've learnt a lot by working through lots of aborted attempts at creating a game. I make a point of trying to do the "hard" parts first, to try and maximse the amount of stuff I get to learn before my interest in the project starts to decrease.

Stevo
12-10-2012, 01:53 PM
Yeah some Java methods are just incredibly verbose to the point where you want to bash your head against the wall repeatedly to make sense of them, sure even declaring some sort of file reader would make most peoples heads turn to mush. But I still go back to it just for the extensive libraries that tend to fix these problems.

victory
12-10-2012, 02:03 PM
While I appreciate Linus greatly, his arguments against C++ are basically "stupid people code C++ and because of that C++ is a bad language". C is a powerful language obviously, but the larger the projects get, the harder the codebase becomes to manage. And that is to say that C is filled with all kinds of security holes by design (null-terminated char arrays, scanf() etc). C++'s implicit behaviors are mainly a result of holding the backwards-compatibility with C, though I do agree that having no specified order of operators (meaning "i + a * b" being unspecified behavior!) is a big sack of stupidity."i + a * b" is not UB in C or C++. Who or what are you agreeing with?

Kaira-
12-10-2012, 02:11 PM
"i + a * b" is not UB in C or C++. Who or what are you agreeing with?

The C++ programming language says: "The order of operations of subexpressions within an expression is undefined. In particular, you cannot assume that the expression is evaluated left to right."

It is undefined behavior, however it should guarantee a correct output. Also, consider the following example:

i = 5;
i = ++i + ++i;

What is the output when we print i?

In C/C++ it is 14. In Java/C# it's 13. If you are interested about this, I've made a blog post about it.
http://jaigd-blog.blogspot.fi/2012/08/curious-short-look-into-compilers.html

Voon
12-10-2012, 02:15 PM
*sigh* I fucking wish. I want to learn eventually this shit and I have some ideas for it.

Rauten
12-10-2012, 02:16 PM
Took a few Java and C# classes back in the day, but since I've never used it I've pretty much forgotten all about it.

Also, I'm with Mohorovicic: Fuck Java.

OrangyTang
12-10-2012, 02:22 PM
This is what Linus Torvalds says about C and C++:

http://article.gmane.org/gmane.comp.version-control.git/57918
While Linus is a smart guy, it's worth thinking about the context he works in and is making those comments. He's a very, very low-level systems guy, writing OS components, drivers, etc. and generally talking to hardware on the lowest level possible. He's also coming from the angle of *huge* projects involving many people with greatly varying amounts of knowledge and specialisation spread across the globe. Given that it's not surprising he favours C which is somewhat more WYSIWYG in terms of code than C++ where you can (accidentally or deliberately) hide all sorts of stuff away out of immediate sight.

And don't forget that when he aims for cross-platform, he really means it. Lots of obscure hardware platforms have decent C compilers but no C++ compiler available (or, the C++ compiler is quirky or broken in weird ways).

victory
12-10-2012, 02:36 PM
...and don't forget iphone. They abandoned C++ for Objective C. "Basic" C is simpler and therefore easier to avoid bugs with, whereas C++ has many implicit behaviors and quirks which surprise even experienced programmers.
Nope. It is much harder to avoid bugs with C than it is with C++. Most major C++ features are directly useful for eliminating or reducing some class of bugs. You can write much more readable, self-documenting, obviously correct code than you can with C, and catch errors earlier instead of having stuff silently fail at run time.

I would even say C++ is the better introductory programming language of the two, because it doesn't require you to understand manual memory management before being able to make non-trivial programs. Still very bad and arcane language for a beginner of course.

kstress71
12-10-2012, 02:43 PM
Java's "Hello World" seems so bloated because of you need to declare a class in which the main-function resides. In C++ the same would be int main(int argc, char *argv[]){ std::cout << "Hello world!"; }, whereas in scripting languages it would be something along the line of print("Hello world!") or print "Hello world!".

However, Java actually has some ridiculously overly verbose classes and functions. See for example InternalFrameInternalFrameTitlePanelInternalFrameT itlePanelMaximizeButtonPainter (http://javadoc.bugaco.com/com/sun/java/swing/plaf/nimbus/InternalFrameInternalFrameTitlePaneInternalFrameTi tlePaneMaximizeButtonPainter.html). Yes, this is part of JDK. Also, you shold note that the Java programming convention recommends no more than 80 characters per line. InternalFrameInternalFrameyaddayadda is 78 characters long.

I code primarily in C# so when I took time to learn some Java recently, the syntactical similarities flattened the learning curve a bit. Then I dug a bit deeper and found what everyone else is saying here about the bloated and verbose nature of Java. I found it to be far more trouble than it's worth, given that there is no performance value (actually just the opposite). Of course, if I continue to work on anything Android-related, I'll be stuck with it...

victory
12-10-2012, 03:44 PM
The C++ programming language says: "The order of operations of subexpressions within an expression is undefined. In particular, you cannot assume that the expression is evaluated left to right."

It is undefined behavior, however it should guarantee a correct output.You are misusing terms. The exact result of "i = ++i + ++i" depends on behavior the standard doesn't specify, so it is unspecified, but this is not always a problem. I have written correct code which operated on unspecified values. Undefined behavior is a totally different matter; a valid C++ compiler is allowed to generate anything it wants for the entire program if it hits UB. "i + a * b" is neither unspecified nor undefined (assuming sane + and *).

mrpier
12-10-2012, 05:15 PM
MSc. in Computer science, started working as a programmer, mostly doing work in Python. Now I'm 99% on sys-admin duties with some light scripting on the side (shell-scripts, python).

Hensler
12-10-2012, 05:45 PM
*sigh* I fucking wish. I want to learn eventually this shit and I have some ideas for it.

http://www.codecademy.com/ (http://www.codecademy.com/#!/exercises/0)

This is the site where I send everyone who comes to me and wants to know how to program or is thinking about getting into it. It's basic, but will give you some interactive introductions to several different languages and see what the realities of a programming job are all about.

Dariune
12-10-2012, 08:11 PM
Im a C# .NET MVC3 & WebForms web dev. Not hugely experienced. Maybe 3 years commercially and another 2 years at home.

I really enjoy it when it is going well and want to hurl myself out of a window when it's not lol.

fuzzy logic
12-10-2012, 08:23 PM
In High School, I "taught" myself the basic language the TI-83 graphing calculator used by reading other programs' code to see how they did things. I used While loops without knowing how they worked. My magnum opus was a Black Jack game that both saved a high score and the name of the high scorer. That semester, some kid I sort of knew in my Physics class borrowed my calculator almost every day to play it.

So, essentially, I am a published video game coder person.

caljohnston
12-10-2012, 08:41 PM
I've been writing Haskell for a decade. I suppose that's why I never became a professional programmer; once you understand Haskell all other languages seem hideous.

victory
12-10-2012, 08:58 PM
I've been writing Haskell for a decade. I suppose that's why I never became a professional programmer; once you understand Haskell all other languages seem hideous.I'm curious about what you do, because I would think 99 out of 100 people who have written Haskell for a decade have been paid for programming at some point in their careers.

Scumbag
12-10-2012, 09:26 PM
I usually learn some basic things in C++, make a bunch of really buggy text adventures for the lulz, then remember I have more pressing work to attend to (like paid work, or playing Dark Souls)

Sakkura
12-10-2012, 10:23 PM
http://www.codecademy.com/ (http://www.codecademy.com/#!/exercises/0)

This is the site where I send everyone who comes to me and wants to know how to program or is thinking about getting into it. It's basic, but will give you some interactive introductions to several different languages and see what the realities of a programming job are all about.
Is it only BASIC? :p

c-Row
12-10-2012, 10:28 PM
I feel sorry for you.

It gets the job done, and I don't see any obvious disadvantages compared to C#/C++ for what we need it for.

Batolemaeus
13-10-2012, 08:08 AM
I guess I'd call myself a pragmatic programmer. I'm mostly on the sysadmin-y side, so I know myself around some code to do things like "fetch log files from A,B,C over the network, delete old ones, reorder them so w3perl doesn't choke on them, do this and that". I can read code in most languages to debug a problem and if it is simple, usually fix them too. I mostly encounter java, perl, python and of course shell scripts. I wrote a market crawler in javascript for eve online that was running in the ingame-browser and I wrote a small program (which I never released) for Wurm Online that allows me to parse and visualize output from a spell that prints out distances and rough direction of creatures in range.

I also know my way around MSIcode. *shudders*

Voon
13-10-2012, 10:08 AM
http://www.codecademy.com/ (http://www.codecademy.com/#!/exercises/0)

This is the site where I send everyone who comes to me and wants to know how to program or is thinking about getting into it. It's basic, but will give you some interactive introductions to several different languages and see what the realities of a programming job are all about.

Thanks

But which program language is best for beginners, amyway? I'm not looking for something like Python but is C# easier or at least more managable than C++?

Felisc
13-10-2012, 12:10 PM
I'll just quickly say that everyone of you impresses me. From the outside programming looks like black magic that only men with long beards can understand. thanks for the "codeacademy" link by the way, looks interesting.
Yep, really, all of you = impressive.
(i'm an sound editor, so placing colourful blocks on a timeline and pointing mics at things that go "twang" is what i do).

pakoito
13-10-2012, 01:29 PM
Thanks

But which program language is best for beginners, amyway? I'm not looking for something like Python but is C# easier or at least more managable than C++?

C# and C++ are supposed to cover different scopes or problems.

C# is great for business stuff and database, despite having a couple of videogame bindings. Out of the box has pretty much everything ready plus some programming goodies.

C++ is a black stallion on steroids, he's wild, he's powerful, and if you can tame him he'll take you anywhere...after a rough ride.

Now, about learning. Starting with Pascal/C teaches you how programming and computers really work behind the scenes, then you can easily jump to any other language. If you're not interested in efficiency but learning and getting shit done, Java/C# is probably the middle ground option. If you start with Python, everything is sooooo given to you that you won't understand most programmatic principles like pointers, type casting or structures.

C++ is a bad starting option because you have to learn all the inconveniences from C with memory management plus the quirks of Object Oriented Programming.

Javascript, Ruby and PHP I don't know, so I wouldn't know where to classify them.

EDIT: This is important too and it's not covered by most learning books/courses. Most or all languages come barebones, for every one of them after learning how they work you will have to learn how to use libraries (~tools) to do more specific tasks, because you're supposed not to reinvent the wheel. Networking, game graphics, file handling...you can either code long programmatic self-made solutions, or import some convenient external libraries.

EDIT2: Continuing edit 1, you have to know the difference between learning a language and learning how to code. Algorithmics is the subject that covers learning "problem-solving" in any language, and there are courses for it. Programming courses in X language usually cover just the basics on grammar and quirks for said language, but rarely those "problem-solving" skills.

Bobtree
13-10-2012, 04:39 PM
C++ was my first real language, and I gave it a good solid ten years or so, but as I matured and learned CS and explored other languages I grew to despise it and haven't used it much in the last decade. Digital Mars D2 might replace it for me soon.

Lua is the language I love. It's extremely popular in games, and a good place to start for modding. Highly recommended.

Forceflow
13-10-2012, 04:53 PM
Hi there. I'm proficient in C++, Java and Python, and nowadays I mainly use it to work on my PhD in Computer Graphics (topic: Ray casting into Voxel grids. Ooooooh yeah.) http://www.forceflow.be/category/phd/

My advice: start with a high-level object-oriented language like Java or Python. I learned Java using the BlueJ IDE and book: http://www.bluej.org/. Both languages introduce the core concepts of abstraction and interfacing, and will get you very, very far. Both Java and Python have their applications in web programming, desktop programming, mobile platforms, ... Using the core concepts introduced, you'll also get launched in any scripting language (Lua, ...) required for game-related scripting.

C/C++ is a whole different animal. If you're serious about getting into core programming, where performance, memory utilization and optimization matters, it's still the best way to go, but I wouldn't advise it as a first language, since the time you'll spend before you get some return value is pretty long. Also, it's a language with so much history and so many details ... I've been writing it off/on for 5 years, and I'm still learning stuff that makes my code from last year look horribly stupid - even if it worked fine. If you want to get into real-time graphics though (like I very much wanted to do with my studies and PhD), it's a requirement.

And to all those people ooh-ing and aah-ing at programming: it really, really, really isn't that hard to do or grasp. The first 90% it easy, the last 10% you'll spend your life on perfecting. That being said, some basic math and logic education couln't hurt.

Kaira-
13-10-2012, 06:46 PM
For those who are interested to see how a workflow might be when working on a gamejam, I've streamed/uploaded a few videos to my twitch channel.

This is probably the one with most programming since it's from the very beginning. Music starts around 1 hour mark. I've also uploaded a few other videos, and if I can overcome my bad headache and flu I will continue tomorrow. :)
http://www.twitch.tv/kaira_/b/335335266

ColOfNature
13-10-2012, 07:24 PM
I started a Computer Science degree 18 years (ye gods!) ago, but gradually drifted into a combined studies affair (they were a lot more common back then) when I discovered I much preferred noodling around to actually doing anything approaching work. I still noodle around, mostly bash scripting and Python, with some Go and Perl from time to time. I still prefer to avoid anything approaching work.

aoanla
13-10-2012, 07:40 PM
Thanks

But which program language is best for beginners, amyway? I'm not looking for something like Python but is C# easier or at least more managable than C++?

You've already had a full answer to this, but I just wanted to emphasise that there's two different things here:

1) What you want to learn the language for

2) How "easy" the language is.

C# is a nicer language to learn than C++. (Actually, most languages are nicer to learn than C++, because it's basically the kitchen-sink of "medium-level" languages - C with everything bolted on.) C# might not be the best language for what you want to program, however.

C is still a surprisingly good language to pick up "low level programming" skills with, but the lack of a lot of high-level computer science concepts built in (things like container types - linked lists, heaps etc) means that it gives you a lot of low-level programming practice, but not much practice at actual "computer science" planning of things.

Python is kind of at the opposite end - you see no low level nuts-and-bolts at all, and it gives you a lot of the high level stuff for free. Plus, python has an interpreter - essentially, an interface where you can type a line of code and have it instantly execute - unlike C, which is almost always compiled (so you have to write all your code and then turn it into a program which runs). Having the interpreter makes it a lot easier to "play around" and make small mistakes quickly.

On that line of thinking, although it's new, Google Go should be a good language to pick up modern programming language paradigms with - there's a simple interpreter on the website, which lets you play around with things; it's almost as low level as C, while providing some modern concepts (concurrency for parallel programming, interface based classes). Of course, there's almost no tutorials to help you learn it.

If you want to make games, I'd be tempted to get Unity, and start the C# based tutorials for it.

JamesG
13-10-2012, 08:07 PM
Molecular Biologist turned software developer here. I still feel a bit like an imposter, and get out of my depth when ever the CompSci's start talking shop, but really enjoying the career change. Granted, it helps that my day job mainly involves working with Ruby, which as Pakoito says, provides a hell of a lot out the box.

As to what I learn next, I'm torn. Java probably makes the most sense, as I'd quite like to dabble in Android development, and the shift to using Jruby at work means it'll also benefit the day job. But then I'm also torn between C++ (Closer to the metal than anything I've touched before) or C# (probably in the context of Unity.)

Danny252
13-10-2012, 09:05 PM
What has surprised me in this thread is the amount of people talking about C# - what with it being .Net and hence not really portable (okay, you can argue Mono exists in Linux, but it's implementation tends to be sketchy), I'd've thought it would be fairly unpopular compared to things you can just move around (C/C++ compilers are installed on just about any Linux system and recompiling is easy, and Java... is Java). Or am I just biased by being from a fairly science-y (and hence unix-y) background, with Linux being somewhat unloved even among programmers?

Splynter
13-10-2012, 09:09 PM
I'll add my name to the list of programmers here. I've used C, C++, Java, Pascal (learned on this one), some Actionscript, Matlab and SPARC Assembly (with a sprinkle of Prolog in there). Most programming I've done lately is in Java, but I have to say some of the most fun I've had was with Assembly. Don't learn with it though, you'll hate your life.

gwathdring
13-10-2012, 09:12 PM
Astrophysics student, and I've worked with Java/C++/C/Fortran/IDL/Assembly.

I'm currently snoring my way through the C course I have to take (3 weeks in and we've just discovered loops!), and have a project working in Assembly to see if we can do faster signal processing for a bit of the LIGO detector - well, that's how we've put it down; it's really just an excuse for me and my supervisor to learn Assembly and piss about with it for 8 weeks. The fact I know more than he does probably isn't a good sign... Oh well, at least I now appreciate why other languages do things so backwards some of the time (e.g. "why can I only return one value from a function without using pointers?")

Oh yeah ... I forgot about IDL. I haven't sued it in a while, but I learned it through Astronomy as well. It handles matrices nicely and quickly and has a large body of astronomy-based functions for users to draw upon without needing to start from scratch.

aoanla
13-10-2012, 09:18 PM
What has surprised me in this thread is the amount of people talking about C# - what with it being .Net and hence not really portable (okay, you can argue Mono exists in Linux, but it's implementation tends to be sketchy), I'd've thought it would be fairly unpopular compared to things you can just move around (C/C++ compilers are installed on just about any Linux system and recompiling is easy, and Java... is Java). Or am I just biased by being from a fairly science-y (and hence unix-y) background, with Linux being somewhat unloved even among programmers?

As someone from a Sciencey background, I suspect you're right. I'd consider Fortran more "useful" than C# from a sciency context, but it does seem to get a lot of love (and from what I've seen of it, the language itself is actually nicer than Java, let alone C++).

gwathdring
13-10-2012, 09:47 PM
One thing that bothers me about a lot of the "fuck java" comments that pop up when languages are discussed (here, less so) is that Java is most often compared ... improperly to other languages. Java has more than it's share of issues, but it's primary advantage is something rather unusual: it is a compiled language for a virtual machine that runs on an interpretor.

To be fair, I don't know exactly what I'm getting at with that ... I just feel like most of Java's bad rap ispersonal. Which is weird, since it's a programming language not an uncomfortable fellow employee in which case holding grudges against Java's personality might have made a little more sense.

Python is a much more apt comparison for Java than any low-level language since Python also has a virtual machine. I guess I'd take object-oriented Python over Java ... and I guess if I dig deep enough into Java I'll run across some of the specific things folks have been more (seemingly) justifiably complaining about. But it really has it's own mission as a language and I dislike the sensation I get that half or more of the people who complain about Java in the field do it sort of as an automatic, learned response and work backwards to figure out why it's bad after they've said it is. (If you gave specific reasons, and didn't do what I describe here, I'm not talking about you--just with you).

TechnicalBen
13-10-2012, 10:53 PM
Ok, slightly Off Topic, because I don't program... but...
So, I decided to try again. After failing to grasp classes/methods properly in Java (I understand the idea, just failed with the syntax and certain limits), I'm going to try Python.

I've noticed Python is formatted slightly simpler, and passes some lines of code and commands a bit more intuitively (I can initiate a variable by just giving it a value). But as I've just started, I'm yet to see if I fail at passing data between parts of my program again. :-/

Thanks for the advice and details in this thread. :)

gwathdring
13-10-2012, 11:16 PM
Ok, slightly Off Topic, because I don't program... but...
So, I decided to try again. After failing to grasp classes/methods properly in Java (I understand the idea, just failed with the syntax and certain limits), I'm going to try Python.

I've noticed Python is formatted slightly simpler, and passes some lines of code and commands a bit more intuitively (I can initiate a variable by just giving it a value). But as I've just started, I'm yet to see if I fail at passing data between parts of my program again. :-/

Thanks for the advice and details in this thread. :)

I've heard Python is pretty damn awesome. I know a number of C/C++ coders who took python so they can code more quickly on projects where the advantages of low-level language aren't necessary. The flip side is that Python will help you learn how to design programs by getting a lot of the syntax out of your way, but you'll have a lot more ground to cover if you try to learn other languages after starting Python than if you go the other way.

That said, it's a language with decent portability and an incredible flexibility. Have fun. :)

Danny252
13-10-2012, 11:23 PM
Oh yeah ... I forgot about IDL. I haven't sued it in a while, but I learned it through Astronomy as well. It handles matrices nicely and quickly and has a large body of astronomy-based functions for users to draw upon without needing to start from scratch.

Yeah, the fact you can just "do things" in it makes it really nice to work with.

Of course, it's slow as buggery when you try and do anything complicated or with lots of data (all interpreted at runtime). Not that Astronomy would ever need any of those - we'd never do anything like trying to load 30 4kx2k FITS files to calculate a master flat... I definitely didn't go to make a cup of tea every time the bit of IDL code I was given had to deal with that.

(Though to be fair, the fact that my machine had all of 1GB of RAM may have also been a factor...)


but you'll have a lot more ground to cover if you try to learn other languages after starting Python than if you go the other way.

Your C/Java/... code will always be perfectly indented, though!

pakoito
13-10-2012, 11:54 PM
Your C/Java/... code will always be perfectly indented, though!Define "perfectly indented". Don't forget to include where to place { before code blocks and how to correctly indent anonymous nested classes in Java.

Megagun
14-10-2012, 12:08 AM
My 'main' languages are Java, Python, C# and JavaScript, and honestly, each language has massive pros and cons that make it suitable for a given task.

(warning: slightly incoherent rambling ahead)

Personally, I see Python as a cross-platform shell scripting language, JavaScript as a language used for small hobby-projects with a high 'show off' value (easy to deploy, easy to get people to try out your stuff), Java as a cross-platform fast 'serious business' language, and C# as a fast 'serious business' language with nice syntax and language features.

Python is definitively a great language for small shell scripts and to learn programming, but once you start to work on a large project with multiple people, it starts losing most of its advantages: code has to be documented thoroughly (fuck that dynamic typing) because reading code you're unfamiliar with is a huge pain in Python. Errors aren't detected at compile-time (obviously), which means that you have to test critical parts of your programs thoroughly, and it's very easy to make mistakes. That's really one of the things I hate most about Python: I make stupid tiny mistakes all the time which I then have to fix and think about, when I'd much rather think about the big problems I need to solve. Furthermore, I haven't found a single IDE yet for Python that I'm truly comfortable with, which is also one of the big reasons why I dislike the language.

JavaScript has many of the same advantages and disadvantages as Python has, but I tend to find it a bit easier to work with due to Google Chrome's developer tools, and due to JavaScript often being mixed with another language (e.g. C# or Java) which can make quite some difference. When programming games using JavaScript and HTML/CSS, the GUI can be built completely using HTML/CSS, which I really love, especially when libraries like Twitter Bootstrap and Mustache/Handlebars are involved.

Now, Java and C# are mostly the same language in that they solve the same problems and work roughly the same. The main differences between Java and C# are that Java is old and more verbose, whereas C# has newer language features yet is (mostly) constrained to a single operating system (Windows).

The big difference between Java/C# and JavaScript/Python is that you need an IDE for Java and C#. If you're writing Java or C# code in a barebones text editor like Notepad of Sublime Text 2, you're gonna have a bad time, because these languages are verbose as hell and a huge pain in the ass to write by hand. However, as soon as you use a proper IDE (Java: Netbeans (I hate Eclipse); C#: Visual Studio), you reach coding nirvana.

The verbosity and static nature of Java and C# mean that the IDE can understand your code and assist you where needed. Autocompletion for dynamically typed and purely interpreted (no compile step) languages such as JavaScript and Python is awful compared to the autocompletion that a statically typed & compiled language can give you, and the autocompletion (to me) makes programming in these verbose languages a lot faster than programming in those verbose-free language.

Let's say I'm in the following situation: for a large business application, I need to figure out the absolute file path for a file which I've already obtained a handle to (e.g. it's stored in the 'file' variable).

In Python, I'd have to read the documentation, fiddle with a console, or hope that my text-editor/IDE has managed to remember the type of this 'file' variable and is thus capable of giving me a list of functions I can make use of.

In Java with Netbeans, I'd do the following:
String path = file.<CONTROL + SPACE>
http://i.imgur.com/3PvqR.png

You might wonder why that's important. Personally, I find that 75% of programming is converting between one (possibly complex) type to another, or extracting some data from one type and then doing some basic manipulations with it. When you have a proper IDE to support you, doing that kind of work becomes insanely easy. You declare the type you want, you type the name of the variable from which you need data, hit the magic autocomplete button, and take a look at the possibilities your IDE gives you; if you're lucky the answer should be staring you into the face. If you're not lucky, you're going to have to do some exploring or maybe read some documentation.

..and that's why I love Java with Netbeans for complex programs. Too bad it's not C#, though: it doesn't have LINQ, the var keyword, or lambda expressions. Also, too bad Visual Studio's intellisense isn't nearly as awesome as Netbeans' autocomplete.

ambing1
14-10-2012, 12:34 AM
I'm a programmer. I always thought making games would be my dream job, but it turns out I just really like playing games, so now I make non-game apps and do general IT/help desk stuff. I've considered looking for more of a design role or even level design, but have never really pursued it.

I think it's a dream job for many kids loving video games when growing up. Reality sets in when the real grind in learning how to program and to survive the very competitive gaming workspace shows in the picture.

pakoito
14-10-2012, 02:26 AM
Java: Netbeans (I hate Eclipse)I call shenanigans. Eclipse is Java's best companion: a big bloated memory hog but with so many perks you cannot live without. Autocompletion is just the tip of the iceberg, autosnippets rocket productivity times a 1000, personalized autoindenting, conversion scripts, dynamic font color...

mickygor
14-10-2012, 04:32 AM
What has surprised me in this thread is the amount of people talking about C# - what with it being .Net and hence not really portable (okay, you can argue Mono exists in Linux, but it's implementation tends to be sketchy), I'd've thought it would be fairly unpopular compared to things you can just move around (C/C++ compilers are installed on just about any Linux system and recompiling is easy, and Java... is Java). Or am I just biased by being from a fairly science-y (and hence unix-y) background, with Linux being somewhat unloved even among programmers?

I'm not so sure linux is unloved amongst programmers. My motivation for coding has always been a financial one, making use of my love of languages in the way I'm most likely to strike it rich (there's only so much you can do in teaching or translation). I mostly work in ASM+C and PHP, the former for PIC based robotics work and home automation systems, and the latter for web development. My environment's always been unix based and rarely involves a GUI for the ASM+C stuff. However, I've recently been subcontracted out to a Microsoft partnered company and I must say, learning C# with them has been the most fun I've had since I began coding. The language is delightful, and I say this as someone who hated learning Java with a passion. I can't quite place my finger on why two languages so similar can have such polar opposite reactions from me. Perhaps it's the virtual environment, I have a similar loathing of Python.

EDIT: Just realised most of that didn't address the point. Most of the people I know almost exclusively use linux. The web developers have windows to run the industry standard stuff without the horrific expenditure on Apple hardware, but it's always with cygwin for the cli support of unix commands and ssh'd into the linux based development server. There's not an air of disliking of windows, my hardcore csci friends aside, but unix based systems are the primary OS.

Rotekian
14-10-2012, 06:08 AM
I'm a CS grad, I've also done some commercial work as a web developer. My main languages are Java and C# although I've played around with a whole load of others. Both languages require a decent IDE to use.

I learned to program playing around with programming games. Moving robots in arenas with an Assembly like language for the most part. I'm always wishing there were more of those kind of games around these days.

victory
14-10-2012, 12:28 PM
The big difference between Java/C# and JavaScript/Python is that you need an IDE for Java and C#. If you're writing Java or C# code in a barebones text editor like Notepad of Sublime Text 2, you're gonna have a bad time, because these languages are verbose as hell and a huge pain in the ass to write by hand. However, as soon as you use a proper IDE (Java: Netbeans (I hate Eclipse); C#: Visual Studio), you reach coding nirvana.

The verbosity and static nature of Java and C# mean that the IDE can understand your code and assist you where needed. Autocompletion for dynamically typed and purely interpreted (no compile step) languages such as JavaScript and Python is awful compared to the autocompletion that a statically typed & compiled language can give you, and the autocompletion (to me) makes programming in these verbose languages a lot faster than programming in those verbose-free language.You don't have to accept overly verbose and poorly readable code to get type safety. Depending on your environment you could use Haskell, F#, Scala, etc. Even C++ (!) occasionally manages to be more terse and more readable than Java, which says a lot about Java.

A clunky and weak language necessitates larger libraries (because it's too hard to assemble the thing you want on the fly from component parts, it has to be offered whole) and that in turn causes you to need more autocomplete. And the verbosity creates need for refactoring, etc. functionality, all of which increase the cognitive load and serve to tie you to a specific substandard set of tools.

"Barebones" text editor or IDE is also a false choice. Good text editors are anything but "barebones", and handily beat IDE-bundled editors especially in language-agnostic tasks. When you add plugins there's very little they can't do, including autocomplete. For example, see here (http://vim.spf13.com/) and here (http://ctags.sourceforge.net/).

My impression of Java specifically is that it is designed to keep bad-to-mediocre programmers from doing damage, and other than inertia, there's little reason to use it.

Danny252
14-10-2012, 12:52 PM
I'm not so sure linux is unloved amongst programmers. My motivation for coding has always been a financial one, making use of my love of languages in the way I'm most likely to strike it rich (there's only so much you can do in teaching or translation). I mostly work in ASM+C and PHP, the former for PIC based robotics work and home automation systems, and the latter for web development. My environment's always been unix based and rarely involves a GUI for the ASM+C stuff. However, I've recently been subcontracted out to a Microsoft partnered company and I must say, learning C# with them has been the most fun I've had since I began coding. The language is delightful, and I say this as someone who hated learning Java with a passion. I can't quite place my finger on why two languages so similar can have such polar opposite reactions from me. Perhaps it's the virtual environment, I have a similar loathing of Python.

EDIT: Just realised most of that didn't address the point. Most of the people I know almost exclusively use linux. The web developers have windows to run the industry standard stuff without the horrific expenditure on Apple hardware, but it's always with cygwin for the cli support of unix commands and ssh'd into the linux based development server. There's not an air of disliking of windows, my hardcore csci friends aside, but unix based systems are the primary OS.

I think you kind of hinted at it, without saying it outright - the programmer-y chaps like Linux, but if the customer/contractor wants it done a certain way (and the vast majority of those will be wanting windows), then you'll go along with it!

TechnicalBen
14-10-2012, 03:38 PM
I've heard Python is pretty damn awesome. I know a number of C/C++ coders who took python so they can code more quickly on projects where the advantages of low-level language aren't necessary. The flip side is that Python will help you learn how to design programs by getting a lot of the syntax out of your way, but you'll have a lot more ground to cover if you try to learn other languages after starting Python than if you go the other way.

That said, it's a language with decent portability and an incredible flexibility. Have fun. :)

Yep. If I can learn how to turn a simple algorithm (I don't know complex stuff like gravity and velocity calculations :P ) into a working program in python should theoretically be able to do it in 90% of other coding languages. I'd just change the syntax and a couple of rule reminders or layout changes.

The little thing that helps too is IDLE. I can check a line of code or the details to a command in one window (IDLE) while coding a whole program in Eclipse or notepad. So I don't have to run the program every time I want to check or learn something.

pakoito
14-10-2012, 05:45 PM
Yep. If I can learn how to turn a simple algorithm (I don't know complex stuff like gravity and velocity calculations :P ) into a working program in python should theoretically be able to do it in 90% of other coding languages. I'd just change the syntax and a couple of rule reminders or layout changes.Sorry but this is wishful thinking. Python does most of the hard work for you with memory and data structures. It's not "just a syntax change" when you jump to C/C++ or other strongly typed languages.

Batolemaeus
14-10-2012, 08:46 PM
I think you kind of hinted at it, without saying it outright - the programmer-y chaps like Linux, but if the customer/contractor wants it done a certain way (and the vast majority of those will be wanting windows), then you'll go along with it!

I think it's a lot about pragmatism. You learn to use the right tool for the job, and how some tools have different applications. I hate being just the Windows Guy, oder the Linux Guy. In the end you miss out if you pigeonhole yourself in.

So I have a mix of platform independent and platform specific languages I am somewhat capable in, and a mix of platforms I can use. Workstation running Windows, tons of vms, router running bsd, esx server hosting a wide range of stuff.

Koobazaur
15-10-2012, 12:41 AM
Been coding for years now, both as a hobby, as a game programmer on two published titles, and as a web developer, so I know my fair share of languages, libraries and APIs. But I've long learned a good programmer isn't one who knows a lot of languages or libraries; a good programmer is one who can learn new languages or libraries quickly and efficiently, and pick the best ones to solve given problem. It's more about general logical/analytical skills, combined with ability to efficiently skim (not read!) technical documentations to find exactly the information you need.

Btw, if anyone's curios about my gaming projects, have a lookie here: http://www.jakeski.com/programmer.php



What has surprised me in this thread is the amount of people talking about C# - what with it being .Net and hence not really portable ... I'd've thought it would be fairly unpopular compared to things you can just move around

Different tools for different jobs. I code my game in C++, but I use C# for small tasks/scripts/tools. Lots of businesses use C#/VB in their own tools cause they know it will only be used by their internal team, on their windows boxes, so who cares about linux portability.

(I actually wish I could've gone with C# on my main game, but there are too many 3rd party libs that are C++ only, like SFML, Bullet, Ogre, etc.)

Also, as far as Web Development goes, in my opinion ASP.Net > PHP all the way; so another good use for C#.



Now, Java and C# are mostly the same language in that they solve the same problems and work roughly the same. The main differences between Java and C# are that Java is old and more verbose, whereas C# has newer language features yet is (mostly) constrained to a single operating system (Windows).


... snip snip snip ...

Totally agree on your Java and C# assessment, and the difference a good IDE makes. People bag on MS as a company, but the way they treat their developers, with their tools (VS, PIX, etc.), Libraries (.NEt, DirectX, XAudio, etc.) and even documentations (MSDN) are absolutely fabulous. Developing for windows/x360 really is so, so much nicer than any other platform...

Voon
15-10-2012, 09:30 AM
Woah. I just learned a bit of JavaScript from Codeacademy and I think I got a hang of it! A bit. It's not as hard as I thought, so far

TechnicalBen
15-10-2012, 09:44 AM
Sorry but this is wishful thinking. Python does most of the hard work for you with memory and data structures. It's not "just a syntax change" when you jump to C/C++ or other strongly typed languages.

Oh, I know that. But my hurdle to learning is not knowing I have to do it, I can learn how to do it, but the syntax involved. :P
So yes, moving to C I need to do my own rubbish collection (?), memory allocation (?) and stuff. But if I know how to actually program in general, it will be much easier.

(I added question marks, because I've read general stuff on C, not ever looked at programming it)

frightlever
15-10-2012, 11:40 AM
I'm in my third year of a degree, majoring in Software engineering. Done abit of Javascript, COBOL, Python, and Java. And I'd like to second the motion to fuck java, and amend that we also fuck COBOL.


Good grief. I was being taught COBOL (and FORTH) at Uni. around a quarter century ago.

I haven't programmed anything of note since those days but I do the tutorials over at codecademy from time to time.

OrangyTang
15-10-2012, 11:57 AM
..and that's why I love Java with Netbeans for complex programs. Too bad it's not C#, though: it doesn't have LINQ, the var keyword, or lambda expressions. Also, too bad Visual Studio's intellisense isn't nearly as awesome as Netbeans' autocomplete.
I believe var and lambda expressions are planned for Java 8.

byteCrunch
15-10-2012, 01:04 PM
I'll just quickly say that everyone of you impresses me. From the outside programming looks like black magic that only men with long beards can understand. thanks for the "codeacademy" link by the way, looks interesting.
Yep, really, all of you = impressive.
(i'm an sound editor, so placing colourful blocks on a timeline and pointing mics at things that go "twang" is what i do).

As a programmer it is very much our fault that programming is perceived as this cryptic black box. It's our exclusive little club that is completely steeped in jargon which instantly repels most new-comers, but removing the theoretical computer science elements it is far more straight forward (at least to start with) then many believe.


I believe var and lambda expressions are planned for Java 8.

Indeed they are. You can already try them in early versions of Java 8.

Rossi
15-10-2012, 01:22 PM
I'm a software developer. Windows based applications for business and local government. I don't use C/C++ but use VB.NET and C# . I've done this for 20 years. I've used C++ in the past (and still do to some extend, creating MFC DLLs for my current app) but I don't see the need to use it for what I do.

I see a lot of people wanting to breaking to C++. I would recommend nailing the fundamentals first and using a higher level language such as VB or C# to get to grips with how things tick. Then move on.

It depends on what you want to acheive, don't use an overly powerful language if you're just going to create desktop apps, theres no need. For those that want to get in to game programming, download Microsoft XNA development platform and Visual Studio Express and take a look at the tutorials.

Start with baby steps other wise you'll just get frustrated. Anyway, raises hand!

b0rsuk
15-10-2012, 01:22 PM
Not enough talk about Lua.

Lua means "moon" in Portuguese. It's a good scripting language, especially good for embedded applications and gameplay scripting - which for many is the most fun part of programming games. This is a forum about computer games, after all.

Here's a list of games utilizing Lua:
Allods Online
Angry Birds
Aquaria
Baldur's Gate
The Battle For Wesnoth
Bet on Soldier: Blood Sport
Blitzkrieg
Blossom
Brave: The Search for Spirit Dancer
Brutal Legend
Buzz!
BZFlag
Civilization V
Company of Heroes
Company of Heroes: Modern Combat
Cortex Command
Crackdown
Crowns of Power
Crysis
Demigod
Digital Combat Simulator
Diner Dash
Driver: San Francisco
Dungeon Crawl Stone Soup (vaults, interface...)
Dungeons
Empire: Total War
Enigma
Escape from Monkey Island
Etherlords
Eufloria
Evil Islands: Curse of the Lost Soul
EXperience112
Fable II
The Fairly OddParents: Shadow Showdown
Far Cry
FlatOut
FlatOut 2
Foldit
Fortress Forever
Freeciv
Freelancer
Garry's Mod
Grim Fandango
The Guild 2
Tom Clancy H.A.W.X.
Headhunter Redemption
Hearts of Iron III
Hedgewars
Heroes of Might and Magic V
Homeworld 2
Hyperspace Delivery Boy!
Impossible Creatures
The Incredibles: When Danger Calls
King's Bounty: The Legend
L. A. Noire
Lego Universe
Linley's Dungeon Crawl
Lock On: Modern Air Combat
Mafia II
Magic: The Gathering - Duels of the Planeswalkers
MDK2
Metaplace
Monopoly Tycoon
Multi Theft Auto
MUSHclient
Napoleon: Total War
Natural Selection 2
Operation Flashpoint: Dragon Rising
Orbiter
Painkiller
PlayStation Home
Project Zomboid
Psychonauts
Puzzle Quest: Challenge of the Warlords
Rail Simulator
RailWorks
Rappelz
Regnum Online
Requiem: Memento Mori
Richard Burns Rally
RigidChips
Roblox
Rolando 2: Quest for the Golden Orchid
Room for PlayStation Portable
ROSE Online
Runes of Magic
S.T.A.L.K.E.R.: Shadow of Chernobyl
Ryzom
Saints Row 2
Serious Sam 3: BFE
Shank
Shank 2
Silent Storm
SimCity 4
Singles: Flirt Up Your Life
Skyland SSR
Sonic Unleashed
SpellForce: The Order of Dawn
SplitApple
Spring (Total Annihilation remake engine)
Star Wars: Battlefront
Star Wars: Battlefront II
Star Wars: Empire at War
Star Wars: Empire at War: Forces of Corruption
Star Wolves
StepMania
Stolen
Stratagus
Supreme Commander
Supreme Commander: Forged Aliance
T-80 Darts
Tales of Pirates
Tap Tap Revenge
There
Toribash
UberSoldier
UFO: Afterlight
UltraStar
Universe at War: Earth Assault
Vegas Tycoon
Vendetta Online
Warhammer 40,000: Dawn of War
Warhammer 40,000: Dawn of War II
Widelands
The Witcher
World of Warcraft
X-Moto
You Are Empty

tomeoftom
15-10-2012, 01:47 PM
Javascript here, but I still have yet to learn about prototyping and how to use it well. Still very much a novice but I really enjoy it (when I can just write). The thing I hate most about web design/development is having to use so many different technologies at once to do anything. I've always got 20+ tabs open with documentation and blog posts, and it sucks that I can't just sit and write code against that lovely black screen - even though the things I'm using usually make life a lot easier (just discovered Jade, and along with Sass life is going to get a lot easier for simple static sites).

Speaking of lovely black screens, can we get three cheers for Sublime Text? The thing's magnificent.

victory
15-10-2012, 03:20 PM
Speaking of lovely black screens, can we get three cheers for Sublime Text? The thing's magnificent.I'd happily switch to one of these new editors with GUI finesse and modern scripting, if only it would embrace modes from the ground up like Vim does. I wouldn't mind re-learning all commands once; the traditional command set isn't perfect and neither are the key choices. But the raw power which command mode makes possible is irreplaceable.

ColOfNature
15-10-2012, 04:49 PM
Here's a list of games utilizing Lua:
...lots of games...

Also Legend of Grimrock (http://www.grimrock.net/modding/scripting-reference/).


Speaking of lovely black screens, can we get three cheers for Sublime Text? The thing's magnificent.
Ooh, that looks nice. [edit] On the other hand, $59 for a personal-use license for a text editor - no matter how shiny it is - is a bit steep.

tomeoftom
15-10-2012, 05:42 PM
victory: It actually has a dedicated mode editing aspect, specifically to recreate that! http://www.sublimetext.com/docs/2/vintage.html

and ColOfNature, it's okay - there's no pressure to buy it (and really minimal nagging) until you're sure it'd be worth it. There's no enforced time limit.

I just can't help singing it's praises, heh.

pakoito
15-10-2012, 06:32 PM
Ooh, that looks nice. [edit] On the other hand, $59 for a personal-use license for a text editor - no matter how shiny it is - is a bit steep.
It's free IIRC.


Sublime Text 2 may be downloaded and evaluated for free, however a license must be purchased for continued use. There is currently no enforced time limit for the evaluation.

victory
15-10-2012, 07:09 PM
victory: It actually has a dedicated mode editing aspect, specifically to recreate that! http://www.sublimetext.com/docs/2/vintage.html
Vi emulation modes are dime a dozen, but this appears to have more features than most, including at least some vim functionality. I'll try it later when I have time. If this mode would happen to actually cover the functionality I use, I might end up buying ST.

That said, when I said "embrace modes from the ground up", I didn't mean more editors emulating vim on top of an engine intended for ho-hum editing and display. I meant I would like to see new editors taking advantage of the brilliant core idea of command combination, using it to power their own editing logic and GUI, and crushing vim. Not just in looking good or accessibility. It's absurd that an editor where many design decisions can be traced to one dude's whims in 1976 is still the strongest one around. We should have much stronger editors now, but we don't, because no one else has taken that idea and ran with it.

Wheelz
15-10-2012, 08:52 PM
Good grief. I was being taught COBOL (and FORTH) at Uni. around a quarter century ago.

I haven't programmed anything of note since those days but I do the tutorials over at codecademy from time to time.

Yeah, it was mostly a self-taught thing. The assignment was "This is a COBOL program, COBOL is out-dated. So, rewrite the entire thing in Python."

I'll also ammend to my list that I know abit of PHP and SQL.

CaptainWaffles
15-10-2012, 09:44 PM
Somehow this thread manages to spawn a both a language comparison and editor sub-discussion without devolving into a complete cluster cabbage, I am impressed.

Been doing this programming business for about 15 years, 10 professionally. Got the standard C and Java basics back in highschool and college, but as fate would have it ended up in web programming. Started with LAMP, dabbled a bit with Ruby and eventually ended up neck deep in Python and hardware APIs. I also do a lot of front-endy stuff in CoffeeScript which takes the good parts of Python and Ruby and compiles into Javascript, which is handy since Javascript can be a bit of a bear to work with at a high level.

I've always wanted to do get into game programming but I have enough programming pet projects that I don't devote enough time to that adding another big one isn't reasonable.

MeltdownInteractiveMedia
15-10-2012, 10:53 PM
I've been programming since I was 10. I'm 35 now :)
Did C++, then moved into websites/software and .NET.

Now I'm a game developer using Unity3D and C#.
Game programming is by far the most fun.

And to the OP, programming skills get blunt very quickly... you need to keep them sharp.

ColOfNature
15-10-2012, 10:58 PM
And to the OP, programming skills get blunt very quickly... you need to keep them sharp.

QFT
Fuck you, 3 characters is a perfectly adequate length for a comment. Get off my case, fascist!

Forceflow
17-10-2012, 02:03 AM
Just remembered another thing which struck me as "cool" for beginning programmers:

You can try out a tutorial of Ruby (which is Python-ish, and has a lot of applications, like web programming, scripting, ...) online here: http://tryruby.org/levels/1/challenges/0

It's cleverly written (for a programming tutorial) and it's just trying and experimenting in your browser. Some people would argue that this is far from programming itself, but I think it teaches the basics pretty well.

I started learning python back in the day using "Dive Into Python". It's available online at http://www.diveintopython.net/

For C++, I basicly leaned on my C experience, but the Accelerated C++ book (http://www.amazon.com/Accelerated-C-Practical-Programming-Example/dp/020170353X) was a great help too. That requires some prior programming knowledge, though.

MoLAoS
17-10-2012, 02:21 AM
Did anyone else get into C++ without ever using a book or even a tutorial? I just googled something if I didn't know what to do. Hasn't really hurt me so far.

Protoman
17-10-2012, 05:41 AM
Did anyone else get into C++ without ever using a book or even a tutorial? I just googled something if I didn't know what to do. Hasn't really hurt me so far.
Generally speaking people who learn to program like this have trouble working with others. It's hard to learn to leave your code understandable for someone else when you don't have any examples of how to do it.

On topic: Currently programming a game (2D dungeon crawler/rhythm hybrid in Unity engine) and a dungeons of dredmor mod (if it counts, since, you know, XML.)
I'm proficient in Java and .net framework languages, and have been programming for ~3 years.

gwathdring
17-10-2012, 05:55 AM
Did anyone else get into C++ without ever using a book or even a tutorial? I just googled something if I didn't know what to do. Hasn't really hurt me so far.

I would try out the C++ Primer if I were you. I like it a lot--even more than the Dietel & Dietel C++ book initially recommended to me (which was decent; I like their C book better). I started out just playing it mostly by ear with a few random websites and some free drafts of the Standard as a guide. The books help me learn a lot more quickly. Also, as mentioned, learning with a good book (or even skimming a book if you've already got a good grasp of the language functionality) is pretty important if you haven't learned in a formal environment. Especially in object-oriented languages that rely heavily on classes, shared libraries and what-not, readable code is essential. Following at least a modicum of standardization is really a part of learning an object-oriented language--and to only slightly less of an extent other types of languages.

If nothing else, having a standard way of writing things will make it easier for me to mess with my own code. I've screwed myself over a bunch of times by figuring "Oh well, I'll know what I meant there later" in order to save time taken up by retro-fitting my code to be more standardized after my "rough draft" of it.

pakoito
17-10-2012, 06:07 PM
Did anyone else get into C++ without ever using a book or even a tutorial? I just googled something if I didn't know what to do. Hasn't really hurt me so far.

You can learn the language, but not algorithmics. Bad example: it's like learning what a screwdriver and a hammer are for, but not knowing what a full constructed bike looks like. Your bikes may be able to go down the street, but you completely skipped 150 years of bikemaking.

mickygor
17-10-2012, 06:23 PM
Did anyone else get into C++ without ever using a book or even a tutorial? I just googled something if I didn't know what to do. Hasn't really hurt me so far.

Yea, my lecturer just assumed knowledge, or rather, the ability to figure out. Was fair enough, we'd all learned/proven knowledge of C in first year. Worked out fine for me, but then it was far from the first language I learned.