HackerTube
HomeLongsLikedHistoryWatch laterCategoriesPlaylistsSettings

"A (Not So Gentle) Introduction To Systems Programming In ATS" by Aditya Siram

Strange Loop Conference4 HN recommenders · recommended in 4 months, 2017-2022
YouTube
26K views · 9 years ago · talk · evergreen

Aditya Siram introduces ATS, a statically typed ML-like language that compiles to C and offers type-safe pointer arithmetic and a full proof language. The Strange Loop talk shows off C interop, concurrency and verification features with non-trivial examples.

Cited in Rust and systems-language threads as the best introduction to ATS, a language claimed to go beyond Rust's safety guarantees.

Programming language designLogic & formal methodsC, C++, Rust, Go & systems languages#ats#systemsprogramming#dependenttypes#formalverification#strangeloop

11 comments from Hacker News

@iod2022 · in “Ask HN: What technology is “cutting edge” in 2022?”

ATS Language ¹ is another language I would add to this list. First released in 2013, it tries to follow closer to performance and minimalism of C which can make it a good candidate for systems programming². ¹ link ² ▶ this video "A (Not So Gentle) Introduction To Systems Programming In ATS" (2017)

CitesView on HN
@rtfeldman2021 · in “The ATS Programming Language”

Some entertaining talks introducing the language, by /u/deech: "A Tase Of ATS" at Compose Conf 2019: link "A (Not So Gentle) Introduction To Systems Programming In ATS" at Strange Loop 2017: ▶ this video

RecommendsView on HN
@Athas2020 · in “Supporting Linux kernel development in Rust”

Yes, ATS can guarantee all those things and more. In particular, ATS allows you to write "unsafe" code, which you then prove safe with a mechanically verified proof. This is in contrast to unsafe Rust, which depends on programmer discipline, and has no (intra-language) mechanism for verification beyond the basic type system. You could say that Rust is all-or-nothing, while ATS allows gradual verification, as well as proving safe much more complex code than you can in Rust. I'm not going to claim that ATS is overall better than Rust - it's not - but it's a far more powerful language than Rust for safe systems programming. It's just that most people are not willing or able to pay the very high price in ergonomics. I recommend watching this presentation for a good idea of what ATS programming is like: ▶ this video In short, it's about as user-friendly as an overheating nuclear reactor.

RecommendsView on HN
@ghostwriter2020 · in “Why the developers who use Rust love it so much”

Rust's safety and runtime performance are not unique, and these properties can be improved further from the level of Rust. Have a look at ATS: - link - ▶ this video

CitesView on HN
@snaky2019 · in “C Is Not a Low-level Language (2018)”

> if there's a "true low level language" for today I'd like to hear about it "Steel Bank Common Lisp: because sometimes C abstracts away too much" link ATS - C plus everything you could get from modern types, including type-safe pointer arithmetics ▶ this video Compiling Haskell to hardware link

CitesView on HN
@reirob2019 · in “Google Is Uncovering Hundreds of Race Conditions Within the Linux Kernel”

ATS language. It compiles to C and I believe I have seen even that experimentally some kernel module was developped in it. Here some resources: The Wikipedia page: link "A (Not So Gentle) Introduction To Systems Programming In ATS" by Aditya Siram at the StrangeLoop 2017: ▶ this video Introduction to ATS, a series of screen casts: link I do not program in ATS because I am not doing anything that needs to be as efficient, so that I have the luxury to enjoy programming and learning Haskell, in the hope that by the time when I would need to write some super secure and performant program that has to run without interruption, and is used by more users than myself, well, I hope that by that time Haskell will evolve enough to allow me to write such a program. Otherwise I might end up using ATS, though honestly the syntax is so ugly.

CitesView on HN
@ernst_klim2019 · in “Rust 1.37.0”

> I guess I still find FP very abstract as a concept. I'm starting to like the notion of immutability as a design goal. I'm rather asking about OCaml or SML than about something abstract matters like denotational semantics, system-F or pure lambda calculus. There are pretty much the same abstract concepts behind imperative programming languages as well: operational semantics, Turing machines, which, I argue, are even more complex. And if you write OOP, you have to deal with open recursion, covariant/invariant/contravariant subtyping relations, late bindings, polymorphic self type etc etc. There is a book called ``Theory of objects'' by Luca Cardelli (who is guilty for both SML and C++, BTW) if you are interested. You just don't bother yourself with this theory, and neither should you when programming FP. You don't bother number theory and arithmetic (complex topics) when doing simple addition in your code, right? > But I'm very used to the POSIX interface and honestly programming against much else tends to get me out of my comfort zone a little too much Then maybe your starting point should rather be this [1]. (Although this book is rather about system unix programming in OCaml than about language itself. For learning the language its manual should fit pretty well [2], finding a sweet spot between a narrated book and a standard. Other good and more in-depth introductions are [3] and [4]). There is also a unikernel called mirage os which includes TCP stack and other stuff and

CitesView on HN
@snaky2018 · in “How did software get so reliable without proof? (1996) [pdf]”

If you are interesting in a programming language suitable for system level programming, and using proving techniques, maybe ATS would be of interest. ▶ this video link

RecommendsView on HN
@masklinn2017 · in “Fun facts about Rust's growing popularity”

> So if you just want a native language with a good type system and a growing ecosystem, where do you go? Still Rust or something else? ▶ this video

CitesView on HN
@wahern2017 · in “Building on Rock, Not Sand”

How many buffer overflows were involved in the Equifax leak? The ultimate solution to the problem is formal verification. Rust solves this for buffer overflows, but nothing else. It's a one trick pony. Someone posted this interesting nugget on HN the other day: ▶ this video Aside from some of the awkward ergonomics, its mechanism for formal specification looks brilliant. And you get to keep C's bag-of-bytes object manipulation and pointer arithmetic (when you want it) without having to resort to unsafe{}. For projects where it's worth the effort to carefully declare precise typing semantics (because safety, performance, whatever), I want a wholistic solution. Otherwise my time and money is better spent throwing Javascript or Python at the problem, which solve the buffer overflow problem just as well.

RecommendsView on HN
@wahern2017 · in “Building on Rock, Not Sand”

> Without these, you simply can’t have a fast, > memory-safe language: either you surrender > speed, by boxing everything, or you surrender safety. Not only can you have speed and safety without Rust's rigid enforcement of exclusive ownership, you can do even better--even faster and with even stronger security guarantees: ▶ this video link

RecommendsView on HN
"Type-Driven Program Synthesis" by Nadia Polikarpova39:40

"Type-Driven Program Synthesis" by Nadia Polikarpova

Strange Loop Conference
15K views • 8 years ago
"Propositions as Types" by Philip Wadler42:43

"Propositions as Types" by Philip Wadler

Strange Loop Conference
143K views • 11 years ago
"A Little Taste of Dependent Types" by David Christiansen38:36

"A Little Taste of Dependent Types" by David Christiansen

Strange Loop Conference
48K views • 8 years ago
"Stop Writing Dead Programs" by Jack Rusher (Strange Loop 2022)43:04

"Stop Writing Dead Programs" by Jack Rusher (Strange Loop 2022)

Strange Loop Conference
468K views • 4 years ago
28c3: The Science of Insecurity59:23

28c3: The Science of Insecurity

28c3
42K views • 14 years ago
"Shen: A Sufficiently Advanced Lisp" by Aditya Siram40:20

"Shen: A Sufficiently Advanced Lisp" by Aditya Siram

Strange Loop Conference
26K views • 12 years ago
Lecture 1 | Programming Paradigms (Stanford)17:26

Lecture 1 | Programming Paradigms (Stanford)

Stanford
1.2M views • 18 years ago
"Tackling Concurrency Bugs with TLA+" by Hillel Wayne30:06

"Tackling Concurrency Bugs with TLA+" by Hillel Wayne

Strange Loop Conference
24K views • 9 years ago
"Liberating the Smalltalk lurking in C and Unix" by Stephen Kell40:56

"Liberating the Smalltalk lurking in C and Unix" by Stephen Kell

Strange Loop Conference
25K views • 12 years ago
"Outperforming Imperative with Pure Functional Languages" by Richard Feldman34:55

"Outperforming Imperative with Pure Functional Languages" by Richard Feldman

Strange Loop Conference
98K views • 5 years ago
"Programming Should Eat Itself" by Nada Amin47:41

"Programming Should Eat Itself" by Nada Amin

Strange Loop Conference
43K views • 12 years ago
"Agility & Robustness: Clojure spec" by Stuart Halloway40:00

"Agility & Robustness: Clojure spec" by Stuart Halloway

Strange Loop Conference
25K views • 10 years ago
"Datafun: a functional query language" by Michael Arntzenius42:31

"Datafun: a functional query language" by Michael Arntzenius

Strange Loop Conference
9K views • 9 years ago
CUFP 2011 Keynote: Pragmatic Haskell (Lennart Augustsson Standard Chartered Bank)1:07:28

CUFP 2011 Keynote: Pragmatic Haskell (Lennart Augustsson Standard Chartered Bank)

anilmvs
7K views • 14 years ago
Invited Talk - Guy Steele1:07:22

Invited Talk - Guy Steele

ClojureTV
39K views • 9 years ago
2017 ACM PPoPP Keynote: It's Time for a New Old Language1:12:12

2017 ACM PPoPP Keynote: It's Time for a New Old Language

Guy Steele
7K views • 9 years ago
Philip Wadler  - Propositions as Types (Lambda Days 2016)56:58

Philip Wadler - Propositions as Types (Lambda Days 2016)

Erlang Solutions
20K views • 10 years ago
"Unison: a new distributed programming language" by Paul Chiusano41:06

"Unison: a new distributed programming language" by Paul Chiusano

Strange Loop Conference
45K views • 7 years ago
Leslie Lamport: Thinking Above the Code59:50

Leslie Lamport: Thinking Above the Code

Microsoft Research
403K views • 12 years ago
Going Native 2012 Keynote Stroustrup1:29:49

Going Native 2012 Keynote Stroustrup

savage309
33K views • 14 years ago