GO37H3's n00b to 1337 programming/comp thread

  1. A quick note: when learning anything, I wish very strongly to focus on things that have cross-applications. I have little interest in focusing on learning specific skills, so when I state an interest in programming or closely related subjects, I mean that I wish to learn the metaskills associated with it. Logical, clear, precise programming that can be used even for supercomputers, not a language specific skill that teaches me nothing about computing in general. I don't see anything as a stand-alone field, so it is very important to me to learn very abstract/general aspects that I can use in the future when messing with supercomputers, or for other subjects within the "Engineering" label, such as architecture, drafting, materials science, etc.

    So, all-encompassing and general concepts>specific things, k?

    As I stated in the other thread (which went off-subject), I believe that Python is the best first language (for me at least). Because I have a tendency to focus on the global picture, a language that doesn't punish me for little mistakes is best. I know that C++ is 'stronger', whatever. It also has a $*%@load of rules and exceptions that I would rather avoid learning for now.

    First couple of questions: I noticed a book by Boole at the library. Would that help with programming at all, or would it be best to wait a bit for that? A related question, what prerequisites are really useful? I know that logic helps, but should I seriously jump into logic right away? Anything else?

    I am looking for a dull retail job right now. As I wish to make more $ than that, and to have flexible hours so that I may focus on other things (mathematics and German, for instance), I see programming as a way to ensure that I don't become homeless, as well as being a primary job until I begin consulting, or whatever else that my educational growth will allow. Right now I live on roughly $10K a year, so even a $20K year job/freelance work would be great for a year or two. :D So I figure that to develop the habit of working on programming and super closely related stuff, that I should devote a specific amount of time per day to it. For now, I think that 3 hours a day should be satisfactory, and that figure could easily be maintained even in the case that I get a job.

    I personally feel that I'm almost unemployable, so my goal is to become employable through programming ASAP. ^_^ It's a contingency plan, so I can have control over my own life and ensure that I go to uni, etc.
     
  2. jcsd
  3. MysticDude

    MysticDude 143
    Gold Member

    I learned JAVA as my first programming language (only because I took AP Comp Sci) and when I look at some Python (not for learning, but I've seen my fair share of Python) I get confused because I'm so used to JAVA's complexity haha.

    Oh and for you G037H3, If you haven't already gone to this site, codingbat, it has a Python Section and a JAVA section for doing simple to complex problems and since you're learning Python I guess it can help :D.
     
  4. Like... George Boole? It seems difficult to imagine a situation where reading a book would be a bad thing. I do not think reading foundational texts on logic would be very directly applicable to the skills you need in computer programming, however, I think it would likely be personally enriching for other reasons.

    If you want something sort of foundational to read which is related to computer science, I would highly suggest Structure and Interpretation of Computer Programming. This is a book by MIT press which is free to download and read online. It teaches a completely useless* programming language called LISP, but the language they use is not the important part, the important part is how they teach you how to think about programming.

    You also might again if you're interested in the foundations of computer science want to try to read up on automata theory (finite automata, turing machines, etc). This will not be as useful when doing introductory programming but will help a lot with giving you the basis to think about the issues you will encounter if you start working with computer science at a higher level. (Unfortunately I don't have a specific book recommendation in this area.)

    Also as long as you're interested in foundational logic texts, Russell and Whitehead's Principia Mathematica is actually surprisingly readable if you skip the proofs... again not very applicable to programming specifically.

    * IN SUCH ENDEAVORS HAVE I WASTED MY YOUTH

    If you are looking for small-dollar contracting work and you're already learning python, I suggest once you have some basics out of the way you start trying to learn a web framework such as Django or Pylons. That's where the work is likely to be if you're working at that level.

    Also really I think you are probably more likely to be able to get into contract work after you've had at least some entry-level actual employment in the field. The hard part of contracting is not actually the programming but rather your relationship with the customer, and knowing what the customer needs isn't something you're going to learn from a book.
     
  5. Math Is Hard

    Math Is Hard 4,915
    Staff Emeritus
    Science Advisor
    Gold Member

    Are you on Windows? I found a video that can help you get started:


    There appear to be a bunch of Python tutorials on youtube.
     
    Last edited by a moderator: Sep 25, 2014
  6. I sincerely believe that Python is better as a first language, because the focus is on applications, not explaining syntax. It's self-evident.

    Thanks for the site, I bookmarked it.

    Yes, George Boole. The book was one of his works, and it was printed ~70 years ago. I think that logic would help for CS/programming...it would provide more of a direct problem solving method than arriving at a fully-formed solution. In short, logic allows for the decomposition of problems. :3 But if I am to fully appreciate his work, I assume that I would require a more foundational logic text to begin with. :/

    I know about SICP (people on /g/ talk about it every once in a while), but I believe that I should focus on Python+CS, as dispersal of interest/focus is a very real possibility, because of my wide-ranging interests and talents.

    Yes, I think that a study of CS would be very useful as a paired study with Python+programming, focusing on architecture and similar subjects. >.< I'm not sure where I should start with that, either.

    Maybe this?


    I don't want to study something, and then come back to it later. I want to do a detailed study the first time, and understand it in-depth, much like I am doing with Euclid's Elements.

    I don't know what those are. ;o

    I'm okay with entry-level or whatever, as long as working conditions are reasonable. But I'd rather be paid $10 an hour to do general stuff and learn tons about CS and programming than be paid $25 to do specific work that only teaches me about that specific language/system/program/whatever.

    Win Vista Ultimate 64

    I figured out the install (and just installed it); I had to discern whether to install the x86 or x86-64, something about bits I guess. I'll learn that later.

    I will definitely take a look, though I do believe I've found a suitable first tutorial.
     
  7. MysticDude

    MysticDude 143
    Gold Member

    Well when I was put into AP Comp Sci it is not like we had a choice. Plus with the Android OS being built on Java, I could do something with it as I am always expanding my knowledge with Java.

    Good Luck with your life :D
     
  8. Ah, yes. You want to learn the metaskills of digging without touching a shovel. Unfortunately there is no easy way. You have to get your hands dirty.

    In my opinion the best languages to train your metaskills are usually those that have no much general use (Lisp, Prolog, Forth).

    Otherwise the languages are pretty the same. What differs is they all use different libraries to help the development of software. So, if you want to use a language for practical purposes you need to get specific.
     
  9. jtbell

    Staff: Mentor

    You don't need an IDE to get started. Just use a plain text editor and the command line. That will force you to become familiar with what files you're using and where they are, and exactly what steps are involved in the compilation/linking process.

    When your programs get big enough that an IDE actually becomes useful, that's the time to learn how to use one.
     
  10. I use IDLE, which comes with the Python distribution. It should work just fine for you while you are still learning the basics.
     
  11. I mean that I want to focus on algorithms+data structures.
    I know I don't *need* one. But I want one. Preferably with a black background and pretty colors. :O
    I'll see what other people think of it as well. >.<
     
  12. The standard 'introductory' book on algorithms is CLRS. But attempting to read that book before having some basic programming experience and sufficient mathematical sophistication is futile. When you're ready, there is an OCW based on the book.


    What does it matter what other people think? Try it, and see what you think.
     
  13.  
  14. Yeah, I know I have to go through calculus->discrete mathematics before I can do advanced CS Knuth-type stuff. I already said that I want a black background and colors. :/
     
  15. My approach is logical. I have a lot to accomplish in a short amount of time.
     
  16. Then start programming and stop worrying about your IDE having pretty colors.
     
  17. I figured it out -_-

    But if you want to practice piano, it's not good to practice on a piano that's out of tune. :)
     
  18. Math Is Hard

    Math Is Hard 4,915
    Staff Emeritus
    Science Advisor
    Gold Member

    Your piano is not out of tune. You just wanted red and green keys instead of black and white. :smile:
     
  19. jtbell

    Staff: Mentor

    And a Liberace-style outfit instead of jeans and a T-shirt. :tongue2:
     
Know someone interested in this topic? Share a link to this question via email, Google+, Twitter, or Facebook