Thread: Programming Faq
View Single Post
 
Reply
Posted 2004-10-24, 11:30 AM in reply to Demosthenes's post "Programming Faq"
(and another from the same site)

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.
Old
Profile PM WWW Search
Demosthenes seldom sees opportunities until they cease to beDemosthenes seldom sees opportunities until they cease to beDemosthenes seldom sees opportunities until they cease to beDemosthenes seldom sees opportunities until they cease to be
 
Demosthenes