NewsBot

NewsBot

How I Taught the D Programming Language at a Russian University

A new D blog post/announcement has been posted!

Get the full details here: How I Taught the D Programming Language at a Russian University | The D Blog

Most Liked

OvermindDL1

OvermindDL1

I do think D could have had a chance of upsetting or perhaps even replacing a lot of C++ usage except it had a couple major downsides in the past that stopped it (less so nowadays):

  • Optional Garbage Collector, and being optional means that it’s not optional, as if it’s used anywhere then you are infected and the whole program scanning starts.
  • Two major standard libraries, one leaned more heavily on the GC than the other (which was mostly or all GC free?). Nowdays one has already won out but it’s waaaay late for that.

The first is a MAJOR issue for C++ devs, the second was a complete failure as a usability requirement.


One big thing from the article:

C++11/17/20 novelties were first battle-tested in D

Ehhh, no, not really at all, rather they were "battle-tested’ in Boost for long long before D, in some cases for long before D ever existed.


And now Rust has better safety and reliability, even if not as many features, but those are things that exceedingly appeal to C++ devs, so I can’t really see D getting popular, much as an enjoyable language that it is, it missed its chance to shine due to those two big issues above in its past.

AntonRich

AntonRich

I like a few things from the article:

  • This is the story about how … and how students sometimes surpass their teachers.

  • In my first months of university, I entertained the thought of being a school teacher. Now I realize that this was just a call for justice of sorts. There is a stark difference between a high school and a university, and for me, the latter was a much better experience. It felt like in just one month at university I learned more than in one term in high school, and that was so cool. Why couldn’t they explain it this way back in high school , was my common thought. If only educators applied the same educational methods in a regular school, it would make the experience much better. My desire to become a teacher vanished the second I received my first paycheck as a programmer (in Russia, ‘programmer’ is a very well-paid job and ‘school teacher’ is the total opposite), but some memory of that desire remained.

  • This was also the time when I became interested in D. Compared to C++ it looked like a perfect programming language. You can write code that would be as fast, but without all those C atavisms. I used D for my master’s thesis, and I loved it. My program was twice as small and simple as the older C++ version while performing better. Implementing complex and more efficient algorithms in D was much easier; doing the same in C++ would be too much work, and, like any student, I always struggled with my deadlines

  • In 2018, an unusual offer surfaced on the D mailing list: …

  • I didn’t see myself as a full-fledged lecturer and expected to be just an assistant. At the beginning that was the plan, with someone else acting as a lecturer. He was going to give lectures remotely via Skype, and I would assist him on site.

  • To my surprise, the university in question was

  • I checked their program: D was introduced for third-term students, and during the first two terms they learned C, C++, Prolog, and even some Lisp, I think (a bit too much, but why not). Their math course was solid, too (yes, I am among those who think that math is important for programmers).

  • We started working on the course program, although I barely included myself in that “we”. That was a mistake. With one month left until the classes started, the lecturer was suddenly leaving us. The news took me by surprise, but… there was still plenty of time, right?

  • Everything was saying that there would be no help and that I had to do the whole course by myself, but my impression was hard to shake. The grave realization only came one week before Day One. Only then did I start to prepare for real.

  • This is supposed to be the part about the trials and tribulations of the endless bureaucracy awaiting a poor programmer’s soul.

  • Things like the principles of import are easier to grok when using a command-line compiler rather than some “intuitive interface”.

  • Lifted by the success of the first seminar, I was slammed to the ground by the first lecture. It contained the full theoretical explanation of type systems and their various types, compared D with other languages, brought out the problems of C and C++, and demonstrated what makes D different. It was a total failure.

  • But the problem was with the lecture itself. First, it was too much for one class. Second, the lecture was based on the talks I did for my job that were intended for seasoned programmers. I realized that everything that I’d prepared for my future lectures must be tossed aside and rewritten from scratch.

  • https://youtu.be/-ruC5A9EzzE

  • I had several reasons to think that this was a well-fitting problem. First, I could write a solution I expected to see from the students in five hours or two evenings. Compensating for the students’ level, it looked like a good project for a semester-long assignment. Second, the solution isn’t too straightforward. Simple brute force would take too much time so you need to cut off the equal variants in the beginning. And third, I was fascinated by this problem myself, so I thought the students would feel the same. I couldn’t be more wrong.

  • That’s how in just one year you become an old geezer teacher who can’t keep up with the times.

  • The chemistry of a group coding session with a teacher ready to help won’t kick in.

  • Bad students will skip classes anyway, but lazy B-graders could benefit from a little scolding.

And there were moments when I raised some questions:

  • Secondly, a broader outlook makes for better code. My familiarity with D improved my C++ skills and made it much easier to learn Python, especially its iterators. Most importantly, D is the future—of C++ and beyond.

    • Is it really? I don’t know myself as I haven’t touched both D nor C++.
    • I suspect the author means that some of the concepts from D will be transferred to C++.

There is a challenge that I’d like to love myself, but with a different language. I don’t know how to point to the exact spot in the document. But follow the link and search for:
s = Multiline string, each line containing

To the surprise of the teacher each years students solve this problem differently and may find a better solution.

It’s also really interesting to see the translation. I haven’t read tho original one yet.

dimitarvp

dimitarvp

Yeah, there is a huge class of techies that sincerely believe having several options for certain big and important needs (and thus libraries) is desirable. That’s one of the things that is still putting me off in OCaml btw.

At one point core contributors and community should converge and start agreeing on what’s the go-to way even if it lacks in one way or another – there are sub-libraries springing up that deal with some perceived or real deficiencies in the bigger / std library and all is right in the world.

I don’t know why the above is such a mind-blowing revelation for so many programmers. Maybe some misguided notion of “competing libraries” or “democracy” or “choice” or whatever. But writing code for money is not a political statement; it’s a job. Way too many people lack the ability to discern between the two, somehow.

Popular Backend topics Top

PragmaticBookshelf
Your domain is rich and interconnected, and your API should be, too. Upgrade your web API to GraphQL, using flexible queries to empower y...
New
PragmaticBookshelf
Classroom-tested by tens of thousands of students, this new edition of the bestselling intro to programming book is for anyone who wants ...
New
PragmaticBookshelf
Dig under the surface and explore Ruby’s most advanced feature: a collection of techniques and tricks known as metaprogramming. Pa...
New
PragmaticBookshelf
TDD is a modern programming practice that all C developers need to know. It’s a different way to program—unit tests are written in a tigh...
New
PragmaticBookshelf
SQL Antipatterns is a short-cut to wisdom, showing you how to avoid "easy" solutions that don't work, and be a better database developer ...
New
Cellane
Phoenix 1.6.0 got released last week, with built-in authentication and mailer generators, a whole new HEEx (HTML-aware Embedded Elixir) e...
New
First poster: bot
Node.js v14.19.0 has been released. Link: Release 2022-02-01, Version 14.19.0 'Fermium' (LTS), @richardlau · nodejs/node · GitHub
New
PragmaticBookshelf
Build efficient applications that exploit the unique benefits of a pure functional language, learning from an engineer who uses Haskell t...
New
ManningBooks
Effectively reading and understanding existing code is a developer’s superpower. In this book, you’ll master techniques for code profilin...
New
PragmaticBookshelf
Build fast, scalable PostgreSQL and Rails apps. Solve data growth, quality, and reliability challenges, for workloads from consumer Inter...
New

Other popular topics Top

PragmaticBookshelf
Design and develop sophisticated 2D games that are as much fun to make as they are to play. From particle effects and pathfinding to soci...
New
AstonJ
Curious to know which languages and frameworks you’re all thinking about learning next :upside_down_face: Perhaps if there’s enough peop...
New
AstonJ
There’s a whole world of custom keycaps out there that I didn’t know existed! Check out all of our Keycaps threads here: https://forum....
New
AstonJ
I have seen the keycaps I want - they are due for a group-buy this week but won’t be delivered until October next year!!! :rofl: The Ser...
New
PragmaticBookshelf
A Hero’s Journey with Chris Pine @chrispine Chris Pine, author of Learn to Program, Third Edition, discusses his journey to beco...
New
foxtrottwist
A few weeks ago I started using Warp a terminal written in rust. Though in it’s current state of development there are a few caveats (tab...
New
Help
I am trying to crate a game for the Nintendo switch, I wanted to use Java as I am comfortable with that programming language. Can you use...
New
PragmaticBookshelf
Author Spotlight: Bruce Tate @redrapids Programming languages always emerge out of need, and if that’s not always true, they’re defin...
New
New
AstonJ
This is a very quick guide, you just need to: Download LM Studio: https://lmstudio.ai/ Click on search Type DeepSeek, then select the o...
New