Computer Forums

Member Login

Remember Me? Sign Up! | Forgot Password
 
Slogan
 
Closed Thread
Old 11-18-2004, 12:26 AM   #1 (permalink)
 
Newb Techie

Join Date: Nov 2004

Posts: 26

onauc

Question Which Language ?

Hiya !

Before replying to my questions please include a few lines about your programming qualification and experiences.
Frankly, put these details always on your signature.

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 ****ed 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
onauc is offline  
Old 11-18-2004, 12:34 AM   #2 (permalink)
 
Super Techie

Join Date: Jun 2004

Posts: 312

sippin codeine

Send a message via Yahoo to sippin codeine
Default

The following files are not even made with programming languages, you make these files with graphics editors and encoders.

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)

thats about all i can help you with, you should learn all programming languages.
__________________
**[System specs]**

Delphi Enterprise 6 - 7
VB 6.0 - 2005 EE
sippin codeine is offline  
Old 11-18-2004, 12:45 AM   #3 (permalink)
 
Newb Techie

Join Date: Nov 2004

Posts: 26

onauc

Default

I know that you use graphic editors to create these files but the browser has interpreters built-in to translate the codes of these files.
I am looking for the interpreters that are built-in to the browser.
I want to know where exactly in the browser's code these interpreters reside.
I don't think you understood my question but thanks anyway for trying to atleast help me.
onauc is offline  
Old 11-18-2004, 02:27 AM   #4 (permalink)
 
Monster Techie

Join Date: Oct 2003

Posts: 1,849

Demalii is on a distinguished road

Send a message via ICQ to Demalii Send a message via AIM to Demalii Send a message via Yahoo to Demalii
Default

*claps* Well, good try sippin, my eyeballs crossed after the first paragraph, I can't read that much lol..
__________________

3DMark06: 16,326 (avg of 3 runs)
3Dvantage: 12,810 (avg of 3 runs)
-> I did it, so can you, and now my cellphone bills are paid woot
Demalii is offline  
Old 11-18-2004, 12:00 PM   #5 (permalink)
 
Ultra Techie

Join Date: Sep 2003

Location: Bamberg, Germany

Posts: 549

Iron_Cross

Send a message via ICQ to Iron_Cross Send a message via MSN to Iron_Cross Send a message via Yahoo to Iron_Cross
Default

Ok, first I want to congratulate you for being the first person EVER to go into such depth, and have read so much before asking "Which language do I learn?". Really, my jaw dropped when when reading your post, I'm VERY impressed.
As for my creditials, I've been programming for about 6 years, in many different languages, such as C, C++, C#, Java, Perl, PHP, Python, VisualBasic, and some other web languages and markup languages. I've worked for several software and web development companies, such as the one I'm currently imployed with Key Net Solutions.

Now on to your questions. Let me take them in the order you asked them:

First Aim
Those files could actually have been written in many different languages. So long as your language can create binary files, it could potentially create one of those. Although, to see exactly how to do that, I'm not sure because I've never worked with sound files. Though I'm sure you could make one in several languages.

Q1.
C, C++, C#, Perl, ASM
I'm not going to go into too much detail yet about why, because that would make my post ungodly-long
Q2.
Personally, I'm a very avid C# fan, so I'd suggest that. But you might have some really good luck with C or C++ too. Each of these languages has their advantages, C# is by far the easiest to learn, C is the fastest language, and C++ is very low level if you want it to be, meaning you can get into the guts of the OS. Although, C# has that capability as well.
A) C# and C++
B) C# is. And C++ is "in theory".
c) C#
d) C#, Perl, C++, and C all have free compilers.
e) not really, if you study the language well enough, you could pretty much find any answer you want.

Second Aim
They were probably written in C or C++. So to write plug-ins you'd need to use those languages...though since I'm a C# fan, I'm going to tell you that you can make one just as easy with C#. And acutally, you could write plug-ins with C# as well.

Third Aim
That really depends on the software you're using. Because they could have been made in just about any language imaginable. Also, you can't really write a "plug-in" for them unless you have the actual source, which is hard to come by unless it's an open-source piece of sofware. So you're pretty much just going to have to write your own.

Fourth Aim
Again, these could have been written in many languages...but probably ASP/ASP.NET C++, C, Java, or MAYBE perl. I really don't know, but I'm sure you could find out fairly easily.

Sixth Aim (since there is no Fifth)
Again, any software that could make a desktop app could have made these. Personally though, I'd say they'd be easiest made in C# or perhaps Delphi. Though they could be made also in C, C++, or VisualBasic.

Seventh Aim
OS's are most likely written in ASM or C. I know that some versions of Linux were written in C. Though ASM is probably used a lot too. You "might" be able to get away with know C++, but in the long run, you need to know ASM and C.

I hope this post helped you. If you have any other questions let me know
__________________

See today\'s Penny-Arcade!(May contain foul lanuage)
Pain is weakness leaving the body.

PM Me for my MSN
Iron_Cross is offline  
Old 11-18-2004, 03:44 PM   #6 (permalink)
 
Newb Techie

Join Date: Nov 2004

Posts: 26

onauc

Default

Iron_Cross,

As far as I have been reading, it seems to me that C is the most portable of all after Java but you never mentioned them to to me here.
Funny, I thought you mentioned them 2 in your own post that some-one pointed me to that answers people's questions "which language should I learn".
Anyway, thanks a bunch for your reply.
It is very encouraging to know that some-one with many years of experience is giving the advices.
onauc is offline  
Old 11-22-2004, 10:48 AM   #7 (permalink)
 
Ultra Techie

Join Date: Sep 2003

Location: Bamberg, Germany

Posts: 549

Iron_Cross

Send a message via ICQ to Iron_Cross Send a message via MSN to Iron_Cross Send a message via Yahoo to Iron_Cross
Default

C isn't really portable at all. C is only portable "in theory". But in reality it's not very portable. Java and C# are probably the most portable of all the languages. C++ is the same as C. In reality it's not all that portable.
__________________

See today\'s Penny-Arcade!(May contain foul lanuage)
Pain is weakness leaving the body.

PM Me for my MSN
Iron_Cross is offline  
Old 11-23-2004, 02:43 AM   #8 (permalink)
 
Newb Techie

Join Date: Nov 2004

Posts: 4

Samurai Eskimo

Send a message via AIM to Samurai Eskimo
Default

ASM is really portable since it basically works really closely to the machine codes ( just a step up, in fact ). But ASM would violate Q2.c of your first post, so never mind. Assembly should probably only be undertaken by those who either: a) need it in their job ( I've seen one or two jobs advertised that require the ability to read it ), b) want to have a little better understanding of the underlying hardware, or c) you're just messed up enough in the brain that you'd wanna learn it just because ( like me! )

But yeah, Java is really portable since it doesn't really compile all the way to machine code ( it is partially interpreted ), and I don't know enough about C# to judge it, but it looks very interesting and I've heard good things about it.
Samurai Eskimo is offline  
Old 11-23-2004, 11:53 AM   #9 (permalink)
 
Ultra Techie

Join Date: Sep 2003

Location: Bamberg, Germany

Posts: 549

Iron_Cross

Send a message via ICQ to Iron_Cross Send a message via MSN to Iron_Cross Send a message via Yahoo to Iron_Cross
Default

ASM IS NOT PORTABLE! I can't believe you even just said that! Asm has the LEAST portabilty of any language out there. Reason? Because works directly with the hardware, so if you make something for an intel machine, it will NOT work on anything BUT an intel machine.
If you make something for an amd, it will not work on anything BUT an amd. It has absolutly ZERO portabilty.

Maybe you're not understanding what portabilty means, portability means you could write a program on one machine, and it would work on many other different types. Asm is like the poster-child for non portabilty....
__________________

See today\'s Penny-Arcade!(May contain foul lanuage)
Pain is weakness leaving the body.

PM Me for my MSN
Iron_Cross is offline  
Old 11-23-2004, 04:28 PM   #10 (permalink)
 
Newb Techie

Join Date: Nov 2004

Posts: 26

onauc

Default Iron Cross

Quote:
Originally posted by Iron_Cross
ASM IS NOT PORTABLE! I can't believe you even just said that! Asm has the LEAST portabilty of any language out there. Reason? Because works directly with the hardware, so if you make something for an intel machine, it will NOT work on anything BUT an intel machine.
If you make something for an amd, it will not work on anything BUT an amd. It has absolutly ZERO portabilty.

Maybe you're not understanding what portabilty means, portability means you could write a program on one machine, and it would work on many other different types. Asm is like the poster-child for non portabilty....
Iron_Cross, who was that post aimed at, may I ask ?
Samurai Eskimo ?
Yeah, I guess you are right. ASM is not portable because each ASM the language was created for each specific machine.
Well, I haven't started programming yet but I do know this much about ASM.
Now, can everyone understand that, it is not "wise" to jump into a language just because the others follow where the wind blows them and just learn it and waste your "hard space" on your brain without knowing the draw backs.
You should always ask as much questions you can, just like me, to evaluate a language before jumping in the learning wagon. :beard:
Anyway, as far as I know there are many Intel ASM too and many AMD.
So, which one you recommend ?
I don't want to write a software and then see it works on some and not on others. Bad for business, if you get me.
onauc is offline  
 
Closed Thread

Thread Tools
Display Modes

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

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On