a thoughtful web.
Good ideas and conversation. No ads, no tracking.   Login or Take a Tour!
comment by BT
BT  ·  4355 days ago  ·  link  ·    ·  parent  ·  post: First question: Which language should I learn first?

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.





Astral  ·  4355 days ago  ·  link  ·  

As far as using back end languages MySQL or a similar service would be required for implementing it online would be required, correct? Or would implementing (in my case python) require something else?

BT  ·  4355 days ago  ·  link  ·  

  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. 
mk See the above note. #bugskii . Perhaps I'm doing it wrong. Do let me know if so.

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

  SELECT * FROM clients WHERE locked=true
becomes simply

  Client.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.

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  ·  4355 days ago  ·  link  ·  

I'm not sure I follow the bug.

Are these url links?

BT  ·  4355 days ago  ·  link  ·  
This comment has been deleted.
mk  ·  4355 days ago  ·  link  ·  

test this is a test

Odd, I copied/pasted that. No space between the ] and ( right?

BT  ·  4355 days ago  ·  link  ·  
This comment has been deleted.
BT  ·  4355 days ago  ·  link  ·  
This comment has been deleted.
mk  ·  4355 days ago  ·  link  ·  

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.

BT  ·  4355 days ago  ·  link  ·  
This comment has been deleted.
BT  ·  4355 days ago  ·  link  ·  
This comment has been deleted.
BT  ·  4355 days ago  ·  link  ·  
This comment has been deleted.
BT  ·  4355 days ago  ·  link  ·  
This comment has been deleted.
BT  ·  4355 days ago  ·  link  ·  
This comment has been deleted.
mk  ·  4355 days ago  ·  link  ·  

Thanks. Let me know what you find, if anything.

BT  ·  4355 days ago  ·  link  ·  
This comment has been deleted.
mk  ·  4355 days ago  ·  link  ·  

testthis is a test

(())

Ah yes. That is a #bugski. Thanks, I'll get to the bottom of that one!

Astral  ·  4355 days ago  ·  link  ·  

Thank you! You certainly make a good teacher.

WestCoastG  ·  4355 days ago  ·  link  ·  

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?

BT  ·  4355 days ago  ·  link  ·  

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.