Hiya !

I want to learn “Computer Programming because I am curious to see how programmers have written desktop softwares.
I have read many websites and forum posts where programmers every-time mention that they cannot give anyone advice what language to learn unless they know first what the student intends to do with that language.
Hence, before asking any professional programmer “What Programming Language Should I Learn ? , I am letting you all know in detail what my intentions are.

Anyway, regarding learning a “Web Programming Language, I have decided to learn PHP over Perl, Python, Coldfusion, Ruby, Eiffel, SmallTalk, etc.
Frankly, PHP looks more “English alike than all the rest as it does not seem too messy like Perl.
I know that BASIC language is more “English alike in “Computer Programming but that language has limitations and does not really let you touch the guts of the computer. I know that, with BASIC, you can write every kind of desktop softwares apart from an OS and so my first aim was basic but what pissed me off was all the versions Liberty Basic, QBasic, etc. etc.

Anyway, let me tell you about my aims are. Please excuse the length of this post.

My first Aim :

I want to see how the following file types have been written :

1. Un-compressed Image files (Bitmap, etc.)
2. Compressed Image files (Gif, Jpg, etc.)
3. Un-compressed Animation files
4. Compressed Animation files
5. Un-compressed Audio files (Wav)
6. Compressed Audio files (mp3)

First, I was interested to learn how the above 6 file types work and so I started to read on howthingswork.com. I have read about the first 4. I was especially interested how the “compression algorithms of these files work. Frankly, I had a hunch about what their algorithms are (if you have common sense it is really pretty basic) and howthingswork.com just confirmed all that.
But, I have not a single clue how the last 2 work and so I will see if I can learn their basics from howthingswork.com.
At the moment, I am actually really interested to learn how the above mentioned 6 file types have been written so I can gain some programming experience and see if one day if I can improve the “compression algorithms for the best interest of the internet community.
It is no good just learning from howthingswork.com how the algorithms of these file types work if you don’t know how to write their algorithms in a programming language. Say that, one day I came-up with a better algorithm to make sound and image files even more smaller without them losing their quality and more faster to load on a user’s screen. Now, if I don’t know programming then how will I write the codes to test if my algorithms really work or not ?
It is no good coming-up with an algorithm if you can’t really make it come alive.
And it sure ain’t cheap to hire a programmer to write it because if at the end of the day after the test it is found-out that the algorithm does not work as intended then I just waste my money getting a use-less algorithm developed.
Also, if I update my algorithm and want the new one developed then I don’t want to hire a programmer to develop the new one too as there is no guarantee that the new one will work either.
As you can see, I can’t afford to hire programmers to develop my ideas and so better for me to learn the perfect language which will be useful to me through-out my life so I don’t have to jump from one programming language to another.
Now, I don’t mind learning the new versions of a language but jumping from one language to another will be horrendous. Imagine me writing a program where some codes are in C and some are in Java and I am not aware that the software is being written in 2 languages. The source code will not compile whatever compiler I use (C or Java).
Anyway, as you can see, before I even think about checking the source-codes of the above I must first learn the programming languages these were written in. Otherwise, I won’t understand a single line of code.

Q 1. so, what programming languages were each of these file types written in ? And
Q 2. regardless of what programming languages they were written in, which programming language do you think

a) has the best functions so I can use these functions to improve the above 6 ? and
b) is portable across all computers and Operating Systems ?
and
c) is easy to learn (not messy) ?
and
d) is free or cheap to buy it’s compiler ?
and
e) is there anything else I should know ?

If I have a choice to learn the programming language these above 6 were written in or learn the programming language that has the best functions to improve these above 6 then why am I more interested to learn the programming language that has the best functions to improve these above 6 over the programming language that was used to write them ?
That is because…
Assume the above 6 were written in C but to improve them the functions of C++ is better. Now, I can always input their C source codes in a “C to C++ interpreter and get C++ source codes as output and learn from there. And then try to improve their codes with the C++ functions or codes. It is no good wasting my time learning C if I am going to be unable to use it’s functions to improve the above 6.


My Second Aim :

Is to see how the following desktop softwares have been written :

7. Browser (Mozilla, Netscape Navigator, Opera, etc.)
8. Browser “Plug-Ins

So, I can gain work-experience how the popular browsers and their “plug-ins were written to see if I can improve their features or not.


My Third Aim :

Is to see how the following are written :

9. Deskop Software “Plug-Ins

so I can gain work experience how to write them because if I ever want to improve on any kind of desktop softwares then I don’t have to write one from scratch but simply write a “Plug-In which will improve the features of an existing desktop software.

My Fourth Aim :

Is to see how the following are written :

10. Webserver (Apache, etc.)
11. FTP server

so I can gain work experience how to write them because if I ever want to improve on anyone of them then I can just add my codes or write a “Plug-In rather than starting from scratch. But, on the other hand, if I want to write my own skeleton then I should be able to write one from scratch.

My Sixth Aim :

Is to see how the following are written :

1. autoresponder
2. email client (outlook, outlook express, Eudora, etc.)
3. mail server
4. mailing list server

so I can gain work experience how to write them because if I ever want to improve on anyone of them then I can just add my codes or write a “Plug-In rather than starting from scratch. But, on the other hand, if I want to write my own skeleton then I should be able to write one from scratch.

Sorry for the length of this post. If I don’t mention in detail my aims then you will not be able to give me the best advice that is suitable for me.


My Seventh Aim :

Is to see how an Operating System is written. And then finally see if I can come-up with any extra features that I can add to make Unix/Linux run better.


Well, there you go. Now which programming language should I learn ?
I can only learn one. So, which one ?
If I need to learn more than one then why and which ones and which one first and then which one and so on…

Thanks

Recommended Answers

All 8 Replies

Huh, so you want to learn how to code
- an operating system like linux
- FTP servers and their ilk
- compression algorithms
- browser extensions
- email clients
- email servers (pop? exchange? IMAP?)

but you say you can only learn one language? Sounds like you have three or four years worth of intense work outlined here, why limit yourself to one?

Have you picked an open source browser? Or do you want to do IE plugins? Those choices will help you pick which language you need. Most likely C or C++, maybe Java.

Mail clients can be built in most any language of choice, as long as they can access your OS' mail interface(s); are you building for Windows MAPI? A linux system? Most likely C++ is your boy here.

Servers, again, could be built in almost anything; Java perhaps.

If it were me, I'd narrow down my sights to a specific 'first project', and let that guide me to the language of choice. But don't limit yourself to just one! The carpenter has several hammers in his box, they will all hit a nail, but some are better than others for specific jobs!

Not to forget C, Assembler, Python, Cobol, Fortran, Ada, VB (shudder), Delphi :)

Has anyone ever counted all languages? O'Reilly has a poster of 50 influential ones at http://www.oreilly.com/news/languageposter_0504.html which claims that there are over 2500 in total.

That poster is over half a year old, there's bound to be more of them now.

Huh, so you want to learn how to code
- an operating system like linux
- FTP servers and their ilk
- compression algorithms
- browser extensions
- email clients
- email servers (pop? exchange? IMAP?)

but you say you can only learn one language? Sounds like you have three or four years worth of intense work outlined here, why limit yourself to one?

Have you picked an open source browser? Or do you want to do IE plugins? Those choices will help you pick which language you need. Most likely C or C++, maybe Java.

Mail clients can be built in most any language of choice, as long as they can access your OS' mail interface(s); are you building for Windows MAPI? A linux system? Most likely C++ is your boy here.

Servers, again, could be built in almost anything; Java perhaps.

If it were me, I'd narrow down my sights to a specific 'first project', and let that guide me to the language of choice. But don't limit yourself to just one! The carpenter has several hammers in his box, they will all hit a nail, but some are better than others for specific jobs!

He, he, he.
Thanks for the reply fellows.
I posted the same posts to 15 other forums to cross reference different people's advice to make sure I got expert advice and not some scrambled eggs and from the looks of it I am getting feedback that I should learn C or C++ or C# or Java.
Frankly, Microsoft stuffs are always buggy and maybe one day it would be revealed that C# is full of buggy syntaxes. In other words, no good wasting my time withit.
Also from what I am gathering, C is old and getting outdated but still more portable than the rest excluding Java. But Java has it's drawbacks. People have to download the JVM if they are to view my programs and that is not a good sign.
C++ seems to be capable of writing nearly all sorts of programs plus it's more flexible than C in terms of neatness and wide variety of modern functions since it is an extension of C but it seems this so-called "extention" does not touch the guts of a computer like C does. Some-kind of extention ! Extentions are supposed to be improvements and not going backwards.
Might aswell start with C first and then progress to C++ if C is not good enough to do the jobs I want done in the future.
Most say, I should not jump to C++ before learning C as it would be too hard.
But one said I can start in C++ and might aswell forget the old grandma C.
What's your advice now ? :)
On the other hand, if C# proves to be un-buggy then might aswell learn that instead of C# as some-body made it clear that it was more easier to learn than C or C++.
Can anybody tell me which one out of C, C++ and C# :

1. has the most functions than the other 2 so you can write a variety of softwares with them :cool:
2. is more cleaner than the other 2 in terms of syntax so I can check other's codes and understand them easily and improve them ;)
3. is more easier to learn than the other 2 :)
4. is more rememberable than the other 2 so I don't forget it's syntaxes easily :cool:
5. is more easier to spot errors (debug) than the other 2 so it doesn't drive me crazy during compilation with error alerts :twisted:
6. will be more widely used than the other 2 in the future so more jobs will be found in it's industry :eek:
7. is more platform independant and will be more independant than the other 2 in the future so whatever softwares I write can be used in any computer :D

If you can answer the followings then it won't be really hard for you to come to a conclusion which language you should recommend to me aswell as to your children :lol:

As for web programming language, I have chosen Php over Perl, Python, Coldfusion, Ruby, Eiffel, Smalltalk.

You are asking questions that are hard for us to answer for you because "it depends" a lot on what your true goals are. You have stated a bunch of kinds of add-ins and products, but there are entire companies that just undertake a fragment of what you are attempting. There are also students who do all this and more, but more from a hobby approach. I myself built an IMAP server "for fun" and it languishes on a machine. I got a lot of great learning from it, but I'm not going to spend time trying to make a living off it.

Let me give you an analogy. Let's say you want to listen to good classical music.

- Do you get an ipod and listen through the little ear nubs?
- Do you get an 'all in one' receiver/cd player?
- Do you get separate components (amp, preamp, tuner, cd) so you can control the quality and type of each?
- Do you get a super-high-end tube preamp or do you blow your money on fantastic speakers?

All of these choices get the job done. All are valid ways to listen to music. If it were ME, I listen to good CD's in my car on the way to work, so that's another choice.

If it were ME I'd learn C++ and C#. But you are not me.

i am in the midst of learning c++. i was looking at learning java(not java script), C++, and vb.net. vb.net looks like it would be easier of ytou want to build apps that have a basic windoze GUI, and it looks easier to learn than C++....but, it looks like C++ is more widely used. it looks like im going to concentrate on C++.
also i have just found one called liberty basic. i looks super easy, but im not sure how usefull it would be in the open marketplace(to use as a paid programer).
ive seen ads all over the place who want people who are pro's with C++.
with C++ just D/L DEVC++ and play with the sample code. it lots of fun..really

john

My advice, learn C++
When you learn C++ you also learn C, Java and C# to a fair extent, since they are so closely related. Sort of like classical English at Harvard and street English in certain parts of LA.
C# is the new kid on the block (2000) and makes Windows GUI programming a breeze. I think Microsoft put the right person on this, the same person that developed Delphi for Borland. I have not discovered too many booboos.
Learning to program is a mix of study and practice, so turn off the TV and go at it!

Hi everyone,

Start with the most basic assembly, then move on to C language and then to C++. After that move on to basic, One good basic compiler is RealBasic or if you want something free then try Rapid-Q by William Yu. After that move on to Java. Forget about C#, its too buggy and its simply a ripoff of Java. But if you still want to learn C# then use Sharp Develop.

Basically after this you will be able to create most of the applications and data systems you require from scratch maybe even giving the original authors a run for their money. You probably have about 10 to 12 years of work cut out for you.

ps. I do not hate Microsoft

Richard West

Iam agree with u.....iam also having the real enthu to develope the real software...sothat..... I need a prog.language which isobjectoriented platformindependent at the same time used to develop standalone and meet the req to dev online application and support all sor of extensions

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.