Programming resources

Discussion in 'The Common Room' started by Elf, May 15, 2015.

  1. Elf

    Elf Immortal Staff Member

    Messages:
    105
    Likes Received:
    6
    Location:
    Clark County, WA
    I often get asked which books or sites I have used to learn various languages. So, for reference, here they are! (As I think of them, anyways...)

    If it is listed here, I found it useful and can recommend it. Please feel free to add to this thread and contribute your own recommendations!
    • Machine languages
      • x86 Assembly: Assembly Language Step By Step by Jeff Duntemann (I have an older version that starts with DOS)
      • 68k Assembly: 68HC12 Microcontroller by Daniel J. Pack
      • I'm sure there are at least one or two other platforms I picked up somewhere, but nothing I have a working knowledge of anymore...
    • C-style languages
      • C / C++: Learned these too long ago, books no longer relevant
      • Java: Learning Java by Patrick Niemeyer
      • C# .NET: Programming C# 5.0 by Ian Griffiths
      • Perl: Learned too long ago, wouldn't recommend it!
      • PHP: Learned too long ago (circa PHP 3). Not my favorite language but probably one to tuck away for general knowledge if you do web development.
      • Python: Dive Into Python by Mark Pilgrim
    • Lisp style languages
      • Common Lisp: Learned it at school somewhere, probably not too useful for you either...
      • Erlang: Erlang Programming by Francesco Cesarini and Simon Thompson
        • Yes! Erlang is the language to learn for developing modern highly concurrent applications. Not for the faint of heart, though.
        • I hear Learn You Some Erlang for Great Good! by Fred Hebert is also good, but I haven't read it myself
      • TCL: Learned it out of an O'Reilly book that seems out of print, was just okay. Handy language though, too bad it fell out of favor.
    • Shell scripting
      • ZSH: Has an excellent manual
      • PowerShell: I need to find something good for this; I've just been using StackExchange and TechNet. Occasionally frustrating.
    • Query languages (not really programming, but...)
    • Libraries and stuff
      • BerkeleyDB: Berkeley DB by Sleepycat Software (you will probably never use this unless you are writing high performance but not highly concurrent stuff)
      • Sockets: Linux Socket Programming by Warren Gay (this is definitely the book for learning sockets)
    • Design
      • OS: Operating System Concepts by Silberschatz, Galvin, and Gagne (the classic "Dinosaur Book")
      • UML: Learning UML 2.0 by Russ Miles, Kim Hamilton
        • I would avoid going all-out full detail with UML modelling, but it can be handy for architecting larger projects.
    • Web
    That is it for programming for now. I am sure there are as many languages and other things that I have forgotten as are listed here, but if I forgot about it, it probably wasn't that important? I will do similar lists in the future for SysAdmin and Business stuff.
     
    Last edited: Jun 7, 2015
  2. Elf

    Elf Immortal Staff Member

    Messages:
    105
    Likes Received:
    6
    Location:
    Clark County, WA
    If you ever want to get into programming oldschool stuff on DOS (surprisingly rewarding), here are some good resources for that:
    • VirtualBox - Emulator
    • FreeDOS - Freely available DOS clone
    • Microsoft DOS 5.0 (MSDOS5) - I have this around somewhere and can dig it up on request. Gives you the truly authentic DOS environment, but FreeDOS is a decent substitute if you don't need that.
    • OpenWatcom - The much renowned Watcom compiler used to create almost all the classic early DOS games (Doom, Descent, etc.). Original version prior to the open source team changes is 11.0c. Freely available now!
    • ALINK - Free linker (for compiled objects). Can also use the one that comes w/ Watcom.
    • NASM - The Netwide Assembler. Good free Intel syntax assembler.
    • DOS/4GW - The original protected mode loader for Watcom. Going into Protected Mode (PMODE) is necessary if you want to address more than 64Kbyte (Real Mode) or 1Mbyte (Segmented Mode) of memory.
      • DOS/4GW is still paid. Apparently there is still a market for it... Amazing!
    • PMODE/W - Free alternative protected mode loader for Watcom. Better in many ways than DOS/4GW but fewer features if I remember correctly.
    • UPX - The executable packer. Creates compressed executables that are still launchable. Remember when we cared how much we could fit on a floppy? Cool stuff.
    • Flat real mode (a.k.a. Voodoo mode, Unreal mode) - A trick for accessing all 4GB of 32-bit address space without the overhead of Protected Mode (which used to really slow things down on the 386/486). Maybe not so relevant today, but definitely a cool trick. Notably used by... the Ultima 7 engine! (u7:pot_g)
    I know by now (in 2015), DOS development is considered very outdated. However, if you want to really learn how the machine and hardware works, there is simply no substitute. Coding in C and Assembly under DOS means doing your own lifting for almost everything except Disk I/O, and sometimes even then! You will be writing your own graphics drivers, your own keyboard drivers. You will be hooking the timer interrupt to schedule your own events. You will not be able to take anything for granted. The OS is there to load your program, after which it gets out of the way. You will learn the ins and outs of what is really going on under the hood. It is a very intense, very educational, and very rewarding environment to achieve things in, and I think a necessary step for becoming a truly great (and not just "good") programmer.

    An idea I have had off and on to keep all this relevant is similar to what GOG does with its old DOS games. One could code a game in DOS and distribute it as a DOSBOX install or Virtual Machine to keep it portable and relevant. A new DOS game, wouldn't that be cool?
     
  3. Elf

    Elf Immortal Staff Member

    Messages:
    105
    Likes Received:
    6
    Location:
    Clark County, WA
    Updated the first post to include books on:
    • UML 2.0
    • HTML 5 / CSS 3
    • JavaScript and jQuery
    These are books I have picked up recently to refresh before starting a larger web application project. The HTML/CSS/JavaScript books are good beginners (non-programmer) books, but also get you to the point of being able to do some fairly functional stuff. I have not finished them, but I am happy enough with them to make a recommendation.
     
  4. Elf

    Elf Immortal Staff Member

    Messages:
    105
    Likes Received:
    6
    Location:
    Clark County, WA
    For those wanting to learn C# or C/C++ on a Windows platform, Microsoft has finally done something sensible and released Visual Studio Community Edition. Unlike the earlier Express Editions, it is feature equivalent to Visual Studio Professional and not hobbled.
     
  5. Elf

    Elf Immortal Staff Member

    Messages:
    105
    Likes Received:
    6
    Location:
    Clark County, WA
  6. Bemoliph

    Bemoliph High Priest Staff Member

    Messages:
    35
    Likes Received:
    14
    Some programming visualizations:
    • David Galles's Data Structure and Algorithm Visualizations - A lot of fully animated, interactive visualizations for various things. Especially awesome for the more complex trees like AVL and Red-Black Trees where stuff gets flip-flopped around. No sample data or explanations, though, so you'll have to supply your own numbers and find your own reads.
    • sorting-algorithms.com - Some common sorting algorithms with a couple different starting conditions and basic explanations, including pseudocode implementations. Run them all at once to see how they compare!
     
    Elf likes this.
  7. Bemoliph

    Bemoliph High Priest Staff Member

    Messages:
    35
    Likes Received:
    14
    • WPF-Tutorial.com - An introduction to C# GUI stuff in many bite sized articles. Good to use with the previously recommended Griffiths C# book since its own WPF chapter is lacking.
     
  8. Bemoliph

    Bemoliph High Priest Staff Member

    Messages:
    35
    Likes Received:
    14
    • RegexOne - An interactive tutorial on practical regular expressions right in the browser. It has 15 lessons with examples, 8 practice problems, and extra language-specific tutorials for C#, PHP, and Python.
     
  9. Bemoliph

    Bemoliph High Priest Staff Member

    Messages:
    35
    Likes Received:
    14
    • The Big-O Cheat Sheet - Exactly what it says on the box. Color coded complexities for ease of comparison, and with links to Wikipedia as jumping off points.