Author Topic: Entry Door - Where to start?  (Read 7656 times)

0 Members and 1 Guest are viewing this topic.

Offline JGZinv

  • 211
  • The Last Dual! Guardian
    • The FringeSpace Conversion Mod
Entry Door - Where to start?
Well while I'm sitting here unemployed I figure I might as well not waste my time at least,
and have decided I need something to study. Since I repeatedly get the deer in the headlights
look when I tell people I don't code (even if I am a PC tech)... I figure why not start there.

Most of what I hear about via job listings is either C++, Java, or what sounds like corporate specific
languages. But besides it's application here (being LUA, C/C++) I'm not sure what direction to take
or what might be a good book to start with?

If nothing else, even if I can't manage to grasp it entirely, I figure I'll at least be able to communicate better
around here and with other techs.

So what suggestions have you HLP?
True power comes not from strength, but from the soul and imagination.
Max to PCS2 to FS2 SCP Guide
The FringeSpace Conversion Mod

 

Offline The E

  • He's Ebeneezer Goode
  • Global Moderator
  • 213
  • Nothing personal, just tech support.
    • Steam
    • Twitter
Re: Entry Door - Where to start?
My personal recommendation would be to start with the deep end and head straight for C++. If you have some experience there, the other languages derived from it, like Java and C#, will be much easier to learn. The reason why I recommend C++ over the other two is because IMO, a good grounding in programming close to the bare metal gives you a better appreciation, and a better capability to evaluate what the Java Virtual Machine (JVM) or .Net library (for C#) can do for you.

Just as a personal preference, I would stay away from scripting languages like Lua and Python until you are comfortable with the other languages mentioned above. While the entry for these languages may be lower, the possible depth attainable with them is lower as well; and some of them (like Lua) are downright ugly and encourage habits that may bite you later on, like Luas' typeless variables.
Let there be light
Let there be moon
Let there be stars and let there be you
Let there be monsters and let there be pain
Let us begin to feel again
--Devin Townsend, Genesis

 

Offline m!m

  • 211
Re: Entry Door - Where to start?
I would recommend starting with either Java or C# as I had the experience that those are easier and less frustrating to learn as with C++ you have to handle that whole memory and pointer things yourself but if you want to start to program on a level that is rather near to your hardware then I would indeed recommend using C++ for the reasons The E noted above.

 

Offline Polpolion

  • The sizzle, it thinks!
  • 211
    • Minecraft
Re: Entry Door - Where to start?
I would recommend starting with either Java or C# as I had the experience that those are easier and less frustrating to learn as with C++ you have to handle that whole memory and pointer things yourself but if you want to start to program on a level that is rather near to your hardware then I would indeed recommend using C++ for the reasons The E noted above.

This is actually an argument to start with C++. It'll be a hassle to go from Java to C++ because Java does a lot of runtime error checking for you that C++ doesn't do, and that'll lead to huge problems down the road.

 

Offline The E

  • He's Ebeneezer Goode
  • Global Moderator
  • 213
  • Nothing personal, just tech support.
    • Steam
    • Twitter
Re: Entry Door - Where to start?
One thing I've read once (can't remember where) is that a programmer needs to understand four things. Variables, loops, recursions and pointers.

The first one will come easy to anyone who has done even slightly advanced math.
The second one, again, is relatively easy, but there are some pitfalls, the most common ones being known as fencepost errors or off-by-one mistakes.
The third one, well, this is where things get tricky. If you have ever done a proof by induction, this is very similar, but again, pitfalls exist. Namely, that unlike mathematics, computers are finite, and can only recurse a limited (albeit large) number of times before things get hairy.
The fourth one, pointers, is where most people will have problems. Pointers are an area where an uncautious programmer can wreak unbelievable amounts of carnage with a few simply typos.

Languages like Java and C# help you avoid the hairiest bits of pointer manipulation by hiding them under a layer of abstraction, but that same safety net will make things difficult once it's removed, because a programmer used to the automatisms of managed languages like those can miss a few of the intricacies of pointer magic.
Let there be light
Let there be moon
Let there be stars and let there be you
Let there be monsters and let there be pain
Let us begin to feel again
--Devin Townsend, Genesis

 

Offline Shivan Hunter

  • 210
  • FRED needs lambdas!
Re: Entry Door - Where to start?
Most of my uni classes have been in Java, and while I think there's a fair amount of irony in teaching, say, algorithm efficiency in a slow interpreted language, it's a good place to start.

Java and C++ have a lot of the same syntax (basic operators and flow control are almost completely the same, and the OOP stuff like the new keyword will become very familiar in either case), so you can really start with either one and move to the other. I'm in a class right now called "C++ for Java programmers"- I know a substantive amount of C and a little bit of C++, so what I'm really taking out of this class is the difference between Java and C++.

To put it simply, Java is sort of the "easier" language to start with. You don't have to deal much with pointers, as The_E said, which can be helpful early on but won't help at all in the long run unless you learn them early on. Also, Java has a very nifty garbage collector which automatically gets rid of anything you're no longer using. C++ makes you do this yourself- Once you no longer want to use an object, you'll have to delete it explicitly or you'll have a memory leak (basically, an accumulation of objects (memory) that your program is no longer using meaningfully but has not deallocated).

If I had it my way, the uni class I've taken would be in C or C++, as IMO (and this is a very uneducated opinion coming from a uni student, but take it for what it's worth) it's better to learn the complicated, routine stuff early on so you understand what's being done once you get to a higher level language like Java.

Also, one more thing

Do not write a game in Java

Looking at you, Notch

Seriously wtf I get 3 fps at times

 

Offline The E

  • He's Ebeneezer Goode
  • Global Moderator
  • 213
  • Nothing personal, just tech support.
    • Steam
    • Twitter
Re: Entry Door - Where to start?
Do not write a game in Java

Well.

No. Sorry. If Minecraft gets "less than 3 FPS at a time", that's more an issue of your computer rather than of Java. The whole "Java is slow" thing hasn't been true for a loooooooong time now.
Let there be light
Let there be moon
Let there be stars and let there be you
Let there be monsters and let there be pain
Let us begin to feel again
--Devin Townsend, Genesis

 

Offline JGZinv

  • 211
  • The Last Dual! Guardian
    • The FringeSpace Conversion Mod
Re: Entry Door - Where to start?
Well let me put this out there...

I can't say I've ever been enthusiastic or great at math, mostly because it was shoved down my throat
throughout school. On the other hand I love structure, and form, having things setup in definable patterns.
Even within Fringespace, I've talked to various people that code and seem to help them resolve problems
even when I know little to nothing about the coding language they are using. Logical order and so forth seems
to come naturally.

*scratches head* So eh, I'm not intimidate by learning "higher level" math, but I'd sure like to probably
find the Idiot's Guide to it or get started with plenty of info at my own pace. Learning hands on seems to be
the best way to absorb and retain info in either case.
True power comes not from strength, but from the soul and imagination.
Max to PCS2 to FS2 SCP Guide
The FringeSpace Conversion Mod

 

Offline Shivan Hunter

  • 210
  • FRED needs lambdas!
Re: Entry Door - Where to start?
You don't really need "higher level" math to do programming unless you're actually doing higher level math in your program. It's nothing you should be worried about.

The_E: Sorry about the slow Java thing. I did some research and tried to correct some outdated misconceptions- it turns out that a Java program is 375.29845 times faster than an Assembly program that does roughly the same thing. In fact, I think I'll be using Java for everything I program from now on.

Is there any way to install Java on a slide rule?

 

Offline Thaeris

  • Can take his lumps
  • 211
  • Away in Limbo
Re: Entry Door - Where to start?
My favorite language to code in so far has been C++, and I'll insist you start with that one.

Go over to, well, here: http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express

...And grab VS 2010 C++ Express for free - I think they'll ask for a Windows ID (like Hotmail), but that's the end of it. There's a whole slew of online help tutorials for the program, many on HLP code in C++, and heck, I'll even send you a textbook if you're interested. I think as far as structure and order are concerned, you'll be hard pressed to find something better than C++.
"trolls are clearly social rejects and therefore should be isolated from society, or perhaps impaled."

-Nuke



"Look on the bright side, how many release dates have been given for Doomsday, and it still isn't out yet.

It's the Duke Nukem Forever of prophecies..."


"Jesus saves.

Everyone else takes normal damage.
"

-Flipside

"pirating software is a lesser evil than stealing but its still evil. but since i pride myself for being evil, almost anything is fair game."


"i never understood why women get the creeps so ****ing easily. i mean most serial killers act perfectly normal, until they kill you."


-Nuke

 

Offline Polpolion

  • The sizzle, it thinks!
  • 211
    • Minecraft
Re: Entry Door - Where to start?
The_E: Sorry about the slow Java thing. I did some research and tried to correct some outdated misconceptions- it turns out that writing a Java program is 375.29845 times faster than an Assembly program that does roughly the same thing.

fixed that for you

 

Offline Shivan Hunter

  • 210
  • FRED needs lambdas!
Re: Entry Door - Where to start?
I'm being serious broski I ran some Java programs for benchmarking purposes and they turned my PC into a quantum computer

it executes an infinite loop in 6 seconds now

 

Offline Polpolion

  • The sizzle, it thinks!
  • 211
    • Minecraft
Re: Entry Door - Where to start?
I'm being serious broski I ran some Java programs for benchmarking purposes and they turned my PC into a quantum computer

it executes an infinite loop in 6 seconds now

bah

the same program would run in three if you used visual basic

 

Offline JGZinv

  • 211
  • The Last Dual! Guardian
    • The FringeSpace Conversion Mod
Re: Entry Door - Where to start?
Let's not get distracted with who's is harder, better, faster, stronger now...

I did get another suggestion for C# this evening by a local guy..... but it would appear the consensus is C++ is the best place to start.

So looking at that, what are some of your favorite resources or good books you can recommend for starters?
True power comes not from strength, but from the soul and imagination.
Max to PCS2 to FS2 SCP Guide
The FringeSpace Conversion Mod

 

Offline Polpolion

  • The sizzle, it thinks!
  • 211
    • Minecraft
Re: Entry Door - Where to start?
http://www.cplusplus.com/doc/tutorial/

nothing beats having a project that you want to work on and a reference manual

 

Offline jg18

  • A very happy zod
  • 210
  • can do more than spellcheck
Re: Entry Door - Where to start?
As for books, I like Stephen Prata's C++ Primer Plus. There's a new edition coming out next month.

I've found cplusplus.com's reference section to be extremely helpful with looking up details about the C++ standard library.

 

Offline CommanderDJ

  • Software engineer
  • 210
    • Minecraft
Re: Entry Door - Where to start?
C++ for the win, I'm gonna put my vote in that pile. Like others have mentioned before me, it's important to gain an awareness of stuff like memory management fairly early on. That and the fact that C++ is very widely used in industry, and (this has also been said before) it's very similar syntactically to several languages including Java.

Oh, and if you get good at C++ you can start programming for FSO! If that's not an incentive then there's something wrong with you. :D
[16:57] <CommanderDJ> What prompted the decision to split WiH into acts?
[16:58] <battuta> it was long, we wanted to release something
[16:58] <battuta> it felt good to have a target to hit
[17:00] <RangerKarl> not sure if talking about strike mission, or jerking off
[17:00] <CommanderDJ> WUT
[17:00] <CommanderDJ> hahahahaha
[17:00] <battuta> hahahaha
[17:00] <RangerKarl> same thing really, if you think about it

 

Offline Mongoose

  • Rikki-Tikki-Tavi
  • Global Moderator
  • 212
  • This brain for rent.
    • Minecraft
    • Steam
    • Something
Re: Entry Door - Where to start?
This is all making me want to finally take a crack at looking at the SVN checkout that's sitting on my hard drive. :p

 

Offline LHN91

  • 27
Re: Entry Door - Where to start?
I feel odd saying that I'm starting my third year of a programming degree and I haven't had to touch C++. Almost every class (except ones specific to their language) has been done in straight ANSI C with the occasional dip into C99. Java was what we did in the class specific to Object Oriented.

Guess I really should do some C++ on my own time.

 

Offline The E

  • He's Ebeneezer Goode
  • Global Moderator
  • 213
  • Nothing personal, just tech support.
    • Steam
    • Twitter
Re: Entry Door - Where to start?
Which isn't a bad thing. I just recommended C++ as an entry point because it is a good OOP layer on top of C; your route really accomplishes the same thing.
Let there be light
Let there be moon
Let there be stars and let there be you
Let there be monsters and let there be pain
Let us begin to feel again
--Devin Townsend, Genesis