Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411273 Posts in 69323 Topics- by 58380 Members - Latest Member: bob1029

March 28, 2024, 03:30:04 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsDeveloperTechnical (Moderator: ThemsAllTook)Learn programming. Where to start? Any mentors out there?
Pages: 1 2 3 [4] 5
Print
Author Topic: Learn programming. Where to start? Any mentors out there?  (Read 6022 times)
Crimsontide
Level 5
*****


View Profile
« Reply #60 on: December 16, 2012, 04:48:04 PM »

C++ is one of the most difficult and obtuse languages to learn.  I've used assembly (on 3 different architectures), Java, a bit of C#, Lua, Miranda, Lisp, OCaml, dabbled in F#, C, and of course C++.  C++ is the most powerful (you can pry MI from my cold dead fingers) but it is also the most difficult by a large margin.

And C++ is not a 1:1 mapping of high level code to assembly, no where close.  C is, but C++ has a number of layers which obfuscate what is really happening.  From templates to vtables to name mangling C++ is not good for knowing the low level intricacies.  I'd also argue that knowing low level details is not necessary for beginners.

Its better to focus on learning the design patterns, methodolgies, and algorithms than worrying rvalue reference rules and perfect forwarding, or understand the intricacies of variadic templates, or delving into the mess that is template/preprocessor meta-programming.  Better to know how to use containers than to know how to manage raw memory.
Logged
Geti
Level 10
*****



View Profile WWW
« Reply #61 on: December 16, 2012, 04:54:49 PM »

You can also learn about how the JVM and CLR deal with your code, though. There are things that are unclear to a beginner in C++ as well, such as the mechanism of inheritance, what a virtual function call actually does, how templates actually work, the difference between binary and unary operator*... I agree that having real pointers and real value objects is more clear-cut once you know what you're doing, but a lot of the people I have to write code with for uni get very muddled about them because they've come from a java background, which they see as "simpler".

Everything is relative. Shrug

The difference is that in one case you know the exact outcome, you understand it exactly on a logical level. In the other case it is just hacking, you form a picture but you still don't know exactly how it works.
There are many different kinds of "physics". Sure, hacking on top of box2d is likely to be fairly uneducational for a new programmer, but implementing something like AABB-AABB collisions is something with a very definite and logical target and outcome, and many new programmers benefit from graphical output. There aren't too many newbie game programmers aspiring to make ncurses games.

@OP is this still useful to you?  Wink Could be an idea to fork the discussion somewhere if it's just muddling you. Hopefully by now you've written a few hundred lines of code though - learning by doing and all that.
Logged

GhostBomb
Level 4
****



View Profile
« Reply #62 on: December 16, 2012, 07:34:12 PM »

GML anyone?

anyone?

 Sad
Logged

Current Projects:

UnEarth


Azure
Geti
Level 10
*****



View Profile WWW
« Reply #63 on: December 16, 2012, 07:45:56 PM »

I wouldn't suggest it for learning programming, really. For getting a game done when you don't know how to program in anything else, sure.
Logged

ஒழுக்கின்மை (Paul Eres)
Level 10
*****


Also known as रिंकू.


View Profile WWW
« Reply #64 on: December 16, 2012, 07:54:16 PM »

I wouldn't suggest it for learning programming, really. For getting a game done when you don't know how to program in anything else, sure.

i think starting with gml is fine as long as you recognize that it's a very strange language with a lot of stupid things that other languages don't have. for instance, there are only two data types, strings and floats (no ints, booleans, chars, etc.). it also has a lot of interesting constructions that other languages don't have, like with(). it's also neither OOP or procedural, but sort of a bad mix between the two

i didn't start with gml (as mentioned earlier i started with qbasic and c) but i've probably coded more in gml than in any other language. i wouldn't recommend it but i wouldn't say that people who start with gml can never be good programmers or anything -- there are a lot of people who started with GM who eventually became really good programmers in other languages (example: chevyray started with gml and eventually moved to as3 and coded flashpunk)
Logged

Geti
Level 10
*****



View Profile WWW
« Reply #65 on: December 16, 2012, 09:28:18 PM »

i wouldn't say that people who start with gml can never be good programmers or anything
Neither, but as you said, I wouldn't recommend it.
Logged

Graham-
Level 10
*****


ftw


View Profile
« Reply #66 on: December 16, 2012, 11:24:07 PM »

I'm thinking about these things now. I've programmed in... python, php, java, c++, obj-c, scheme, little lisp. I read a book on c#.

the difference between each language is super subtle. the truth is a good coder can do a lot with anything, but can do way more when he's become accustomed to what he uses.

I think language choice has a lot to do with what you actually want to write in the end. If you want to spend 5 years in Korea, learn to speak Korean. Why are you going to Korea? Maybe just to speak Korean. Maybe you feel liberated by that language for some reason. A lot of people who pick up a second language do it for style - they like it - and some do it for practicality.

Is it better to learn Chinese _then_ Spanish? Well Spanish is like Portuguese, and your grandmother is Portuguese. Maybe your dream is to study in some Buddhist temple. Maybe you should learn Japanese.

 
Logged
nikki
Level 10
*****


View Profile
« Reply #67 on: December 17, 2012, 12:30:29 AM »

Quote
I'm thinking about these things now. I've programmed in... python, php, java, c++, obj-c, scheme, little lisp. I read a book on c#.

the difference between each language is super subtle.

well only real two differt strokes there are lisp/scheme  vs  python/java/c++/objc/c#
as in object oriented vs functional programming language.

that made me remember this book : Seven languages in seven weeks; it reviews seven languages
(Ruby, io, prolog, scala, erlang, clojure, haskell)
and you learn to make something idiomatic with it that touches interresting features of that language. Thing I liked the most about that book was that it teaches you that different languages are based on whole differnet ways of thinking .

And when you pick up another programming language it is not so much about style as about learning new paradigms, getting out of your comfort zone and whatnot.

for example: I used to work in some silly event-less language, then I needed to work in AS3 alot for my new job at that time. After that I've implemented an event system in my hobby language and finally managed to make a clean GUI framework in it Wink

« Last Edit: December 17, 2012, 12:38:15 AM by nikki » Logged
Graham-
Level 10
*****


ftw


View Profile
« Reply #68 on: December 17, 2012, 01:12:14 AM »

Often you can implement one feature from one language in another. There's a couple of things you can never get - dynamic/static typing, bit control, macros.

I think when you use something new there's a new way of thinking. If you try to use C++ in a Java way, or python in a C++ way you are going to get something awkward, that is harder to manage. When you use a language the way it was designed to be used most of the differences disappear.

I'm in python right now. I can't goto-definition on a dynamically typed variable. That makes reading complex code slightly slower. I have to remember the types of things on my own, or read the code. I'm not yet used to programming in a way where I can understand what a function does w/o knowing what types it is working with. The experience is just different.

Logged
Keops
Level 6
*


Pixellin' and Gamedev'n


View Profile WWW
« Reply #69 on: December 17, 2012, 05:14:51 AM »

@OP is this still useful to you?  Wink Could be an idea to fork the discussion somewhere if it's just muddling you. Hopefully by now you've written a few hundred lines of code though - learning by doing and all that.

This is still very useful to me. I'm working right now on various fronts:

C++: I got a mentor from these boards, who has gladly offered assistance via gmail/chat. With his help and guidance I've installed Visual Studio Express and he gave me a book to start delving into the language. With the IDE up and running and the book I'm already working on this language. I'm already writing some simple code, getting used to the syntax, working with variables and simple operations.

Unity: Still watching a lot of videos to get familiarized with the capabilities/interface. Seems simple enough to be worked in parallel with my programming studies.

Java: Installed an IDE (NetBeans) and got some introductory books. However, since I'm working on C++ I'm putting this in standby. At any rate, what I learn about programming in C++ will help me a lot when I decide to delve into Java. If I grasp the concepts there it'll be a matter of learning the Java syntax and features.

So this discussion is very enlightening. I'm still reading every bit of it. I know most of you are far more advanced and are discussing more specific topics about programming, but I still get it and find all opinions very interesting to read.

Thanks once again!
Logged

Hearthstead: Hand Point Right Website - Twitter Hand Point Left

OPEN FOR COMMISSIONS! Behance portfolio
Graham-
Level 10
*****


ftw


View Profile
« Reply #70 on: December 17, 2012, 05:21:22 AM »

Well, in discussing specific topics we're demonstrating the kind of variety each language offers, or maybe I should say between languages.

No one can truly tell the difference between one language and another, even if that person designed both. You need be observant of what kind of code you produce when working in one language, then rely on your instincts when comparing it to another. Everyone will see different benefits.

Glad you got a mentor. Like the follow-up.

--

Also, why learn Java? http://unity3d.com/unity/multiplatform/mobile: Unity builds for Android already. You can just go C++ to C#. That would be easier.
« Last Edit: December 17, 2012, 05:27:48 AM by Graham. » Logged
Keops
Level 6
*


Pixellin' and Gamedev'n


View Profile WWW
« Reply #71 on: December 17, 2012, 05:33:42 AM »

Also, why learn Java? http://unity3d.com/unity/multiplatform/mobile: Unity builds for Android already. You can just go C++ to C#. That would be easier.

Yeah when I was reading about Unity and it's features I read that and it's another reason it is so attractive to me.

True, but I guess I want to try some different languages to see how they work and learn a bit more. I don't really want to become a code ninja, but get good enough with coding to be able to make prototyping of my ideas and simple games by myself. Also for the times when I need a more advanced programmer and to be part of a team, so that I can better understand the technical details, you know, that's always a plus.

And yes, the diversity in programming languages is astounding. But as some of you pointed out, a good coder is probably able to do almost anything on the language of his choosing. It's a matter of personal preference and knowledge, since languages as I see them are just tools, what you do with them is up to you. And as real life tools, some are better suited to do some tasks than others (try making a delicate wood carving with a hammer hehehe).

Thanks everyone for the great replies so far! This thread definitely beat all my expectations and gave me a lot of inspiration and food for thought.

Keops
Logged

Hearthstead: Hand Point Right Website - Twitter Hand Point Left

OPEN FOR COMMISSIONS! Behance portfolio
Geti
Level 10
*****



View Profile WWW
« Reply #72 on: December 17, 2012, 05:39:15 AM »

This is still very useful to me. I'm working right now on various fronts:
Very glad to hear it!

Java ... If I grasp the concepts there it'll be a matter of learning the Java syntax and features.
Luckily the syntax is also almost identical to C/++ syntax, minus pointers.

Glad you got a mentor. Like the follow-up.
This too, nice to see someone taking programming as a study rather than as a chore  Coffee
Logged

Graham-
Level 10
*****


ftw


View Profile
« Reply #73 on: December 17, 2012, 05:44:14 AM »

@keops

I see.

I'm not trying to say you shouldn't use Java. I was just asking the question. I don't know if knowing Java _and_ C++/C# will make you a better asset than just knowing C++, unless you expect to code in Java in the future.

Shipping games is more important than anything, unless programming is your desired core skill. If you feel that learning Java inspires you, or broadens your horizons or whatever, who am I to disagree with someone else's intuition? But if you just want a bee-line to a finished game know that skipping Java will make you a competent coder/developer too. You can go your whole life just w/ C++/C# if you really want to.

Logged
kiddRaddical
Level 0
***

ALT UNIVERSE SEGA SATURN DEV


View Profile WWW
« Reply #74 on: December 17, 2012, 09:52:47 AM »

Unity: Still watching a lot of videos to get familiarized with the capabilities/interface. Seems simple enough to be worked in parallel with my programming studies.

if you're going with Unity please, PLEASE heed my words: use C#. It is the lightsaber of programming languages (IMO).

Some great tuts I found recently on why you should use C# within the context of Unity (watch all 5 for maximum enlightenment):

 
Logged

posting (too) regularly on Twitter: @EthanRedd
EthanRedd.com
Graham-
Level 10
*****


ftw


View Profile
« Reply #75 on: December 17, 2012, 10:16:04 AM »

Quote
C#.... It is lightsaber of programming languages

veeeyioouunnn.....
Logged
nikki
Level 10
*****


View Profile
« Reply #76 on: December 17, 2012, 11:53:29 AM »

So that makes Steve Ballmer the endboss of the Jedi weapon crafters ??

Logged
kiddRaddical
Level 0
***

ALT UNIVERSE SEGA SATURN DEV


View Profile WWW
« Reply #77 on: December 17, 2012, 03:54:09 PM »

Quote
C#.... It is lightsaber of programming languages

veeeyioouunnn.....

"An elegant weapon, from a more civilized time"... Wink
Logged

posting (too) regularly on Twitter: @EthanRedd
EthanRedd.com
Muz
Level 10
*****


View Profile
« Reply #78 on: December 18, 2012, 02:58:37 AM »

I started here:
http://www.wibit.net

Now forget programming languages for a while. Go through the introduction to programming one. It'll teach you the basics, which is what you really, really need. Wibit's tutorials are even better than lectures in most comp sci degrees IMO.

I think the C programming videos on Wibit.net are great to start with too, because they hold you by the hand and teach you to actually make cool stuff. It goes through a lot of good techniques, but it takes a while.

But if you absolutely don't like C, just do the intro to OO.

Then once you have a grasp of the basics, pick up any language, and run with it. It took me only two weeks to learn Java from knowing only C; two months to actually be good enough to sell something with it. You can probably pick up any programming language very quickly once you've done your first.

I learned pretty much 100% of object oriented programming from that site, and am employed to write Java, so it works Tongue I actually signed up for a 'professional certificate' in Java development once, and it was total bullshit written by people who've probably never written a basic program in their lives. The internet stuff is way better.
Logged
Keops
Level 6
*


Pixellin' and Gamedev'n


View Profile WWW
« Reply #79 on: December 18, 2012, 05:57:53 AM »

Thanks for the link Muz, I'll add it to my resource bookmarks!
Logged

Hearthstead: Hand Point Right Website - Twitter Hand Point Left

OPEN FOR COMMISSIONS! Behance portfolio
Pages: 1 2 3 [4] 5
Print
Jump to:  

Theme orange-lt created by panic