D as a college language
Sameer Pradhan
pradhan at cemantix.org
Sun May 6 00:35:19 UTC 2018
On Friday, 4 May 2018 at 11:35:22 UTC, Sjoerd Nijboer wrote:
> So i'm a college student in and what bothers me is that there
> seem to kind of assume programming languages don't evolve or
> don't get replaced by better ones.
> Right now if you go to college you'll most likely get tought
> c++, c# or java for any comp sci degree. While these languages
> are industrial standards, they all have their drawbacks. And
> one drawback that looks important for teaching is flexibility
> in expressiveness.
>
> From my experience college students seem to have problems
> translating their often declarative thought process into actual
> semi compile-able code that runs in a given language.
> Since D seems to be a language that supports a lot of
> programming paradigms very well, wouldn't it be beneficial to
> learn people declarative programming using D for a little and
> from there expose them to other programming styles in thesame
> language to lower the barrier of entry?
>
> I think D could play a bigger role in education since its such
> a "clean" language that is flexible but doesn't have any real
> gotcha "features". Its also a language that could potentially
> be used over someones entire college career as the primary
> language. If this would be achieved there would be a higher
> income flow into the industry of young D programmers which will
> pollute other programmers with the D mind and featureset.
I thought it might help if I mentioned that I successfully used D
as one of three languages to teach the Programming Languages
course at Vassar College last Fall.
The main reason I ended up using three languages was this:
1. Most undergraduate CS courses that I sampled (at UW, for one
taught by Dan Grossman, among others) use a core functional
programming language such as (S)ML which really helps in
solidifying some of the principles of programming languages—the
concept of environment, scope, binding; functions as values;
curry, filter, map, etc. Plus it has a version that comes with a
REPL and really helps students explore it. That said, it is not a
"industrial strength" language, and since I also wanted to
empasize on the pragmatic aspects, it could not be the only one.
2. I briefly introduced the concept of logic programming using
Prolog, but I couldn't really spend too much time on it and so
cannot count it as another language
3. When I asked students what language they would like to
choose—given the choice, most of the class leaned towards Python.
That plus the likelihood of them actually using it at some
point, I decided to cover some programming language aspects using
it over two-three weeks. It also has some fascinating feature
sets (dunder methods, some meta programming niceties, etc.) and
being interpreted language, provides a nice complementary view.
4. The rest of the course used D. I used both Andrei
Alexandrescu's book and Ali's book to generate the course
content. I was fortunate to have a stack of slides from the
Andrei himself. And even more fortunate, as it happened to spend
a Boston D meetup dinner with the two and Steven Schv-guy.
I have been in love with D ever since I firsr started reading
Andrei's book in 2010, and it was really quite something that I
could use it in an undergraduate CS curriculum seven years later.
Originally, I was hoping to use D for the entire course, but then
given various aspects of the course, and the styles in which it
is being taught many places made me change things a bit. Oh, and
I should mention that I did get a few slides from Chuck Allison
who uses D to teach a small part of his course at UVU. If you
haven't seen his talk at, I believe the first/second DConf
at UVU, I would highly recommend it.
The icing on the cake was that Andrei was able to visit Vassar in
November and give a talk on his Fastware muse (if I may call it
that). He was an instant success!
I am scheduled to teach the course again next Spring, and I am
trying to figure out how/if I can use more D than I did the last
time without sacrificing some of the goodness that (S)ML brings
to the table. That way I can cover more programming paradigms
that D brings to life—built in unittests, contract programming,
delegates, and many many more—with a flair.
Any thoughts/pointers that this wonderful community can provide
would be very much appreciated.
--
Sameer
More information about the Digitalmars-d
mailing list