Close
Page 3 of 4 FirstFirst 1 2 3 4 LastLast
Showing results 21 to 30 of 40
  1. #21

    Default

    Quote Originally Posted by 'magwo',index.php?page=Thread&postID=187997#post18 7997
    For the purpose of becoming a better programmer, I would recommend learning a functional language such as Scheme, Lisp or Haskell.

    In my experience, programmers who have at some point in their career/education/hobbies embraced a functional language, write better code.
    People who have really understood functional languages tend to write maintainable, flexible and easily debuggable code. They may not write more correct code as in program correctness, but the "debuggability" of the code that they write makes mistakes and bugs much less problematic and costly to fix.

    While people who only ever programmed in stateful languages, "imperative style", tend to write long and messy functions that are very prone to error when you maintain and refactor the code.


    For example, consider recursion. To a programmer experienced with functional programming, this is the "easy" solution - the naive implementation. But to the imperative style programmer, recursion is scary and complex, and usually doesn't even come to mind when he/she writes code.


    When a functional style programmer writes code in a function, he sees functions in hiding. When an imperative style programmer writes code in a function, he sees steps.
    While I, just like any one else, will agree with you that its good thing to obtain proper coding habits from the start, and while its possible that its easier to do so with languages such as Lisp, one simply have to start some ware, a book about a language that was written by its maker is a good way to start in my eyes, if you can recommend a good quality (epic and above =p) of books in regards to ether Lisp or the other two you mentioned I might (80% actually) go for it first, as I to believe that proper programing habits and efficiency in code is of great impotence, but I have to start some ware =p

    Going Lisp>C>C++ is sort of long trip, but I got a year to "kill" so I don't count out any thing, all advises are welcome!

  2. #22

    Default

    [quote='samuraicow',index.php?page=Thread&postID=18 8462#post188462]while its possible that its easier to do so with languages such as Lisp, one simply have to start some ware[/quote]


    Right, well.. in my opinion you get the best overall return-on-investment as a programmer by learning a functional language. Specific languages are easy to learn - most languages and standard libraries are essentially very similar.. but the good thing about learning a functional language is that it sets your mind in a different state about programming: You start to visualize expressions consisting of expressions rather than steps that read and modify memory, which is very error prone.

    If I would give one single tip to beginner programmers.. it would be.. write SHORT functions. REALLY SHORT. As in.. never more than 6-7 rows per function. This really is a very simple way to get much better code. Did I say SHORT?

    Oh and if I would give a second tip it would be: Don't use singletons.
    [i]-"But they're practical sometimes"[/i]
    Yes, don't use them. Really.

    These recommendations stem from witnessing a lof of coding hardship at various employers and from books like [url='http://www.cc2e.com/']Code Complete[/url], Effective Java and Effective C++. These are all awesome books, well worth your time.


    Edit: I'm sorry I can't really recommend a Lisp book since the one I read was in Swedish.
    Insanity: doing the same thing over and over again and expecting different results. -- Albert Einstein
    EINSTEIN SUX WHENS RNG!

  3. #23

    Default

    I could work my way into Common Lisp thanks to Google, fishing stuff like this and this is easy, but is learning Common Lisp this way really grants one the desired perks?


    The Wiki Page states the following: "There are no reviewed revisions of this page, so it may not have been checked for quality."

    And I just compere that to "(in regards to C Programming Language (2nd Edition) by Brian W. Kernighan , Dennis M. Ritchie) ... That book is pretty much in a league of its own. It's a famous classic in computer science. Ritchie is the co-developer of Unix. Guys like that don't normally write beginner's language books. It's short and clear and easy to read.

    One of the nice things about the K & R book is that subliminally, without even thinking about it, the reader absorbs a lot of useful info about software design and how to simplify and structure a program in a clean way. This stuff goes beyond the C language. It's invaluable for all programming."


    but again:
    Quote Originally Posted by 'magwo',index.php?page=Thread&postID=187997#post18 7997
    For the purpose of becoming a better programmer, I would recommend learning a functional language such as Scheme, Lisp or Haskell.

    In my experience, programmers who have at some point in their career/education/hobbies embraced a functional language, write better code.
    People who have really understood functional languages tend to write maintainable, flexible and easily debuggable code. They may not write more correct code as in program correctness, but the "debuggability" of the code that they write makes mistakes and bugs much less problematic and costly to fix.

    While people who only ever programmed in stateful languages, "imperative style", tend to write long and messy functions that are very prone to error when you maintain and refactor the code.


    For example, consider recursion. To a programmer experienced with functional programming, this is the "easy" solution - the naive implementation. But to the imperative style programmer, recursion is scary and complex, and usually doesn't even come to mind when he/she writes code.


    When a functional style programmer writes code in a function, he sees functions in hiding. When an imperative style programmer writes code in a function, he sees steps.
    This sort of bought me, but how would one go about doing so? Google it up? really?

  4. #24

    Default

    I was only a beginner once, so I can't express an opinion about which language is the best one to start with. However I'm pretty sure it's not the language that I did start with, which was dBase II.

    But just for the record, the K&R book spends quite a bit of time on recursion. I learned C as my third programming language, pretty early in my career as a programmer, and I started writing recursive functions as a result of K&R. Recursion has seemed natural to me ever since.

    I just thumbed through the book and found two recursive examples that have literally stuck in my head ever since I read them. That was 26 years ago! There's not many textbooks I can say that about.

    One of these examples is a recursive-descent parser for parsing C declarations. Come to think of it, my memory of this example may not be so flattering to C itself. The reason this parser has stuck in my head is probably because it's the only way to understand C declarations!
    �Author of HotkeyNet and Mojo

  5. #25

    Default

    Quote Originally Posted by magwo',index.php?page=Thread&postID=188661#post188 661]These recommendations stem from witnessing a lof of coding hardship at various employers and from books like [url='http://www.cc2e.com/
    Code Complete[/url], Effective Java and Effective C++. These are all awesome books, well worth your time.
    I like Code Complete too, so much that I've read it several times. I can't say anything about the others since I haven't read them.
    �Author of HotkeyNet and Mojo

  6. #26

    Default

    What the heck is this "don't use singleton" advice coming from ? use what instead ? a bunch of global variables all over the place ? sounds like really bad advice... or at least lacking a lot of context
    2,3,5 boxing wow with Wow Open Box and MAMA, give them a try!
    (was 8 Boxing Wow with HotKeyNet and ISBoxer)
    Was streaming on twitch.tv/MooreaTv

  7. #27

    Default

    Alright then, I guess I am all set :>

    I am going to start with Common Lisp, and after that I'll go C>C++ with the books I mentioned in a previews post. Later on I'll get Code Complete but again that's on a later point.

    So for now, Googling "'Hello World' Common Lisp toturial" as well as "Wiki Common Lisp" =p.

    Thanks all for the input

  8. #28

    Default

    Quote Originally Posted by 'Moorea',index.php?page=Thread&postID=188739#post1 88739
    What the heck is this "don't use singleton" advice coming from ? use what instead ? a bunch of global variables all over the place ? sounds like really bad advice... or at least lacking a lot of context
    Singletons are in most cases an excuse for poor (or total lack of) class structure and proper passing of relevant information to objects and functions. Global variables are basically the same thing.


    Using singletons is an excellent way of making your code hard to unit test, breaking abstraction, making super tight coupling, minimizing code reusability, lowering readability and maximizing the amount of regression bugs that appear when you refactor the code. Throw in threads and you'll soon be in the 9th circle of nondeterministic hell..


    Enjoy.
    Insanity: doing the same thing over and over again and expecting different results. -- Albert Einstein
    EINSTEIN SUX WHENS RNG!

  9. #29

    Default

    Quote Originally Posted by 'magwo',index.php?page=Thread&postID=189068#post18 9068
    Quote Originally Posted by 'Moorea',index.php?page=Thread&postID=188739#post1 88739
    What the heck is this "don't use singleton" advice coming from ? use what instead ? a bunch of global variables all over the place ? sounds like really bad advice... or at least lacking a lot of context
    Singletons are in most cases an excuse for poor (or total lack of) class structure and proper passing of relevant information to objects and functions. Global variables are basically the same thing.

    Using singletons is an excellent way of making your code hard to unit test, breaking abstraction, making super tight coupling, minimizing code reusability, lowering readability and maximizing the amount of regression bugs that appear when you refactor the code. Throw in threads and you'll soon be in the 9th circle of nondeterministic hell..
    Enjoy.
    Unsubstantiated BS mumbo jumbo - how do you manage thread or resource pool or anything behind a factory without a Singleton for instance... anyway... if he's just deciding which language to learn there is a long way before he'll need singletons - check again in 5-10 years
    2,3,5 boxing wow with Wow Open Box and MAMA, give them a try!
    (was 8 Boxing Wow with HotKeyNet and ISBoxer)
    Was streaming on twitch.tv/MooreaTv

  10. #30
    Insanity: doing the same thing over and over again and expecting different results. -- Albert Einstein
    EINSTEIN SUX WHENS RNG!

Similar Threads

  1. Replies: 2
    Last Post: 11-30-2008, 11:47 PM
  2. AddOn Studio for World of Warcraft.
    By Skuggomann in forum Macros and Addons
    Replies: 1
    Last Post: 11-04-2008, 10:10 PM
  3. Buffer Overrun Detected - Visual C++ Runtime Library
    By schlange in forum Software Tools
    Replies: 3
    Last Post: 10-21-2008, 06:43 PM
  4. Is it possible to make a visual countdown timer in a macro?
    By zhenyalix in forum Macros and Addons
    Replies: 7
    Last Post: 04-11-2008, 06:33 PM
  5. Replies: 2
    Last Post: 03-02-2008, 05:32 AM

Posting Rules

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