4 ms·
Yep. And now there is a fun build step for translating these interface definitions into C++, Dart, Java ... plus a ton of glue code, some of it probably generat
by throwaway4good 5y ago
Yep. And now there is a fun build step for translating these interface definitions into C++, Dart, Java ... plus a ton of glue code, some of it probably generated.
Instead of creating a new language for interface definitions; why not just use an existing general purpose language? C++, Objective-C, Java, TypeScript ...
Or take this new language you have created and extend it with control structures and other basic language features, and write the OS in that.
- Too 5y agoHehe, this is the opposite route, with same destination, as the rant on C headers as an IDL, from todays front page. https://news.ycombinator.com/item?id=30704642 https://news.ycombinator.com/item?id=30704642 “C Isn't a Programming Language Anymore”
- throwaway4good 5y agoSure - that is why I would go for last suggestion if I were to build a new OS: Build a new language first.
- throwaway4good 5y agoFor an example of a language made for building an operating system / an operating system made for a language: https://en.wikipedia.org/wiki/Oberon_(programming_language) https://en.wikipedia.org/wiki/Oberon_(programming_language) https://en.wikipedia.org/wiki/Oberon_(operating_system) https://en.wikipedia.org/wiki/Oberon_(operating_system)
- ptsneves 5y agoTempleOS and HolyC: https://en.wikipedia.org/wiki/TempleOS https://en.wikipedia.org/wiki/TempleOS
- throwaway4good 5y agoBesides the genius of the people involved. In my opinion Oberon (and similar) is an example of a fundamental massive task (building an OS from scratch) actually becomes easier if the scope of the task is expanded (by creating a language suitable for the task). Google has so many resources and so many dispersed projects that individually are world class (virtual machines, programming languages, UI design, OS microkernels etc.) but they don't bring them together to a coherent something that really could bring things forward.
- _448 5y ago> Google has so many resources and so many dispersed projects that individually are world class (virtual machines, programming languages, UI design, OS microkernels etc.) but they don't bring them together to a coherent something that really could bring things forward. This is the curse of being a big company. Google is not unique in this sense. I remember a conversation I had with Cory Doctrow few years back. I met him at Cambridge's(UK) Judge Business School where he was giving a lecture to promote open-source ideology. After the lecture I was walking back home and he was going to the bus-stop. So we started chatting, and I bragged about my employer telling him that my company has open-sourced its Operating System. He looked stunned and asked "Which company??". I said Symbian :) And he said, "Ah! Nokia!" :) And then he pulls out an N95 out of his pocket and says "Nokia makes fantastic hardware, but look at the software! You can't even find a menu item. One has to press 2-3 buttons to just find an app." Then he pauses as says, "I visit Nokia, and meet lot of people there. They have some of the smartest people. You talk to them individually, you realise how smart they are." And then he waves the N95 and says, "But you put them together, and they come up with this!" :) I understood what he was saying!
- throwaway4good 5y agoAt least Nokia was trying. I don't see Google bringing their programming language or virtual machine people into Fuchsia. (Or maybe I am missing something?)
- 5y ago
- kortex 5y agoYou don't want general purpose languages for IDLs, full-stop. You need straightforward parsing, that is easy to standardize and implement, with some guarantees about bounded execution. That means no recursion, usually means no or limited loops, ideally single pass parsing, actual context-free grammar, etc.
- throwaway4good 5y ago"You need straightforward parsing, that is easy to standardize and implement, with some guarantees about bounded execution. " Surely you can find a general purpose language that gives you that ...
- deleted 5y ago[deleted]
- kortex 5y agoGeneral purpose languages like being turning complete, not as a main goal per se, but it's hard to be expressive and not be TC. TC means you can't statically determine execution behavior (halting problem). There's not a lot of things in this category. Some that come to mind are Cue and Dhall. Hashicorp HCL2 might also be, but I don't know if they are turning-complete off the top of my head. Some blog suggests it actually is TC, but I cannot corroborate. Starlark/bazel is TC. You can add Berkeley Packet Filters and BLooP to the list of TI languages: https://www.quora.com/What-is-an-example-of-a-Turing-incomplete-language https://www.quora.com/What-is-an-example-of-a-Turing-incompl... https://news.ycombinator.com/item?id=28915655 https://news.ycombinator.com/item?id=28915655 https://dhall-lang.org/# https://dhall-lang.org/# https://njoseph.me/mediawiki/DevOps/Terraform https://njoseph.me/mediawiki/DevOps/Terraform
- jvolkman 5y agoI believe Starlark being turing-complete would be a bug. The language takes steps to avoid it by disallowing recursion and only allowing iteration over finite sequences.