|
Re: Scala is for good programmers
|
Posted: Sep 29, 2010 6:40 PM
|
|
> The real problem in programming languages is to push back > the limits of what can be done by average Joes in > correctness, complexity and productivity. > Several posts here seem to claim that the most important goal of any programming language design should be to serve the average programmer. If I'm understanding that correctly, then I don't agree.
Back in my C++ days I programmed a lot in Visual C++ building apps for Microsoft Windows 3.1. I also did some programming in Visual Basic in those days. I really liked Visual Basic's simple way of programming. You built GUI dialog boxes visually by clicking and dragging, then attached handler code to the controls. I felt that the design goal of Visual Basic was to make programming Windows apps more accessible to more people (which would encourage more Windows apps, which would encourage more Windows volume, etc.) I think you could say that Visual Basic was designed to serve the average programmer, and that was a very good thing. The reason I don't agree that all programming languages should be designed for that purpose is that when a tool is designed to make simple things easy, it can sometimes make more ambitious things difficult.
So it is also useful to have programming languages designed to support people trying to solve harder problems, and that's what I felt Visual C++ was doing. And Java, C#, and Scala fall into that category too.
Visual Basic helped (or I suppose, helps) make programming accessible to people who aren't trained as programmers, and aren't very sophisticated at it. People who are smart, but just trained in other things: business, interior decorating, designing airplane wings---whatever. Moreover, my C++ colleagues and I observed also that some programmers in our company who really couldn't handle C++ could actually do useful things in Visual Basic. I don't think we were just being snobbish. It was true, and it was a good thing to have a tool that helped those programmers be productive.
I don't think Scala is designed to serve the average programmer like Visual Basic was designed to serve the average programmer. It was designed to serve more professional programmers, programmers for whom programming is their actually career and who have some level of competence.
That said, Scala isn't designed just for expert programmers. The way it works is that experts design Scala libraries and frameworks that make programming in the domain much easier for the rest of the programmers. I don't think this is much different than the way things work in practice in Java, C++, or C# land. On any team there will be a handful of people who are "the best," and they make the decisions on architecture. They design libraries and frameworks that the rest of the team uses. The difference is that Scala gives the experts a lot more power than Java, which makes it possible for them to design libraries and frameworks that makes domain programming a lot easier than Java for the "average" Joe developer.
|
|