On Monday, 6 May 2013 at 00:47:22 UTC, Tyro[17] wrote:
You mean algorithmic contests like ACM ICPC, right? There are
a few
online judges supporting the D programming language which
already have
all other necessary infrastructure (problem archive, online
judge and
server itself, etc).
Yes. So is your suggestion that I leave this sort of thing to
already established sites that caters specifically to these
sort of contests? I would actually love to do that but my
experience is sites (shootouts etc...) tend to drop coverage of
D on a whim.
From this perspective, yes: if you do build an online judge,
supporting D as a contest language will likely be your least
concern.
First, there's Codeforces (http://codeforces.com). There are
already
hundreds of algorithmic problems in the problem archive which
can be
solved individually or by participating in "virtual" past
contests. New
contests (5 problems, 2 hour duration) are held, like, weekly.
The
online judge supports a number of programming languages. They
recently
upgraded the D compiler to the current DMD 2.062 (Windows
version).
Then there's Sphere Online Judge (http://spoj.pl). They
support 48
programming languages, their D version is listed as GDC 4.1.3
which as I
understand is pretty old (D1?).
Or is outdated and becomes useless to our community.
Well, contacting the staff sometimes helps (at least with the
former example of Codeforces).
And then there is a number of mathematical and/or algorithmic
online
contest sites where one runs the code locally on given inputs
and
submits only the result. Examples of these are Project Euler
(http://projecteuler.net) and Rosalind (http://rosalind.info).
After
you successfully solve a problem, you usually get access to a
forum
where people post and discuss their approaches in different
programming
languages, trying to show the strengths of their tools.
ProjectEuler is very interesting but I haven't tried Rosalind
so cannot comment there. The object of these sites however is
not to teach programming (though programming is one method that
can be used) but rather to uncover the solution to a given
problem by whatever means necessary. I've seen solutions
reached by simply loading data into Excel and performing some
sorts and or inserting a couple of formulas. Not what I'm after.
Right, but that is the point which may be changed. For example,
Rosalind is a platform for studying bioinformatics through
problem solving. Each problem contains a motivational or
educational part describing how the problem relates to this field
of study. You are free to use any language, but some of the
current problems favor Python 2. The reason is that there are
mature libraries in that language, useful in bioinformatics. The
consequence is that there are tutorial versions of some problems
describing how to do the stuff with a particular library instead
of re-inventing the wheel.
Likewise, one can establish an online judge with problems
covering the most basic algorithms or programming techniques. If
the goal is to teach and promote D in the process, each problem
statement could contain a hint for a D construct one could use to
solve it efficiently. Allowing other languages to be used (e.g.
requiring only the answer but not the program as ProjectEuler
does) could serve for the promotion part. This way, one could
solve all the problems in some other language and still not learn
D. However, the problem statements will introduce its basic
concepts, and the problem solutions discussion (accessible right
after you solve the problem) will allow to compare that other
language to D, promoting the latter when it's worth it.
So, on second thought, an online judge dedicated to D could be a
feasible goal.
Regarding programming contests, there's another flavor of
them: instead
of solving small math/algo problems in a limited time frame,
the
competitors can design or develop a small-ish software
component and
submit them for a formal review. The judging criteria should
however be
precise enough (i.e. carefully prepared by someone having a
clear
general picture). This could even turn into a successful
business
model, the presentation at
http://bsr.london.edu/files/1357/who-needs-employees.pdf
seems to
describe it in more detail. It may happen that a similar
model could be
adopted to some parts of D development, provided that some of
the
current developers will like the idea and be really willing to
try it.
Now there is an idea I'm willing to support. This is the sort
of contests I would actually like to promote on the site for
professional programmers. But timed math/algo type contests are
also necessary for those in academia to hone their skills. The
hope is that college students will be able to demonstrate there
D programming acumen in national/international contest
sponsored by yours truly
Sure, TopCoder (the company which utilizes that business model)
also runs algorithm contests alongside these design and
development contests, and the number of participants in algorithm
branch is much larger: the entry barrier is lower, the short time
frame is comfortable, and it is generally more fun.
Still, this type of contests (component) would require a
considerable effort to start.
-----
Ivan Kazmenko.