Page 1 of 4 123 ... LastLast
Results 1 to 10 of 33

Thread: Learning Computer Programming FAQ

  1. #1
    Join Date
    Apr 2007
    Beans
    14,781

    Learning Computer Programming FAQ

    0. What is the best language?

    This is a common question. Many people seemed worried about learning the "wrong" language. There is no wrong language! I suggest learning languages that are standard. In other words, learn C++ before learning Microsoft's Visual C++. As for what programming language to learn, see First Language Thread.

    1. Does learning one language make it difficult to learn another?

    NO! It makes it easier. Although the syntax is different language to language, and the languages have their own rules, the basics are the same. Learning more than one language is encouraged.

    2. Why are there so many programming languages?

    Many programming languages started with one programmer making a language for themselves for a specific purpose. These languages then grew. Some companies, like Sun Microsystems and Microsoft create their own languages, Java and .NET spring to mind. Java is cross platform, .NET is less so.

    3. How long does it take?

    Programming is a lifelong learning experience. If you already know the basics of programming, it can only take you a matter of hours to know a language. Being able to use a language effectively is what it is all about. Here is the truth: How to Teach Yourself Programming in 10 Years also read this famous article: How to be a Hacker

    4. Programming Games and Fancy GUI's

    Game programming is complex and requires a team of people for anything more than small games. There are many libraries and modules for game programming, but you must learn the language first.

    Programming a GUI is something you should do after you learn the language, GUI programming can be very complex, even for rather simple applications.

    Learn the basics of the language (through the command line) first.

    For more:

    * How to Develop an MMORPG With No Team And Limited Budget
    * So you want to make your own MMORPG...

    5. How do I learn?

    See the stickies of this forum, and my wiki.

    Also, use Google or another search engine. Finding documentation for libraries and languages is often as simple as googling for it. Here is How to Ask Questions the Smart Way

    6. I want to contribute to Free Software. How I can start new open source project?

    I do not want to discourage you, but there are thousands of projects out there, doing almost anything you can imagine, so chance you have some new idea is pretty slim. If you want to reinvent the wheel as learning experience, don't expect anyone joining (it is **your** learning), and it would be wrong, because it would split development community.

    As a beginner, you are **much** better of to join existing project. You can learn from existing code, learn how to use tools, and build credibility. This way, you can contribute to code used by existing users, instead of splitting user community between multiple struggling projects.

    If you want to go this way, pick any project you care to learn deeply, and ask developers on mailing list. But expect to get only cursory information at the beginning, and be self-starting and self-learning. If all you contribute to project is questions, you will be net drag for developer's time, not a help. Bug report is different, most developers do not expect fix - but you cannot expect explanation how they fixed it (it is in the code).

    Later, when you have the skills, and you are sure that you can do better, you can start new project. But do not expect users or anyone even to look at your new project until it is at least half-usable: you and nobody else have to put up valid code, and people maybe will look at it.

    Another way to contribute is to help packing programs and fixing bugs in some distribution. Ie Ubuntu formalized this, they recruit MOTUs after every release, and have training materials for them.

    freshmeat.net and sourceforge.net host many projects.

    7. Which language gives me best chance to get a programming job?

    Most jobs involve Java and C#/.NET, but don't limit yourself to these languages. Jobs have a wide variety of requirements, and learning PHP, Python, Perl, Ruby, C, C++ and other languages can only help you. Although the most jobs ask for Java and .NET, not all of them do. Learning XHTML, CSS and SQL are almost essential as well, although they are not programming languages.
    Last edited by LaRoza; February 7th, 2008 at 04:38 AM.

  2. #2
    Join Date
    Oct 2006
    Location
    Austin, Texas
    Beans
    2,715

    Re: Learning Computer Programming FAQ

    Quote Originally Posted by LaRoza View Post
    5. How do I learn?

    See the stickies of this forum, and my wiki.
    And Google is your best friend!

  3. #3
    Join Date
    Jun 2006
    Location
    CT, USA
    Beans
    5,267
    Distro
    Ubuntu 6.10 Edgy

    Re: Learning Computer Programming FAQ

    1. What language is good for beginners?

    And are languages bad for beginners
    Although you will likely learn many languages during your programming career, and can start learning programming in any language, not all languages are created equal.

    Some languages were designed for experienced programmers, and beginners are advised to start elsewhere: Assembly (too low level), APL (too cryptical), Forth (full access to computer with no protection from errors at all) might be not good beginner's languages. But those "hard" languages are great as second or third language, they will expand your mind greatly.

    OTOH especially dynamically typed languages (Python, Perl, Ruby, Javascript) are simpler to learn for beginners, because variable type might be distracting from other concepts, like variable, loop, function, recursion. Of course, when you start programming in dynamically typed languages, you are for rude awakening when you try to switch to statically typed language, like C, C++, or Java.

    Once you understand those basic programming concepts, you can use than in any language, but is far simpler to learn them in simple language.

    See wiki in my sig for links to free tutorials and training tasks.

    2. I want to contribute to Free Software. How I can start new open source project?

    I do not want to discourage you, but there are thousands of projects out there, doing almost anything you can imagine, so chance you have some new idea is pretty slim. If you want to reinvent the wheel as learning experience, don't expect anyone joining (it is **your** learning), and it would be wrong, because it would split development community.

    As a beginner, you are **much** better of to join existing project. You can learn from existing code, learn how to use tools, and build credibility. This way, you can contribute to code used by existing users, instead of splitting user community between multiple struggling projects.

    If you want to go this way, pick any project you care to learn deeply, and ask developers on mailing list. But expect to get only cursory information at the beginning, and be self-starting and self-learning. If all you contribute to project is questions, you will be net drag for developer's time, not a help. Bug report is different, most developers do not expect fix - but you cannot expect explanation how they fixed it (it is in the code).

    Later, when you have the skills, and you are sure that you can do better, you can start new project. But do not expect users or anyone even to look at your new project until it is at least half-usable: you and nobody else have to put up valid code, and people maybe will look at it.

    Another way to contribute is to help packing programs and fixing bugs in some distribution. Ie Ubuntu formalized this, they recruit MOTUs after every release, and have training materials for them.

    I did not linked any explanations: as a self-learner, you are supposed to know that "google is your friend"
    Last edited by pmasiar; February 4th, 2008 at 03:00 PM.

  4. #4
    Join Date
    Apr 2007
    Beans
    14,781

    Re: Learning Computer Programming FAQ

    Quote Originally Posted by pmasiar View Post
    1. Are there languages especially good/bad for beginners?
    Although you will likely learn many languages during your programming career, and can start learning programming in any language, not all languages are created equal.

    Some languages were designed for experienced programmers, and beginners are advised to start elsewhere: Assembly, APL, Forth might be not good beginner's languages. OTOH especially dynamically typed languages (Python, Perl, Ruby, Javascript) are simpler to learn for beginners, because variable type might be distracting from other concepts, like loop, function, recursion. Of course, when you start programming in dynamically typed languages, you are for rude awakening when you try to switch to statically typed language
    To avoid any hints of flaming, I tried to leave any references to languages out. I almost put the exact same thing you wrote in.

  5. #5
    Join Date
    Jun 2006
    Location
    CT, USA
    Beans
    5,267
    Distro
    Ubuntu 6.10 Edgy

    Re: Learning Computer Programming FAQ

    Quote Originally Posted by LaRoza View Post
    To avoid any hints of flaming, I tried to leave any references to languages out. I almost put the exact same thing you wrote in.
    Well, but then a valid questions remains un-answered: are some languages easier to learn than other? Do we want to keep cool and be PC and avoid valid questions?

    Better answer might be:

    Yes, Python might be easier to learn that Java/C#/any other statically typed language, but job market requires you to know Java/C#/whatever. So let's ask another question:

    3. Which language gives me best chance to get a programming job?

    Answer is Java and C#/.NET and I do not argue with that. I just argue that as long as programmer does not want to be one-pony trick, or single-language code monkey, Python/Ruby is better start than Java/C#.

    Instead of suppressing valid questions in fear of misunderstandings, IMHO better is to formulate them correctly and answer them.
    Last edited by pmasiar; January 14th, 2008 at 07:07 PM.

  6. #6
    Join Date
    Apr 2007
    Beans
    14,781

    Re: Learning Computer Programming FAQ

    @pmasiar

    Do you like the revised OP?

  7. #7
    Join Date
    Jun 2006
    Location
    CT, USA
    Beans
    5,267
    Distro
    Ubuntu 6.10 Edgy

    Re: Learning Computer Programming FAQ

    Reworked OP is fine, but you sidestepped important question: "which languages are easier to learn?"

    About 95% of people who know Python (and most of them know more than that single language) agree with suggestion for Python as best for learners. Compared to that, many people who know Java think it is not the best as first language - and many who think it is the best do not know any other language, or at least not any dynamically typed language, so their opinion is based on prejudice, not on experience.

    And I would like comments from others. We discussed it many times, converting those discussions into FAQ (with possibly linking older discussions with summaries) would be positive step IMHO.

  8. #8
    Join Date
    Apr 2007
    Beans
    14,781

    Re: Learning Computer Programming FAQ

    Quote Originally Posted by pmasiar View Post
    Reworked OP is fine, but you sidestepped important question: "which languages are easier to learn?"

    About 95% of people who know Python (and most of them know more than that single language) agree with suggestion for Python as best for learners. Compared to that, many people who know Java think it is not the best as first language - and many who think it is the best do not know any other language, or at least not any dynamically typed language, so their opinion is based on prejudice, not on experience.

    And I would like comments from others. We discussed it many times, converting those discussions into FAQ (with possibly linking older discussions with summaries) would be positive step IMHO.
    The suggestions for beginners thread (sticky) might be better suited for such conversations.

    I will try to find a good "what language for beginners" thread that shows many opinions and put a link in there.

    <edit>
    http://ubuntuforums.org/showthread.php?t=528134 but you had stated the poll to be meaningless....

    The focus of the above thread was to get a discussion of what people think, and have a quick way to review the results.
    </edit>
    Last edited by LaRoza; January 14th, 2008 at 08:22 PM.

  9. #9
    Join Date
    Jun 2006
    Location
    CT, USA
    Beans
    5,267
    Distro
    Ubuntu 6.10 Edgy

    Re: Learning Computer Programming FAQ

    Yes, self-selected online polls are meaningless, but maybe beginners might not know it and will trust this one

  10. #10
    Join Date
    Apr 2007
    Beans
    14,781

    Re: Learning Computer Programming FAQ

    Quote Originally Posted by pmasiar View Post
    Yes, self-selected online polls are meaningless, but maybe beginners might not know it and will trust this one
    I see what you mean about the meaninglessness of the poll, without qualifying who is posting. As I recall, your attempt to establish the members experience/credibility resulted in a closed thread. It was a shame, that thread (except for the overestimation my abilities) was a good way to know who was who.

    Hopefully, people will read the links posted and the reasoning.

Page 1 of 4 123 ... LastLast

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •