Stories
Slash Boxes
Comments

Dev.SN ♥ developers

posted by NCommander on Wednesday April 02 2014, @03:11PM   Printer-friendly
from the I-remember-Applesoft-BASIC dept.

An article was recently published that looks at evaluating First Programming Languages (FPL) the language to use for an introductory course of programming.

An existing issue is that formally assessing a programming language isn't really defined, with a lot of evidence being anecdotal. The proposed evaluation framework looks at technical and environmental feature sets. "The technical feature set covers the language theoretical aspects, whereas, the environmental feature set helps evaluating the external factors." These feature sets are covered in table 2 of the article (link to PDF) and consist of the following:

Technical Features

  • High Level
  • Orthogonality
  • Strongly Typed
  • Enforceability of Good Habits
  • Security
  • Feature Uniformity
  • Less Effort for writing simple programs

Environmental Features

  • Demand in Industry
  • Contemporary Features
  • Easy Transition
  • Readable Syntax
  • Quality Coding
  • User Friendly Integrated Development Environment

The article explains each of these points in details, and gives each of the languages being evaluated a rating based on this explanation, followed by a detailed explanation of how the scores of each rating can be compared this includes allowing an evaluator to weigh certain criteria they deem important against the others. As this is for choosing a language to teach someone to program with, different places will have different reasons and goals, so would want to weight things differently.

As the default weight settings do not conform to the original popularity index of the languages, so there should be a different weighting criterion. However, it is very hard to come up with a generic and correct weighting criterion. Therefore, the scoring function should be customizable and the user should be able to tune the weight of each feature based on her preferences. As an example, consider the fact that Ada holds 3rd position in overall scoring, but is not being considered among highly used FPLs as of now.

NCommander adds: lhsi was kind enough to include a summary of the results. I looked through the paper and it seems like a fairly interesting read.

Using the default weighting, the top five First Programming Languages evaluated are as follows:

Technical
  1. Python
  2. Java
  3. Pascal
  4. Ada
  5. Modula-2

Environmental

  1. Java
  2. Ada
  3. Python
  4. C#
  5. C++

Overall

  1. Java
  2. Python
  3. Ada
  4. C#
  5. Modula-2
 
This discussion has been archived. No new comments can be posted.
Display Options Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
  • (Score: 4, Informative) by melikamp on Wednesday April 02 2014, @04:15PM

    by melikamp (1886) on Wednesday April 02 2014, @04:15PM (#25134)

    I agree. I have a huge issue with security: why does that matter for FPL? Isn't the point just to teach basic programming? No first year will even begin to understand the concepts related to the security anyway. Demand in industry is also dubious; the industry uses more than a dozen languages, so the CS majors will have to pick up most of them anyway: some in higher-level CS classes, and others on their own time. Learning a relatively "useless" language may be a great trade-off, as long as it really helps to be more proficient with "useful" languages later on. Why bother with "contemporary features" if they are not even taught, as TFA itself says? And, of course, the development environment seems largely irrelevant for writing programs like "hello world" and basic sort, and can only produce pointless instructional overhead. (This alone should spell doom for Java, which I personally found really hard to use outside of DE.)

    Even though the other metrics are sensible, this whole study doesn't conclude much for my money, since it is hopelessly subjective and the goal is unclear. The one true way to evaluate FPLs is to set a measurable criterion (for example, performance in following CS courses) and do a statistical experiment, where first years are assigned different FPLs randomly, and 4 years later their academic performance is compared.

    Finally, I'd like to go out on a limb and to suggest that the only language to be taught for its own sake should be Common Lisp. The reason is two-fold: it has very nice features, of course, but it also is one of the hardest to learn on your own. And its features are indeed awesome. It is multiparadigm, allowing for declarative, functional, or OOP style of programming, either in their pure form, or mixed together. Its OOP facility, CLOS, is probably the most powerful and flexible one around. It has dead-simple syntax. It can be both interpreted and compiled, which is an awesome thing to have in a classroom. It has an amazing array of built-in types: (long arithmetic) Gaussian rationals, floats, strings, multidimensional arrays, single-linked lists, and hashes, to name a few. It checks types at run-time, and it collects your garbage. It has an incredible reference: the hyper-spec, which is also its official definition, to which implementations must adhere. It is not a highly used language, but this may very well be the consequence of it being hard to learn on your own. I believe that if taught, it would quickly enter the mainstream.

    Starting Score:    1  point
    Moderation   +2  
       Interesting=1, Informative=1, Total=2
    Extra 'Informative' Modifier   0  
    Karma-Bonus Modifier   +1  

    Total Score:   4  
  • (Score: 1) by Heathen on Wednesday April 02 2014, @04:54PM

    by Heathen (965) on Wednesday April 02 2014, @04:54PM (#25157)

    I disagree that Java is hard to use outside of an IDE for basic programs like hello world. Such programs can ignore features like packages and concentrate on the basics such as loops and conditional statements. There is a minimal amount of boiler plate code (public static void main), which can be initially ignored.

    1. Save HelloWorld.java
    2. javac HelloWorld.java
    3. java HelloWorld

    Granted it's one more step than Perl, but I don't consider it to be that much harder.

    • (Score: 2) by melikamp on Wednesday April 02 2014, @05:12PM

      by melikamp (1886) on Wednesday April 02 2014, @05:12PM (#25163)
      You are probably right, I never gave Java a second chance :)