]> Git — Sourcephile - sourcephile-web.git/blob - content/posts.old/programing-language-vision.md
init
[sourcephile-web.git] / content / posts.old / programing-language-vision.md
1 ---
2 title: My vision for the Future of Programing Languages
3 updated: 2021-06-20
4 lang: en
5 summary: A description of a fictitious future programing language.
6 tags:
7 - tech
8 - unison
9 - haskell
10 - fragnix
11 - grin
12 ---
13
14 People who know me closer know that I have an obsession with finding the
15 perfect programing language.
16
17 # The Criteria
18
19
20 I would like to have a programing language, that is
21
22 * strongly, statically and dependently typed
23 * Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer urna lacus, laoreet tempus tincidunt sit amet, dictum sed est. Duis leo ex, tincidunt eu nisi eu, porttitor euismod tortor. Curabitur faucibus quam leo, id bibendum justo eleifend id.
24 * purely functional
25 * uses immutable, semantic hashed, content-addressed code and dependency management
26 * and has automatic, static memory management.
27
28 Of course what you also always want from a programing language is a nice
29 community, a rich ecosystem, good tooling and obviously a fast execution, but I
30 won’t be talking about those here …
31
32 ## The Type System
33
34 I think in the last years static, strong typing has increasingly become
35 mainstream. Examples include type annotations for Python, Typescript and Rust.
36 Of course it is not enough to have static types, they also need to be
37 sufficiently expressive. For me that means that you at the very least need
38 Algebraic Data Types.
39
40 Still, in this post I am dreaming, and so I would like to have dependent types
41 (with type erasure). I know a lot of people are apprehensive of the "dark type
42 level magic" Haskell offers today. But I am quite convinced that type level
43 programing will get easier and more intuitive once reasoning on the type level
44 works exactly the same as on the term level.
45
46 One application for which I personally would like good dependent types support
47 is tracking matrix dimensions at the type level, this is currently possible but
48 tedious in Haskell. But of course there are lots and lots of other use cases
49 for dependent types.
50
51 ## Purely functional
52
53 I wont argue much for this. But in my opinion it is absolutely a must have.
54 Tracking side effects and having referential stability change how you think
55 about a program and enable declarative programing.
56