[libre-riscv-dev] extremely busy crowdsupply update started

Luke Kenneth Casson Leighton lkcl at lkcl.net
Sun Mar 29 12:22:44 BST 2020


On Sun, Mar 29, 2020 at 11:46 AM Jock Tanner <tanner.of.kha at gmail.com> wrote:
> On Sat, 2020-03-28 at 17:44 +0100, Jean-Paul Chaput wrote:
> >   At this point I have no clear answer about what the "best" language
> >   would be. But I can tell you for sure that many "hardware guys" are
> >   literally repelled by languages like Chisel.
> >     It's a discussion we are currently having at the lab. Like the
> > one
> >   that did take place in this list a little while ago.
> >  =20
>
> Both Chisel and SpinalHDL are syntactically derived from Scala. Scala
> is a younger, a bit less scary sibling of Haskell. Haskell can scare
> the shit out of every software engineer except those with strong
> mathematical background. So I suggest it's not the best practices that
> repells “hardware guys”, but a careless introduction to functional
> approach in programming.

that, and the fact that the rocket-chip developers (from Berkeley)
claimed to "reduce code size significantly" in the two following ways:

1. pretty much absolutely f***-all in the way of comments.
2. make heavily depth-nested use of classes and mix-ins [with ZERO
documentation].

the first major exposure to a real-world industry-class processor
written with the Chisel system, and it's one of the worst (best)
introductions on how *never* to write (un)maintainable (un)useable
code i've seen in 43 years of programming, with the exception of some
hilarious perl and php scripts.

i'd _really like_ to give you good examples of code written in Chisel: i can't.

the more important thing, than Chisel, is, as Jock points out: scala
simply isn't popular.
https://www.infoworld.com/article/3270626/python-scala-climb-the-ranks-of-language-popularity.html

http://pypl.github.io/PYPL.html
scala remains at 0.97% - less than one percent - by way of how pupular
language tutorials are searched for.

python on the other hand is *right at the top* - with a whopping 30%.

so i know you picked SpinalHDL for vexriscv:
https://github.com/SpinalHDL/VexRiscv

however, i would be particularly interested to hear your thoughts on,
for example this:
https://github.com/SpinalHDL/VexRiscv/blob/master/src/main/scala/vexriscv/plugin/MulSimplePlugin.scala

versus this:
https://github.com/lambdaconcept/minerva/blob/master/minerva/units/multiplier.py

just on an *instinctive* level, which one is easier to read?

from a style perspective: *six* levels of indentation-bracing?
really??  and using "=" to indicate type-declaration (val
aSigned,bSigned = Bool), where every other language uses it for
assigmnent?  and the "implicit return result" by assigning to a
variable with the same name as the function?  i mean, they should have
made it more difficult than that.

it's just... flat-out.... NO.  anyone writing code in this language is
*deliberately* making their life hell, and, worse, if the chip becomes
a commercial success (or an academic success) the insanely high
barrier to entry will make it extremely costly to find programmers.

... lesson learned? :)

l.



More information about the libre-riscv-dev mailing list