TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Rosette: a solver-aided programming language that extends Racket

93 pointsby fitzwatermellowabout 9 years ago

4 comments

dTalabout 9 years ago
This is seriously impressive stuff. &quot;Solver-aided programming language&quot; might sound esoteric, but it&#x27;s the natural evolution of the same trend towards higher-level, more declarative programming that replaced &#x27;goto&#x27; with &#x27;for&#x27;, and &#x27;for&#x27; with &#x27;map&#x27;. You can judge the merit of programming approach by how much it punches above its weight, and the list of applications written in Rosette is short but impressive[1] (especially considering it was only released in 2013). I&#x27;m particularly impressed by Chlorophyll, a &quot;synthesis-aided programming model and compiler for GreenArrays GA144, a minimalist low-power spatial architecture&quot;:<p>&gt;We used Chlorophyll to compile an accelerometer-based hand-gesture recognition application for GA144. This application occupied 83 nodes out of 144 nodes. In this demo, GA144 was running on 1.8 V, and the application drew 0.24 mA. This means we should be able to run this application using two lemons![2]<p>If you&#x27;ve never heard of the GA144, it&#x27;s an amazing chip designed by Chuck Moore (inventor of Forth) that provides computational grunt comparable to an i7 for a few milliwatts, on a 180nm process no less, at the cost of an awkward architecture of a 12x12 array of chips with very little RAM whose machine language is Forth. Because of this architecture, and despite considerable interest, few have actually managed to program the GA144 to do anything interesting. This demo of an application written in Rosette might just be the most interesting thing anyone&#x27;s ever gotten a GA144 to do. On that basis <i>alone</i>, I&#x27;d say they were on to something.<p>Aside: imagine a &quot;demoscene&quot; of who could run the most advanced application on a lemon!<p>[1] <a href="http:&#x2F;&#x2F;emina.github.io&#x2F;rosette&#x2F;apps.html" rel="nofollow">http:&#x2F;&#x2F;emina.github.io&#x2F;rosette&#x2F;apps.html</a> [2] <a href="http:&#x2F;&#x2F;pl.eecs.berkeley.edu&#x2F;projects&#x2F;chlorophyll&#x2F;" rel="nofollow">http:&#x2F;&#x2F;pl.eecs.berkeley.edu&#x2F;projects&#x2F;chlorophyll&#x2F;</a>
评论 #11415618 未加载
rurbanabout 9 years ago
Exactly. Why would I write a custom, small, incomplete and much slower solver by myself for my compiler, when I can just use a fast SAT solver (cryptominisat and friends), which are complete and have an acceptable license.<p>Looking at scala, pony, haskell, but really any modern language working on dependent types: python, php, cperl, ruby, ...
gus_massaabout 9 years ago
Interesting, but I wanted to read an easier example. For example see: <a href="http:&#x2F;&#x2F;emina.github.io&#x2F;rosette&#x2F;doc&#x2F;rosette-guide&#x2F;ch_essentials.html#%28part._sec~3aqueries%29" rel="nofollow">http:&#x2F;&#x2F;emina.github.io&#x2F;rosette&#x2F;doc&#x2F;rosette-guide&#x2F;ch_essentia...</a>
chpatrickabout 9 years ago
Something very similar for Haskell, as a library: <a href="http:&#x2F;&#x2F;leventerkok.github.io&#x2F;sbv&#x2F;" rel="nofollow">http:&#x2F;&#x2F;leventerkok.github.io&#x2F;sbv&#x2F;</a>