These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

Out of Pod Experience

 
  • Topic is locked indefinitely.
 

Need a little advice and thought of no better place to ask.

Author
Saithos
Doomheim
#1 - 2011-11-22 08:21:57 UTC
So I have decided that I want to learn to code. Not ****** flash games, but things like EVE. So my questions are thus~

(1) What languages will be most used in the next 10 years
#Besides LUA
(2) Where should I start? (Which language should I learn first)
(3) Are there any FREE online guides from which I could learn.
#Not ****** guides, but decent ones meant for people who are picking it up.
(4) Anyone any good links to said guides?

Malcom Dax
Sebiestor Tribe
Minmatar Republic
#2 - 2011-11-22 20:11:07 UTC  |  Edited by: Malcom Dax
Learning to code is, by and large, language independent. There are particular constructs, such as loops, if statements etc etc, that are common to almost all languages. It is also the case in my experience that there is a particular way of thinking that is key to writing good code. Once you know the fundamentals of how to code and how to think (this comes with experience) you can then go on and learn a language or languages that suit your end purpose.

As far as learning is concerned, the best way is to get an introductory programming book, or a guide on the internet. Both those links are for Java which is what I learned at Uni. I'd done some VB6 (if that counts) before that so I wasn't a total noob. Personally, I used the O'Reily Java in a Nutshell, but that's not a particularly good learning text. (I know the books aren't free, but they are very good).

The best way to go about learning is to find some simple things to program, like some code to calculate the Fibonacci sequence, or a calculator, and slowly make these tasks more complicated.

My Picks for Important Languages over the next 10 years (no particular order):
C/C++
Assembler (I'm not joking)
Python
Java
Web scripting languages (Javascript, ruby etc)

Just my 2 cents on the subject. Hope its of use.

.

Something Random
Center for Advanced Studies
Gallente Federation
#3 - 2011-11-22 21:03:02 UTC
I havnt coded for ages but when i started to learn there was none better than BASIC.... pish pish you say "Iwant to be taken seriously!!!!" and ill reply "Then go learn to code in BASIC first". BASIC is the most readily accesible one out there, however i do run an argument that Javascript is also just as good in its own way for teaching coding - didnt have it in my day though, well the majority of it.

What will BASIC do for you ?
Teach you the fundamental constructs, as rightly pointed out above, that exist in all languages.

Go learn yourself about modern processors and memory architecture as well, how these circuits talk to each other and by all means dip a toe in the assembly language pool by at least reading some code and trying to follow what it is doing.

When i got serious about having a go at programming beyond a sliding musical scale and fart noises i landed on a wonderful language called BLITZ BASIC for the Amiga computers of the time - this little beauty had the advantage of being able to break out of BASIC language easily and start using Assembly in the same code files, variables could be easily delivered to your desired registers and away you went. Incredible way to learn programming as you could get excellent results fairly easily, and then go back and plug away at making it all go zoom by changing the math to assembly code.

Not sure if anything else exists in PC land like that. There was talk of Acid Software porting it but havnt heard anything for years.

Learn all about databases.

Then start to dip your toe into the worlds of ludicrous language descriptions for simple things - if youve ever done ITIL training youll have the idea of that already. Scientists..... pffft.

Good luck and more importantly GOOD FUN !!!!

Awesome when you compile that first 3D cube.... and you will....

"caught on fire a little bit, just a little."

"Delinquents, check, weirdos, check, hippies, check, pillheads, check, freaks, check, potheads, check .....gangs all here!"

I love Science, it gives me a Hadron.

Adunh Slavy
#4 - 2011-11-23 00:27:30 UTC
C, C++ for a couple of reasons. First it is very versitile, very well documented and just about eveything uses C or C++ at some lower layer these days. If you need assembler someplace along the line, which you probably won't, C has provisions for you to inject that if you need it.

Another good reason to learn C, it'll make short work of your bad habbits and force you not to be lazy.

As the poster above has said, learn databases too, SQL would be a good choice, you can get MySQL for free and as far as I know, it plays well with others.

Necessity is the plea for every infringement of human freedom. It is the argument of tyrants; it is the creed of slaves.  - William Pitt

stoicfaux
#5 - 2011-11-23 01:06:24 UTC
Saithos wrote:
So I have decided that I want to learn to code. Not ****** flash games, but things like EVE. So my questions are thus~


Asking what language you should be learning is like asking whether you should drive a Ford or a Chevy in order to become a racing driver.

Language isn't enough. As Knuth said, "algorithms + data structures = programs." If you can swing it, take (or audit) university courses on Algorithms and Data Structures. Graphics normally require linear algebra and a specific graphics course.

It's still possible to learn to program games, but it would be faster and easier if you had a course or three instead of being self-taught.

As for languages: Go with Java to learn the fundamentals (algorithms and data structures.) C/C++ would be "required" for an Eve scale game, but micro-managing memory is a huge distraction from learning how to program. You can probably rely on 3rd party graphics libraries to avoid the computer graphics courses. Also writing a game like Eve is a team effort, so there's not a lot of point in trying to solo build your own game.

If you can't find books online, then try your local library. Java and computer graphics have been around long enough that even small libraries should have an adequate book or two.

Then there's the software engineering aspects to consider: writing unit tests, managing requirements, etc., to help keep you organized and efficient on a large software project.

Long story short: java, algorithms + data structures = programs, start small, don't neglect unit tests.

Pon Farr Memorial: once every 7 years, all the carebears in high-sec must PvP or they will be temp-banned.

Taedrin
Federal Navy Academy
Gallente Federation
#6 - 2011-11-23 02:33:49 UTC
Something Random wrote:
I havnt coded for ages but when i started to learn there was none better than BASIC.... pish pish you say "Iwant to be taken seriously!!!!" and ill reply "Then go learn to code in BASIC first". BASIC is the most readily accesible one out there, however i do run an argument that Javascript is also just as good in its own way for teaching coding - didnt have it in my day though, well the majority of it.

What will BASIC do for you ?
Teach you the fundamental constructs, as rightly pointed out above, that exist in all languages.

Go learn yourself about modern processors and memory architecture as well, how these circuits talk to each other and by all means dip a toe in the assembly language pool by at least reading some code and trying to follow what it is doing.

When i got serious about having a go at programming beyond a sliding musical scale and fart noises i landed on a wonderful language called BLITZ BASIC for the Amiga computers of the time - this little beauty had the advantage of being able to break out of BASIC language easily and start using Assembly in the same code files, variables could be easily delivered to your desired registers and away you went. Incredible way to learn programming as you could get excellent results fairly easily, and then go back and plug away at making it all go zoom by changing the math to assembly code.

Not sure if anything else exists in PC land like that. There was talk of Acid Software porting it but havnt heard anything for years.

Learn all about databases.

Then start to dip your toe into the worlds of ludicrous language descriptions for simple things - if youve ever done ITIL training youll have the idea of that already. Scientists..... pffft.

Good luck and more importantly GOOD FUN !!!!

Awesome when you compile that first 3D cube.... and you will....



I would advise against BASIC, as it lacks certain constructs which are very important for modern coding practices. There is a reason why BlitzBasic has been superseded by Blitz3d, BlitzPlus, and BlitzMax.

I would suggest that you start with Java. Though I/O and string processing are a PAIN in Java, it really is a very forgiving programing language. Java also makes a great first language because it forces you to become acquainted with Object Oriented design. Many other programming languages give you the option of ignoring OO design principals, which is great if you just need a quick script to do something. But it also makes it too easy for new programmers to ignore OO.

Once you do that, consider learning some C/C++ to start to understand how the computer functions.

If you are REALLY interested in gaining a solid understanding of how a computer works (which is INSANELY helpful when programming), give this book a try (it's free online, chapters are available in PDF format under "study plan"). It will teach you how to build a *fully* functional computer using nothing other than NAND gates. Don't worry, you aren't actually physically building a computer - you are just designing it and simulating it in some software. But the cool thing is that you COULD physically build this computer if you really wanted to!
Saithos
Doomheim
#7 - 2011-11-23 04:53:32 UTC
Thanks for all the info, I'll be looking into all of this.
Herzog Wolfhammer
Sigma Special Tactics Group
#8 - 2011-11-23 05:06:36 UTC
I started in the world of code in a desert while needing to reprogram a electronic countermeasures system in hex code - there was little to learn from.

The key to programming is to just get right into it. Don't be one of those softy fake programmers who rely in intellisense and frameworks.

Think about what you want to do FIRST, then find a way to do it.


Bring back DEEEEP Space!

SpaceSquirrels
#9 - 2011-11-23 05:41:33 UTC
Learn a C language or Java and pretty much everything after will correlate. Once you get the knock for one assuming you have the skill and the knowledge you can learn another quickly. But learn the basics in a standard SDK (netbeans, eclipse, bloodbath) first rather than a framework. (Frameworks are awesome once you really know what you're doing)

Also be aware what the different languages are primarily used for. EG: Java more apps or web apps. php web dev, python scripting etc etc.

Most language sites have tutorials, but getting a book is also recommended just because greater explanation and structure.

Whats in high demand now are: Back end web dev. php, ruby, ruby on rails, ASP, .NET stuff, database (not actually programming mind you but still a language) MySQL, SQL. And regular developer languages C's, Java.

But seriously once you get one down learning another isnt that big a deal.
Something Random
Center for Advanced Studies
Gallente Federation
#10 - 2011-11-23 18:07:50 UTC
Taedrin wrote:
Something Random wrote:

Teach you the fundamental constructs, as rightly pointed out above, that exist in all languages.



I would advise against BASIC, as it lacks certain constructs which are very important for modern coding practices. There is a reason why BlitzBasic has been superseded by Blitz3d, BlitzPlus, and BlitzMax.

I would suggest that you start with Java.



I hear you AND totally agree BUT still say to start from scratch, no knowledge whatsoever - go BASIC then go JAVA and if you can you can ease the process to JAVA by going JJAVASCRIPT.... why ? because OOP is a real pain in the head even for clever people. BASIC will teach the Basics, JavaScript will allow you to dip toes into OOP without getting too lost and getting more instant results and feedback like a BASIC IDE would allow.

Go Java once you think you have the OOP thing going.

Not disagreeing here at all, its sage advice but just adding in the first step.

I also neglected to mention that Math and very GOOD Math is a MUST - if you failed it, dont know trigonometry and avoided calculus like te plague, you must go back and take courses in it. For games now i mean, you can get away with apps with very little mathmatical knowledge and a good IDE.

"caught on fire a little bit, just a little."

"Delinquents, check, weirdos, check, hippies, check, pillheads, check, freaks, check, potheads, check .....gangs all here!"

I love Science, it gives me a Hadron.

Malcom Dax
Sebiestor Tribe
Minmatar Republic
#11 - 2011-11-23 19:33:16 UTC  |  Edited by: Malcom Dax
Something Random wrote:
... go BASIC then go JAVA and if you can you can ease the process to JAVA by going JJAVASCRIPT...


I have to disagree with this point. JavaScript bears little to no relation to Java and learning the former will not really help you with the latter. JavaScript is a scripting language commonly used in websites whereas Java is a full programming language. They share a similar name and that's about it.

I'd also disagree with using Basic first. It is entirely possible to learn to code in Java whilst avoiding 99% of the OO concepts. Take a simple 'Hello World' program that executes entirely in a main-loop and you can use that like any procedural language. OO is such a useful technique that it is worth learning as soon as possible anyway and with Java you can start to learn OO without having to learn different syntax etc.

The key thing, as others have said is to start off with really small, trivial programs to get used to coding concepts and to build up from there.

Something Random wrote:
Maths


Yes - definitely.

.

Terminal Insanity
KarmaFleet
Goonswarm Federation
#12 - 2011-11-23 19:51:54 UTC
Saithos wrote:
So I have decided that I want to learn to code. Not ****** flash games, but things like EVE. So my questions are thus~

(1) What languages will be most used in the next 10 years
#Besides LUA
(2) Where should I start? (Which language should I learn first)
(3) Are there any FREE online guides from which I could learn.
#Not ****** guides, but decent ones meant for people who are picking it up.
(4) Anyone any good links to said guides?


NeHe's guides on openGL programming are very helpful, thats where i learned. Though his articles might be a bit old, they are still relevent i think.

C++ and C# (C# is being used more and more frequently by companies, i prefer c++, but c# does make the entire production time much quicker by doing a lot for you

Java

assembly isnt neccisary anymore unless you plan to develop hardware drivers and stuff. For game production you wont ever touch assembly code anymore.

Really though, after you've learned c++ and java, you should be able to pick up most other languages within a week.

"War declarations are never officially considered griefing and are not a bannable offense, and it has been repeatedly stated by the developers that the possibility for non-consensual PvP is an intended feature." - CCP

stoicfaux
#13 - 2011-11-24 02:45:31 UTC
Stanford's Free Computer Science Courses

"Stanford University is offering the online world more of its undergraduate level CS courses. These free courses consist of You Tube videos with computer-marked quizzes and programming assignments.


Pon Farr Memorial: once every 7 years, all the carebears in high-sec must PvP or they will be temp-banned.

Alain Kinsella
#14 - 2011-11-28 21:57:52 UTC
Warning - my answer is heavily System Admin oriented...

If you're looking for Computer Admin skills, both Perl and Python are good for that in the UNIX and PC spaces.

-> Perl is used in most Nagios / Icinga monitoring apps, followed closely by C and Python. Some of the custom apps we're writing are also in C Shell (csh).
-> Splunk (a powerful log archive and search tool) is basically written in Python, and extended using that as well usually.

Continuing with that, in UNIX space you'll want to know either Bourne or C shells as well, with a passing knowledge of the other. In PC you'll want to know how BAT files work (in particular working in PowerShell, since its becoming standard).

You used to need to know Bourne shell for old Solaris Jumpstart configuration (automatic installer). Current Solaris 11 now requires Python and XML. Linux kickstart appears to be mostly Bourne still, I've not done much tweaking in that.

There's still use for C/C++ in the Admin space, though not as heavily. Currently my only use for that is working within our in-house monitoring app (which we're trying to replace in some form with Icinga).

"The Meta Game does not stop at the game. Ever."

Currently Retired / Semi-Casual (pending changes to RL concerns).