Kurs/D (2013)

From Programvareverkstedet

D > C++

A depth-first search into the psychology and semantics of two programming languages

When: Torsdag 26th September 2013, 18:15
Where: KJL5
Speaker: Anders R. Petersen

Since talking about a single language quickly becomes a list of features and design patterns, it seemed reasonable that doing some sort of comparison to another language would be more interesting. So to keep things fair and balanced, that second language is one of the worst and most overhyped ones. C++.
At first glance, D and C++ are very similar (both being natively compiled multiparadigm languages in the same syntax family), but once they are put to the ultimate test - practicality - C++ systematically fails on all fronts.
This talk aims to look at these two programming languages in the context of language as a tool - a tool to describe how a computer should solve a problem. And since language is a guiding force for our thought process, it is imperative that the language provides several and easy-to-understand mechanisms for expressing our thoughts. So why and how did C++ end up in its broken, unusable and creativity-inhibiting state, while D feels like a modern language that just "makes sense"? And what does it even mean for a programming language to "make sense"?

Poster: File:DtalkPoster04.PDF


Link Dump:
The camel has two humps: Why teaching programming to everyone does not work
The Evolution of Language: Noam Chomsky talking about Universal Grammar (An exercise in "spot the logical fallacy"), and Terrence Deacon about what a languages needs to be useful
Daniel Everett on language: Dan talks about the language of the Pirahã, and how it disproves UG on a fundamental level
Chicken, Fish and Intercal: Languages that show how usefulness is not just reliant on how well a machine can read it, but also the human
On the Expressive Power of Programming Languages (Click the cached PDF link) : A pure and dense analysis of expressive power. The TL;DR is paragraph 2 on page 38
The Chaos: A poem about pronunciation in the English language. Visual similarity does not imply anything about any other kind of similarity, be it auditory or content
The Future of Programming: More performance art than presentation. The ideas of graphical programming are somewhat flawed, because human language is linear (speaking and reading), but the comments on functional/logic programming and concurrency are well worth considering
STL error decryptor: Only works on the STL, because templates are hard
D language website: Downloads, language reference and library reference. Code can be run directly on the website. The language is (almost) entirely open-source and available on GitHub, and additional example code is often found in the unit tests
On Iteration: Andrei explains how iteration should be done. Page 7 for the TL;DR
Voldemort Types: Types that don't leak their abstraction
Component Programming with Ranges: Takes the range concept and runs with it, and creates a calendar without a single if-statement
D calendar implementation: Look for the usage of unit tests (built in to the language), pure functions (enforced by the compiler), template constraints (returnType foo(T)(param) if (boolExpr(T)) {} ), compile-time specialization (static if and is-statement) with conditional compilation. This is heavy hardcore code, but a completely different way of thinking about this problem
Function syntax & Templates in D: A comprehensive and well-written guide to functions and templates, including all the peculiarities that arise from being ruthlessly consistent
Erlang: The Movie and Erlang: The Movie II: The Sequel, aka "Outlaw Techno Psychobitch". Two famous Erlang programs are Amazon's SimpleDB service to the Elastic Compute Cloud, and the backend of Facebook chat.