What language would *you* use?



  • Hello folks,

    I am in the (enviable by the sounds of it) situation of being able to choose what language/framework to develop our next project with.  The project is a web front end that will start off small (about 1200 users) but could well end up being reasonably large (1m+ users) if other institutions of our type end up being interested.  The back end will probably be SQL Server (2008) but that may change.  The whole thing is 'data driven', and has to integrate with many systems so ease of data access is a consideration.  At the moment I'm leaning towards ASP.NET/C# because of how easy data access is (and maybe because I'm biased towards C-like languages. :-) )

    So my question to you is, what language/web framework would you use if you could, and why?

    Thanks for your input!



  • Not sure I'd consider it enviable... I'm assuming that, since you're choosing the language/framework, then there's nothing currently in place and this is a learn-as-you-go project? Those can get... ugly.

    This being the case... you need the platform that's easiest to learn, easiest to find talented developers for, has tons of support, an established commercial/open-source library community,etc. Avoid anything new and fad-like (Rails, MVC, etc). And, most importantly, find an expert consultant to help with the architecture, design, and set-up. It will cost you a few grand, but you'll pay for it 10-100 fold (or more) in development and maintenance later on.

    My vote is ASP.NET/C#, but I think a good argument could be made for Java.

     

     



  • @Alex Papadimoulis said:

    Not sure I'd consider it enviable... I'm assuming that, since you're choosing the language/framework, then there's nothing currently in place and this is a learn-as-you-go project? Those can get... ugly.

    Kind of.  There are a few things in place - the idea here is to create one thing that does the job of 3 or 4 separate systems (all of which are utterly useless and currently managed by third parties).  So we know what sort of beast we're dealing with, and have "reasonable" expectations of what our system should be able to provide in terms of functionality, and what it could cost in terms of maintenance.

    @Alex Papadimoulis said:

    This being the case... you need the platform that's easiest to learn, easiest to find talented developers for, has tons of support, an established commercial/open-source library community,etc. Avoid anything new and fad-like (Rails, MVC, etc). And, most importantly, find an expert consultant to help with the architecture, design, and set-up. It will cost you a few grand, but you'll pay for it 10-100 fold (or more) in development and maintenance later on

    My vote is ASP.NET/C#, but I think a good argument could be made for Java.

    I'm a bit anti-Java - one of the systems we have in place at the moment uses Tomcat and is dire in terms of maintenance, performance, and about anything else I can think of.  This could (and probably is) just the way it's written though. (Not by us!)

    Thanks for your input, much appreciated.



  • @Alex Papadimoulis said:

     

    My vote is ASP.NET/C#, but I think a good argument could be made for Java.

    Let us call this Bstorer's Law: A good argument can never be made for Java.


  • @Byrn said:

    I'm a bit anti-Java - one of the systems we have in place at the moment uses Tomcat and is dire in terms of maintenance, performance, and about anything else I can think of.  This could (and probably is) just the way it's written though. (Not by us!).
     

    There is no  probably about it.  There is nothing wrong with using Java or Tomcat if done properly (even though the linked blog discusses that they use WebSphere).  



  • I completely agree: C# on ASP.NET is the way to go. On a Linux foundation, or a platform likely to move into a Linux foundation, I would say PHP. If you don't know whether you'll ever move to Linux, I would be tempted to go PHP just in case. Both languages have roughly equivalent strengths and weaknesses, in my experience.



  • @amischiefr said:

    There is nothing wrong with using Java or Tomcat if done properly

    The problem is, like Ruby on Rails, developers capable of using Java or Tomcat properly are thin on the ground. There are a boatload of developers who claim it on their resume, but comparatively few of them are even competent.

    PHP and C#, on the other hand, are as easy to use well as they are to use badly. The problem isn't that it's easy to use Java or Ruby badly; it's easy to use anything badly. That's what you do by default with any tool. The real problem is that using Java or Ruby well is extremely hard... so the people who do it are the kind of people who love complexity and proving their intellect. These are Bad Things to have in your framework developer, because it will result in an overly complex framework to prove how much smarter he is than his users. What you want is someone who is going to find the best tool for the job, not because it provides job security and proof of skill, but because he can develop what you want quickly and easily with it.

    I would go so far as to say that while a great Java developer is usually a great developer in any language, turning a great C# or PHP developer into a great Java developer is near-impossible.



  • @CDarklock said:

    @amischiefr said:

    There is nothing wrong with using Java or Tomcat if done properly

    The problem is, like Ruby on Rails, developers capable of using Java or Tomcat properly are thin on the ground. There are a boatload of developers who claim it on their resume, but comparatively few of them are even competent.

    PHP and C#, on the other hand, are as easy to use well as they are to use badly. The problem isn't that it's easy to use Java or Ruby badly; it's easy to use anything badly. That's what you do by default with any tool. The real problem is that using Java or Ruby well is extremely hard... so the people who do it are the kind of people who love complexity and proving their intellect. These are Bad Things to have in your framework developer, because it will result in an overly complex framework to prove how much smarter he is than his users. What you want is someone who is going to find the best tool for the job, not because it provides job security and proof of skill, but because he can develop what you want quickly and easily with it.

    I would go so far as to say that while a great Java developer is usually a great developer in any language, turning a great C# or PHP developer into a great Java developer is near-impossible.

    Very interesting comments, and some things in there I hadn't thought of, so thanks for that!

    For what it's worth we'll almost certainly be sticking to Windows as that's the platform primarily known and used in this area.  Moving to Linux would almost certainly mean that we would have to provide at least support for the OS itself - something I really don't want to get into!



  • I am programming in C# (both GUI and web service stuff), and I can't find a good reason for using it, let alone recommending it. It only runs properly on Windows, which will lure you into using IIS. Run away from it.

    The thing I would recommend is Java on the server side and something like GXT or GWT on the client side. Pretty flexible. If you just want forms based client side (where every interaction is driven by a post or get operation), I don't know what I would recommend. I've got experience in PHP, but that's a language with a gravity field in the direction of a WTF. Everything starts out pretty simple, but once it gets complex, you might end up in a maintenance nightmare.

    I wholeheartedly second the remark to get an expert architect before you embark on anything beyond requirements, preferably with expertise in the kind of system you need to build and one who can define the system in terms of modules, systems, deployment, etc. Once that's properly defined, you can think about the proper platform.



  • @Byrn said:

    For what it's worth we'll almost certainly be sticking to Windows as that's the platform primarily known and used in this area.  Moving to Linux would almost certainly mean that we would have to provide at least support for the OS itself - something I really don't want to get into!
    You've already decided on Windows and most probably SQL Server. You are in Microsoft territory so I would vote ASP.NET and C#.

    If you don't have a lot of experience in this area, then stick with classic ASP.NET, Windows Communication Foundation (or even the .NET 2.0 Webservices), Enterprise Library and a traditional n-tier architecture. Don't start meddling with WPF, Silverlight, AJAX, ASP.MVC and whatnot because that will just add complexity and distract you from what you want to achieve. And I definitely agree with the other posters to find a experienced .NET architect to set this up for you. Scalability does not come out-of-the-box here.



  • ASP.NET/C# sounds like the totally obvious brain dead solution here. If your database is SQL Server 2008 there's no reason why you shouldn't also be using IIS7, both of which integrate very well with the whole .NET framework thing. There's a whole bunch of stuff in ASP.NET that makes creating data bound web content pretty trivial as well.



  • @Byrn said:

    ...what language/framework...

    This will sound backwards to you younger fellas, but in the old days we used to do the design first. The requirements of the completed design would help us choose the tools in which it was to be implemented.

    I have come to suspect that the difficulties of design tend to naturally magnify the apeal of the relative simplicity of our tools. There have been some improvements in tools -- not the way I expected -- but I am singularly unimpressed with improvement in design methodologies. Perhaps the evaluation of the appropriateness, correctness, and suitability of design have been beyond us. Thus, the labor pool itself begins to dictate all our choices. Humans don't like problems that seem too dificult. Those just discourage us. Instead, we tend to focus only on those problems we know we can solve -- to the point where that is the only kind of problems we care to see.

     Sorry... didn't mean to wax philosophical. I hope that by now you've found an answer with which you are happy. More than that, I hope that it turns out to be the right answer.



  • @DocTrinsOGrace said:

    @Byrn said:

    ...what language/framework...

    This will sound backwards to you younger fellas, but in the old days we used to do the design first. The requirements of the completed design would help us choose the tools in which it was to be implemented.

    I have come to suspect that the difficulties of design tend to naturally magnify the apeal of the relative simplicity of our tools. There have been some improvements in tools -- not the way I expected -- but I am singularly unimpressed with improvement in design methodologies. Perhaps the evaluation of the appropriateness, correctness, and suitability of design have been beyond us. Thus, the labor pool itself begins to dictate all our choices. Humans don't like problems that seem too dificult. Those just discourage us. Instead, we tend to focus only on those problems we know we can solve -- to the point where that is the only kind of problems we care to see.

     Sorry... didn't mean to wax philosophical. I hope that by now you've found an answer with which you are happy. More than that, I hope that it turns out to be the right answer.

     

    I actually kind of agree with that, when designing only with the restrictions of the features you need to implement you will obviously get the "best" design. However at least in the web world any serious developer will be using a framework.Frameworks, or at least fullstack frameworks, will dictate a lot of the design. But that isn't necessarily bad. Because if the application needs to be a web page, then the part of the design governing that would have been rather standard anyway.

    So in a way, it can be at least faster to choose your tools on a hunch/experience, and design from that point onward.  Which from a commercial perspective just means that you can create a cheaper solution, without losing a lot of quality in the product.



  •  That makes sense. I guess I was fixating on broader applications. Thank you for your thoughts.


Log in to reply
 

Looks like your connection to What the Daily WTF? was lost, please wait while we try to reconnect.