Another What Language To Learn Question

mikecLA

Weaksauce
Joined
Jan 20, 2011
Messages
101
Background:
I started developing my corporate website nealy a decade ago in Classic asp (it's all I know, gets the job done quick, and with recent additions to the site using jquery it looks pretty decent) but, the code is a complete mess since the site has grown. I'm constantly having to add new features for users and forsee a point in the near future where I will hire (or outsource) a developer .

I'm also somewhat of a control freak (or to be more exact, if someone else took over the code I would need to understand it and know what it does in the case of an emergency).

So since it's time for a rewrite (and sticking to good coding practices) I am looking to learn a language that I can pick up quickly coming from a classic asp background. Here's the rest of the ideals:

A sizeable user base so I can get quick google answers to problems faced as I move forward.

Ability to connect to both mysql and mssql, in the same page, and same app. Since the now ancient classic asp can do it, I don't see why others shouldn't be able to.

Some sort of enforced adherence guidelines to avoid future code hunting and spagetti code.

So far, I've looked at ASP .MVC 4, Ruby on Rails, and Php with Yii Framework. I've studied the pros and cons of each, but stuck at making a decision. I have my own server (esxi) setup with both windows and linux testbeds for web dev and seperate VMs for both mysql and MS SQL Server, so I can host pretty much anything that's common.

I have no hatred or bias to any particular company, just looking for the best tool to get the job done correctly, as quick as possible, and easy to maintain. Which would you pick, and should I be looking at any others?

EDIT: One of the primary reasons I am looking at an MVC type model is so that I can hire a developer/graphic artist (or use css templates) to make everything look pretty while I (or a different talented person) handles the business logic.
 
Last edited:
Based on what you're looking for, you should be able to use literally anything. ASP.NET MVC, Ruby On Rails, Python with Django, Java with Struts....Probably even Node.js with the right framework for it, if you like. Why don't you go get a hat and draw names from it?
 
Good news is that any of the languages you were thinking of can meet your requirements. Bad news is that there's no requirements presented that would drive the conversation toward only one of your possibilities. If you don't have any other hard requirements, such as 3rd party libraries that you must use, then just pick a platform combination and start learning.


Some sort of enforced adherence guidelines to avoid future code hunting and spagetti code.
Spaghetti code, silo'ed knowledge, hidden gems, etc. are possible in any language.
 
The biggest item on the wish list was the shortest learning curve based on my familiarity with Classic ASP. It appears no matter what I go with I'd be nearly starting from scratch, so it will probably be PHP/Yii (although I will fire up the VS IDE and play with .Net before making a final decision). At least if I go down that route and come up with some brilliant idea in the future that requires Facebook or Twitter scalability, MS licensing costs won't be a future factor (it's not an issue for this project).

3rd Party Requirements -- I'm using Jquery, but only because it is able to keep Classic ASP on life support a little longer.

Good news is that any of the languages you were thinking of can meet your requirements. Bad news is that there's no requirements presented that would drive the conversation toward only one of your possibilities. If you don't have any other hard requirements, such as 3rd party libraries that you must use, then just pick a platform combination and start learning.



Spaghetti code, silo'ed knowledge, hidden gems, etc. are possible in any language.
 
I've (mostly) enjoyed the transition from writing client-side code in JavaScript to writing in Node. It is, for the most part, a fairly smooth transition, though it will by its nature force you to 're-learn' JavaScript as you contend with having to do nearly everything asynchronously and externalizing tasks to return callbacks. In client-side JavaScript, you can quite easily get away with things that will simply kill you in Node's single-threaded process.

The upside is that, with careful preparation, you can share a fairly significant amount of code between server and client. The downside is that there's a bit of a learning curve: writing for Node is unlike writing for just about anything else I've experienced. The other obvious downside is that Node isn't an MVC framework nor does it provide one, though there are certainly MVC frameworks available (with varying degrees of capability and similarity to MVC frameworks for other languages). I've not used any of them, so I can't comment on which you should use, if any. A simple router and some Connect middleware has been enough for my needs, and I've found that I can achieve good systems without the need for the complexity and 'weight' of an MVC framework.

Also note that you don't necessarily need MVC to achieve the the separation of views and logic. MVC is just one pattern to achieving that separation of concerns in a particular way.
 
I've (mostly) enjoyed the transition from writing client-side code in JavaScript to writing in Node. It is, for the most part, a fairly smooth transition, though it will by its nature force you to 're-learn' JavaScript as you contend with having to do nearly everything asynchronously and externalizing tasks to return callbacks. In client-side JavaScript, you can quite easily get away with things that will simply kill you in Node's single-threaded process.

The upside is that, with careful preparation, you can share a fairly significant amount of code between server and client. The downside is that there's a bit of a learning curve: writing for Node is unlike writing for just about anything else I've experienced. The other obvious downside is that Node isn't an MVC framework nor does it provide one, though there are certainly MVC frameworks available (with varying degrees of capability and similarity to MVC frameworks for other languages). I've not used any of them, so I can't comment on which you should use, if any. A simple router and some Connect middleware has been enough for my needs, and I've found that I can achieve good systems without the need for the complexity and 'weight' of an MVC framework.

Also note that you don't necessarily need MVC to achieve the the separation of views and logic. MVC is just one pattern to achieving that separation of concerns in a particular way.
The thought process on MVC was to force myself and any future employees working on the project into some sort of php standard/guidleines, it isn't really necessary to achieve the result I need at the moment. If I wanted to, I could probably pick up straight php fairly quickly, but then the code is likely to be a mess in a different language instead of asp.
 
Node has a module called Express which is a tiny layer on top of connect.

It'll give you views and routes/controllers so separating out the logic from your templates is a given. It also has support for about 15 different template languages that all work great, and you're free to pick the one you want.

There's no opinions on a model because that tends to be a mistake. A framework really shouldn't be making decisions on how your data will be modeled. You might want to use mysql, postgres, redis, mongo, couch, riak, neo4j, titan db or 1 of 50 other databases I didn't list.

In either case hooking up your own database and modeling it yourself isn't really a big deal. For the popular DBs the work has already been done for the most part, you just need to read a bit of documentation and install/copy some code over. If you want more opinions, a model, forced directory structures then there are options but it won't be Express directly. There are some frameworks that build on top of Express to give more of a Django or Rails heavy weight/opinionated platform to develop on.

I would just pick whatever language/framework you think has the nicest syntax/api and an active community.
 
I love using the Yii framework for PHP. I don't know if I could recommend it if you don't already have PHP knowledge, because there is so much to Yii in itself.

Ruby on Rails appears to be gaining in popularity and I hear it is easy to learn.

I would go with PHP first because that is more popular, then Ruby on Rails.
 
Back
Top