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