Re projecteuler.net: The language list
Posted: Tue Aug 07, 2007 9:45 pm
or, alternative title: How do I... make a suggestion that's not a new problem?
I understand the reasoning behind having a fixed set of languages due to the statistics that can be derived from it, but I think it's a flawed idea. Here's why:
a) there will always be missing languages: D, Clean, E, Qi, R, Dylan, Pike, Eiffel, Prolog, OCaml (tho you might lump it in with ML?), Calc (lumping it in with C/C++?), the Modula/Oberon family (or do they go under Pascal??) etc etc. (I've even seen people front Befunge and Brainfuck in the threads... :) ). Oh and the thread by the guy wanting mIRC scripting on the list. :)
b) Differences for what gets lumped together and what is included seems rather arbitrary. I would argue that SPARC assembly and x86 assembly are two very wildly different programming languages even if we still call both "assembly." Delphi and Pascal are different, but C and C++ are the same. APL/J/K are the same, as would be OCaml, SML and ML (?), but C# is different as are Scheme and LISP (as well they should be), etc.
c) the list will eventually get populated by tiny non-mainstream languages anyway: e.g. Frink and Magma (both used by just one user). Hadn't even heard of those two before...
d) new programming languages pop up every day, take the language Frink, above, which seems to be used on the site only by the guy who actually wrote it.
It's kinda like you hand new parents (newly registered users) a list of possible first names for their child (their dearest of dear languages; be it esoteric, their own, or a mainstream one) and ask them to chose from the list because that makes name statistics so much easier and cleaner (and to contact the department to have a new name added to the list). Clearly it's not very elegant...
Suggestions for amendment:
1. let the users type in the language(s) themselves (tell them to just specify the name, not version or compiler, etc) separated by "/" or "," (if several) and then do simple string collating & matching. Sure, someone will always manage to type in "I use C!!" instead of "C", but I think it will still be more fair (and the "I use C!!"-guys will look at the list and see that they're not counted in the C-group).
2. (possibly) use a (fixed) list of programming paradigmes that the users can subscribe to instead. Paradigmes (once identified and named) tend to not get reinvented every year and there's not nearly as many of them as there are languages (including obscure ones). Functional, imperative, object-oriented, aspect-oriented, contract-based, logic, dataflow, etc. I'm thinking of checkboxes here, not an exclusive-or list. Perhaps also a list like, do the user prefer garbage-collected languages, strong/weak/dynamic typing, interpreted/bytecode-compiled/compiled, etc.
That is, if the statistics are really that important. :)
Sorry for all the text, simply trying to be helpful and provide as many reasoned arguments as I can.
I understand the reasoning behind having a fixed set of languages due to the statistics that can be derived from it, but I think it's a flawed idea. Here's why:
a) there will always be missing languages: D, Clean, E, Qi, R, Dylan, Pike, Eiffel, Prolog, OCaml (tho you might lump it in with ML?), Calc (lumping it in with C/C++?), the Modula/Oberon family (or do they go under Pascal??) etc etc. (I've even seen people front Befunge and Brainfuck in the threads... :) ). Oh and the thread by the guy wanting mIRC scripting on the list. :)
b) Differences for what gets lumped together and what is included seems rather arbitrary. I would argue that SPARC assembly and x86 assembly are two very wildly different programming languages even if we still call both "assembly." Delphi and Pascal are different, but C and C++ are the same. APL/J/K are the same, as would be OCaml, SML and ML (?), but C# is different as are Scheme and LISP (as well they should be), etc.
c) the list will eventually get populated by tiny non-mainstream languages anyway: e.g. Frink and Magma (both used by just one user). Hadn't even heard of those two before...
d) new programming languages pop up every day, take the language Frink, above, which seems to be used on the site only by the guy who actually wrote it.
It's kinda like you hand new parents (newly registered users) a list of possible first names for their child (their dearest of dear languages; be it esoteric, their own, or a mainstream one) and ask them to chose from the list because that makes name statistics so much easier and cleaner (and to contact the department to have a new name added to the list). Clearly it's not very elegant...
Suggestions for amendment:
1. let the users type in the language(s) themselves (tell them to just specify the name, not version or compiler, etc) separated by "/" or "," (if several) and then do simple string collating & matching. Sure, someone will always manage to type in "I use C!!" instead of "C", but I think it will still be more fair (and the "I use C!!"-guys will look at the list and see that they're not counted in the C-group).
2. (possibly) use a (fixed) list of programming paradigmes that the users can subscribe to instead. Paradigmes (once identified and named) tend to not get reinvented every year and there's not nearly as many of them as there are languages (including obscure ones). Functional, imperative, object-oriented, aspect-oriented, contract-based, logic, dataflow, etc. I'm thinking of checkboxes here, not an exclusive-or list. Perhaps also a list like, do the user prefer garbage-collected languages, strong/weak/dynamic typing, interpreted/bytecode-compiled/compiled, etc.
That is, if the statistics are really that important. :)
Sorry for all the text, simply trying to be helpful and provide as many reasoned arguments as I can.