If I wanted to create a site that matched up queries from people, where do I start? Which language should I learn first?
For example, person A and B both answer questions, and the site matches up their answers and notifies the people.
For a website you'll need to have a good grasp of the frontend languages - HTML, javascript, and css - in addition to the chosen backend language. Modern and responsive sites are moving towards more and more client-side code; you might find yourself writing more javascript than backend code even. I would recommend, once you get to writing the frontend, that you try to start out using existing frameworks such as backbone.js, ember.js, or another which catches your fancy because they'll somewhat encourage good structrue/style. I also don't recommend jumping into that mess to begin with because there's so many different pieces that you have to at least have a decent grasp on. Learning programming before beginning will make it a lot more manageable. For the backend you'll find the "easiest" options are php, nodejs, python (with flask/django), or ruby (on rails). Nodejs will have the benefit that you can write javascript frontend and backend. I'd recommend learning one of the above languages (ignoring the framework in parenthesis if applicable until after you have a grasp on the core language) first. Pick up a book for it. I won't recommend one for php because it's going out of style and, though still widely used, is probably the worst choice of those listed above. Nodejs is still relatively new and I don't have any particular recommendations because I haven't read any of sparse selection of books for it. For ruby, the Pragmatic Programmer's Guide is fairly good. Learn python the hard way is quite good, especially considering that it's free. If you'd like to be in programming for the long term or have a better understanding of how things really work (which will, if not in obvious ways, translate to better code in subtle ways) then I'd recommend learning C before anything else with K&R. Even though C's an old language, spending time with it gives you a grasp of how things, including other languages, actually work. It introduces the basic syntax and core concepts of all the other languages I mentioned as well (excluding css/html which barely count as languages). Sorry, that was rather long winded. The tl;dr is "Learn the backend language first, or C if you want to be a 'real programmer'. Learn the frontend stuff later on and, ideally, sort of as you go". All my own opinion etc etc of course.
Yes and no. You'll almost certainly need some sort of database backend (non-relational databases are getting pretty popular nowadays). The thing is, you won't actually need to know the query language anymore in many cases. In the case of relational databases (typically mysql/postgres) many languages provide some sort of database abstraction which greatly reduces the amount of database-specific knowledge you need to know. Let's take an example from ruby on rails: The query As for the new "hip" relational-database replacements, they almost invariably have similarly abstracted libraries. The many key-value stores, such as redis, basically just have set/get methods. Document-stores are more complicated to try and classify, but the libraries do simplify things significantly. The point I'm trying to get across here, if a little slowly, is that higher level languages have abstracted databases to the point that a fine grasp of the underlying query language is unneeded; rudimentary knowledge will be enough for the OP's purposes. Okay, final bit. You mention python, but you don't mention what you're doing other than "online". Online stuff doesn't have to have a database necessarily. Sites that can be static (information, no users. Blogs can also be static) shouldn't have a database for performance reasons. Typically, for anything where you have users or dynamic data, it's a good (not 100% required still) idea to use some sort of database. However, for anything that doesn't require complicated relations it might be a good idea to just use redis (which has a good library for python) and not have to deal with the complexities SQL brings with it. If you absolutely need the power relational databases have to offer, elixer can do some of the abstraction I spoke of, though you'll still want to be familiar with the underlying database. I personally find knowing my way around databases useful, but I also think that things are moving away from needing to really have a strong grasp of them and if you don't want to hassle with it you'll be able to "get by" at least. Hopefully that all made sense!
mk See the above note. #bugskii . Perhaps I'm doing it wrong. Do let me know if so. Note: My links all got parenthesis appended to them. "[test](test) test" becomes "[test](test))test" after saving and will not change back. Inserting an extra space lets the space show up, but the extra parenthesis also persists.
becomes simply SELECT * FROM clients WHERE locked=true
. The second, using ORM, hides the query language behind the language's objects. It means the programmer only has to, for simple stuff, know the language and library's syntax. Admittedly, more complex stuff almost necessitates knowledge of the underlying database, but those cases won't come up in all that many situations. Client.where(:locked => true)
Yes, it'd be appreciated. I think I know where it's coming from, but I am trying to understand what is tripping it. It's likely related to marking up when urls contain a parentheses, like some Wikipedia urls.
Wow! Thanks for the write up. That's definitely a lot to take in. I think I'm going to jump in this weekend with Learn Python The Hard Way and see where that goes. What's your opinion on Codecademy?
I don't have much personal experience with Codeacademy, but I've heard good things in general and I liked the little I saw. I don't think it offers a replacement to good books or formal training (university classes or similar), but it certainly helps and could complement them. It's up to you how you do it and I can't really offer too deep insight - I can't simply forget what I know and then relearn it to objectively judge some method of learning vs my own (and things look different from the other side if I try to judge now). Oh, a final aside. It's good to have coding buddies beyond a point (beyond syntax, around basic algorithms and data structures I think) to talk to as you go. If you don't know any such people in actual life, finding an IRC channel that interests you and has some coders might be a good idea. Small ones (20ish users) are often more helpful and pleasant to be part of. Creating a hubski irc might be a good idea come to think of it. Best of luck.
Are you talking about something along the lines of StackOverflow? If you've never programmed before, I recommend you start small and work your way up. Learning a language such as ruby or python will give you a good insight into the world of programming, while not being too intimidating.
More like Person A goes on the site and answers questions, and then Person B goes on the site and does the same. Their answers get put in a database and whenever two people's answers are the same, they're both notified. Something like that. I'll check out Codecademy and start one of their Ruby or Python courses. Thanks! I guess this could also be an app instead of a site. Do you still recommend going the Ruby/Python route if I wanted to create an app?
I learned Scheme, a functional language, first. It was great because of how simple it is, so you get to focus on how to program rather than learning the syntax and oddities of a single language. I more or less took this course but it was In real life. Gregor is a fantastic teacher, and the topics in the course are high level and it covers a lot if stuff. Anyway, if you learn the concepts in one language, picking up more languages is trivial.
I didn't like Haskell's syntax and it's too pure. Everyone knows that to get anything done, you need imperative-ness somewhere, that's where monads come from, but it's ridiculous. I like OCaml better as a statically typed functional programming language that takes the ideas of functional programming but leaves some imperative programming for when you need it.
JavaScript (sorta), OCaml (though like I said, it's statically typed), Scheme and the Lisps (seems like you aren't a fan of parens, I don't mind them (as you might be able to tell)) Unfortunately, that's it. All the combinations of imperative and functional paradigms that exist are leaning on the imperative side, and there are few mostly functional and partially imperative languages, imo. Try OCaml, it's got a good mix of functional and imperative: http://try.ocamlpro.com/
The lambda calculus, iirc, refers to the proof drawn up by Alonzo Church that anything can be computed through pure functions - ie: you can compute anything without mutating state. Do you have to understand that lambda calculus to use functional languages? Hell no. I sure as shit don't understand it, and I can do functional programming. And, I would argue, that few people really understand it, even though tons of people use functional languages. So, you're right, you don't have to know it, but the lambda calculus isn't really referring to the handy lambda function...there's a lot more behind it...that you don't need to understand.
I taught myself HTML & CSS in about a week. The easiest way to start is design a basic site in photoshop or fireworks or whatever strikes your fancy. It doesn't have to be complicated but get a bunch of writing and images in there so you can have stuff to grab and focus on the code. It was easy for me because I was coding my own site so I had my works and had written information about me, etc. Once you have this you have to learn how to make the code look like the stuff in your photoshop file. Start from the top, remember to close your div tags, and keep your css at the top of your html document. I used dreamweaver, which helped with all the basics like headers and style tags, etc. and making sure the code I was writing was real. It also gives you selections for the css so before you hard write the css you can just make the selections of the shit you want (ie colors, bold, left justified, etc) and as you do it more and more you'll find yourself writing the css rather than opening up the panel. I learned by trial and error and it was not easy but if you set your mind to it you can have a functioning, ugly, messily coded site. Then you can start looking at other sites html and read up on it and figure out all the things to make the code pretty and little tricks. As you go through, google whatever you need. Want to center something? Google it. It probably isn't the best way to learn, but I have a hard time reading books and then putting them into action. As far as javascript goes, I just steal peoples shit. I have fancybox on my site and thats about as far as my javascript knowledge goes. As for all the backend stuff, not my area of expertise. Actually I literally don't know shit. But that's how I did front end stuff.
Hahah, I mocked up a site last year in PowerPoint, so, I guess that's a start. As for HTML, I picked some up while I was writing for a blog a while back, but my knowledge is limited to formatting words and images. Also, I checked out your site. You do pretty good work. If I ever need a logo, I know who to call!
For sure. I give good rates for Hubski people because I'm still learning and anything that I can do for anyone else is great. I learn much faster and work harder when I have an end goal in mind.
I'm an electrical engineering grad student. My university combines electrical engineering and computer engineering into one department, where students can choose to be either EEs, CEs, or double major. The CEs get a lot more programming than I did, as I was focused far more on hardware as an EE. But the required programming classes I did take started us off on C, then assembly, then Cplusplus,then I eventually took electives in perl and python. Since this order of learning is all I've ever known, can anyone comment on what I may have missed like this? The whole thing felt very rushed in my opinion. Most of our programming clases revolved around programming PIC and AVR microcontrollers to perform tasks like a basic calculator, or a little keypad with passwords, or an led dimmer/pwm controller.
It would be better if you made a new post for this in the #learnprogramming tag, it'll save people getting confused :)
I couldn't tell you if you missed anything, as many programming languages cover the same things, but I would recommend starting with Java. That's what I did, and it's worked out really well. Also, it's useful to have a powerful, compiled, cross-platform language under your belt. Java is faster than interpreted Python (for most applications) and runs on most everything.