My main interest right now, like many people, is web applications. The top three tools I have seen are PHP, ASP.NET, and some amalgam of Java technologies. I have a recent infatuation with trying everything I can. I'm going to describe what I love (and more importantly, hate) about them.
Likes:PHP:
- Completely open source. I don't mandate open source software, but it is nice.
- Very easy to host on a Linux system. I hear it also works in Windows, but alas, I have never even tried.
- Customizable — it does what I tell it to do.
ASP.NET:
- Extremely well-documented. I like the MSDN library, though at times, it can be too much information.
- Easy separation of code and layout. I like being able to move "controls" around and having absolutely nothing change as far as the code is concerned.
- It uses "controls", widgets that mimic Windows GUI elements (from the programmer's standpoint). At first, I thought it was a bad idea, until I realized I didn't ever have to bother with writing HTML for things.
- It's very easy to use AJAX without actually coding JavaScript. I have nothing against JavaScript; it's just another technology I'm going to have to learn sooner or later.
Java:
- It's open source (at least I think it is, now).
- It is also well-documented. It's amazing how much commercial support helps documentation.
DislikesPHP:
- Documentation of some modules is poor, misleading, or confusing.
- Code and layout are strictly coupled. This leads to a really large mess of indentation and spaghetti code, since some blocks of HTML may be inside conditional/loop constructions, etc.
ASP.NET:
- It's incredibly proprietary. Sure, there is Mono, but it only supports most of ASP.NET. One of its major exclusions (as of now) is AJAX.
- There is too much documentation. I'm sometimes confused with finding certain documents.
Java:
- It's simply too confusing. It's broken up into way too many pieces. It peeves me when I don't use something as it is intended; with Java, I can't figure out what piece is supposed to do what.
I would probably have more criticisms of Java if I could figure out how to use it. I'm sure it's great if you can reuse almost everything you program (or want to reuse it), but that's just not me. Right now, my platform of choice is Python using Django. Of course, there are some things I don't like about that too, but it would make for much too long a blog post (as if this one wasn't). I'm probably going to keep trying with Java, using that address book project as a test.
Labels: asp, dotnet, java, php, webprogramming