4 ms·
This is arguably one of the coolest things I have seen. It's web programming without tiers, as they call it. Just take a look at examples -- there is no distinc
by caustic 16y ago
This is arguably one of the coolest things I have seen. It's web programming without tiers, as they call it. Just take a look at examples -- there is no distinction between client and server. Everything is defined in a single source. Beautiful. I think mainstream should adopt more languages like this.
- Yoric 16y agoGetting there: https://www.mlstate.com/ https://www.mlstate.com/ . Similar language, much more focus on security, standard library and tools.
- caustic 16y agoDo you work there, at mlstate? This seems to be very cool project too. I will not compare technical merits of all the mentioned projects, because I am not experienced with any of them. Do you have any big application developed in OPA? How was the experience compared to more traditional webdev stack?
- Yoric 16y agoCaveat: I do work there, both on OPA and with OPA. Details are not public, but I can confirm that we have several medium-to-large applications in OPA (CMS, B2B, B2C, ...) plus a number of smaller ones (games, productivity tools). Compared to usual stacks, the development experience is quite different. Firstly, prototyping is a breeze: write your algorithms, add long-term storage if you want, spend a few minutes adding a user interface for testing, and that's it, it just works. Plus, for free, the compiler guarantees plenty of security properties, so if you're happy with what the features you have, you may not even have to think about security. Now, for performance reasons, you may want to lose some "tier-less-ness" by nailing some of the code onto the client or the server. That's just the matter of a few annotations. Add these annotations and yes, your application keeps working. Iterate until you're happy with the speed. And then, there are a number of other things that are not specifically "tier-less" but that we're essentially the only ones to have. We have very high-level database primitives, concurrency primitives, distribution primitives, cache APIs, but also higher-level user-interface manipulation, etc. Now, where OPA doesn't really help you is when you have to interact with down-and-dirty stuff, e.g. some third-party APIs for which we have no bindings in the standard library. For these things, you still need to handle the nitty-gritty details the old-fashioned way. Still, OPA has become my favorite language, so I guess that's a good sign:)
- doublec 16y agoUr/Web is another similar project: http://www.impredicative.com/ur/ http://www.impredicative.com/ur/
- DanielRibeiro 16y agoSeaside (written in smalltalk by Avi Bryant) and Lift (written in Scala by David Pollak, inspired on Seaside) also have this goal. Seaside is also quite old, but works just fine.