5 ms·
This blog post sets up a huge strawman. If you're trying to translate an arbitrary high level program into hardware, that's gonna be a pain in the ass. OTOH the
by lumpypua 12y ago
This blog post sets up a huge strawman. If you're trying to translate an arbitrary high level program into hardware, that's gonna be a pain in the ass. OTOH there's projects that allow you to use the composition tools of high level languages and still emit RTL code.
Haskell has:
- CλaSH: http://clash.ewi.utwente.nl http://clash.ewi.utwente.nl
- Lava: http://raintown.org/lava/ http://raintown.org/lava/
- Chortl: http://wiki.cs.pdx.edu/forge/chortl.html http://wiki.cs.pdx.edu/forge/chortl.html
- jcr 12y agoAnd in the Haskell-Inspired department, we also have Idris: http://www.idris-lang.org/ http://www.idris-lang.org/ I read something about getting Idris to emit RTL, but unfortunately, I can't find a link to it. Of course, synflow.com wants to promote it's own "C~" language (I haven't looked at C~ yet, so I've got no opinion on it). Calling the blog post a "strawman" is a bit too harsh. Instead, I'd call it "simplistic" or a "simple example" of the well known issues with the more "commonly used" general purpose languages --As much as we love Haskell, its use is far less prevalent than C or C++. The blog post would have been much better if it went into more detail on the more difficult issues of parallelism.
- MootWoop 12y agoWell I did not want to promote C~ that much in that article :-) (there is not even a reference in the post). And yes the post is a bit simplistic, but I wrote this in response to hardware designers who believed that any sequential code (mostly C/C++) could be transformed to hardware given the proper tools. I guess I could have been more precise, because indeed Haskell would not have the limitations of sequential languages (such as parallelism limited because of explicit memory references). Maybe I'll talk about parallelism in another article!
- jcr 12y agoThanks for chiming in. It's always great to see the original author show up in HN threads. As you've already noticed, HN can be a fairly rough and critical crowd, often too much so. Though you aimed for a more simple example, by doing so you made the example more accessible to software programmers without a hardware background, and hardware engineers without a software background. I enjoyed your blog post, or I would not have posted it. Also, with your work on C~ I suspect you are in a great position to write something excellent about the differences between how parallelism is approached (hardware versus "common" software). The less frequently used (but still popular) languages like Haskell, Erlang, Idris, etc. are really the exception that prove the rule. I'd also love to see more on C~. As for you not promoting C~ my question for you is, "Why not?" After all, as a founder you do have a business to build, and I doubt anyone here would hold that against you. ;) BTW, since you work between hardware and software, you might enjoy these recent posts: https://news.ycombinator.com/item?id=7902817 https://news.ycombinator.com/item?id=7902817 https://news.ycombinator.com/item?id=7902575 https://news.ycombinator.com/item?id=7902575 https://news.ycombinator.com/item?id=7899220 https://news.ycombinator.com/item?id=7899220
- MootWoop 12y agoYou're welcome :-) Indeed I was a bit surprised by some hostile comments, yet they do make good points. I never thought that the post would be posted on Hacker News, next time I'll take that into account ^^ Thanks for the links, I actually commented on the article on wired.com yesterday. Regarding the promotion of C~ yes we have started doing that, especially since we made it open source and have started to target everybody who might be interested in designing hardware (on FPGA or ASIC).
- MootWoop 12y ago> If you're trying to translate an arbitrary high level program into hardware, that's gonna be a pain in the ass. What I'm trying to show in this post (and obviously I failed, sorry!) is that transforming a program written in a high-level sequential language to hardware is indeed a pain in the ass, but even more it just leads to inefficient hardware. Of course I took a somewhat extreme example with C++ and STL :D
- MootWoop 12y agoI would add that as a matter of fact Haskell seems to me like a much better starting point to create efficient hardware, especially because side effects are well isolated, compared to C/C++ and others. But then probably over 90% of people (me included) don't necessarily want to use Haskell. We're designing C~ with the goal of making it mainstream rather than perfect.