GIDForums  

Go Back   GIDForums > Computer Programming Forums > CPP / C++ Forum
User Name
Password
Register FAQ Members List Calendar Search Today's Posts Mark Forums Read

 
 
Thread Tools Search this Thread Rate Thread
  #1  
Old 18-Nov-2004, 18:01
onauc onauc is offline
New Member
 
Join Date: Nov 2004
Posts: 28
onauc is on a distinguished road

which language ?


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
  #2  
Old 19-Nov-2004, 02:42
aaroncohn's Avatar
aaroncohn aaroncohn is offline
Regular Member
 
Join Date: Feb 2004
Location: Bay Area, CA.
Posts: 564
aaroncohn is a jewel in the roughaaroncohn is a jewel in the roughaaroncohn is a jewel in the rough
C++ is fast, efficient, portable, and it can do anything you need to do. I'd go with C++.
__________________
-Aaron
  #3  
Old 19-Nov-2004, 02:53
WaltP's Avatar
WaltP WaltP is offline
Outstanding Member
 
Join Date: Feb 2004
Location: Midwest US
Posts: 3,234
WaltP is a name known to allWaltP is a name known to allWaltP is a name known to allWaltP is a name known to allWaltP is a name known to allWaltP is a name known to all
Whew!!! I can see you have done reasearch in a specific direction, but your global knowledge is a little thin. I've read about half of this missive, and I'll give you one person's idea.

Quote:
Originally Posted by onauc
Hiya !
G'Day.

Quote:
Originally Posted by onauc
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.
You'll find this in ALL languages.

Quote:
Originally Posted by onauc
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)
This does not require a programming language, simply the detailed descriptions of the files. This is something you've already started looking at.

Quote:
Originally Posted by onauc
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.
Noble aim. These algorithms are constantly being tweaked -- that's why we keep getting new versions.

Quote:
Originally Posted by onauc
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 ?
By understanding the makup of images and sound, and finding programmers that can put your concepts into code. You can be the theorist and let the programmers create the project. This is done all the time.

Quote:
Originally Posted by onauc
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.
This is no different if you are the coder. Once you come up with an idea, if the idea is sound, a good programmer will make it work. If the concept is not sound, you waste time and money whether you or someone else writes the code. The guarantee of it working is completely in the veracity of the algorithm designed, not in the coding/coder.

Quote:
Originally Posted by onauc
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.
There is no perfect language. Each language has it's benefits and problems. Learning two or three languages allows you to pick the best language for the task.

Quote:
Originally Posted by onauc
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).
Generally, a program will not be written in multiple languages. It will be written in one language, maybe with a few critical routines written in assembler. You wouldn't write part in C, another part in Java.

Quote:
Originally Posted by onauc
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
Doesn't matter. They are files. Bytes followed by more bytes. They can be 'written' in any language.

Quote:
Originally Posted by onauc
? 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
None specifically. Most languages (and especially C/C++) will have third party packages you can use to get the functionality you need. No language has them inherently written into the language.

Quote:
Originally Posted by onauc
b) is portable across all computers and Operating Systems ?
None. Attempts have been made, but each OS has it's own foibles that require special programming at times.

Quote:
Originally Posted by onauc
and
c) is easy to learn (not messy) ?
and
None. They are all messy. Each has it's own way of doing things.

Quote:
Originally Posted by onauc
d) is free or cheap to buy it’s compiler ?
There are free/cheap versions of most languages -- you get what you pay for in many cases. QBasic you can probably find free. Dev-C++ is supposed to be a fgreat C compiler. Watcom C++ and Fortran is also free. Don't know if there is a free Java system. May languages have free or cheap compilers, but for what you want to do, the addons will rarely be free I believe.

Quote:
Originally Posted by onauc
and
e) is there anything else I should know ?
Of course. What that is I'm not sure at this point but trust me, there is lots more to learn. For example, to deal with audio, you MUST understand how sound and audio works, waves, frequency, etc. -- far beyond a programming language. For video, even more complex knowledge of video makeup is needed.

Quote:
Originally Posted by onauc
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.
Basically, if I may make a comparison here, someone has just placed a plate of food in front of you. What you are asking is "was this food cooked by electric stove, gas range, microwave, or toaster oven. I need to know this so I can make it taste better."

What you are missing is how it is cooked is not the question. To improve the dish you must know instead what went into the dish, the ingredients, the spices, the ratios of the elements. What order the ingredients were were added. These are the things necessary to improve the result.

For the most part, though, the language you probably want to deal with is C/C++. It is the convection-oven/microwave combo of the programming language at this time.


Quote:
Originally Posted by onauc
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.
SorceForge.net has many open-source projects you can get the code for to see how they were written. Most "desktop softwares" you will never know how they were written unless you get hired by the company that wrote them. Learning how the software accepts plugins is your first step. Once you have that figured out, you can add your new-fangled plug-in by writing the communication portion of it to the standards set by the browser.

Quote:
Originally Posted by onauc
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.

The rest of your list is the same answer. You need to take courses in computer science and the like to learn how these things work conceptually. Then to improve something, you have to get hired by the company that makes the software you want to improve and convince them you need to work in that project. Or sign up with the projects you want to help with that are open source, such as php, linux, mozilla, sorceforge.net projects, etc.

So bottom line, learning a language won't do it. But the current language of choice is C/C++. In addition, you must learn the concepts necessary to simply understand various sciences and computer subsystems. That's where a good college comes in.

HTH, and good luck.
__________________

Cow: You're a lawyer too?
Mooseblood (mosquito): Ma'am, I was already a bloodsucking parasite. All I needed was a briefcase!
 
 

Recent GIDBlogToyota - 2008 July Promotion by Nihal

Thread Tools Search this Thread
Search this Thread:

Advanced Search
Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Favorite programming language? crystalattice CPP / C++ Forum 34 06-Dec-2005 18:23
OZ programming language runner MySQL / PHP Forum 0 25-Aug-2004 02:49
WMV program language KrissKross CPP / C++ Forum 8 23-Apr-2004 19:28
Inline Assembly language mikhail Assembly Language 7 22-Mar-2004 09:06
.htaccess language / rewrite problem spinflip Apache Web Server Forum 5 15-Dec-2003 14:14

Network Sites: GIDNetwork · GIDWebHosts · GIDSearch · Learning Journal by J de Silva, The

All times are GMT -6. The time now is 00:38.


vBulletin, Copyright © 2000 - 2008, Jelsoft Enterprises Ltd.