Help a noob learn to code

Discussion in 'Geek Cave: Computers, Tablets, HT, Phones, Games' started by Stapsy, Oct 20, 2015.

  1. Stapsy

    Stapsy Friend

    Pyrate
    Joined:
    Sep 28, 2015
    Likes Received:
    339
    Trophy Points:
    63
    I was hoping that somebody would be able to give me some advice on how to start coding/programming.

    I have been messing around in a Unix based program at work (I think) using basic commands to access directories and move files. I also have some experience creating scripts in excel and other statistical software packages. I suppose I just don’t know how to start by myself. I understand computer logic and how commands work but I don’t know how or where I can practice without risking blowing up my computer.

    Any resources, books, websites, or other help would be appreciated.
     
  2. Deep Funk

    Deep Funk Deep thoughts - Friend

    Pyrate
    Joined:
    Sep 27, 2015
    Likes Received:
    9,029
    Trophy Points:
    113
    Location:
    Amsterdam
    Home Page:
    Codecademy is a good place to start. If you are uncertain of your learning goals start with HTML + CSS and add PHP for the fun of it.

    If you want to do more go Python or Java. Learn about IDEs and try them out.

    If you want to have fun in Microsoft software go for Visual Basic, C# and C++. Visual studio and Youtube are present.

    Have fun, persist and make notes along the way. You will find them useful as future cheat sheets.

    Tip: learning code is easy, editing and debugging code before you press run or F5 is not.
     
  3. No_One411

    No_One411 Fired by Jude

    Staff Member Pyrate
    Joined:
    Sep 27, 2015
    Likes Received:
    560
    Trophy Points:
    93
    Location:
    Saratoga, CA
    There are plenty of websites online that will teach you to code. CodeAcademy, w3bschools, etc. are the immediate ones that come to mind.

    My personal opinion is that everybody should start with C. It'll teach you important knowledge about pointers, data structures, etc. Then, you can progress to C++ for object oriented programming. Most important concept to grasp in C++ is inheritance. Microsoft Visual Studio is a great tool. Everybody complains about how Microsoft makes these shitty, buggy products that never work, but in the case of Visual Studio, it really is a fantastic tool. Just make sure you don't use it as a crutch. I've probably only touched upon 2% of the entire capabilities Visual Studio has.

    If you would like to jump into web programming, try familiarizing yourself with LAMP. (Linux - Apache - mySQL - PHP/Python)

    I enjoy algorithms. If you're a more math oriented person, you may find them exciting. If you're up for a challenge, take a look at projecteuler.
     
  4. aufmerksam

    aufmerksam Friend

    Pyrate
    Joined:
    Sep 28, 2015
    Likes Received:
    1,337
    Trophy Points:
    93
    Location:
    E. Lansing, MI
    I agree with what DF and No one have menitoned. Best additional advice: find a friend to learn with you.

    I am a math geek who took a wrong turn and went to law school. A buddy of mine needed to learn python for his job doing genome shit. We independently had roughly the same level of knowledge that you do, but lacked any central structure through which to apply it. We started with Codecademy, and it went impressively well. I have thoroughly enjoyed (and found useful) the Codecademy classes I have taken so far, but it REALLY helped to have someone doing the same exact things to talk through more complex problems and exchange lines on Github. Something like Codecademy is a great way to get your feet wet without having to worry about what editor(s) you have or need to get. At a certain point you will outgrow its capabilities, but by then you will know what you need to do next.
     
  5. Cspirou

    Cspirou They call me Sparky

    Pyrate
    Joined:
    Sep 27, 2015
    Likes Received:
    8,255
    Trophy Points:
    113
    Location:
    Northwest France
  6. jomamasan

    jomamasan Acquaintance

    Joined:
    Sep 30, 2015
    Likes Received:
    4
    Trophy Points:
    18
    You need to grasp the fundamentals at some point. Looping, decisions and values. Find the tool(s) that you think you will be able to use. Many free demo programming environments are available for download. Also free open source stuff is available for any platform.

    The online stuff may work as a starting point for you also. The visual tools like Visual Studio are good stuff. I wish I had some of these tools when I was starting out!

    But I think it's important to simplify the process of learning coding as much as you can so you grasp the fundamentals as above. Understanding the PROCESS of program creation is imho as important as the tools you choose to learn with. Books can help with that.

    Nothing fundamentally has changed since I started out years ago. Computers are still just fast idiots and have to be told what to do. Coding remains learning to think logically. Literally.

    Don't get frustrated. When you hit a wall - and you will - keep at it! If you do you will learn.

    Good luck!
     
  7. audiofrk

    audiofrk Guest

    Not that learning C isn't... Fun? But how would you go about learning it outside those old books?
     
  8. purr1n

    purr1n Desire for betterer is endless.

    Staff Member Pyrate BWC
    Joined:
    Sep 24, 2015
    Likes Received:
    89,998
    Trophy Points:
    113
    Location:
    Padre Island CC TX
    Take an introduction to computer programming class at a community college. Key word is programming, not coding. (or website coding if that is want you want to do.)

    C is a language. It's merely a tool. Learning C without understanding computer architecture and algorithms will get you no where. C is very closely tied with assembly / machine language (you know, the scrolling green dots, characters, and crap that Keanu Reeves sees.)

    A good way to start on LAMP is to put up a forum running on a LAMP stack. Start messing around with PHP code. PHPbb, SMF, and xenforo are great platforms to learn PHP. Try to do funny stuff like make specific user's chatbox shouts to appear as "redacted" to only other users. Also might be a good idea to install a mySQL database learn SQL SELECT queries.

    I learned how to program in BASIC on an Apple II by myself when I was in the 6th grade. I was interested in algorithms and how they worked. I continued on in college with some focus in numerical analysis. Really not much fun for normal people. I still use Visual Basic to this day. I have programmed in Enterprise Java, Pascal, C, C++, Perl, PHP, etc. Whatever is the right tool to get the job done.

    I wrote a program recently to screen scrape Clash of Clans, to OCR the amount of gold and elixir, to assess the levels of the walls, and identify key structures. I was going to write a bot for farming, until I realized that I didn't want my account banned for cheating.
     
    Last edited: Oct 20, 2015
  9. Altrunox

    Altrunox Friend

    Pyrate
    Joined:
    Sep 26, 2015
    Likes Received:
    37
    Trophy Points:
    18
    Location:
    Brazil
    There's also a lot of courses on coursera or edx, all for free, although you can pay a small fee to get a certificate.
     
  10. Stapsy

    Stapsy Friend

    Pyrate
    Joined:
    Sep 28, 2015
    Likes Received:
    339
    Trophy Points:
    63
    Wow thanks for all the help guys. I am just looking for something new and interesting to learn about. Having some knowledge may help me with my career but I am not planning on becoming a programmer or anything.

    I do like the idea of starting from something basic like C. I really have no idea what programming is all about so maybe taking a class or two would help.

    I was doing some stuff in Python tonight. I figure just choosing something and starting is probably the first step. I think understanding the basic logic and structure will allow you to go between different languages anyway.
     
  11. Deep Funk

    Deep Funk Deep thoughts - Friend

    Pyrate
    Joined:
    Sep 27, 2015
    Likes Received:
    9,029
    Trophy Points:
    113
    Location:
    Amsterdam
    Home Page:
    Python is a good start and very intuitive. Add something like C++, C# or Java and you become very versatile.

    Most of all have fun learning. Keep making notes and when you have to debug, pay attention.
     
  12. Stapsy

    Stapsy Friend

    Pyrate
    Joined:
    Sep 28, 2015
    Likes Received:
    339
    Trophy Points:
    63
    Welp it has been 6 months, so I figured it is time to update this thread.

    Most of my time has been spent learning Python. I started off using a combination of Code Academy and Learn Python the Hard Way. I feel like those two courses are very complimentary. Code Academy gave me more confidence initially as the lessons usually break down line by line. I found it easier to learn the syntax and start to understand basic programming concepts. Learn Python the Hard Way is geared more towards people who have zero experience. I found some of the instruction methods to be slightly confusing as they tried to simplify the concepts too much. Code Academy was simpler and more straightforward for someone with a basic understanding of computing logic. It was nice to go through both courses. Learn Python the Hard Way ended up teaching me a lot more about program development, research, and experimentation than Code Academy.

    After that I felt like I needed to get more formal instruction on computer science, so I took a MOOC "Intro to Computer Science using Python" from MIT through edX. This was definitely a college level course. I wouldn't recommend this to beginners or people without a math background. You need to be able to understand basic algebra and math concepts (or willing to learn) in order to benefit from this course. I really enjoyed learning more about some of the basic techniques and ideas from computer science. Things like recursion were never mentioned in the other courses. I enjoyed digging a little bit deeper and understanding things more conceptually. Since, all the concepts were illustrated using a language I was familiar with I was able to focus on the logic vs the syntax. The biggest downfall of this course were the excercises...they were terrible. Code Academy is super polished and Learn Python the Hard Way has a simple system to check your own work. The edX excercises were frustrating to complete due to the formatting and system limitations. After a while I just listened to the lectures. Overall I would recommend each course as they all excel at slightly different things.

    During this time I also switched over to Linux. I spent a lot of time going through configuration files, learning some basic shell scripting, and trying to understand the operating system a little better. I was able to apply a lot of the things I was learning and get a better understanding of how a computer works. I love how logical and simple the Linux system is. I am now firmly converted.

    The next step for me is learning C. I have been strangely drawn to the language for the last couple months. I forced myself to finish the Python courses I had started, but now I am ready to dig a bit deeper. I started going through KR and am really enjoying it. I never understood this before, but Python is a very intuitive language and a really good choice for a beginner. You don't have to focus as much on syntax and can concentrate on understanding the logic. Moving on to C has opened my eyes to the even more basic building blocks of a computer system. I am really looking forward to sinking my teeth into it. If anyone has any more suggestions for C resources let me know.

    So there you go. Thanks to everyone who contributed advice! I hope my experience can help some other people explore the world of programming.
     
  13. SSL

    SSL Friend

    Pyrate
    Joined:
    Nov 12, 2015
    Likes Received:
    1,241
    Trophy Points:
    93
    If you're ready to jump into C, time to buy Computer Systems: A Programmer's Perspective. It's a textbook and therefore prices are daylight robbery, but I believe a full PDF of the second edition can be found somewhere online. This covers low-level system stuff and is essential foundational knowledge to writing high performance C code, as well as understanding how computers and the software that runs on them works at a low level. Assembly/machine language is covered.

    Code Complete covers software development and is very recommended.

    Advanced Programming in the Unix Environment may be handy since you are spending a lot of time in Linux; note that you can also find a lot of good information via the man pages on your system or online.

    I don't know if CA and LPHW cover data structures and algorithms, but you should add those to your knowledge base as well. The best way to learn these is to code them yourself from pseudocode found in a textbook or online.

    You should also start learning how to design software at this point. Programming is the stuff of amatures; if you want to make full-blown applications with any kind of complexity, you should study design. You'll inevitably come across object-oriented design if you haven't already, but beware that 90% of people just have no idea what they are talking about when it comes to OOP and that it is frequently misused and over-applied.

    Finally, start using a version control system. As you work on more complex programs, you'll see why it's important.
     
  14. bazelio

    bazelio Friend

    Pyrate
    Joined:
    Nov 16, 2015
    Likes Received:
    3,417
    Trophy Points:
    113
    Thought about this for a bit. Where did I start... on my neighbor's Apple II until I could convince my dad to get one for us. Basic wasn't being taught in elementary school in those days. There wasn't an internet and I was a long way from being in college. And so the advice I'd give is simple because it's what I did. Learn by doing. That's it. There are a gazillion websites, and a gazillion books. And I'm not going to say disregard all of it, but there's absolutely no substitute for rolling up your sleeves and getting your hands dirty. Sure, read about concepts for the first time, read to learn general foundations of computer science and languages in general, familiarize yourself with their standard libraries etc, but don't try to learn by memorization. Learn by doing.
     
  15. Stapsy

    Stapsy Friend

    Pyrate
    Joined:
    Sep 28, 2015
    Likes Received:
    339
    Trophy Points:
    63
    I will definitely look into those books! The low level system stuff is what really interests me. I would love to be able to build my own system from the ground up, Hardware, BIOS, OS. I doubt I will ever have the skills to do it, but that is fine with...the journey is the fun part.

    I did spend a couple days reading through Git documentation and have been using it to track/store my config files and scripts. It is really a cool system that I think is massively underused outside of the tech world. I know at my company people always complain about a lack of version control (track changes in Word just doesn't cut it). If somebody could figure out an easier way for non-tech people to use Git I think they could make a lot of money.

    Software design is a whole different realm. I would truly have no idea where to start, but my brain is starting to think in computer logic. I am only doing this as a hobby so I am in no rush to pump out programs. Once I feel comfortable I will take a more in depth look.

    I sometimes wish I had been around computers during that time. It seems so exciting to be at the cutting edge of a new technology. On the other hand we tend to take for granted the amazing amount of information available on the internet!

    Learning by doing is the way to go. I have always refused to memorize, even when it would be the easier option (in the short term). While I was in school I developed my own technique for understanding what I was learning. I remember being forced to memorize times tables and thinking how pointless it was. Instead, I tried to understand what multiplication meant so I could apply that idea to all the other concepts in math. 3 x 3 is equal to 9, but it is also equal to 3 sets of 3, which is 3 + 3 + 3. I know so many people who made it all the way through school by memorizing instead of thinking. They don't retain any of the information they learned and they struggle when asked to problem solve.

    In programming I have learned the most while trying to write programs to perform simple tasks reversing a string, finding the lowest common denominator, or controlling the brightness on my laptop. I was pleased that I was able to solve Fizz Buzz in only a couple minutes. I think it speaks to the state of education that so many "programmers" struggle to solve simple problems. I may not be able to write complicated programs yet, but at least I can write simple ones!

    While I am reading I find it best to not only write out examples and complete excercises, but to also modify them, break them, or try new things. It takes a lot longer but I am in no rush. I truly think it is the best way to learn.
     
  16. bazelio

    bazelio Friend

    Pyrate
    Joined:
    Nov 16, 2015
    Likes Received:
    3,417
    Trophy Points:
    113
    In some ways, the type of tinkering we did as kids is in large part a thing of the past. In those days, commercial products were being designed in garages a few miles down the street from us. But there are of course plenty of hands on self-teaching vehicles out there for tinkering today. Raspberry Pi. Launch pad. Atmel makes a good and fairly extensive kit for learning embedded systems as I recall. What's that embedded python kit called again??? Etc, etc... Sadly, I don't have time for much of it myself anymore, though.
     
  17. lm4der

    lm4der A very good sport - Friend

    Pyrate
    Joined:
    Sep 26, 2015
    Likes Received:
    1,466
    Trophy Points:
    113
    Location:
    Seattle, WA
    It seems like we have a lot of software engineers in this crowd, as well as other technical fields. I wonder if there is any correlation between audiophile interest and engineering.
     
  18. dsavitsk

    dsavitsk Friend

    Pyrate
    Joined:
    Oct 2, 2015
    Likes Received:
    1,616
    Trophy Points:
    93
    Home Page:
    There are no complicated programs. Just large aggregations of simple ones. :) The essence of getting large things accomplished is learning how to successfully break them into smaller manageable tasks.
     
  19. purr1n

    purr1n Desire for betterer is endless.

    Staff Member Pyrate BWC
    Joined:
    Sep 24, 2015
    Likes Received:
    89,998
    Trophy Points:
    113
    Location:
    Padre Island CC TX
    There are complicated algorithms and logic. Coding a B-tree wasn't easy when I was underclassman. Neither was writing a primitive compiler (oh that's what that class with the state diagrams was for!) or renderer that could occulde hidden polygons of 3D objects.

    Fortunately in 2016, no one has to worry about these things anymore as almost anything and everything is contained in a framework. Programmers don't even have to worry about translating pseudo code anymore!

    Assembly / machine code uses simple commands, but yet is extraordinary complex.
     
    Last edited: Apr 13, 2016
  20. purr1n

    purr1n Desire for betterer is endless.

    Staff Member Pyrate BWC
    Joined:
    Sep 24, 2015
    Likes Received:
    89,998
    Trophy Points:
    113
    Location:
    Padre Island CC TX
    In real life, I see correlation of audiophile interest and people with high paying jobs. Anything from executives, lawyers, engineers, banners, and doctors. Especially doctors. Everytime I call Soundstage Direct, Seth thinks I am a physician.
     

Share This Page