Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Scala (2.8)/Lift (2.2) vs. C# (4.0)/ASP.NET-MVC 3

I have recently been learning Scala in my personal time. At work, I have been learning C#/.NET (4.0). I am not deeply familiar enough with either to be able to more than minimally evaluate either Lift or ASP-MVC 3. I'm at a crossroads. And given my very limited time, I must choose between one or the other to learn and build an application over the next 3-6 months.

I came across this Lift article today and I immediately was intrigued. I have attempted most of the things outlined in the article causing me endless hours of frustration and headaches. And some of which I eventually gave up and implemented crude unsafe simple versions just to get the projects completed. So, this article made Scala/Lift very attractive.

And then at lunch, my team member (and friend) were discussing his working on ASP-MVC 3 using C# on .NET 4.0. And it sounds like it would be very enjoyable to learn and use. And he spoke of enough things that seemed to overlap the Lift article I had read about in the morning.

My question is this: Given my limited time, what are the advantages and/or disadvantages of choosing Scala/Lift over C#/ASP-MVC 3? And what kind of advantages does C#/ASP-MVC 3 have over Scala/Lift?

To reduce complexity in my evaluation: Please assume the current latest version of each of these technologies; Scala 2.8.1 (2010/Dec), Lift 2.2 (2011/Jan), C#/.NET 4.0 (2010/Apr) and ASP-MVC 3 (2011/Jan).

Thank you for helping me at this critical architecture decision point.


UPDATE 2011/Mar/19 12:25 CDT:
I have since stumbled upon to a couple of resources that seem to be very helpful on the Scala/Lift side:
1. Free ebook (PDF and HTML) titled "Exploring Lift (Scala based web-framework)"
2. Wiki article by Lift's creator titled "View First"

The first chapter of the ebook has been very helpful. I am really liking how focused the Lift design principles and implementation are on "separation of concerns" (keeping code out of the display snippets) and on "convention over configuration".

And from what I have seen so far, while ASP-MVC 3 uses the same "strong guidelines", it still depends upon a layer where code and presentation are "hybridized". It's where neither the site designers nor the software engineers dare tread AFTER origination. IOW, after origination, there be maintenance dragons. I would love for someone to tell me I am wrong here.

like image 718
chaotic3quilibrium Avatar asked Mar 18 '11 17:03

chaotic3quilibrium


3 Answers

Scala / Lift pros:

  • can use enormous open source solutions / libraries for web and enterprise
  • more innovate
  • cost reduction
  • (subjective: prefer Scala syntax and data model)

C# / ASP pros:

  • you are learning it at work, so you are more familiar in .NET technologies.
  • Spend less time for learning (since first point), and get support in job.

For me Scala / Lift is more effective solution, but I'm more familiar with java/jvm and not tied with .NET

like image 63
Robert Zaremba Avatar answered Nov 26 '22 06:11

Robert Zaremba


I was just reading wikipedia and c# seems to cover most things scala is providing.

From wikipedia... Scala also provides a unified type system (as in C#, but unlike in Java), where all types, including primitive types like integers and booleans, are objects that are subclasses of the type Any. Scala likewise contains a number of other features (or non-features) present in C# but not Java, including operator overloading, optional parameters, named parameters, raw strings (which may be multi-line in Scala), and no checked exceptions.

There is only a few extra things scala provides and since you have experience with .net I would just stick with c#

like image 37
Clinton Ward Avatar answered Nov 26 '22 06:11

Clinton Ward


Scala pro:

  • Support functional programming
  • Better linux support if use jvm (for C# to use mono which is not supported by microsoft)

C# pro:

  • Tooling/IDE more mature/robust
  • More open jobs in market at this moment
like image 38
scalarocks Avatar answered Nov 26 '22 07:11

scalarocks