Programming Forums
User Name Password Register
 

RSS Feed
FORUM INDEX | TODAY'S POSTS | UNANSWERED THREADS | ADVANCED SEARCH

Reply
 
Thread Tools Display Modes
Old Aug 28th, 2004, 6:41 PM   #1
kurifu
Expert Programmer
 
kurifu's Avatar
 
Join Date: Jul 2004
Location: Halifax, Nova Scotia (Canada)
Posts: 784
Rep Power: 5 kurifu is on a distinguished road
Send a message via ICQ to kurifu Send a message via MSN to kurifu
In the last month alone this forums must have taken 20 posts on "how should I learn", or "what language should I learn" and "What are these languages" and so forth, so I am going to take the time and write one big long explanation of learning to program.

Programming in all practicality has many application, for the purposes of this document I am going to break it down into three categories (Console, UI, and Web) over two operating systems (Linux, Windows) and explain things from there.

First off:

Console Programming:
===============

You program for any platform with the intention of writing a text only application, it accepts commands on the command line, or during programming execution (text based) and returns text based information... commonly used for writing simple utilities, and even backend applications for websites.

UI Programming:
==========

You write a program that is bound with a user interface, such as your internet browser. It has a lot of pretty buttons, and boxes to format your text, draw images, and organize information. Most applications with commercial intentions are written for UIs since that is what people feel most comfortable working with (the average shmo anyway). You can write these application in Windows, or Linux, or even for viewing by a browser.

Web Programming:
=============

More specifically webpages, and code that makes webpages work. This includes PHP, Perl, and well HTML and CSS count as well, since they are all a very important part of web development.

Well before you start you need to decide what you want to work with. Web based development is becoming a large area of development since web based application have the ability of being viewed consistently across all platforms, and being an easy way to insure that software always remains up to date (since it is typically runs from one location).

Aside from that UI development is also large in the programming industry right now since that is what 75% of end users prefer to use ALL them time.

However console development is the easiest place to start (for most languages) and really is a basic fundamental that everyone should know anyway. Server administrators and Linux users are more likely to appreciate working with a console as opposed to a UI.

Really you need to choose from UI based development, or Web based development, since if you choode UI based development it is implied that you will learn console based development along the way.

Web Based Development:
=================

Ok, so you decided that you want to be a website developer, maybe even a system administrator (which requires more knowledge than just programming), this is probably how you should start.

* HTML => Very important, since 99% of all websites use HTML as the base describtor language to generate webpages for viewing, you will NEED to learn this, there is no avoiding it. I would recommend learning HTML 4.01 Transition/Strict and/or XHTML 1.0 (and greater) Transitional/Strict (though strict here is probably not too important). http://www.htmlgoodies.com is a great starting point a reference for this.

* CSS => The perfect compliment to HTML, a descriptor language designed to allow simple templating of your website stlyes (basic colors, images, and so forth) and a very powerful language which will give you control of nearly every rendering aspect of a web page you can think of. And best of all CSS can be put in a seperate file and linked into your HTML via a <link> tag or it can be inlined directly into your HTML source. You should learn CSS!

* PHP/Perl => Once you know how to design website it is time to make them do stuff, process form data, run calculations, and interact with databases. Perl and PHP are the two ways of doing this/ PHP is the easiest to learn, and I would recommend it first. Perl is VERY powerful, but the language lacks strict syntax and can be a bit convoluted to learn.. so start with PHP... you will get futher faster, than move to Perl.

* mySQL / PostgreSQL / MSSQL / Oracle => Database engines... once you get your scripting down, or even while you are learning scripting you will find using a relational database to help with organising and updating website data. mySQL is free, and has great documentation, it is also a simple to install and work with database server. http://www.mysql.org

* C# / .NET STUFF => Once you get really good you may want to start learning the ASP.NET framework, in the process you will likely pick up C# along the way since it has a convenient system for designing web-forms (pages) though C# is not needed. C# is a full blown programming language though, don't just jump in here without having the grounds covered first--unless you really know what you are doing. C# & ASP.net have a lot of neat features like SOAP.

UI Programming:
===========

You need to decide if you want to work with Windows or Linux first here, since that will change how you start learning you languages. The one thing I can say about linux is that most of your tools for developing are free, while MS can run you up a bit in expenses (esppecially for MS's or Intel's or even Borland's compilers).

If you decide to go with windows perhaps you should take a look at C#? It is a great and powerful language, that runs off the MS .NET framework and is designed as a truely object oriented language specifically for UI development. It is the only language you will find where you can actually begin learning the language and not focus on console programming.

On the other hand if you choose linux, since no such convenient framework exists (Java not included, I will explain why later) you will probably nee to look at learning C and C++ since linux is based almost entirely off those two languages. Once you understand both C and C++ in a console environment than you can look into programming for UI based systems such as KDE, Qt, and GTk.

Learning to program on linux I personaly found to be a bit more difficult, since Microsoft Visual Studio has a wide vairety of tools available to get you started and working on projects faster. (Better integration of developer tools maybe?).

Console Programming:
===============

Actually console programming is very generic, fortunatly you can do this easily from PHP/Perl/C/C++/Python and a few other languages. If you intend on doing web related console work stick with PHP and than Perl, probably in that order since PHP is easier to learn than Perl.

If you want to go towards non scripted (likely for windows) based console programming than you need to look into C and/or C++, they are best suited for that environment.

And if you intend on doing scripted work in most likely a Linux environment, than Perl and Python are great pays to go. I have never learned Python but I have heard wonderful things about it for this purpose (it is also an Object Oriented language which makes it a usefull), so look into it.

This should give you a general over view as to where and how to start, if you need information about a specific language check in the tutorial forums for your answer before posting, and always search the forums before posting a question, chances are if you are reading this far, your question has already been answered elsewhere.

Other Notes:
========

There is a reason why I did not mention Java. Java has pretty much been replaced in all functionality by the .NET Framework (though some people will fight this to their dying day I am not here to argue this point), Java has lacked evolution and uses a very clunky runtime environment, not nearly as powerful as that of the .NET runtime environment. Java really has no practical use outside of the oldschool web development community, and the academic community (still used for some scientific computing). .NET is in my opinion a better alternative.

THere are other languages that exist, most of them are not as commonly used as the languages I listed above, and though it does not hurt to learn them, you might want to focus on the languages listed above first and foremost, since they will ultimately open up the most options for you and your future projects. (All libraires, static and dynamic, by nature tend to be coded for use with C and C++--that is not to say they can not be used within other languages. just usually it is not an easy take to make use them like that.)

How do I learn language X?
==================

Simple! (and no posting this question in the forums is not likely to help). Go to the tutorials forums, there is one, and we have many tutorials in here for many languages! More than you need to start... what else is also good for learning said language? Visit your local library or bookstore. I tend to shun libraries due to their heaps of outdated materials so a bookstore will probably help you more. Book stores have hundreds of books available on programming... try looking up www.chapters.ca or www.amazon.com. You can even get them used for really good prices (this is how I buy most of my books! And I buy about 20 per year).

Remember that programming is a constantly evolving industry, since it relies heaviliy on available technology. You will likely find yourself asking questions a lot (after 18 years of programming I still ask a lot of questions), and buying many books... just to keep up to date.

In any case, have fun learning your new language.
__________________
Clifford Matthew Roche &lt;geek@cliffordroche.com&gt;
Web Hosting: http://www.crd-hosting.com
Consulting: http://www.crdev-consulting.com
kurifu is offline   Reply With Quote
Old Feb 28th, 2005, 9:35 PM   #2
Kypha
Newbie
 
Join Date: Feb 2005
Posts: 1
Rep Power: 0 Kypha is on a distinguished road
Sorry If I missed it.

I'm sorry if I missed it(I'm new at this), but the type of programming I want to use isn't described(I don't think it is, anyway) and I don't know what it is called. I would like to make a program that allows you to have a canvas of sorts, with objects that you can drag onto the canvas. Its all visual, and just click and drag. So I'm sorry If I didn't get it from your clarification but I'd like to know, if anyone has any idea what I'm talking about.
Kypha is offline   Reply With Quote
Old Feb 28th, 2005, 9:40 PM   #3
Mjordan2nd
The Supreme Ruler
 
Join Date: May 2004
Location: Houston
Posts: 1,476
Rep Power: 6 Mjordan2nd is on a distinguished road
You referring to VB?
__________________
&quot;Every gun that is made, every warship launched, every rocket signifies, in the final sense, a theft from those who hunger and are not fed, from those who are cold and are not clothed. The world in arms is not spending money alone. It is spending the sweat of its laborers, the genius of its scientists, the hopes of its children.&quot; - Dwight D. Eisenhower
Mjordan2nd is offline   Reply With Quote
Old Feb 28th, 2005, 9:58 PM   #4
tempest
Programming Guru
 
tempest's Avatar
 
Join Date: Oct 2004
Posts: 1,041
Rep Power: 5 tempest is on a distinguished road
Send a message via ICQ to tempest Send a message via AIM to tempest Send a message via Yahoo to tempest
Quote:
Originally Posted by Kypha
if anyone has any idea what I'm talking about.
You don't have any idea what YOU are talking about. But you are however talking about a form of UI programming. A form more commonly developped in the languages Java, and C++.
__________________

tempest is offline   Reply With Quote
Old Mar 1st, 2005, 8:43 AM   #5
Pizentios
Programming Guru
 
Pizentios's Avatar
 
Join Date: May 2004
Location: Brandon, Manitoba, Canada
Posts: 2,023
Rep Power: 7 Pizentios is on a distinguished road
Send a message via ICQ to Pizentios Send a message via MSN to Pizentios
Or VB, VB's all about drop and drag design.
__________________
Profanity is the one language that all programmers understand.

Check out my Blog <---updated Nov 30 2007!
Pizentios is offline   Reply With Quote
Old Mar 30th, 2005, 1:36 PM   #6
dezza
Newbie
 
dezza's Avatar
 
Join Date: Mar 2005
Location: Denmark
Posts: 16
Rep Power: 0 dezza is on a distinguished road
Send a message via ICQ to dezza Send a message via MSN to dezza
Where is Python at web programming? Hehe ..

Just ignore me ..
__________________
Come in and have a talk!
#programmingforums @ Freenode

Specialities: Linux, XHTML/HTML and CSS.
Learning: Python

Folding@Home Stats

System Requirements: Windows 9x/ME/2000/XP or better
Okay, that makes it run on Linux right?
dezza is offline   Reply With Quote
Old Jun 5th, 2005, 6:50 AM   #7
kurifu
Expert Programmer
 
kurifu's Avatar
 
Join Date: Jul 2004
Location: Halifax, Nova Scotia (Canada)
Posts: 784
Rep Power: 5 kurifu is on a distinguished road
Send a message via ICQ to kurifu Send a message via MSN to kurifu
Actually Python is a really good OO based programming lanuguage from what I hear, used a lot within the Linux environment and can do GUI as well... but I have never used the language and have only heard that it has a really strong OO base to it... much like C# I assume.... but I don't know much else about it at this time so I left it out
__________________
Clifford Matthew Roche &lt;geek@cliffordroche.com&gt;
Web Hosting: http://www.crd-hosting.com
Consulting: http://www.crdev-consulting.com
kurifu is offline   Reply With Quote
Old Jun 5th, 2005, 6:55 AM   #8
kurifu
Expert Programmer
 
kurifu's Avatar
 
Join Date: Jul 2004
Location: Halifax, Nova Scotia (Canada)
Posts: 784
Rep Power: 5 kurifu is on a distinguished road
Send a message via ICQ to kurifu Send a message via MSN to kurifu
VB is a VERY bad programming language to learnin my opinion.. though it was designed for beginner's to my experience VB promotes a lot of dirty and bad programming techniques, VB itself has a habit of producing dependency heavy code which does not always run very well, if at all... and VB code is notorious for being unsafe--I am not sure if this is due to a lot of bad programmers, or because the language lacks proper compiling techniques, or is not very good with runtime/compile-time error checking.

I would sooner recommend Delphi/Kylix/BCB before VB if you want to learn some form of RAD based development. Even C# is really good... and the type safety in C# is amazing...
__________________
Clifford Matthew Roche &lt;geek@cliffordroche.com&gt;
Web Hosting: http://www.crd-hosting.com
Consulting: http://www.crdev-consulting.com
kurifu is offline   Reply With Quote
Old Jun 6th, 2005, 9:15 AM   #9
Lightninghawk
Programmer
 
Join Date: Jun 2005
Location: Douglas, Ga - USA
Posts: 32
Rep Power: 0 Lightninghawk is on a distinguished road
Send a message via MSN to Lightninghawk Send a message via Yahoo to Lightninghawk
I am required to take and pass VB .NET in school. I would not really recommend it as a starter language. Because there is really not a lot of coding that you have to do. You can (drag and drop) everything. and it's just not what programming is about.
It was/is hard to take it seriously, around here anyway. I know that if you wanted to go into pure code it would get somewhat more complicated, but there is always that option of using the GUI side, and that is one thing that would really teach bad techniques.

Of course you have to look at this. If you completely Ignore the GUI side of VB then you work with pure code. And as most of you probably know. Some of the most sophisticated viruses written are in VB's .NET and BASIC languages.

Minor, and now some Major Spy-ware applications are also starting to use the VB route because it has more options for diguising the programs as non-malicious.

No I don't know this because I build the virus. I know this because I clean computers for a living
__________________

+_-¤ ŦĦễ £ﺄĢĦŧňĨňĢĦǻщk ¤-_+
- PC Apps Specialist, Networking n00b, programmer in training -

Information Technology Support

Lightninghawk is offline   Reply With Quote
Old Jun 6th, 2005, 9:17 AM   #10
Lightninghawk
Programmer
 
Join Date: Jun 2005
Location: Douglas, Ga - USA
Posts: 32
Rep Power: 0 Lightninghawk is on a distinguished road
Send a message via MSN to Lightninghawk Send a message via Yahoo to Lightninghawk
Guess I forgot to say. That was very well written I appluade you for taking that time. It laid pretty much all of the cards on the table too. Showing almost everything that anyone would need to know.

Excellent Job !


Oh and by the way.

A good place to learn most anything as far as the actual languages are concerned.
www.w3schools.com has some of the best tutorials for things like HTML, JavaScript, CSS, ect.
as well as many software and hardware languages too.
__________________

+_-¤ ŦĦễ £ﺄĢĦŧňĨňĢĦǻщk ¤-_+
- PC Apps Specialist, Networking n00b, programmer in training -

Information Technology Support


Last edited by Lightninghawk; Jun 6th, 2005 at 9:20 AM.
Lightninghawk is offline   Reply With Quote
Reply

Bookmarks

« Previous Thread in Forum | Next Thread in Forum »

Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
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
Forum Jump




DaniWeb IT Discussion Community
All times are GMT -5. The time now is 5:56 AM.

Powered by vBulletin® Version 3.7.0, Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Copyright ©2007 DaniWeb® LLC