Register | Login
Views: 19364387
Main | Memberlist | Active users | ACS | Commons | Calendar | Online users
Ranks | FAQ | Color Chart | Photo album | IRC Chat
11-02-05 12:59 PM
0 user currently in Programming. | 3 guests
Acmlm's Board - I2 Archive - Programming - Easiest programming launguage to learn | |
Pages: 1 2 3Add to favorites | "RSS" Feed | Next newer thread | Next older thread
What launguage do you think is easiest, or one of the easiest to learn?
6502
 
56.2%, 9 votes
65816
 
12.5%, 2 votes
C++
 
18.8%, 3 votes
Java
 
12.5%, 2 votes
Multi-voting is enabled.

User Post
Atma X

Bandit
Level: 43

Posts: 594/801
EXP: 553639
For next: 11407

Since: 03-16-04
From: Derrière vous!!!

Since last post: 43 days
Last activity: 14 days
Posted on 10-26-04 05:39 AM Link | Quote
I'm asking this not for fun, but to try to get an idea of where I should start out.
My main goal right now is to learn 65816 ASM so I can recode SMW (and later on I want to learn C++, but I'll be taking a course in college for that next year), so I'm not sure if it would be better to start with something else (6502 ASM, C++, etc.) to get me used to the basic concepts of programming.


(edited by Atma X on 10-28-04 11:27 AM)
Dish

Spiny
Level: 38

Posts: 145/596
EXP: 355646
For next: 14801

Since: 03-15-04
From: Disch

Since last post: 18 days
Last activity: 18 days
Posted on 10-26-04 06:13 AM Link | Quote
If your goal is to learn assembly... start with assembly. I voted for 6502, since it's probably the easiest to learn thing listed... although z80 might be more straight-forward.

Concepts introduced in higher level languages (like C/C++, and even Java) are sort of masking what the machine is really doing. For example... pointers in C/C++ can be difficult to understand at first... whereas indirect addressing in assembly (the low level equivilant) is relatively simple.

To further make my point... you can learn simple assembly languages from a refernece sheet of opcodes... and maybe 6 or 7 pages of tutorials/documentation. To become a competant C/C++ coder, you'll need a lot more than that. People can read books and take coarses and still not have a full grasp at what each aspect of the language is/does.

On the plus side... once you learn assembly... you'll get the basic programming concepts... so picking up higher level languages will be much easier.

If your goal is to learn 6502 and you start with something higher like C/C++, you'll be learning a lot of unnecessary stuff that doesn't apply to assembly... which'll just further you from your goal.


(edited by Disch on 10-25-04 09:16 PM)
Gavin

Fuzzy
Rhinoceruses don't play games. They fucking charge your ass.
Level: 43

Posts: 270/799
EXP: 551711
For next: 13335

Since: 03-15-04
From: IL, USA

Since last post: 13 hours
Last activity: 13 hours
Posted on 10-26-04 09:55 AM Link | Quote
i'm with Disch on this one, most assembly languages are actually relatively simple, especially on processors like the 6502. Not to mention the fact that the 65816 and 6502 are very similar, so building up basic assembly concepts on the lower processor is very nice.
neotransotaku

Baby Mario
戻れたら、
誰も気が付く
Level: 87

Posts: 1555/4016
EXP: 6220548
For next: 172226

Since: 03-15-04
From: Outside of Time/Space

Since last post: 11 hours
Last activity: 1 hour
Posted on 10-26-04 11:02 AM Link | Quote
yes, learning languages on processors is easier but there is a lot more one must manage the lower one goes. C++ and Java are nice because their compilation schemes take care of stuff you do not need to worry about (such as stack space). Also, they are easier to understand documentation wise and often easier to debug. Debugging assembly isn't very fun unless you have commented well...but who really does comment well?

anyways, the easiest language is the language that gives you the right amount of control you want.
Atma X

Bandit
Level: 43

Posts: 597/801
EXP: 553639
For next: 11407

Since: 03-16-04
From: Derrière vous!!!

Since last post: 43 days
Last activity: 14 days
Posted on 10-26-04 12:23 PM Link | Quote
Ok, now,... Are there any Programs other than a disassemblers that I'll need?

And another thing,... where's a good tutorial (a tutorial that won't just throw random stuff at me,... anyone know, or is Google my best friend in this situation)


(edited by Atma X on 10-27-04 03:28 PM)
neotransotaku

Baby Mario
戻れたら、
誰も気が付く
Level: 87

Posts: 1560/4016
EXP: 6220548
For next: 172226

Since: 03-15-04
From: Outside of Time/Space

Since last post: 11 hours
Last activity: 1 hour
Posted on 10-26-04 09:22 PM Link | Quote
if you are programming in assembly, then you just need something that will run the assembly. You can use a disassembler to see example code.

As for the other languages, Java has a compiler from Sun (obviously) and C++ has gcc (if you install Cygwin), the compiler from MingGW (you can get it from doing a google search for MingGW), or dev-C++ (i think that is the name).
Smallhacker

Green Birdo

SMW Hacking Moderator
Level: 68

Posts: 753/2273
EXP: 2647223
For next: 81577

Since: 03-15-04
From: Söderhamn, Sweden

Since last post: 10 hours
Last activity: 9 hours
Posted on 10-26-04 09:27 PM Link | Quote
Blitz Basic.
Dish

Spiny
Level: 38

Posts: 146/596
EXP: 355646
For next: 14801

Since: 03-15-04
From: Disch

Since last post: 18 days
Last activity: 18 days
Posted on 10-26-04 10:00 PM Link | Quote
Originally posted by neotransotaku
yes, learning languages on processors is easier but there is a lot more one must manage the lower one goes.


If you're comparing NES specific 6502 programming to PC C/C++ or Java programming, I couldn't disagree with you more.

On a simple system like the NES, everything is known. There is ALWAYS 2k of RAM, there is ALWAYS 256 bytes of stack space, the processor speed is ALWAYS constant, and every NES will run the program the same way. On a modern PC (or even a really old PC), there are a lot of variants, since the PC is built to be expandable. When programming something for modern PCs, you can (and I have) make a program that works fine on your own computer, but then when you hand it off to someone else, it doesn't work at all. There are a lot more unknowns your program will have to account for, and therefore programs become much harder to manage.

Now granted... since Java programs run through a yukky VM and not actually on the computer, Java might do a better job of "shielding" those unknowns from the coder.

Debugging asm is no harder than debugging other code.. it all depends on which tools you're using (and FCEU would work fine for NES specific stuff). Commentless Java or C++ code can be just has hard to follow (or even harder to follow) as commentless 6502.

Originally posted by Atma X
Are there any Programs other than a diassemblers that I'll need?


Well for starters... you won't need a disassembler.... you'll need an assembler x816 is popular, as is ca65.. although ca65 can be someone of a pain to set up... so starting with x816 is probably the way to go. I don't have links, but there's problably something on NESdev. If not, you can google it and it'll probably pop up right away.

I think there are some tutorials on NESdev by GBAGuy which I guess are good (haven't looked at them, really, but I hear people talk about them a lot). You'll probably want a copy of NEStech -- don't be intimidated by its large file size... the only things you'll have to worry about for now are the memory map portions (for both CPU and PPU) and the register descriptions near the bottom. And finally, there's a fantastic reference page here, which covers all 6502 instructions and addressing modes.

And of course don't be shy about asking questions around here. Myself and other 6502 goons would be glad to answer any Qs you get.

I'd recommend starting with a simple program that doesn't draw anything... just have it change the background color every frame... you should be able to do that in under a page of code.
TFG

Level: 5

Posts: 6/7
EXP: 452
For next: 77

Since: 03-15-04

Since last post: 269 days
Last activity: 265 days
Posted on 10-27-04 07:30 AM Link | Quote
Word to Disch.

Learning an assembly language doesn't take more than 20 minutes (even less, if you're familiar with other not-so-high level languages). The only difficulty resides in learning how to use the surrounding hardware properly (specific to the gaming console that's using N microprocessor).

EDIT: and yes, the poll is a bit unbalanced. Each language's learning curve varies depening on your goal (what do you want to do with X language).


(edited by TFG on 10-26-04 10:34 PM)
elixirnova

Red Paratroopa
Level: 22

Posts: 101/177
EXP: 56507
For next: 1843

Since: 04-05-04
From: Midgar

Since last post: 1 day
Last activity: 1 day
Posted on 10-27-04 07:28 PM Link | Quote
For the assebly definatly start with 6502 its gonna be a bit simpler but most like 65816 I started by learning what the op-codes do but what helped the most was having another person help me who is experienced. Once you learn what the opcodes do you should go ahead and look at some of the really simple homemade roms with 'notes' in the assebly. I never did get into assebling my own roms but i then started learning how to use nes debugger and try reading what it does to the data in assembly. That would probably be best to learn asm but for C++ id start with VB or VB.NET which lots of people could help you with or if you dont mind DOS based programming try out C which is fairly simple but the same structure as C++ will use. C++ just has the stuff that'll help you easily make more graphical interfaces and such . Hope this helps and theres a list of what languages people here are willing to help with should be stickey'd im pretty sure so take a gander have fun!
neotransotaku

Baby Mario
戻れたら、
誰も気が付く
Level: 87

Posts: 1566/4016
EXP: 6220548
For next: 172226

Since: 03-15-04
From: Outside of Time/Space

Since last post: 11 hours
Last activity: 1 hour
Posted on 10-28-04 12:45 AM Link | Quote
Originally posted by Disch
If you're comparing NES specific 6502 programming to PC C/C++ or Java programming, I couldn't disagree with you more.

On a simple system like the NES, everything is known. There is ALWAYS 2k of RAM, there is ALWAYS 256 bytes of stack space, the processor speed is ALWAYS constant, and every NES will run the program the same way. On a modern PC (or even a really old PC), there are a lot of variants, since the PC is built to be expandable. When programming something for modern PCs, you can (and I have) make a program that works fine on your own computer, but then when you hand it off to someone else, it doesn't work at all. There are a lot more unknowns your program will have to account for, and therefore programs become much harder to manage.

Now granted... since Java programs run through a yukky VM and not actually on the computer, Java might do a better job of "shielding" those unknowns from the coder.


i was referring more to stack manipulation, using pointers, interpretation of memory, memory management, and stuff like that that you need to consider whereas higher level languages you do not worry about that because the complier/interpreter takes care of that for you. yes, on a simple system the processor speed, memory size, and stuff is completely known but robust programs shouldn't depend on those things but that is an different issue here.

all programming languages must find a balance between power and ease. Majority of assembly languages (not looking at hardware) provide a bunch of power but not ease. For example, adding to variables stored memory may take 6 instructions to do whereas only one statement in a high level language like C.

so yeah, i believe higher concepts of programming languages are better learned with high level languages but ultimately in the end really depend on assembly to get it done. so it essense, either you learn all the parts and build the concepts, or you learn the concept and see what makes the concept.


(edited by neotransotaku on 10-27-04 07:12 PM)
Dish

Spiny
Level: 38

Posts: 147/596
EXP: 355646
For next: 14801

Since: 03-15-04
From: Disch

Since last post: 18 days
Last activity: 18 days
Posted on 10-28-04 02:47 AM Link | Quote
Well the bottom line is... the concepts are going to have to be learned no matter which language he chooses. Programming fundamentals are the same (or very similar) regardless of the language you use.. the only real difference is the syntax. And since his ultimate goal is to learn 65816... he's better off learning the concepts as they apply to assembly. 65816 is basically an 'upgrade' to 6502.. so by starting with 6502 (which is very simple), he'll learn pretty much everything he'll need to know right off the bat. When he makes the move to 65816, all he'll have to do is familiarize himself with a handful of new instructions/addressing modes.

If he starts with C/C++ or Java, most of the things he'll be learning will not apply at all to 65816. Yeah... he'll get programming concepts and fundamentals... but that will just as easily come from coding in 6502.

And typically... coding in 6502 (while more limited) is a lot simpler. There's what... under 60 instructions? Most of which are basically the same things as others (LDA vs LDX, BMI vs BPL), and some of which are borderline useless (BRK). There are WAY more than 60 operators/keywords and weird funky rules that don't apply to assembly that you'll have to memorize if you take the C/C++ route... and I'm sure it's the same for Java.

If he were shooting to learn a higher level language, I'd agree that he should start with something like C/C++... but since he'll have to drop most of the info when he switches to asm, it doesn't make a lot of sense for him to start there in this case.

Atma X: if you do decide to take the asm route... you might want to pop in #consoledev on irc.esper.net. Myself and a few other people kind of idle in there and are willing to teach/assist/help people with this kind of stuff.


(edited by Disch on 10-27-04 05:48 PM)
Kitten Yiffer

Purple wand
Furry moderator
Vivent l'exp����¯�¿�½������©rience de signalisation d'amusement, ou bien !
Level: 135

Posts: 5620/11162
EXP: 28824106
For next: 510899

Since: 03-15-04
From: Sweden

Since last post: 3 hours
Last activity: 4 min.
Posted on 10-28-04 02:57 AM Link | Quote
Well, I know Java and Delphi. And surpingly I found Java both more fun and easier than Delphi. Java made more sense for me.

And well C++ and Java is similar, ASM is way diffrent. Seen ASM code, hadn't even tried to understand it.
Atma X

Bandit
Level: 43

Posts: 600/801
EXP: 553639
For next: 11407

Since: 03-16-04
From: Derrière vous!!!

Since last post: 43 days
Last activity: 14 days
Posted on 10-28-04 07:13 PM Link | Quote
@ Disch: I tried opening the .exe files from x816 (because that was the only thing I could find besides Text Files and Unknown Files.) and all I get is an MSDOS/Command Prompt window that stays open only for a split second, and then automatically closes.
(I'm sure I'm doing something wrong, but I'm a little lost on that right now )

Btw: I am going to take C++ in college (next year), and I was wondering (when I first created this Thread) if I should wait and start with C++ first, or if it would be eaiser to start with something like 6502 or 65816 while I'm waiting to take C++ (basically saying, I want to learn both 65816 ASM and C++, but I wasn't sure which one I should start with). But anyway, since 6502 ASM is easiest, I'll start there, and then learn 65816 ASM (which is similar), and then I'll learn C++ (so I'll end up learning 3 languages all together)


(edited by Atma X on 10-28-04 11:20 AM)
(edited by Atma X on 10-28-04 11:40 AM)
Dish

Spiny
Level: 38

Posts: 148/596
EXP: 355646
For next: 14801

Since: 03-15-04
From: Disch

Since last post: 18 days
Last activity: 18 days
Posted on 10-28-04 09:59 PM Link | Quote
Originally posted by Atma X
@ Disch: I tried opening the .exe files from x816 (because that was the only thing I could find besides Text Files and Unknown Files.) and all I get is an MSDOS/Command Prompt window that stays open only for a split second, and then automatically closes.
(I'm sure I'm doing something wrong, but I'm a little lost on that right now )



Well it's a commandline app. Pretty much every assembler/compiler is going to be. There won't be an interface... you'll have to pass the files you want assembled in the commandline (there should be a readme with it that explains how to specify files). If you want to see the error it's giving before shutting down... open a command prompt window from Windows (Start | Program Files | Accessories | Command Prompt on my 2k machine) and run the exe from there.

It's probably saying that you're not specifying any files to assemble or something. But you might be getting a memory error (I had that same problem when I tried to use it). Someone told me to right click on the exe and allow more memory to the app... they said that would fix it, but I haven't used x816 since then so I don't know if that really works or not. It probalby does.

Note that before you actually run the assembler, you're going to need to have some code to assemble =P. You'll probably going to have to be doing your coding in Textpad, Metapad.... or (yuk) Notepad.

Anyway... once you get the idea of how to use x816, you can make a batch file so make the process easier.

Experience with C++ will help with assembly... but experience with assembly will help with C++ as well. Whichever one you want to start first will be fine. =)
Gavin

Fuzzy
Rhinoceruses don't play games. They fucking charge your ass.
Level: 43

Posts: 282/799
EXP: 551711
For next: 13335

Since: 03-15-04
From: IL, USA

Since last post: 13 hours
Last activity: 13 hours
Posted on 10-28-04 11:17 PM Link | Quote
you could also always try programming your own short and simple little frontend utility for it if you are really opposed to command line work. i'm not sure what language you would make it in, but you can access the windows API: ShellExecute from shell32.dll



really the API does all the work for you, you just send it the file name and path, the .exe to run, and an optional string of parameters to go with it and you're done.
Dish

Spiny
Level: 38

Posts: 149/596
EXP: 355646
For next: 14801

Since: 03-15-04
From: Disch

Since last post: 18 days
Last activity: 18 days
Posted on 10-29-04 03:28 AM Link | Quote
That looks basically like an app to do the work of a batch file... but more restrictively =P

Just type in your text editor whatever you would normally type in a commandline... such as:


cd C:\Some Directory\
compiler.exe file_to_compile.asm -options
pause


and save it as whatever.bat. Then just doubleclick on it when you want to build.
Atma X

Bandit
Level: 43

Posts: 601/801
EXP: 553639
For next: 11407

Since: 03-16-04
From: Derrière vous!!!

Since last post: 43 days
Last activity: 14 days
Posted on 10-29-04 03:38 AM Link | Quote
What exactly is a disassembler used for? (I assume used to decompile code so you can edit it and then you can recompile it and insert it back into the game,... is that right?)


(edited by Atma X on 10-28-04 06:38 PM)
neotransotaku

Baby Mario
戻れたら、
誰も気が付く
Level: 87

Posts: 1575/4016
EXP: 6220548
For next: 172226

Since: 03-15-04
From: Outside of Time/Space

Since last post: 11 hours
Last activity: 1 hour
Posted on 10-29-04 04:12 AM Link | Quote
a disassembler takes the hex view of a program and transforms it into something more human readable.
Atma X

Bandit
Level: 43

Posts: 602/801
EXP: 553639
For next: 11407

Since: 03-16-04
From: Derrière vous!!!

Since last post: 43 days
Last activity: 14 days
Posted on 10-30-04 01:33 AM Link | Quote
I'm confused on what some of this stuff even means .
Here's a couple lines from NEStech.txt that I was looking at (just as an example).

*****************************************************************************
Writes to the Horizontal Scroll value in $2005 range from 0 to 256.
Writes to the Vertical Scroll value range from 0-239; values above 239
are considered negative (e.g. a write of 248 is really -8).
******************************************************************************

What does it mean when it says that "something" writes to the H Scroll value in $2005 range from 0 to 256. (what is $2005,... is it an address, and if so, why does the H Scroll value have to be at address $2005?)

Originally posted by Disch
I'd recommend starting with a simple program that doesn't draw anything... just have it change the background color every frame... you should be able to do that in under a page of code.

Can you give me some instructions on that to help me get started?

BTW: The only thing I saw on irc.esper.net was a "Parent Directory" page .


(edited by Atma X on 10-29-04 04:41 PM)
(edited by Atma X on 10-29-04 04:56 PM)
Pages: 1 2 3Add to favorites | "RSS" Feed | Next newer thread | Next older thread
Acmlm's Board - I2 Archive - Programming - Easiest programming launguage to learn | |


ABII


AcmlmBoard vl.ol (11-01-05)
© 2000-2005 Acmlm, Emuz, et al



Page rendered in 0.050 seconds.