Stories
Slash Boxes
Comments

SoylentNews is people

posted by NCommander on Wednesday April 02 2014, @07: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 Threshold/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: 2) by naubol on Wednesday April 02 2014, @10:11PM

    by naubol (1918) on Wednesday April 02 2014, @10:11PM (#25197)

    If Djikstra is right, http://en.wikipedia.org/wiki/On_the_Cruelty_of_Rea lly_Teaching_Computer_Science [wikipedia.org], that computer science is really a branch of mathematics... maybe the most important feature of a first language should be how it exposes you to the mathematics.

    If that is the case, then I think really one of the few obvious languages to choose is C.

    But, there is a meta discussion about what constitutes a good programmer. Solving high level problems quickly vs. solving to the metal problems. Frankly, I think that the low level backend engineers often have great difficulty doing work that requires less precision and are more like "limited information problems". And, the reverse is certainly true. There is a multitude of programmers that could not write a basic data structure who are gainfully employed.

    But, in terms of pure CS, I still want to say that we should start with a language that makes it very hard to get away from the math as the most salient feature.

    Starting Score:    1  point
    Karma-Bonus Modifier   +1  

    Total Score:   2  
  • (Score: 2) by stormwyrm on Wednesday April 02 2014, @11:11PM

    by stormwyrm (717) on Wednesday April 02 2014, @11:11PM (#25234) Journal

    If Djikstra is right, http://en.wikipedia.org/wiki/On_the_Cruelty_of_Rea lly_Teaching_Computer_Science [wikipedia.org], that computer science is really a branch of mathematics... maybe the most important feature of a first language should be how it exposes you to the mathematics.

    If that is the case, then I think really one of the few obvious languages to choose is Lisp.

    FTFY. C exposes you to the innards of the machine in a way that only assembly language does more, and in many ways the fact that you need to deal with machine-level constructions with C all the time obscures rather than exposes the mathematics. If you really wanted to expose the mathematics, there are few languages that do that better than Lisp. John McCarthy basically invented Lisp because it provided a better means of illustrating theoretical computer science concepts like universal computation. Turing Machines are really a rather awkward way to describe computation.

    These simplifications made LISP into a way of describing computable functions much neater than the Turing machines or the general recursive definitions used in recursive function theory. -- John McCarthy, The Implementation of Lisp [stanford.edu]

    However, I for one don't believe that CS is just about the mathematics. Computer science is not just about the theory of computation but the practicalities of computation on real machines. C I think fills the latter just as well as Lisp fills the former. Perhaps Lisp could be the first language and C the second, as both the theory and the practice are needed for a well rounded computer scientist.

    --
    Numquam ponenda est pluralitas sine necessitate.