Learning to code

Discussion in 'Programming and Homework Questions' started by gschneider, Nov 28, 2015.

  1. gschneider

    gschneider Notebook Evangelist

    Reputations:
    233
    Messages:
    489
    Likes Received:
    125
    Trophy Points:
    56
    Hi Guys,

    I am currently trying to change my life and find myself a new career in IT. I would like to learn how to code. So far my googles have all turned up coding for web pages but I am more interested in coding to make programs.

    I know that a lot of things are now done through websites instead, though I would like to start with programs then move on to website coding.

    I am just wondering if anyone has any tips for getting started or anything you guys did to get started in coding. If web coding is a good place to start then I am open to any suggestions. My aim is to one day be developing programs or operating systems. I like the idea of building my own Cloud server and also being able to host my partners website for her and also allow her to sell her music books through it.

    As you can see I have dreams I just stumbled on the wealth of information out there. I have found the edx CS50 but I will need to wait for the 2016 version as the 2015 ends in 5 weeks and the course takes 12.

    Sorry if this is in the wrong place I just couldn't think of some where else to put this.

    I have also been looking for a good program to type my code into but to be honest I am not sure, what one.

    Thanks everyone
     
    Last edited: Nov 28, 2015
  2. Jarhead

    Jarhead Perfectly Sane

    Reputations:
    4,809
    Messages:
    11,809
    Likes Received:
    2,366
    Trophy Points:
    581
    Well, first off, there's quite a big difference between desktop applications and an operating system. For the former you mostly need to be concerned about good coding practices (memory management, data structures, algorithms, etc.), whereas you not only need to worry about that for OS development but also have to concern yourself about how memory is managed on a computer, how filesystems work, how to manage multiple programs running at once, how OSes communicate with hardware, how kernels work, and of course how to implement these sort of things. There's a bigger learning curve with OS development than desktop development, is what I'm trying to convey. Web development is a bit of a different beast, but one that isn't all that complicated imo. Also, to be an effective software developer you'll not only need to know how to use a language but also have a good understanding of different problem domains (sorting, path finding, etc.) and their associated algorithms.

    If you're still aiming for OS development, I'd first learn how to write simple and then more complex applications using a lower-level language like C. Most OS development is done in C and other similar languages, and C doesn't hold your hand whatsoever like a lot of the higher-level languages do (like Java or C#); C is perfectly fine with you shooting yourself in the foot, but yet again the beauty of such languages is that they allow you a much finer grain of control in return. You can also use free online classes to give you a decent introduction to Language XYZ or classes about algorithms and other more theory-like concepts (I'm not too familiar with what's good and not, since I'm taking university classes on these things a s a CS major).

    Personally, I tend to use programming books to pick up a language as well as (legally) free eBooks such as those listed here (https://github.com/vhf/free-programming-books/blob/master/free-programming-books.md), and StackOverflow (.com) as my main resource as to finding out answers for specific questions. In addition, I also sometimes make use of cheat sheets like these (http://www.cheatography.com/tag/development/).

    As for what programs to use for coding, you can either use a simple text editor or a full-blown IDE (integrated development environment) such as Visual Studio (Windows), Eclipse (OS agnostic), Code::Blocks (ditto), IntelliJ (ditto), etc. If you go with just using a text editor, make sure you have the other tools needed to compile and/or run programs in the language you're working with (for example, I personally use gEdit + gcc and sometimes make for C development).
     
    Last edited: Nov 28, 2015
    Vasudev likes this.
  3. gschneider

    gschneider Notebook Evangelist

    Reputations:
    233
    Messages:
    489
    Likes Received:
    125
    Trophy Points:
    56

    Thanks Jarhead, you have been really helpful in both my queries so far.

    I have found a fair few free classes. I like Code Academy and Kahn, Code School is pretty nice too. I have a book on Objective C. Also I have found a few apps that Teach languages as well like Swifty that teachs swift.

    I have downloaded ubuntu now so I can learn terminal as the idea of security and ethical hacking tickles my fancy. I like the idea of making programs, mobile apps or even interactive websites that can help people with everyday life and make things simpler.

    I am not really a believer in anyone one OS. As I love OSX and iOS for the way its so tuned for experience and also I like things like hand off so I can just pick up on any device where I left off on the other. On the other side I like the fact that Windows has now one OS no matter what device your on and has a universal app space I think this way could be huge! Linux I like as everything is open and its free so you can customise it. The idea of being able to tweak linux to be exactly how I like an OS to be is inspiring.

    I currently code mostly on my Macbook pro. so I have Xcode, TextWrangler and TextMate. I will get visual Studio for my Windows PC and crack on with that too. I have looked at booked Marked IntelliJ and also Eclipse as they both look really nice to use.

    I guess I should start simple with C and then move on up to higher languages? Or start with a higher language and work down to C?

    I guess at the moment I am just exploring all the avenues so I find something I like then really plunge into it. OS development, ethical hacking, program development, mobile development, website design, internet security, server support. So many different ways to go. I am just at the bottom of the pyramid looking up. The CompTIA stuff I am doing is basic knowledge at the moment like HDD's, motherboards etc.

    I don't want to spread myself to thin but programming, coding and internet security really have my interest.

    Funny when I was a kid I should of gone into IT, but my Uncle was in IT and ended up hating computers I didn't want that. Ended up in Retail and now I wish I had gone into IT and went to UNI to study it. Funny how life throws you around. I was obsessed with graphic card development back then. Now I am obsessed with fixing things in programs or OS's that I can see should either be better or has a feature that is just not there and should be.
     
    Last edited: Nov 29, 2015
  4. Jarhead

    Jarhead Perfectly Sane

    Reputations:
    4,809
    Messages:
    11,809
    Likes Received:
    2,366
    Trophy Points:
    581
    Good to be OS agnostic, as it allows you to be pretty flexible with what platforms you can work on/with. Personally, given you already know some Objective-C and going for Swift, I'd start out with C and get to know the basics of doing a lot of things yourself so that you have a better understanding of how computers work. This will help you with your ultimate goal of OS development and will also give you a good insight as to how to develop really good applications in higher-level languages. Even though your ultimate goal is OS development, I'd also learn a few higher-level languages and (sinceyou already know some web stuff) some web-related technologies (PHP, CSS, SQL for the backend, etc.). so even if you ultimately don't do any work in OS dev (say at Microsoft or Apple), you can still get a job in a different field of software development.

    I remember how I started out with Visual Basic .NET (high-level) and one of the first things I did was to create a middle-man between the user and Excel (basically a form to fill out and auto-populate Excel sheets) and I didn't know anything about memory management. My program would crash on my computer after ~75 entries since I was basically opening 75 copies of Excel on the computer and using up way more system resources than needed.

    As for OS stuff specifically, the textbook I used for my OS class was by Abraham Silberschatz, et. al. (http://www.amazon.com/Operating-System-Concepts-Abraham-Silberschatz/dp/0470128720). Very excellent book on the theories behind how OSes work, though not a whole lot of code examples (though it's not really that sort of book).
     
    Vasudev likes this.
  5. gschneider

    gschneider Notebook Evangelist

    Reputations:
    233
    Messages:
    489
    Likes Received:
    125
    Trophy Points:
    56
    Well I have found CS50 on Edx and that seems like a good place to start so I am going to try that and see what I come up with them move on to newer things. It does include a few different languages. Including C.

    I also found Learn-C.org which seemed pretty good for learning the basics.
     
    Vasudev likes this.
  6. Vasudev

    Vasudev Notebook Virtuoso

    Reputations:
    489
    Messages:
    2,565
    Likes Received:
    1,147
    Trophy Points:
    181
    Start with Python then go for C, C++, HTML, XML, Javascript and C#/Java/ Objective C.
     
  7. Jarhead

    Jarhead Perfectly Sane

    Reputations:
    4,809
    Messages:
    11,809
    Likes Received:
    2,366
    Trophy Points:
    581
    This is a thread from nearly three years ago...
     
  8. Vasudev

    Vasudev Notebook Virtuoso

    Reputations:
    489
    Messages:
    2,565
    Likes Received:
    1,147
    Trophy Points:
    181
    Two years ago, I didn't check the dates. Anyway, it would help future users reading this thread.
     
Loading...

Share This Page