Page 2 of 4 FirstFirst 1234 LastLast
Results 11 to 20 of 34

Thread: New Programmer

  1. #11
    Join Date
    Apr 2006
    Beans
    800
    Distro
    Lubuntu 12.04 Precise Pangolin

    Re: New Programmer

    Quote Originally Posted by bitscarre View Post
    Python, Java, C++. This is the order I recommend.
    I'd agree with this.
    Personally my first language was BASIC on a Sinclair ZX81. A horrible language but it hasn't stopped me.

  2. #12
    Join Date
    Nov 2009
    Location
    The Netherlands
    Beans
    239
    Distro
    Ubuntu 12.04 Precise Pangolin

    Re: New Programmer

    Quote Originally Posted by bitscarre View Post
    Python, Java, C++. This is the order I recommend.
    I would skip Java. I learned Java first myself, and Python and C++ after that.

    I found that Java is too restrictive as it forces you to use classes and you can't use function pointers (ore something similar). I hardly ever use Java anymore, and, while learning C++ I noticed that Java had left me with a lot of bad habits.

    So, I would suggest either Python or C++, Python might be easier to learn at first but, as TheBuzzSaw said, C++ can serve as a solid foundation and when you know C++ learning any other language won't pose much of a problem anymore.

    Also, you're not a real programmer until you can write programs instead of scripts.

  3. #13
    Join Date
    Dec 2009
    Location
    Norway
    Beans
    Hidden!
    Distro
    Ubuntu 10.04 Lucid Lynx

    Re: New Programmer

    Quote Originally Posted by ziekfiguur View Post
    ..and when you know C++ learning any other language won't pose much of a problem anymore.
    Why do people say this? It isn't true at all.

    Learning C++ means you'll have an easier time learning similar languages like Java and C# -- since C++, Java and C# really are similar to each other when you consider a much broader set of languages.

    Examples are Lisp, Haskell, Forth, Factor, Erlang ... knowing C++ will not help you in any special or particular way here.

    edit:
    To put pressure on this; C++ is not the be all and end all of programming languages; it isn't even particularly interesting or ground breaking in any way whatsoever. It certainly isn't intellectually challenging; it isn't esthetically pleasing; it isn't interesting academically either. People use C++ because it represents a boring, valid and practical compromise and choice in certain special cases.
    Last edited by worseisworser; November 15th, 2010 at 03:30 PM.
    Homepage | GitHub | Blog | Pay some of us a visit at #ubuntu-programming on FreeNode.

  4. #14
    Join Date
    May 2010
    Location
    uk
    Beans
    9,249
    Distro
    Xubuntu 14.04 Trusty Tahr

    Re: New Programmer

    Hi

    Python, Java, C++. This is the order I recommend.
    Excellent choice for a number of reasons.

    Python is scripting language that is easy to learn. It is also class based and uses inheritance so will prepare him for java and c++.

    Java will introduce him to syntax that is similar to c++ but hides alot of the complexities of c++.

    C++ last because it requires an understanding of how the computer works, having to deal with memory management, raw pointers, patterns and idioms, etc.

    An _excellent_ choice for a young child!!!

    I am a developer myself

    Kind regards
    Last edited by matt_symes; November 15th, 2010 at 02:54 PM.

  5. #15
    Join Date
    Jan 2007
    Location
    Utah
    Beans
    550

    Re: New Programmer

    HA! I knew it. Here comes the anti-C++ cavalry.

    Quote Originally Posted by worseisworser View Post
    To put pressure on this; C++ is not the be all and end all of programming languages; it isn't even particularly interesting or ground breaking in any way whatsoever. It certainly isn't intellectually challenging; it isn't esthetically pleasing; it isn't interesting academically either. People use C++ because it represents a boring, valid and practical compromise and choice in certain special cases.
    It's not groundbreaking because (A) it is very old, and (B) it is what is used to build just everything else you hold dear. I'm not sure what implanted this deep hatred toward C++ in you. Just about every "superior" language was built using C/C++. In other words, by using one of these more modern languages, you make massive compromises in performance and low-level control. If you're writing a business app, fair enough. Performance is usually a non-issue. If you're building any kind of real-time software, C++ is the way to go.

    And the earlier statement is true. I don't know where you get off claiming otherwise, but I have done it firsthand. Knowing C++ makes learning any other language a cakewalk. I found it to be true. My colleagues all found it to be true. Meanwhile, I know many people who learn other languages first and then whine and complain about having to learn C++.

    Quote Originally Posted by matt_symes View Post
    C++ last because it requires an understanding of how the computer works, having to deal with memory management, raw pointers, patterns and idioms, etc.
    Completely false. I used C++ for years before I knew an ounce of what went on underneath. Also, avoiding C++ because you "have to deal with memory management and raw pointers" is like avoiding math because you "have to deal with integrals and derivatives". There is a fun/easy side to C++, you know. As I said above, I learned it as a child. Sure, I didn't touch pointers and whatnot till I as a bit older, but I was able to get comfortable with the language fine otherwise. The concept of scope, control structures, etc. are all expressed very well in C++.

    And no, you do not have to know "patterns and idioms" to use C++... however, I find it ironic you mentioned those items because I hope any decent programmer would be using patterns/idioms in any language he/she uses. How you managed to tie that to specifically C++ is beyond me.



    Again, I won't be offended if the child does not go with C++ first. There are plenty of great languages out there. I'm simply hoping that C++ is not tossed out the window based on these FUD-centric reasons.
    Code:
    while (homework > 0) happiness--;
    // Don't worry. I'm a multithreaded program. ;)

  6. #16
    Join Date
    May 2010
    Location
    uk
    Beans
    9,249
    Distro
    Xubuntu 14.04 Trusty Tahr

    Re: New Programmer

    Hi

    +1 TheBuzSaw for most of it.

    I have been using C and C++ for 15 years and is my main development language, so i am _not_ anti C or C++.

    With C and C++ you need to know memory management (no garbage collection), You need to pointers and how to use them properly,, pointer arithmetic etc. You need to know proper thread management, contention and re-entry etc. You need to know idioms, smart pointers, RAII etc etc etc etc.

    I have used all three. But the most powerful are C and C++. However they are the hardest to master.

    This is why i would suggest a progression for a young person to learn the various concepts inherent in each.

    Most languages that have been developed have a place somewhere and field a solution to some problem.

    However, i would not write an operating system in any other language but C or C++ with a small bit of assembler. And don't forget C++0x is coming. Even more power.

    Kind regards
    Last edited by matt_symes; November 15th, 2010 at 04:39 PM.

  7. #17
    Join Date
    Jan 2007
    Location
    Utah
    Beans
    550

    Re: New Programmer

    Quote Originally Posted by matt_symes View Post
    With C and C++ you need to know memory management (no garbage collection), You need to pointers and how to use them properly,, pointer arithmetic etc. You need to know proper thread management, contention and re-entry etc. You need to know idioms, smart pointers, RAII etc etc etc etc.
    I still take issue with this statement here. You don't need memory management if you're not going to make a memory mess in the first place. Having to manage memory implies you are having to allocate memory in the first place. All these advanced topics do not even remotely apply here. Do you honestly think this will be the kid's first lesson?

    Code:
    int* data = new int[1024];
    Again, a student can go a long way without ever having to deal with all those things you listed. However, when the time is right, it's not that hard to learn.

  8. #18
    Join Date
    May 2010
    Location
    uk
    Beans
    9,249
    Distro
    Xubuntu 14.04 Trusty Tahr

    Re: New Programmer

    Hi

    Buzz

    However, when the time is right, it's not that hard to learn.
    Now that statement i really agree with. (with my emphases) I would advocate learning to walk before running.

    The progression of those languages will teach concepts inherent in modern programming and that will be one the benefits of it.

    It would give a good base understanding in a scripting language, a byte interpreted language and compiled language.

    I do not inherently disagree with you, however it is alot easier to write a good python program that a C++ one and its easier to learn.

    And to write any industrial strength application in C++ you _need_ these concepts.

    anyway int* p = new int[1024]; is more C and less C++. C++ would use the std libraries.

    Maybe we should agree to disagree After all these are only opinions

    I have stated my case and will leave it at that.

    Kind regards
    Last edited by matt_symes; November 15th, 2010 at 05:20 PM.

  9. #19
    Join Date
    Dec 2009
    Location
    Norway
    Beans
    Hidden!
    Distro
    Ubuntu 10.04 Lucid Lynx

    Re: New Programmer

    Quote Originally Posted by TheBuzzSaw View Post
    HA! I knew it. Here comes the anti-C++ cavalry.
    I do not view myself as part of any group; I honestly do not care; these are your problems. If you're looking to start some sort of fight you've picked the wrong person tbh.; you can't win.


    Quote Originally Posted by TheBuzzSaw View Post
    It's not groundbreaking because (A) it is very old,
    That's not really the cause; there's plenty of languages older and even much older than C++ which are way more interesting etc..


    Quote Originally Posted by TheBuzzSaw View Post
    and (B) it is what is used to build just everything else you hold dear.
    Err. No, not really.


    Quote Originally Posted by TheBuzzSaw View Post
    I'm not sure what implanted this deep hatred toward C++ in you.
    The abundantly amount of ignorant and noisy C++ users helps. I know plenty C++'ers who are not though, and of course these tend to agree with me; these also tend to know several languages besides C++ and the languages in the same family as C++.


    Quote Originally Posted by TheBuzzSaw View Post
    Just about every "superior" language was built using C/C++.
    Again, no, not really; at this point a suspicion that you do not know what you're talking about is dawning. I'll probably ignore anything further you have to say on this subject now.

    edit: ..and in addition, for the cases where this is true, it is still totally irrelevant in all ways you can imagine even only considering those particular cases; i.e. ignoring statistics. You lacking this fundamental and very basic realization probably means I shouldn't be having this conversation with you at all.


    Quote Originally Posted by TheBuzzSaw View Post
    In other words, by using one of these more modern languages, you make massive compromises in performance and low-level control.
    Within reason; no, not really -- I'm not thinking Python here.


    Quote Originally Posted by TheBuzzSaw View Post
    If you're building any kind of real-time software, C++ is the way to go.
    I can agree with this; perhaps C even more so.


    Quote Originally Posted by TheBuzzSaw View Post
    And the earlier statement is true. I don't know where you get off claiming otherwise, but I have done it firsthand. Knowing C++ makes learning any other language a cakewalk. I found it to be true. My colleagues all found it to be true.
    Then both you and your colleagues are wrong or you are lying.

    Again knowing C++ will not help you more vs. knowing e.g. Java when you are moving to a language in a totally different category/family than the category/family shared by C++ and Java.


    Quote Originally Posted by TheBuzzSaw View Post
    Meanwhile, I know many people who learn other languages first and then whine and complain about having to learn C++.
    Well of course; this tends (depending on the language) to be huge step backwards, but a necessary evil in some cases.
    Last edited by worseisworser; November 15th, 2010 at 05:39 PM. Reason: minor language changes
    Homepage | GitHub | Blog | Pay some of us a visit at #ubuntu-programming on FreeNode.

  10. #20
    Join Date
    Jan 2007
    Location
    Utah
    Beans
    550

    Re: New Programmer

    Quote Originally Posted by worseisworser View Post
    you can't win.
    Wow, this is gonna be rich...

    Quote Originally Posted by worseisworser View Post
    That's not really the cause; there's plenty of languages older and even much older than C++ which are way more interesting etc..
    Why are you discussing how "interesting" a language is?

    Quote Originally Posted by worseisworser View Post
    Err. No, not really.
    Well, I guarantee your operating system and many of its major apps were not written in Pascal...

    Quote Originally Posted by worseisworser View Post
    The abundantly amount of ignorant and noisy C++ users helps. I know plenty C++'ers who are not though, and of course these tend to agree with me; these also tend to know several languages besides C++ and the languages in the same family as C++.
    What... Really? "Only ignorant people disagree with me"? That coupled with your opening statement is murder. Who do you think you are? You're not even making arguments anymore. You're just saying, "Well, I'm right. End of discussion."

    Quote Originally Posted by worseisworser View Post
    Again, no, not really; at this point a suspicion that you do not know what you're talking about is dawning. I'll probably ignore anything further you have to say on this subject now.
    Enlighten me. What is the JVM written in? Why is Python written in? What is .NET and C# written in? And don't say ASM as that is an intrinsic component of high level C++.

    Quote Originally Posted by worseisworser View Post
    edit: ..and in addition, for the cases where this is true, it is still totally irrelevant in all ways you can imagine even only considering those particular cases; i.e. ignoring statistics. You lacking this fundamental and very basic realization probably means I shouldn't be having this conversation with you at all.
    Again, bring out your facts rather than just march around parading how amazing you think you are.

    Quote Originally Posted by worseisworser View Post
    Within reason; no, not really -- I'm not thinking Python here.
    I'm not sure why you're combating this particular point. I figured you'd say something more along the lines of "I don't need low level control for this". Instead, you drastically weaken your position. Exactly how would you code a driver, for instance???

    Quote Originally Posted by worseisworser View Post
    I can agree with this; perhaps C even more so.
    Fair enough.

    Quote Originally Posted by worseisworser View Post
    Then both you and your colleagues are wrong or you are lying.
    Uhhh, what? Are you serious? Again, this isn't even an argument. "Well, you disagree with me, so, you're wrong." What am I supposed to respond with? "NUH UH!!!"

    Quote Originally Posted by worseisworser View Post
    Again knowing C++ will not help you more vs. knowing e.g. Java when you are moving to a language in a totally different category/family than the category/family shared by C++ and Java.
    I can agree with this, but how big of a leap are we talking here? Like jumping to SQL? I'm just not sure how it's relevant because we're discussing the basics of programming, not programming in a specific area.

    Quote Originally Posted by worseisworser View Post
    Well of course; this tends (depending on the language) to be huge step backwards, but a necessary evil in some cases.
    Backwards? Moving to a language with infinitely more control is a step backwards?

Page 2 of 4 FirstFirst 1234 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
  •