PDA

View Full Version : learning programming


emuguy!!
June 29th, 2002, 14:12
how long does it take to learn how to program stuff like emulators and plugins etc?

Kane
June 29th, 2002, 14:15
Depends on how quick you learn stuff, and how much background info you already have.

emuguy!!
June 29th, 2002, 14:37
well lets say ure starting from scratch with no background info and u r an average learner

Kane
June 29th, 2002, 14:39
A long time. Uni courses are typicaly 3-4 years long, so.....

emuguy!!
June 29th, 2002, 14:40
are u a programmer?

Kane
June 29th, 2002, 14:46
:lol: no, I'm doing a course, but I ain't been paying enough attention. I know enough VB to make some basic utils, but I know little to no C or API stuff

Quatro
June 29th, 2002, 16:16
well its like this, you have 3 options:

1. To learn it in details, try enrolling a computer studies course but will take you about 2 to 4 years (depending on the course)

2. You could take some computer programming crash course (which takes about 6 mths to a year)

3. Finally, self education, which is REALLY hard for a beginner

ammoQ
June 29th, 2002, 16:46
If you are clever, it will take about 6-12 months to learn the basics of programming. With that basics, you might soon be able to create simple plugins, e.g. joypad plugins. I guess it would take at least 2-4 more years to be able to learn how to write the emulation itself.

ammoQ
June 29th, 2002, 16:47
Originally posted by Quatro
3. Finally, self education, which is REALLY hard for a beginner

Most programmers I know started with self education, even those who made a course later.

Quatro
June 29th, 2002, 17:19
well it would be easy if your a computer whiz or a person who really is into computers. In that way, he could easily comprehend the basic programming language.

On most cases, they are the mentally gifted :)

ammoQ
June 29th, 2002, 17:48
I didn't say it was easy. The problem with courses is that many people get discouraged and start cheating (by accepting help from the gifted people), so they do not learn much at all und understand little of what they learned. Not the right way for an emu programmer, I think.

Quatro
June 29th, 2002, 17:53
right! But sometimes, its so hard encoding, it's like making your brain shrink! (I got only a passing grade in my C++ class!!!)

N-Rage
June 29th, 2002, 20:17
courses usually dont have ur pace of learning, either ur behind and drifting away further & further
or ur ahead of the course and get bored, not as bad as the above, but ull miss many details if ur just hangin there and letting the time pass.

U should get a book and start for Yourself, think this is the best. You will be able to code some small Progs( Commandline ) in a few Weeks.
The difficult thing in programming is to understand the system You are Programming for and solving problems. You basically never stop learning, evrything advances.

Still You will need Years to be able to take on something difficult as Emus.

emuguy!!
June 29th, 2002, 23:16
are games easier or harder to program than emus? would it be possible to educate ureself to the point of being able to program stuff like emus?

Skye
June 30th, 2002, 00:00
It is possible to teach yourself to programm and emulator but that would probably not be the way to go. I am a very quick learner and I have been studing C for about 2 months or so and I must say I am am NOWHERE near creating a emu. :lol:

emuguy!!
June 30th, 2002, 00:45
are u at uni then?

emuguy!!
June 30th, 2002, 00:47
anyone know any web sites for learning how to do programming. one for a begginer that hasnt got a clue wud be prefferred

Badaro
June 30th, 2002, 01:18
There is no such sites, I'm afraid. There are some sites teaching the basics, of emulation, like the EmuBook (http://www.pj64.net/emubook), but they won't be of much use unless you're fairly experienced with programming.

[]s Badaro

Nightmare
June 30th, 2002, 03:11
Originally posted by N-Rage
courses usually dont have ur pace of learning, either ur behind and drifting away further & further
or ur ahead of the course and get bored, not as bad as the above, but ull miss many details if ur just hangin there and letting the time pass.

U should get a book and start for Yourself, think this is the best. You will be able to code some small Progs( Commandline ) in a few Weeks.
The difficult thing in programming is to understand the system You are Programming for and solving problems. You basically never stop learning, evrything advances.

Still You will need Years to be able to take on something difficult as Emus.

I agree.

IMHO, most of the unis/colleges programming courses suck,well, atleast in my country. No matter how well-known the unis/colleges are, all of them teach only simple stuff, which are quite boring.

If someone wants to learn programming, i would suggest them to buy some books and learn them yourself. Besides that, look for some useful programming forums/irc channels, so you can ask questions when you get stuck.

Xeven
June 30th, 2002, 03:22
If you want to learn and do good in programming, as with everything else in life, it requires patience and dedication. You should never rush to something more complex when you have not understood the basics. You'll spend more time going through the basic stuff again if you haven't mastered it. My advice is to read some tutorials on general programming topics first. Then go through tutorials about specific languages. Although, the topics involved might be hard to grasp at first, especially if you are a beginner, you must also understand that the language you are learning is just a tool for making something. So you must also practice writing code relentlessly if you want to learn fast. And lastly, as long as you don't have any problems with logical reasoning, then you should not have any problems with learning about these things. Just don't forget.. it takes time.

ammoQ
June 30th, 2002, 08:19
Originally posted by emuguy!!
are games easier or harder to program than emus? would it be possible to educate ureself to the point of being able to program stuff like emus?

If you don't expect your first game to be Quake4, but rather something like PacMan, it will be easier to write a game than an emu. A game can be made so simple or complex that it matches your skills; an emu eigther works or it doesn't.

emuguy!!
June 30th, 2002, 14:28
whats the best language to start with?

Skye
June 30th, 2002, 17:23
Originally posted by emuguy!!
are u at uni then?

Nope. I am learning myself.

BTW for which language to use depends on some stuff but I have started with C and I like it. :)

emuguy!!
June 30th, 2002, 17:29
how long u been learning c and how far advanced are u at it so far?

Florindel
July 1st, 2002, 13:25
Originally posted by ammoQ
If you are clever, it will take about 6-12 months to learn the basics of programming. With that basics, you might soon be able to create simple plugins, e.g. joypad plugins. I guess it would take at least 2-4 more years to be able to learn how to write the emulation itself.

What do you mean by "basics"?

ammoQ
July 1st, 2002, 13:30
"basics" mean: What does a programming language do, what are the components of a program (variables, classes, functions, loops etc.), what is the right approach to a problem (where to start) etc.

Florindel
July 1st, 2002, 13:32
But it doesn't take that long... I guess.

ammoQ
July 1st, 2002, 13:36
It takes some time to get the feeling how a program would look like when you see the task.

M.I.K.e7
July 1st, 2002, 14:33
Originally posted by emuguy!!
how long does it take to learn how to program stuff like emulators and plugins etc?

I don't know about plugins, but it certainly takes years to have enough knowledge to be able to program an emulator. Why?

You need to have a close to perfect understanding of the programming language you are using, before even starting to think of programming an emulator.
You have to have a certain understanding of computer architecture.
You have to know at least one assembly language, normally the one the system uses you want to emulate, but it doesn't hurt to know several others. And it isn't enough to know how to program with that assembly langauge, but you also have to know what happens in the processor when a certain instruction is executed.


Since you asked some guys where they got there knowledge:
I started programming as a pupil (student for the Americans), experimented with maybe half a dozen different programming languages, went to university where I learnt even more languages, I'm a professional software developer now, and one of my hobbies is collecting (and understanding) the specifications of most processors (especially RISC ones) I can get hold of.

M.I.K.e7
July 1st, 2002, 14:42
Originally posted by ammoQ

Most programmers I know started with self education, even those who made a course later.

I know a guy who works for Intel and he actually prefers the programmers who are self-taught to those who basically are academics, because the latter don't have a clue about real programming.

I envy all who had the opportunity to learn programming on an 8-bit system (my parents didn't let me have a C64, so my first computer was an Atari ST), because those really know how to program, due to all the limitations they were faced with.
Compare that with the "script kiddies" who have several dozen megs of RAM to work with and don't care about keeping memory usage low.

ammoQ
July 1st, 2002, 15:52
My first computer was a ZX81, which came as a kit; it was assembled by a 10-year old friend of mine (I was 12 then). I aggree with M.I.K.e7.

Skye
July 1st, 2002, 21:51
For me to learning programming is not just something you go out and say you are going to do. If you don't like typing large amounts of code or debuging for hour/s then you won't like it. After all programming is something you must like to do if you are going to try and do anything worth programming. I think many people just think they can learn assembly in a week or two or that they will only have to type a few lines of code and BAM they have a perfect piece of software.

Quatro
July 2nd, 2002, 02:24
Originally posted by ammoQ
My first computer was a ZX81, which came as a kit; it was assembled by a 10-year old friend of mine (I was 12 then). I aggree with M.I.K.e7.

Good for you that you started on a early age... I was able to get my hand on our first home PC when I was 18! But I start learning the basic at 16.

ammoQ
July 2nd, 2002, 06:00
:)

Nightmare
July 2nd, 2002, 06:49
Originally posted by M.I.K.e7


I know a guy who works for Intel and he actually prefers the programmers who are self-taught to those who basically are academics, because the latter don't have a clue about real programming.

I envy all who had the opportunity to learn programming on an 8-bit system

i also envy those who started programming when they were small... i only managed to get a computer and started to learn programming when i was 19..

For those who really love programming should know programming is very addictive, once you start coding, you get high and can't stop :)

emuguy!!
July 2nd, 2002, 15:39
how did u guys self educate ureselves? books, internet etc?

emuguy!!
July 2nd, 2002, 15:43
programming is something ive always wanted to do. ever since i was about 7 and had a c64. but i never knew how to go about starting. i went to college for about 7 months and it is s**t. i wanted to do programming but there wasnt such a course anywhere near our area. i eneded up just going to do the basics in it and they never actually learned me anything.

average_guy
July 2nd, 2002, 22:23
i suggest you beginners start with quick basic or visual basic 6.0, c++ is much complex for any beginner. I tought my self to program a 300 MB game in vb but i'm nowhere close in c++, to the farest of my knownlegy, i manage to make some simple openGL pictures using the simplest openGL code in c++.

average_guy
July 2nd, 2002, 22:24
btw, i'm a beginner as well

ammoQ
July 2nd, 2002, 23:10
Originally posted by emuguy!!
how did u guys self educate ureselves? books, internet etc?
In the "good old time" of home computers, those computers were delivered with a book that told you how to program - because, there was nearly nothing else you could do with a ZX81. After several years with home computers, I went to a special kind of high school called "HTL" which is very technically oriented, in my case it was about computers and organisation. After that I was a well educated programmer and started working in a software development company.

M.I.K.e7
July 3rd, 2002, 10:36
Ok, here is the strange story of a programmer - me...

I probably started programming when I was 10 or 11. Since I didn't have a computer and my parents didn't let me have one (they thought I'd become bad at school), I wrote BASIC programs on paper and tried to run those in the C64 of friends. Needless to say that most things didn't run as I thought, since I didn't have a manual or anything like that, and only knew a few BASIC commands one of my friends told me.

I was about 13 when my father bought an Atari 1040ST. Since there weren't much games for it (especially for the monochrome monitor we had) my form of "entertainment" was to write small programs and try almost any programming language I could get hold of.
In the beginnig that was STBasic, which was crap. I also tried DR-LOGO, but I didn't appeal to me. Later I got OmikronBASIC, and that was much better.

When I was in 8th grade I participated in a Pascal course at school, which was done with TurboPascal on CP/M machines (if any of you can remember that very old operating system). In each lesson we learned a new construct and then the flow-graph of an example to be programmed was presented. I always finished coding before the others started...

At home I tried some other languages like LISP, Prolog, Modula-2, Fortran, and bought books about Algol-60, Fortran, and Cobol. I only considered Algol-60 to be interesting, and lay the Cobol and Fortran books aside after having read two or three chapters. I learned the other languages only by looking at examples and the little documentation that came with those freeware interpreters and compilers.

Some day I heard something about C and thought I should try it. I got a nice freeware compiler and the Kernighan & Ritchie book - that was before ANSI C came out. Since then I more or less stick to C as one of my main programming languages.

Due to the C compiler generating 68000 assembly as intermediate code, I got interested in assembly as well. After a virus killer I wrote had problems with the memory scan on certain revisions of the operating system TOS, I decided to port it to assembly. Converting the memory scan just took one afternoon, but I made many changed to the bootsector scan. Unfortunately I never wrote the link virus scan in assembly, otherwise I'd have the smallest working virus killer for the ST, the latest version - including memory scan, bootsector scan, and my own anti-virus bootsector - had around 3.5K!

When I went to university - studying computational linguistics - I learned more languages like Scheme (a LISP dialect), Prolog (I attended a course, as opposed to the playing I did at home), and Miranda (another functional language similar to Haskell).
During system programming exercises I really learnt about some of the strengths and problems with C.

Strangely enough, I never did much object-oriented programming yet. I didn't have much need for C++ and I didn't really get that warm with Java, probably due to the bad design of the JVM, which really put me off.

Also during university I got a new computer, an Acorn RiscPC (still no PC! BTW, I mainly used HP Workstations - PA-RISC running HP-UX - at university). On that computer I did more C programming, learnt BBC BASIC (one of the most powerful dialects, which includes an inline assembler), and also played around with ARM assembly, due to which I got more and more interested in RISC processors.

While I still was at university I started working at a firm that mainly made database applications. I belonged to a team that maintained two different applications (mainly a program to handle visitors) in an proprietary rapid application development environment. Basically I had to jump straight into the water because I had to learn the language Clarion and SQL to access the relational databases while I was using them.

During the last stages of university I also bought a PC, because I thought I'd do some work in Java, but I never programmed much more than a simple "Hello World".

After I finished (or rather quit) university I was hired by the firm where I worked before. Apart from Clarion and SQL I also wrote a Perl script of several hundred lines just using a short reference of the language and programmed a dynamical intranet page using ASP with a short introduction.
Some months after I got hired the firm ran into trouble and I was one of the guys who "had to go".

Now I'm at another firm that mainly works with Oracle products, and I was lucky to get an PL/SQL (an ADA-like language for SQL procedures in Oracle) course in the beginnig.

Unfortunately sitting in front of a computer monitor at work all day, somewhat diminished my need and willingness to program at home, but I hope to kick my lazy behind someday to get something interesting on the way.
Currently I mainly do some research on processors, dynamic recompilation (see my "article" http://www.ngemu.com/forums/showthread.php?s=&threadid=20491), and do some BeOS troubleshooting on the Usenet.

To capture the essence:
You certainly need an interest in programming and programming languages. Then after you know two or three languages you can learn additional languages fairly easily.
I'd always recommend having a few good books (you should see my bookshelves!), but learning comes from doing, so you need to play around a lot, especially in the beginnig.
You might also need a certain gift to learn programming languages as easily as some people do, but I'm not too sure of that.
But most of my programming skills, are certainly self-taught.

Florindel
July 3rd, 2002, 10:48
What a story! :)

ammoQ
July 3rd, 2002, 12:11
M.I.K.e7, so you are a PL/SQL-pro? nice, this gives me a reason to pretend that reading this forum during work hour is somehow usefull for my company ;)

M.I.K.e7
July 3rd, 2002, 12:20
I'm certainly not that good with PL/SQL yet since I didn't have much opportunities to use it, but if this gives you a good reason to read the forum that's fine with me ;)

ammoQ
July 3rd, 2002, 12:36
what languages are you good in?

M.I.K.e7
July 3rd, 2002, 13:16
The problem with having such a wide range of different languages is that you cannot really speciallize on one.
So there is none, of which I'd say I'm close to perfect.
I'm probably not a bad C programmer, but certianly not the best.
I don't have too much practice with object-oriented languages yet, so I seem to prefer imperative ones, although I also used many functional languages and even Prolog.

No language is perfect for every task, so it's good to know some others.

Normally I'd perfer C, but when we had a problem where we needed to extract the referential integrities from a Sybase SQL script to automatically generate triggers for MS-SQL I chose Perl, although I never used that language before, because using that language sounded more reasonable than trying to do my own pattern recognition in C.

On the Acorn I used BBC BASIC from time to time, because the interpreter is in the OS ROM, which makes BASIC as native as machine code, and most BASIC programs weren't much slower than C applications, especially when you made use of the inline assembler when approriate.

Functional langauges are nice for little solutions and rapid prototyping, but not really suitable for large projects.
I once worked on a large project at university that had grown over several semesters and was written in several thousand lines of Scheme code. When we had a problem with the grammar (it was a system to process natural language, in that case German) I wanted to change the parse process from top-down to bottom-up and got the error message "missing right paren" without a line number or any more specifics. I didn't find the bug, so we had to stick to top-down. Later heard that someone fixed the bug, which is surprising, when you know that a simple function like "faculty" looks like this:

(define (faculty n)
(if (= n 0)
1
(* n (faculty (- n 1)))))

I hope the code is correct, as it's a long time since I last wrote some Scheme code. As you can see it's quite typical to use recursion in Scheme.

Prolog is nice for some other problems, eg. due to it's way of execution Prolog basically includes a simple left-to-right top-down parser, and if you only need something simple you don't have to write your own parser in another language.

Even assembly still has it's place in certain solutions.

ammoQ
July 3rd, 2002, 13:36
I know Prolog quite well (at least, I used to) but LISP means "Lots of Insignificant Stupid Parantheses" to me. Sometimes I wish there was an easy way to include Prolog in C or PL/SQL.

sniff_381
July 3rd, 2002, 13:54
mike always wrote long stories

M.I.K.e7
July 3rd, 2002, 14:10
Originally posted by ammoQ
I know Prolog quite well (at least, I used to)

I was quite good at it, but I haven't used it for a few years, so I'd need a refresher course before I could really use it again.

During the exercises that accompanied the Prolog course at university I was so far ahead that the young lady who lead the exercises gave me some paperwork she translated to English to correct her errors, because she knew that I also studied Anglistics.

but LISP means "Lots of Insignificant Stupid Parantheses" to me.

Yeah, LISP can be mean. Scheme is slightly stricter defined, but still has all the parantheses and the weird Polish notation, where the operator comes before the operands.

Sometimes I wish there was an easy way to include Prolog in C or PL/SQL.

That's interesting, because I didn't meet too many programmers that were fond of Prolog. I think it's nice if you know what to use it for and use something else for the rest.

There are even new languages like Ruby or Python, which might be worth a look, but where to take a time?

ammoQ
July 3rd, 2002, 14:34
Many of my programs include a lot of decisions to modell business rules, which means a lot of cascaded IFs; I would love to write this things in Prolog, much shorter and easier to read (for someone who knows Prolog).

M.I.K.e7
July 3rd, 2002, 14:51
True, Prolog would simply fetch the correct result instead of you controlling the mechnaism, as it is done in other languages.

As long as you don't have to program Cobol... Form what I've seen so far (fortunately I didn't have to program it) it must be a horrible language, because it was designed for people who cannot program, which might make it easier to read at first, but is very hard to program with.

ammoQ
July 3rd, 2002, 15:04
Cobol is limited and the programs are getting very long. Joke: Q: How do they call the OO-extension to Cobol? A: "Add 1 to Cobol giving Cobol."
Anyway, it is very easy to read, which is very important for business applications that have to be maintained for decades by different people.

M.I.K.e7
July 3rd, 2002, 15:20
Add 1 to Cobol giving Cobol

That sounds like a cool name for a new language ;)

But I see you also know a lot of languages!

ammoQ
July 3rd, 2002, 16:40
:) started with Basic and machine code (thatīs assembler programming without an assembler), later Pascal, Cobol, Assembler, C, PL/1, C++, Modula, Prolog, Java, PL/SQL.
In my current work I mostly use C, PL/SQL and Java.

M.I.K.e7
July 4th, 2002, 08:59
I also hacked some machine code for 68K, and when analyzing the hex dumps of bootsector viruses I was able to spot most of the important functions calls with a little practice.

BTW, you make the same error that I always make: In German "Assembler" is the translator and the language, but in English only the translator is called "assembler" while the language is named "assembly".

Did you work on IBM mainframes because you worked with Cobol and PL/1?

M.I.K.e7
July 4th, 2002, 10:09
BTW, just came across this site:
http://www.cprogramming.com/

ammoQ
July 4th, 2002, 11:04
Originally posted by M.I.K.e7

BTW, you make the same error that I always make: In German "Assembler" is the translator and the language, but in English only the translator is called "assembler" while the language is named "assembly".

Ah, yes.


Did you work on IBM mainframes because you worked with Cobol and PL/1?
Yes, in my school we had access to mainframes to learn that stuff. Also DL/1 and Assembly language. Fortunately, I didnīt have to do that in my real work.

M.I.K.e7
July 4th, 2002, 12:26
Originally posted by ammoQ

Yes, in my school we had access to mainframes to learn that stuff.


Damn! I think I'll have to kill you in an act of jealousy! ;)


Also DL/1 and Assembly language. Fortunately, I didnīt have to do that in my real work.

I don't know DL/1, but I have two books on the MVS assembler (ie. System 360 assembly language).

ammoQ
July 4th, 2002, 12:37
DL/1 is a language to access hierachical databases, not worth to remember.
And generally I would not be jealous about the mainframes, really. Considering we did not (officially) learn C at school, it think the time spent on the mainframe (better: the time spent waiting for the mainframe to run a batch job, this could take hours) was mostly wasted time.

M.I.K.e7
July 4th, 2002, 12:40
Hierarchical databases? Is that something like CODASYL (or how it is called)?
Hmm, maybe I'm just fond of mainframes because I'm interested in computer history.

ammoQ
July 4th, 2002, 13:22
I donīt know CODASYL; from what I see in Google, CODASYL was a network database (this describes the data modelling, no connection with the term network as used in LAN or WAN); a network database is about the same as a hierachical database, with some extensions. This is an ancient and obsolete modell, which has been almost forgotten during the last decade and might have a revival with XML-Databases, since XML-data naturally has hierachies.

M.I.K.e7
July 4th, 2002, 13:34
Yes, CODASYL describes network databases, which are more or less the predecessors of relational databases, but I didn't know that there is something even less sophisticated...

One more reason why the XML hype is so wrong!
The whole idea existed for decades and no one cared. Then comes XML and suddenly it is hyped as the solution to all problems. No way!

ammoQ
July 4th, 2002, 13:50
The funny thing is that some people claim that network databases like Raima are faster; but in Raima you can also do it the relational way. They say itīs faster because every record keeps a pointer to the "next" and "previous" record. This is true, but a node in a index tree contains typically hundreds of pointers to records, so traversal to the next or previous record is just as fast. I once had to proove it with both a benchmark and theoretical considerations, and they still did not completely believe...

ammoQ
July 4th, 2002, 13:51
I also think that XML is not the solution for everything... it has its use in many areas, but it is definitely overhyped.