views:

945

answers:

13

My colleague here argues that new programmers must learn ASP first, before they learn ASP.Net.

I seem to agree with him as most new programmers who start with ASP.Net do not understand web get, post and state management :(

Which is best to learn web programming Classic ASP or ASP.Net?

+45  A: 

I'd pick ASP.NET MVC over classic ASP. The problem with classic ASP is the support level for it. With MVC, you learn both about web get/post and state management, while at the same time getting the advantage of using your favorite OO language.

Haacked
Agreed. MVc lets them learn the structure of web development with less of the the overhead and confusion of proprietary technology.
le dorfier
+1 - Not surprisingly, a great answer Phil. Even if you are a bit biased. ;-)
joseph.ferris
I bet if you ask Haack what his favorite shampoo is I bet he responds with ASP.NET MVC.
jfar
I'd respond with Mint ASP.NET MVC.
Haacked
Phil, do you have book recommendation which cover both web development and ASP.Net MVC for new programmers?
Kishork
No recommendations yet, there are no books on ASP.NET MVC Released yet. I'm writing a book with Scott Hanselman and Rob Conery, so you can keep an eye out for that one. ;)
Haacked
Mmmm... mint! Sounds refreshing.
Zack Peterson
There is really no need whatsoever to learn classic ASP if you're going to use ASP.NETI'd second the recommendation for ASP.NET MVC with some reservation. I've been learning ASP.NET MVC for the past few months and I think I'm a lot more productive as a result than I would have been learning the WebForms approach (and by the sound of things, skipped quite a few bad habits) but I also kind of wish I'd learnt how WebForms ASP.NET worked first purely to understand and appreciate the differences with ASP.NET MVC better.
FerretallicA
In short, if you have the time I'd say learn ASP.NET (WebForms) briefly then really cut your teeth on ASP.NET MVC. If time is short, proceeding directly to MVC without passing Go will still allow you to be productive without penalty. Don't bother learning classic ASP unless you just have too much time on your hands and nothing better to do with it.
FerretallicA
I would say new programmers should learn PHP ...
aviv
+3  A: 

It wouldn't hurt to start with Classic ASP, but I don't think it would be worth it since with a little effort you can understand what Webforms is abstracting away from you. If you want the best of both worlds, start with ASP.NET MVC.

John Sheehan
+2  A: 

Both languages have their individual advantages.Though, I agree with reply by 'Haacked' and 'John Sheehan' both. Every one will have their individual opinions. So better start learning in which you are interested.

Samiksha
+7  A: 

I'd say most new web developers would be better off initially learning about HTTP specifically without muddying things with either classic ASP or ASP.NET.

Once they have the fundamentals, then I'd suggest moving straight to ASP.NET and a compiled/object oriented coding language.

While classic ASP is more compact and focused (smaller group of objects to grasp), most code written using it is unfortunately in VB-Script.

Some of the most atrocious code I've ever seen was classic ASP web sites in VB-script. While it is probably possible to write maintainable and clear code in VB-Script, the language itself seems to almost encourage the complete opposite.

Also, it sounds like ASP.NET MVC would be a better choice for your environment as it "hides" less about HTTP from the developer. For certain types of application it is a better choice then ASP.NET Web Forms.

In summary: skip the classic ASP and avoid all of the bad habits and problems that it can introduce.

Ash
A: 

You don't really learn ASP.NET, you'll learn a language such as C# or VB.NET. But yes .NET > !.NET

Andrew G. Johnson
+8  A: 

I would say don't learn classic ASP and then ASP.NET. Classic ASP is dead. Or should be.

Why not learn ASP.NET (MVC and WebForms) while also dabbling in PHP. Looking at PHP would help a developer get a sense of what its like working at a lower abstraction level.

tyndall
+3  A: 

It's the equivalent argument of saying something like:

"You must learn pascal before you learn C++!"

You're comparing 2 different languages & platforms.

Mark Ingram
I think you sort of missed the point. OPs argument was that starting off with web development by using ASP.NET hides the gory details of HTTP from you. This does you a massive dis-service in the long run. I speak from my own experience, as the first web development work I did was WebForms.
Kirschstein
+3  A: 

I agree with others here that learning the HTTP request/response model is the key. I have also noticed that many .NET developers don't understand the HTTP model. I learned it using ASP, but .NET WebForms makes it easy for developers to not need to know it. So I agree that ASP.NET MVC would a great way to do both .NET and learn the HTTP model.

Mark
A: 

Why you should learn classic ASP at all? It is dead; no new work is done in it.

If you want to learn a programming model that works the way that the web works (Which Asp.net webforms does not, it is a leaky imitation of windows forms), there are modern models like ASP.Net MVC.

Anthony
A: 

I would recommend just going with ASP.Net. ASP is so old a technology that they will have to learn so many work arounds to things that are common place.

I would also go with straight ASP.Net over MVC as the jury is still out (for me anyway) on how valuable MVC really is. It takes a lot of control away from the developer.

peiklk
The MVC pattern does anything but take control away from the developer. Still waiting for a project that will give me a reason to use ASP.Net MVC to see what I think of the framework extension...
Tetsujin no Oni
+3  A: 

There is very little value in starting out with ASP. If you were an ASP programmer back in the day then you can appreciate some of the concepts that have carried on into ASP.NET. The fact that IIS 7 and newer versions of Visual Studio are not really that ASP friendly means that learning it as a new programmer is really more hassle than its worth. Start with what's current is what I say because its what everyone's doing.

Also, be solution oriented - language should be secondary. At the end of the day you need to deliver something that works which makes the customer happy.

Keith
A: 

Learn the fundamentals first by writing static pages and understand the basic HTTP request/response model.
Then, move on to using server side technology. I'd recommend with Asp.Net Mvc if your head is not already filled with Asp.Net webforms model, however understand the tradeoff. Most likely you will have to deal with webforms sooner or later as majority .Net brownfield webapps are using that platform.

Roma
+2  A: 

I think you need to be thinking far further than state management and instead be thinking of the other implications of imposing learning classic asp first.

Rather than learning classic ASP, instead ensure your developers have "state management" as part of their training process. All good training material will include a state management section.

You may run the risk of thinking in the classic ASP paradigm and attempting to apply a defunt design pattern to ASP.net. Instead of making best use of ASP.net's platform and technology.

Having said that I have been developing in ASP.net for a number of years. I am currently maintaining enterprise grade classic ASP systems. Having the knowledge of how the frameworks behind these systems were developed pre-ASP.net is very valuable and HAS improved my ASP.net.

Learning an alternative language is always valuable: Recently I developed an iPhone app in objective-C, it has given me a better understanding of the MVC pattern (the defualt paradigm in XCode) - so will improve my ASP.net in the long run.

Although looking at enterprise systems will be valuable, I do not think just dabbling in classic ASP (i.e. small one-off pages) for the purpose of state management etc is worthwhile and may have detrimental effects. Instead invest time in learning ASP.net "well" (i.e. include state management).

n.b. I have found it tricky not to turn this into a classic ASP / ASP.net debate. Instead tried to concentrate on the learning.

Alex Key
A good learning tool would be to use the "fiddler" an http debugging proxy (www.fiddlertool.com) sometime during your asp.net development lifecycle, so your new developers will get an understanding of the actual data being sent back and forth.
Alex Key