Kurs/D (2013): Difference between revisions
(kursnavn) |
(Link Dump) |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
= D > C++ = | |||
<i>A depth-first search into the psychology and semantics of two programming languages</i> | |||
<b>When</b>: Torsdag 26<sup>th</sup> September 2013, 18:15<BR> | <b>When</b>: Torsdag 26<sup>th</sup> September 2013, 18:15<BR> | ||
Line 7: | Line 7: | ||
<b>Speaker</b>: Anders R. Petersen<BR> | <b>Speaker</b>: Anders R. Petersen<BR> | ||
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++.<br> | |||
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.<br> | |||
This talk aims to look at these two programming languages in the context of language <i>as a tool</i> - 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:<br> | |||
[http://www.eis.mdx.ac.uk/research/PhDArea/saeed/paper1.pdf The camel has two humps]: Why teaching programming to everyone does not work<br> | |||
[http://skepticallyspeaking.ca/episodes/222-the-evolution-of-language 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<br> | |||
[http://www.theguardian.com/science/audio/2012/apr/09/science-weekly-podcast-language-animals Daniel Everett on language]: Dan talks about the language of the Pirahã, and how it disproves UG on a fundamental level<br> | |||
[http://torso.me/chicken Chicken], [http://esolangs.org/wiki/Fish Fish] and [http://esolangs.org/wiki/Intercal Intercal]: Languages that show how usefulness is not just reliant on how well a machine can read it, but also the human<br> | |||
[http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.51.4656 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<br> | |||
[http://www.cs.cmu.edu/~clamen/misc/humour/TheChaos.html 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<br> | |||
[http://vimeo.com/71278954 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<br> | |||
[http://www.bdsoft.com/tools/stlfilt.html STL error decryptor]: Only works on the STL, because templates are hard<br> | |||
[http://dlang.org 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<br> | |||
[http://www.informit.com/articles/article.aspx?p=1407357 On Iteration]: Andrei explains how iteration should be done. Page 7 for the TL;DR<br> | |||
[http://www.drdobbs.com/cpp/voldemort-types-in-d/232901591 Voldemort Types]: Types that don't leak their abstraction<br> | |||
[http://wiki.dlang.org/Component_programming_with_ranges Component Programming with Ranges]: Takes the range concept and runs with it, and creates a calendar without a single if-statement<br> | |||
[http://github.com/quickfur/dcal/blob/83764e6de9e6d25c0a136cbd91ff8b1a8fb1d5ec/dcal.d 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<br> | |||
[http://nomad.so/tag/d/ 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<br> | |||
[http://www.youtube.com/watch?v=xrIjfIjssLE Erlang: The Movie] and [http://www.youtube.com/watch?v=rRbY3TMUcgQ 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. |
Latest revision as of 23:17, 26 September 2013
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.