[HN Gopher] Beads: Computer language and toolchain
       ___________________________________________________________________
        
       Beads: Computer language and toolchain
        
       Author : sasindu
       Score  : 131 points
       Date   : 2021-05-26 08:53 UTC (1 days ago)
        
 (HTM) web link (beadslang.org)
 (TXT) w3m dump (beadslang.org)
        
       | megameter wrote:
       | I like it, but also recoil at the thought of using it. And I
       | think that's a "professional programmer's instinct" talking,
       | saying that I shouldn't settle for this one large dependency that
       | boasts about being the future and has made room for so many
       | little batteries-included features, I should be a big boy and use
       | the most powerful library for every task...in JavaScript, a
       | language that was, mind, designed in a few days and now has an
       | ecosystem built on untrusted third-parties all depending on each
       | other - a state of affairs that has already been demonstrated to
       | fail.
       | 
       | If I were primarily an Excel user, then maybe it would work for
       | me. Working with figures, converting between common units,
       | generating reports and forms, and doing it in a form that
       | acknowledges programming other than "ALGOL derivative"...There is
       | a known niche. Maybe the author knows the niche better than I.
       | There are good ideas here, ideas I want to steal. That is enough
       | to recommend giving it a further look.
        
         | blacktriangle wrote:
         | I have the exact same reaction. You never want to shit on
         | somebody's ambition, after all they might be a revolutionary,
         | but at the same time the whole batteries-included thing is just
         | setup to fail.
         | 
         | You have an embedded graph database? Why? This is just a
         | symptom of developers general disrespect for the depth and
         | complexity of databases. There's a reason we have so many
         | different different databases, those differences are important
         | and choosing the correct database can make whole reams of code
         | you have to write disappear though the correct database's
         | functionality. Not to mention despite the great expansion of
         | NoSQL databases, the relational data model and associated
         | algebra is one of the most powerful reusable abstractions for
         | organizing information ever invented. Graph databases can do
         | some awesome tricks but are ultimately reproducing the ad-hoc
         | semantics of object graphs.
         | 
         | Same goes for anything that says "deploy over web and native at
         | the same time!" That network hop between you and the browser is
         | real. Every technology that has tried to shove HTTP down into
         | the bowels of the system and pretend that you're writing local,
         | non-networked apps has crashed and burned.
         | 
         | Lastly, I don't want my code to be robust. Fail-fast is good,
         | fail at compile time is best. Robustness like this is nice for
         | people who just want a one-off script to solve a problem but
         | terrible for long-term maintenance of software. Large-scale
         | anarchic systems like the internet require that level of
         | robustness, but that's not how I want to write all of my
         | software, I much prefer stronger contracts between components.
        
           | ModernMech wrote:
           | > You have an embedded graph database? Why? This is just a
           | symptom of developers general disrespect for the depth and
           | complexity of databases.
           | 
           | I disagree. This is a recognition of the fact that the line
           | between database, programming language, and operating system
           | is very blurry. It's not that the programming language has a
           | graph database tacked on, it's that the language _is_ a
           | database and leverages that fact to provide features
           | impossible or hard to come by in more conventional languages
           | (e.g. transactional updates, time travel debugging, what-if
           | scenarios, etc.). Still, nothing would prevent you from using
           | whatever database you want in the usual way.
        
           | feoren wrote:
           | > This is just a symptom of developers general disrespect for
           | the depth and complexity of databases.
           | 
           | The entire Beads project is a symptom of the developer's
           | disrespect for the depth and complexity of every other
           | programming tool in existence.
        
       | vadansky wrote:
       | Reminds me of TempleOS. Hopefully the creater won't suffer a
       | similar fate
        
       | m4r35n357 wrote:
       | Web language, not _computer_ language!
        
       | jsight wrote:
       | This is their example of Fizzbuzz:
       | https://github.com/magicmouse/beads-examples/blob/master/Exa...
       | 
       | But this is supposed to replace Excel somehow? Along with
       | basically every other language.
       | 
       | I can't accuse them of not being ambitious.
        
         | OskarS wrote:
         | //  this shows a persistent value FizzBuzz grid         //
         | whatever cell you pick is remembered for a month
         | 
         | Wait, what?
        
           | ZiiS wrote:
           | Given the implementation is `cookie_write(KEY, my_state,
           | duration:1 day)` I am fairly sure even this example has a
           | bug.
        
             | magicmouse wrote:
             | I am not aware of any bug in this code. It works, and the
             | selection persists. Of course it is a silly project.
             | 
             | Classic FizzBuzz is just too simple a task to show off any
             | language features, so the task was souped up so that it
             | draws a 10x10 grid of the results, and lets you pick one of
             | the 100 cells to highlight.
             | 
             | It persists this selection for a day to show how one can
             | save up to 1kb of state information trivially inside the
             | browser's cookie system, which is simpler to use than the
             | IndexDB database (which is also available to use if you
             | wish).
             | 
             | 1Kb is enough to store a reasonable amount of data, and
             | since Beads has a built-in graph database (not as fancy as
             | Neo4J), you can store a subtree into the cookie with one
             | line, and no encoding/decoding necessary, as that is
             | performed by the runtime library for you (a nicety).
             | 
             | The convenience of working with a graph database
             | internally, instead of the typical collection of data
             | structures that one sees in older languages such as
             | scalars, tuples, lists, dictionaries, queues, and pointers,
             | is an advantage that only becomes apparent after some use
             | of the language; i encourage you to take it for a spin.
        
               | kortex wrote:
               | That's neat, but imho start with the plain fizzbuzz
               | first. Everyone has it in their lexicon so it acts as a
               | first-pass Rosetta stone for what the language syntax is
               | like. Adding extra bits implies you need those to get the
               | job done.
        
               | electroly wrote:
               | OP means that the comment says it's persisted for a
               | month, but the actual code persists for a day.
        
         | JustSomeNobody wrote:
         | I'm struggling to see the advantage over currently popular
         | languages.
        
       | mastrsushi wrote:
       | >"Replace the entire stack with one language".
       | 
       | I'm I the only one who sees the irony in this statement?
        
       | js8 wrote:
       | It's kind of reminiscent of 4GL languages
       | (https://en.wikipedia.org/wiki/Fourth-
       | generation_programming_...). The idea was, too, to have bigger
       | application-building blocks that are composed in a more
       | declarative way.
       | 
       | I think this concept will be revisited from time to time in the
       | future, although I agree with the skepticism about this
       | particular project.
        
         | ska wrote:
         | A lot of the authors verbiage is straight out of the 4GL
         | talking points, so that's unsurprising. I agree it's probably a
         | topic that is probably evergreen.
        
       | jeroenvlek wrote:
       | This seems like the brain child of one ambitious smart person
       | that still needs to receive feedback from the outside world.
        
         | sz4kerto wrote:
         | We need these kind of experiments. If you learn too much about
         | contemporary software engineering, then it is almost certain
         | that you'll end up with a React front-end talking to a
         | NodeJS/Java back-end hosted on Kubernetes. Which is obviously
         | the right thing most of the time :) but the world is richer
         | because of these super-ambitious, super-naive experiments.
         | 
         | Also: imagine how much has someone learned from implementing
         | all this.
        
           | hackerfromthefu wrote:
           | that sounds more like a beginner to mid level stack
        
           | zitterbewegung wrote:
           | I've done a super naive and ambitious startup idea. It was a
           | big waste of time and I should have listened to more
           | feedback.
           | 
           | The world isn't richer if you listen to feedback quite the
           | opposite it makes you improve what you are making.
           | 
           | I agree about the learning aspect but overhyping something
           | doesn't really pan out that well.
        
             | galangalalgol wrote:
             | You weren't richer but the worl might be. Sometimes clean
             | sheets and first principles discover assumptions that have
             | changed. Either in how people use software, how the domain
             | itself works, or the constraints of computing.
        
               | mikepurvis wrote:
               | I think that depends a lot on whether the failed startup
               | produced any code, papers, conference talks, even podcast
               | episodes, etc. If not, and everything was just buried in
               | the person's head, then no, the world is not richer for
               | it.
               | 
               | This kind of thing is why I'm so grateful to the founders
               | of startups like Starsky, who are obviously still
               | immensely passionate about the domain they were in. That
               | even in the wake of the company failing, they've
               | continued to advance the state of the art by sharing what
               | they learned, especially where it's wisdom that goes
               | against the current dogma (eg, that teleop is a hugely
               | important part of a self-driving vehicle strategy, but
               | that investors of the late 2010s were turned off by that
               | focus because they wanted to see companies trying to
               | shoot the moon on L4/L5 autonomy):
               | https://medium.com/starsky-robotics-blog/the-end-of-
               | starsky-...
        
               | zitterbewegung wrote:
               | My startup idea was to recognize objects by their shape.
               | I got it to the point where I was able to setup an
               | elasticsearch index that looked at point clouds uploaded
               | and performed feature extraction on what was ingested. I
               | haven't open sourced by code because I probably had
               | committed API keys (but I should make it public now since
               | all those keys stopped existing). The biggest issue was a
               | large amount of debt and lost opportunity cost.
               | 
               | But it gave me a new perspective and at times it was
               | really fun learning so much. I think it has made me a
               | better developer because I made so many complicated
               | mistakes and now I can simplify things.
        
           | catblast01 wrote:
           | Matter of perspective I admit but it also could just be a
           | weird pastiche of elements of C, COBOL, M, Ada, and
           | JavaScript. Nothing here seems particularly ambitious
           | really.. idiosyncratic however. A good counterpoint might be
           | Go.
           | 
           | The author used to at least actively solicit feedback, I
           | never once noticed acknowledgement of any of it though.
        
             | magicmouse wrote:
             | We have a Discord group, and am very eager to hear from
             | users. https://discord.gg/pTAdsSW
             | 
             | User suggestions and bug reports are promptly followed up
             | on. There are almost no known errors at this point, so it
             | is very good shape.
             | 
             | You are correct that it has elements of JavaScript, but
             | that is inevitable given that the primary output of the
             | transpiler is JS code for use on the web, so some JS
             | functions have to be present for that to work, and to
             | inter-operate with JS, one has to use their string system.
             | 
             | The attempt to offer an integrated programming system,
             | where we return to the simplicity of VB6, or Borland
             | Delphi, is actually quite ambitious, as in order to offer
             | such an integrated product one has to build in a database
             | (graph in this case), a layout engine (novel, Renaissance
             | proportion based layout model), a drawing system, and a way
             | of coordinating between client/server (a novel subscription
             | to a single source of truth system, with remote procedure
             | calls).
             | 
             | The language is primarily based on Modula-2, which the
             | author of Beads used for 20 years quite successfully in
             | large commercial products. There is nothing from COBOL or
             | Ada that i can think of (although Prof. Wirth did
             | contribute to Ada I believe), not sure what the M language
             | is. There are some elements of PROLOG built in that are not
             | readily apparent, as the core programming pattern is State-
             | Action-Model (see sam.js.org), and if you change a state
             | variable, then any drawing code that used that variable is
             | scheduled for refresh.
        
           | jrm4 wrote:
           | Exactly. This particular iteration is going to fail
           | miserably, but the world will be better because people are at
           | least _thinking_ like this. I hope that this idea happens,
           | somehow.
        
         | daenz wrote:
         | Probably, but I think that's also a little dismissive. Maybe
         | they have received plenty of feedback but still think their
         | ideas take precedence over that feedback. I don't think we
         | should confuse outside-the-box thinking with thinking that
         | hasn't received feedback.
        
           | potsandpans wrote:
           | they've received plenty of feedback from the PL community.
           | 
           | Beads is a fun an interesting project, but the over the top
           | marketing language and hype is a bit silly. The author really
           | is a rare mix of driven PL engineer and overly grandiose
           | personally.
        
         | jb1991 wrote:
         | It also feels like at least as much effort went into the
         | marketing (site, videos) and PDF resources (ref cards) as went
         | into the language itself.
        
       | zubairq wrote:
       | Beads is an excellent language I feel, but the killer feature in
       | the works is being able to travel "back" in time
        
         | daenz wrote:
         | Is this like a time-travelling debugger like rr[0]?
         | 
         | 0. https://rr-project.org/
        
           | magicmouse wrote:
           | Beads is a tracked mutable state language. It used the State-
           | Action-Model pattern (see sam.js.org), and is built from the
           | start to support time travel debugging. Unlike `rr` and its
           | sequel `pernosco`, it is not an instruction level
           | reversibility, but a state change stepwise reversibility,
           | which is efficient enough to stick around and be used in
           | production use (not just in the lab).
           | 
           | There is a "blackbox_write' and 'blackbox_send" feature,
           | which allows you to send session information sufficient to
           | replay the user's session for debugging purposes.
           | 
           | This is a very powerful feature, and one that we are seeing
           | more and more efforts to offer, because in a world with so
           | many computers, being able to reproduce rarely occurring,
           | data-dependent bugs, is very important.
        
         | nicaragua wrote:
         | I have been using it to travel forward in time, but am
         | currently getting a 1:1 ratio with normal time so the forward
         | time travel is not extremely apparent yet.
        
           | magicmouse wrote:
           | There are two aspects of time travel. The fancier one is time
           | travel debugging. To use TTD, you run a program inside
           | another. The outer program is called the monitor, and the
           | monitor can freeze the inner program, and rewind the time
           | back to some point. There is an API to do this, and examples
           | showing how you have your own debugger. When you rewind, you
           | can truncate the history and start fresh from that point
           | onward. This is very useful for testing.
           | 
           | The second aspect of time control, the more simple one, is
           | that you can jump the clock forward, and change the scaling
           | of time at will, so that you can write tests to see if the
           | alarm clock would ring as expected. That feature is as simple
           | the std library functions that control the clock value and
           | scaling. (set_clock_scale(), and set_clock()).
           | 
           | The ability to speed up time by a factor of 10 or 100 is a
           | great time saver for those programs that have key sections,
           | and slowing down time to 1/20th the normal rate (slo-motion)
           | is wonderful for debugging animations. Many languages can set
           | the clock, but not many have time scaling; a nicety.
           | 
           | Beads has a small standard library (compared to OSX or Java),
           | but it has the key features you really need.
        
       | dottedmag wrote:
       | Is there a good tool in the same space? I'd love to have
       | something _simple_ to develop quick-and-dirty desktop
       | applications.
       | 
       | RN does not qualify as "simple".
        
       | chhickman wrote:
       | I don't have time to watch the video right now, but after
       | skimming the language reference I get the impression that is is
       | sort of a modern-ish take on the 4GLs from 80s/90s - not the
       | sexiest thing but I feel like there's definitely room for
       | something like this. Of course, the painful lesson of 4GLs was
       | the consequences of vendor lock-in... I didn't see any links here
       | to the sources.
        
       | tavoe wrote:
       | A few months ago, I watched some videos by Brett Victor and
       | decided I wanted to develop a visual programming language. That
       | led me to https://futureofcoding.org/ and its slack channel.
       | 
       | There was some cool stuff happening on the server, and the admin
       | was doing his best to elevate things, but that slack channel was
       | also the last stop for some people before they descended into
       | templeOS levels of madness.
       | 
       | Right around the time I was joining, the admin posted in the meta
       | channel that, with a heavy heart, he had finally banned [the
       | developer of beads, I feel weird calling him out by name].
       | Apparently he had been too argumentative and stubborn for the
       | server to further tolerate.
       | 
       | It left a weird taste in my mouth about the future of coding
       | slack channel. On one hand, you don't want toxic people in your
       | community. On the other hand, the server was clearly a channel of
       | last resort for a lot of people with a lot of crazy ideas.
       | Kicking out one if its more prominent members to toil in solitude
       | felt kind of gross.
       | 
       | Its interesting to see that, a few months after being banned, the
       | beads project seems to be materializing.
        
       | sprkwd wrote:
       | Is the beadslang website made in beads?
        
         | rob74 wrote:
         | Since I saw the "replace the entire stack" image, I expect no
         | less than that the website should be made in Beads, hosted on a
         | server running Beads OS, and the frontend should be WebAssembly
         | compiled from Beads.
        
           | magicmouse wrote:
           | Beads was going to be recoded in Web Assembly, however, the
           | many restrictions on I/O to the user's hard drive inside the
           | browser make it very to build a compiler inside a browser.
           | Hopefully in the near future Web Assembly will become a fully
           | capable virtual machine, that will unify all the different
           | hardware and operating systems, effectively becoming a
           | universal virtual OS.
           | 
           | But any day now the dam will break, and WebAssembly will get
           | access to I/O and the full browser API (last time i checked
           | web assembly runs on its own compute-only thread, and is not
           | permitted direct access)
        
             | AnimalMuppet wrote:
             | Any day now? That seems... optimistic. Are there objective
             | reasons to think that this is true?
        
         | _bohm wrote:
         | looks like squarespace ...
        
         | cestith wrote:
         | https://github.com/magicmouse/beads-examples/tree/master/Exa...
        
         | bshimmin wrote:
         | There's an example Beads web site here:
         | https://github.com/magicmouse/beads-examples/tree/master/Exa...
         | 
         | The index.beads and (I think!) corresponding index.html files
         | are... quite something. I'm not 100% sure this will catch on.
        
           | mst wrote:
           | Note that unless I'm very confused, the index.html is the
           | transpiler output rather than human written.
           | 
           | The calculator example here makes rather more sense to me:
           | https://github.com/magicmouse/beads-
           | examples/blob/master/Exa...
        
       | PaulDavisThe1st wrote:
       | I find it amusing how the top item of the stack "to be replaced"
       | says "Unix", but then further down the page it notes that there
       | is no version for Linux at this time.
        
       | yewenjie wrote:
       | A new programming language without the source?!?
        
       | IncRnd wrote:
       | This reads like a marketing webpage and is not technically
       | coherent. What is the purpose that this langauge is intending to
       | solve?
       | 
       | I used to program in a declarative langauge a few decades ago,
       | Prolog. Heck, even makefiles are declarative. Declarative
       | programming isn't guaranteed to be bug-free in the way the page
       | indicates.
        
         | maciejfiedler wrote:
         | HTML is the only bug-free language
        
       | perfunctory wrote:
       | yesno datatype with values Y, N, U or ERR -\\_(tsu)_/-
        
         | TacticalCoder wrote:
         | And the example is weird: it explicitly explains you can do
         | with fewer tests if the value is not true. Multiplication by
         | N,U,ERR silently gives 0 as a result.
         | 
         | So multiplication by an ERR is not an error (from what I
         | understand from quickly reading the ref).
        
           | magicmouse wrote:
           | The protected arithmetic rules in Beads are mostly a copy of
           | the proven-to-be-useful protected arithmetic of Excel.
           | Instead of using #UNDEF and #ERROR, those 2 meta values, are
           | abbreviated U and ERR in Beads.
           | 
           | ``` 3 * ERR yields ERR 3 * U yields U (3 times undefined
           | yields an undefined value) ```
           | 
           | The mathematical truth tables are in the appendix of the
           | reference manual.
           | 
           | It is quite useful in a language to have a universal bottom
           | value (undefined) and a universal top value (error). The key
           | point is to avoid undefined behavior
        
             | mst wrote:
             | Doesn't honestly seem that different from 'undefined' and
             | 'NaN' in javascript and I think the fact that your 'NaN' is
             | called 'ERR' is making people who think of errors as
             | exceptions recoil.
             | 
             | (I'm not necessarily sure I like the trade-off you've
             | chosen here, but I think the viscerally negative responses
             | people are having are because of that, rather than thinking
             | through the trade-off on its own merits)
        
       | elcapitan wrote:
       | So this is basically some sort of 4GL language for web dev?
        
       | c01n wrote:
       | I like this, the constructs in the ref card look really powerful,
       | it looks like a batteries included language. Downloading it now
       | to take it for a spin.
       | 
       | Edit: Nevermind Beads only works on Windows and Mac, It needs
       | Wine to work on Linux.
        
         | ModernMech wrote:
         | I think it's written in ActionScript. That might have something
         | to do with it.
        
       | mijoharas wrote:
       | their loop syntax looks a bit crazy... [0].
       | 
       | [0] http://www.beadslang.com/downloads/refcard.pdf
        
         | magicmouse wrote:
         | The loop syntax may appear unfamiliar, but since the core data
         | structure of Beads is not lists, tuples, arrays, but instead a
         | tree, there are various options that are more familiar to Lisp
         | programmers, such as depth-first, or breadth-first tree
         | traversal, but expressed as a loop, so you can conveniently
         | stop it.
         | 
         | Most of the time one will use a loop in a very simplistic
         | manner. Because it is so tedious and common to need the count
         | of the loop, the key value, or a pointer to the element being
         | looped across, we give you implied declaration capability in
         | the loop consruct.
         | 
         | It is a compact notation that has gone through many polishing
         | steps, and is very ergonomic, easy to read, and downright
         | handy. Loops are the bread and butter of computer software, and
         | yes, there are a fair number of options (such as going in
         | reverse).
         | 
         | Please take the language for a spin, you might like it.
        
       | gfodor wrote:
       | Ah, youth.
        
         | ElFitz wrote:
         | Funnily enough; the last time I tried something like that I was
         | 25, had barely 6 months of experience, and somehow convinced a
         | friend I had introduced to programming not more than two months
         | earlier.
         | 
         | Waaay in over our heads.
         | 
         | Since then, I've realised it's been tried and is being tried an
         | inordinate number of times and seems to usually fail for some
         | reason or another.
         | 
         | Kind of a wild goose chase for some (supposed) holy grail.
        
           | wolverine876 wrote:
           | > Since then, I've realised it's been tried and is being
           | tried an inordinate number of times and seems to usually fail
           | for some reason or another.
           | 
           | That describes the state of things before every innovation in
           | history.
        
           | daenz wrote:
           | How did you convince your friend?
        
             | ElFitz wrote:
             | We had had a brush with AWS, it's Lambdas, Step Functions,
             | etc, as well as Zapier and Stamplay's flow on our first
             | project together.
             | 
             | We both came out of it convinced that there _had_ to be a
             | way to make it _much_ easier yet still as powerful to
             | orchestrate logic  & services...
             | 
             | The goal was to make something we could use to
             | _drastically_ simplify the development of all our future
             | endeavours, thinking we might also be able to sell it to
             | others.
             | 
             | Little did we know how naive we were ^^'
        
         | ModernMech wrote:
         | This is the author: https://twitter.com/CodingFiend
         | 
         | I don't know how old he is, but there's enough grey hair there
         | to know he's seen his share of things.
        
         | catblast01 wrote:
         | Nope. The guy posts with his real name on YouTube so this is
         | like TempleOS and the creator is non anonymous, quite active on
         | Reddit, and not very young (as if the style of graphics wasn't
         | a dead giveaway, like a time machine to the early 90s).
         | 
         | In any event I engaged with the creator before and what I can
         | say is the conversations are _entirely_ one-sided, in fact some
         | of the most I have personally experienced. Will take one or two
         | words from your post or reply, briefly mention it and then go
         | completely off on a tangent only concretely related to those
         | words. I've never known them to become outright offended or
         | insulted and yet are completely impervious to any feedback. The
         | upshot is, this will greatly limit a widespread following,
         | because not all their tastes are exactly mainstream.
        
           | megameter wrote:
           | While I've not interacted with the author, his Twitter and
           | blog opines on all kinds of subjects and has the firm,
           | authoritative tone of an older person who is not exactly
           | ignorant but who doesn't recognize the depth of his own
           | indoctrination, the silencing of the internal critic. He has
           | all the answers already.
           | 
           | And, really, that's the only kind of person that could make
           | something of this encompassing but simultaneously incoherent
           | nature, I think.
        
       | dqpb wrote:
       | LinkedIn page of the creator: https://www.linkedin.com/in/edward-
       | de-jong-6a15086/
        
       | wespiser_2018 wrote:
       | This is kind of a cool project, and I have no doubt it is a good
       | language for the type of programming the author surely does.
       | 
       | However, the design of the language feels like it's a imperative
       | language with a few a few additional features (declarative
       | solver) bolted on to facilitate sub-problems within its use case:
       | well within the paradigm, but lacking real coherent design, or an
       | innovation that would merit non-trivial adoption.
       | 
       | That said, I would be interested at pursuing the source code:
       | it's an interesting hobby language.
        
       | rush86999 wrote:
       | sounds a whole lot like XML except XML never became universal
        
       | jasonshaev wrote:
       | I would seriously consider toning down the marketing speak. This
       | project is making very bold claims, without citations, while
       | trying to appeal to an often skeptical crowd (developers).
       | 
       | "Graph databases are considered more powerful and modern than
       | relational databases," ... okay? According to what benchmark and
       | for what workloads? A statement like that is an immediate turnoff
       | because it is dismissive of 30 years of database development.
       | 
       | "In many languages the slightest error in input data can cause a
       | program to seriously malfunction. Beads has special rules of
       | arithmetic and a robust mathematical model, that makes it
       | extremely difficult to have a serious malfunction." I don't see
       | how "special rules of arithmetic and a robust mathematical model"
       | makes it "extremely difficult to have a serious malfunction."
       | 
       | Replacing "Unix, SQL, Rails, Ruby, RSpec, Templates, HTTP, HTML,
       | CSS, DOM, jQuery and Javascript" in one language? How does this
       | replace Unix? HTTP? It's not an operating system or a transport
       | layer.
       | 
       | My goal isn't to crush someones idea, but consider your audience:
       | developers.
        
         | ithkuil wrote:
         | > I don't see how "special rules of arithmetic and a robust
         | mathematical model" makes it "extremely difficult to have a
         | serious malfunction."
         | 
         | The only way would be to have arbitrary precision integers by
         | default and thus no overflows ever. (IIRC smalltalk was
         | something like that, but it was long time ago since I used it,
         | so I'm not sure)
        
           | deckard1 wrote:
           | bignum as the default integer is quite common in lots of
           | languages[1]. Notably, Lisp, Scheme, Erlang, Python.
           | 
           | Scheme is a bit interesting in that they have a "numeric
           | tower", which contains rationals and even complex numbers
           | (implementations were free to implement a subset of this
           | tower, at least as far as R5RS, not sure today)
           | 
           | [1] https://en.wikipedia.org/wiki/List_of_arbitrary-
           | precision_ar...
        
             | travv0 wrote:
             | Just to elaborate a bit, in CL, numbers are FIXNUMs by
             | default but are promoted to BIGNUMs if needed. CL also has
             | rational and complex numbers, which it probably got from
             | Scheme but I'm not familiar with that history.
        
           | rst wrote:
           | Integer types in current versions of Ruby and Python both
           | have arbitrary precision (as is also true for lots of other
           | languages these days). That's not enough to make either
           | intrinsically bug-free...
        
         | magicmouse wrote:
         | Beads is like VB6, and Oracle Delphi, an all-in-one language
         | that shields you from the complexities of learning all these
         | external tools and having to learn so many languages. To
         | someone whom i guess a long-time developer, you might dismiss
         | it as too simplistic for your purposes.
         | 
         | For example you can skip using Unix Bash and use Beads like
         | Python as a scripting language. You can build a very nice
         | client/server product like the "Robin Hoody" app, using the
         | publish/subscribe functions built into the language without
         | ever learning how to encode/decode a packet, as the runtime
         | makes it easy to do this. So in that sense the language does
         | offer a virtual transport layer.
         | 
         | Sure, you may need to drop down and encode/decode a websocket
         | message buffer, but the point of Beads is to permit writing in
         | a single language, without having to learn CSS and the whole
         | pile of complexity that accompanies modern development. You
         | can't make an easier stock quoting system (one of the
         | examples), because it has been reduced to the absolute minimum
         | number of lines.
         | 
         | The protected arithmetic of Excel is of proven utility, and i
         | am merely imitating it. I replace #UNDEF with U, and #ERROR
         | with ERR to make it less verbose, but protections abound in
         | Beads both at compile time, and at runtime. In a graph database
         | universe, you don't need scalars, tuples, lists, dictionaries,
         | queues, hashmaps, etc., because a single more general data
         | structure accomplishes that you need.
         | 
         | Graph databases are quite hot; Neo4J has grown leaps and
         | bounds, and Oracle was forced to come out with one. I am sure
         | that most existing systems continue to use older tech, because
         | that is always how it goes in computers. People are still
         | running COBOL in some places, because it is so damn fast and
         | works perfectly at what it was built to do. I have no doubt
         | that we will see existing tech which works fine continue to be
         | used for another 50 years.
         | 
         | It makes sense to make an easier environment that is still
         | capable, but much simpler to learn and use, and that is the
         | goal of Beads.
         | 
         | As for the skepticism of crowds, my product is out there, and
         | has no major bugs in it, and hopefully will find an audience
         | that likes this approach.
        
           | bawolff wrote:
           | No offense, but that's the most BS sounding pitch i've ever
           | heard.
           | 
           | You're fixing the garbage-in, garbage-out problem? Have you
           | also invented strong AI and solved the halting problem?
           | 
           | Edit: you should replace your website with the first page of
           | your language reference pdf. That's a better pitch and more
           | interesting than anything you've written here.
        
           | ska wrote:
           | "Graph databases are considered more powerful and modern than
           | relational databases" vs. "Graph databases are quite hot"
           | 
           | These two statements are in no way equivalent.
           | 
           | I see what GP was complaining about. Even your opening para
           | graph contains a fair bit of confusion. It reads like you are
           | suggesting imperative languages were succeeded by object
           | oriented, which were succeeded by functional in 'generations'
           | - which is already incorrect on a couple of fundamental
           | levels - and now the time is "ripe" for a "new paradigm"
           | called declarative. Which is a language classification that
           | has been around since nearly the beginning (first thing it
           | makes me think of is Prolog, e.g. 1970s). So is this new or
           | old?
           | 
           | This followed by a couple of pretty silly sounding assertions
           | "almost no bugs" "10:1 reduction in life-cycle costs" which
           | unsurprisingly are not supported.
           | 
           | Then we have the last sentence "For many graphical
           | interactive or client/server applications, you can replace
           | the entire development stack with one relatively simple
           | tool.". Isn't that what you really want to convey?
           | 
           | When you get off on the wrong foot like that it's not hard to
           | see why you've had some of the responses you have had. If you
           | replaced the entire first paragraph with that last sentence
           | you'd be far better off; the rest is poor communication, just
           | getting in your own way.
        
           | jasonshaev wrote:
           | How you present your ideas are as important as the quality of
           | your ideas. My suggestion is that your website's presentation
           | does not present your ideas in a way that is likely to reach
           | your target audience. That's an opinion of course.
           | 
           | Your comment clarifies that you aren't claiming to replace
           | UNIX but that you can use Beads as a general scripting
           | language. Consider updating the big graphic on the front page
           | that says UNIX to Say Bash (sh, zsh or whatever).
           | 
           | Lastly, your response is selling me on graph databases, but I
           | never objected to graph databases as a technology, just your
           | bold statement about them with no caveats or citations.
           | Saying, "graph databases are considered more powerful and
           | modern than relational databases..." is a good way to start a
           | flame war but not a good way to convince someone to use your
           | product.
           | 
           | All that being said, best of luck with your project! I do
           | mean that sincerely.
        
       | vitiral wrote:
       | Looking at the code examples I fail to see how this is a
       | fundamental change from other full stack languages such as
       | JavaScript, rust, C, C++, Nim.... The list goes on.
       | 
       | Not that that is a bad thing! I'm happy your working on it, but I
       | don't think they or this will replace excel like tools until
       | everyone decides to learn how to program instead of using an easy
       | and familiar path.
        
       | kreetx wrote:
       | Does anyone know other "full-stack web" language attempts?
        
       | zellyn wrote:
       | This video gives more of a feel for the language.
       | 
       | https://youtu.be/4WYxAfX_fTw
       | 
       | It's definitely... interesting.
        
         | bumbledraven wrote:
         | He uses both g_second and g_seconds without a compile error.
         | Maybe the system defines both?
        
       | danpalmer wrote:
       | It's very strange to me that the first pitch is that because
       | desktops, laptops, and phones, are now all 64-bit, that is why we
       | can now create a cross-platform language... that replaces
       | scripting-ish languages.
       | 
       | I could understand if this was saying the 64-bit transition made
       | things like Zig/Rust much simpler, but this seems like a non-
       | sequitur for what Beads appears to be for.
        
         | koprulusector wrote:
         | Came here to say this. I was immediately turned off by the
         | marketing pitch and this non-sequitur given the link
         | description.
         | 
         | EDIT: didn't finish reading your comment when replying, but
         | it's telling we both used the phrase non-sequitur
        
         | jb1991 wrote:
         | I'm a little confused as well. A cross-platform language can
         | work on any platform, like I can take my C++ code and run it on
         | 64-bit or 32-bit, and this is true with plenty of other
         | languages as well. I don't understand the relationship there at
         | all.
        
           | nicaragua wrote:
           | From what I can tell, this language just transpiles into
           | JavaScript, so technically it can run on any platform
           | JavaScript runs on (except the transpiler itself, which I
           | don't see why he didn't just write it in JavaScript as well).
        
       | cjohnson318 wrote:
       | I did not love reading the code examples. Call me a lightweight,
       | but I think Swift and Kotlin have a pretty good balance between
       | being verbose enough to read easily, and expressive enough to not
       | need a ton of code. This syntax feels like a step backwards.
        
       | nerpderp82 wrote:
       | This is awesome. Feels like Smalltalk and TCL had a baby and the
       | crib was made out of Erlang.
       | 
       | We need more people doing projects like this.
        
       | jliving207 wrote:
       | Well "sorry no Linux support" doesn't make it right that they
       | wouldn't bother to make nix compatibility!! Hard Pass
        
       | snoopen wrote:
       | A lot of bold claims here. As someone who's worked on a lot of
       | Excel business tools I can tell you there's no way something like
       | this could replace anything in the companies I've worked for.
        
         | OskarS wrote:
         | In the illustration of the stack of things it replaces, it
         | includes "Unix". Which is... you know... a claim one could
         | make.
        
           | scoopertrooper wrote:
           | I'm sick of this kind of cynicism on HN. I'll have you know
           | that I've already managed to replace my car with Beads.
        
             | nicaragua wrote:
             | I replaced my computer with beads. Girlfriend loves them.
        
               | maciejfiedler wrote:
               | beads is girlfriend
        
             | sixQuarks wrote:
             | That's nothing, I'm simulating the universe that you think
             | you're living in on beads.
        
       | tromp wrote:
       | Reminds me a bit of Rebol [1] and its close cousin Red [2].
       | 
       | [1] https://en.wikipedia.org/wiki/Rebol
       | 
       | [2] https://en.wikipedia.org/wiki/Red_(programming_language)
        
         | magicmouse wrote:
         | Rebol and is rebirth Red, is a very concise and powerful
         | language. They are well funded, and will be a force to reckon
         | with going forward. I would say the languages are very
         | different in the sense that Beads is clearly aimed at graphical
         | interactive software, with a layout/drawing/event model built
         | into the language, while Red exists as a systems programming
         | language, a variant customized for building crypto contracts,
         | and then as a general purpose language.
         | 
         | They are so different that it is hard to compare. Red being a
         | concatenative language has more in common with FORTH than
         | Algol.
         | 
         | The closest thing to Beads is Elm, or visual javascript (was
         | called Yazz) (https://yazz.com/visifile/index.html), which is
         | another integrated product.
        
         | larzang wrote:
         | I was thinking more TempleOS or Time Cube
        
       | nitnelave wrote:
       | It seems that after years of trying to develop programming
       | languages and architectures to have separation of concerns, with
       | the business logic, the presentation logic, and the data storage
       | separated (or even going to full-blown microservices), this
       | just... bunches everything together?
       | 
       | I get the appeal for a small program that fits in your head, but
       | for anything more complex I don't want the code to take care of
       | everything in a single module/file.
        
         | magicmouse wrote:
         | Beads uses the proven MODULE system of Modula-2 and Oberon. Of
         | course we don't expect people to write in one single file. That
         | the examples are small programs does not reflect the modular
         | design of the language.
         | 
         | The entire purpose of the project is to build a world of
         | software constructed by interchangeable parts. But to
         | accomplish interchangeable parts, one has to make sure that
         | there are as few external dependencies as possible, which is
         | why the language has layout, drawing, event tracking, and
         | database features pulled into the language, so as to not have
         | one reaching outside, which would invariably break over time.
         | 
         | C proved that a standard library was a major feature of any
         | language, and Beads has a well designed, but compact standard
         | library, where you have a few functions, with lots of options
         | so as to reduce the total number of functions one has to learn.
        
         | chhickman wrote:
         | The original promise of separation of concerns wasn't simply a
         | code organization scheme, it was that we would be able to write
         | composable software where components could be added or replaced
         | with minimal systemic impact. We were going to be able to drop
         | in new UIs without touching the BL or fix a bug in a component
         | in one place and have it fixed everywhere, etc. The problem was
         | that SoC, and the other various concepts from SOLID and design
         | patterns didn't quite accomplish that - inter-dependencies
         | remained and only became more difficult to reason about.
         | Chasing this fantasy led object oriented programming down a
         | path of increasingly complicated frameworks to try to manage
         | and hide these dependencies until one would find themself
         | thinking more about program structure and writing more plumbing
         | code than doing actual work. Worse, now you have all the bits
         | of logic necessary to understand how something works spread
         | across multiple files so you have to have a system-wide
         | understanding of a systems organization and understand the
         | workings and vagaries of the half dozen or so different
         | frameworks that were used to make it all seem magically loose-
         | coupled. I'm sure there's some <insert name>'s Law somewhere
         | that states it better, but it boils down to the fact that for
         | any given set of tasks you can only reduce the complexity so
         | much and anything else is just moving the complexity around,
         | not eliminating it. I think there's something to be said for
         | having all the logic you need to understand an interface in one
         | or two files and focusing on making that as clean as possible,
         | which is exactly what (at least some) of the 4GLs in the past
         | seemed to do well, or at least made possible.
        
         | goatlover wrote:
         | Wasn't Meteor.js trying to do that as well for the web a few
         | years ago?
        
       | dkersten wrote:
       | I don't get it. The pitch is about... 64bits? I've been writing
       | cross platform 64bit software for years, why would I need a new
       | programming language for that? What a strange thing to lead with.
       | 
       | The home page doesn't do a good job at explaining what its about
       | and why I should care. I then looked at the sample code and I
       | still don't think I get it.
       | 
       | > The next generation of languages is now possible: Declarative
       | languages,
       | 
       | Ok, but declarative languages have existed for a looong time too.
        
       | pmontra wrote:
       | Is the manual a PDF file? No HTML pages? That was getting already
       | old in the 90s.
       | 
       | No Linux version. Maybe is it a language only for GUI apps?
        
       | [deleted]
        
       | xiaodai wrote:
       | can't tell if it's a parody
        
       | tofukid wrote:
       | It looks like a functional(ish) reactive programming language,
       | with an embedded database, and an SDK for compiling to JS and
       | cross-platform binaries. Do I have that right?
        
         | magicmouse wrote:
         | Beads follows the State-Action-Model pattern, as described at
         | sam.js.org. It is derived from the TLA+ work of Lamport. You
         | have a mutable state, with pure code that renders the state on
         | the screen, and then event tracking code mutates the state.
         | What makes Beads unusual is that when you change the model, the
         | screen layout section affected is automatically scheduled for
         | refresh. This is possible because the state is being tracked
        
       | danpalmer wrote:
       | The marketing effort here feels so unbalanced. On the plus side,
       | there's a marketing video with a professional sounding voiceover.
       | But then there's a website titled "Beads Language Home Site",
       | with a barebones design, and which talks repeatedly about
       | "Macintosh" and "Windows OS".
        
         | magicmouse wrote:
         | I apologize that the intro video is so much nicer than my own
         | homemade videos. After paying a pro do to make that first video
         | of a series of a dozen videos explaining the theory behind it,
         | i realized it was going to cost too much, and the money would
         | be better spent on the product itself.
         | 
         | So that video is just part of 1 of 15 parts, and with some
         | support and enthusiasm from people, we can continue the series,
         | because it is o much nicer to watch a professional video with
         | proper British narration. As the great George Bernard Shaw once
         | said, "The United States and Great Britain are two countries
         | separated by a common language."
         | 
         | I hope that people will overlook the homwbrew quality level of
         | the videos, but the language for a spin, because you might like
         | the language a lot. It has a lot of simplifications, and
         | particularly for client/server web apps, where it is much
         | easier to build reliable products.
        
       | kortex wrote:
       | - promises far fewer bugs
       | 
       | - promises to replace entire stack
       | 
       | - ...and Excel
       | 
       | - "declarative languages have almost no bugs"
       | 
       | - built-in database
       | 
       | Yeah color me skeptical. I love experiments, but I prefer those
       | that under-promise and over-deliver. People have been promising
       | unification languages since there were only two languages. People
       | have been promising cross-platform since there were two
       | platforms. And people have been promising to replace Excel
       | since...Excel
        
         | discardable_dan wrote:
         | The thing that really bothered me was the FizzBuzz example [0].
         | The core logic is:                 cell       //  this routine
         | will be called 100 times, and the implied block variable
         | //  b will hold values, like the sequence number b.cell_seq
         | var ss : str       case mod(b.cell_seq, 15)       | 0        ss
         | = "FizzBuzz"        draw_rect(fill:LIGHT_SKY_BLUE)       | 3,
         | 6, 9, 12        ss = "Fizz"        draw_rect(fill:LIGHT_GREEN)
         | | 5, 10        ss = "Buzz"        draw_rect(fill:YELLOW)
         | else        ss = to_str(b.cell_seq)
         | draw_rect(fill:ALICE_BLUE)            //  we just set the
         | string in the case statement above       draw_str(ss, size:0.7,
         | color:BLACK)              //  if this is the selected cell,
         | highlight with a red frame       if b.cell_seq ==
         | my_state.selected        draw_rect(thick:3 pt, pos:0.7,
         | color:CRIMSON, corner:2 pt)
         | 
         | The entire point of FizzBuzz, as a programming practice, is to
         | ensure the programmer does not try to write this exact code:
         | you check mod 3 and print Fizz, mod 5 and print Buzz. This
         | "solution" makes me worry the language itself will impede the
         | simple solutions.
         | 
         | 0. https://github.com/magicmouse/beads-
         | examples/blob/master/Exa...
        
           | earth_walker wrote:
           | Depends on your definition of 'simple', I guess.
           | 
           | My preference is to have all behaviours be explicit in the
           | declared code, rather than implicit or as a side-effect. Much
           | simpler to read and reason about the program.
           | 
           | Clarity over cleverness. To that end, I prefer this version
           | over 'hiding' the mod 15 case for the sake of saving a line
           | of code.
           | 
           | I also appreciate languages that warn (or better, require)
           | that all cases are covered.
        
           | bawolff wrote:
           | This solution looks ugly, but i don't think its "wrong". The
           | point of fizzbuzz is to check they can write any trivial
           | program. It works, its a pass.
        
           | Jabbles wrote:
           | I don't understand your objection.
        
             | eggy wrote:
             | A lot of the rosetta code examples show the simple and the
             | more complex example or less use of built-in functions to
             | show they can express it with the core language.
        
               | Jabbles wrote:
               | Sure, but I think that's a different objection?
        
             | OskarS wrote:
             | I think he's saying that inside of the loop in FizzBuzz, it
             | should look like something like this (Python-esque
             | pseudocode, assuming for a second print() doesn't add a
             | newline automatically):                   if x % 3 == 0:
             | print("Fizz")              if x % 5 == 0:
             | print("Buzz")              if x % 3 != 0 and x % 5 != 0:
             | print(x)              print("\n")
             | 
             | i.e. no special "FizzBuzz" case for when it's divisible by
             | 15, it just naturally falls out of the first two if's. It's
             | a bit of a silly objection though, the it's fine to write
             | it as the author did.
        
               | alexeldeib wrote:
               | as I learned above you can use the "end" kwarg to avoid
               | the newline:                   print("Fizz", end="")
        
           | jacksnipe wrote:
           | I agree that I hate this solution. However, are you saying
           | that this is a bad FizzBuzz solution to you? (Python)
           | nums = list(range(100))              def fizzbuzz(n):
           | if n % 15 == 0:           return "FizzBuzz"         elif n %
           | 3 == 0:           return "Fizz"         elif n % 5 == 0:
           | return "Buzz"         else:           return str(n)
           | print(" ".join(map(fizzbuzz, nums)))
           | 
           | I think it's far better than:                 nums =
           | list(range(100))              for num in nums:         if num
           | % 3 == 0:           print("Fizz", end="")         if num % 5
           | == 0:           print("Buzz", end="")         if num % 3 != 0
           | and num % 5 != 0:           print(num, end="")
           | print(" ")
           | 
           | EDIT: Formatting, typo
        
             | IanCal wrote:
             | At the risk of the classic "no here's the fizzbuzz code"
             | while then getting it wrong, the typical case you're trying
             | to draw out is like the second but:
             | 
             | Not printing in the middle, return a string and afterwards
             | print it.
             | 
             | Each step adds to the string, and if it's still empty by
             | the end you just put the number in.
             | 
             | The next stages are often to add another number, then
             | something more complex (if it's a prime number). As you do
             | this, the concatenation version grows slowly while the
             | first approach explodes in combinations.
        
             | dan-robertson wrote:
             | I don't want to argue in favour of the Beads solution but I
             | think the right way to describe the logic is as follows:
             | input is n       | 3 divides n | 5 divides n | result     |
             | | Yes         | Yes         | "FizzBuzz" |       | Yes
             | | No          | "Fizz"     |       | No          | Yes
             | | "Buzz"     |       | No          | No          |
             | n.toString |       print result
             | 
             | The key points are:
             | 
             | 1. The logic is declarative: the order of the rows in the
             | table doesn't matter.
             | 
             | 2. It tests for divisibility in words rather than a
             | potentially confusing idiom (how does % behave for negative
             | numbers? Is it defined for floats in this language?)
             | 
             | 3. The structure allows you (or a compiler) to check that
             | no case is missed.
             | 
             | 4. It should be easier to convince oneself that
             | modifications to the code do what they are supposed to.
             | 
             | The funny thing is that looking things up in tables is much
             | more common in excel.
        
           | wespiser_2018 wrote:
           | In his defense: I think the logic of his programming language
           | and the pattern match works just fine: it's a mod over
           | bounded linear range checking a remainder. He's just showing
           | off that he can check "mod 15" against a list of potential
           | values, or at least that's my reading of it.
        
           | GrinningFool wrote:
           | > is to ensure the programmer does not try to write this
           | exact code
           | 
           | I agree with your thoughts around the language constraints,
           | but I see more room for what you once could have gotten from
           | using FizzBuzz as a minimum-skill filter. It depends on the
           | level you're hiring at.
           | 
           | From a novice engineer I would be content if they're
           | demonstrating awareness that multiples of 15 represent an
           | edge case without it being included in the instructions.
           | 
           | If I'm hiring someone more senior, I'd expect them to provide
           | (or iterate to) a more optimized solution to FizzBuzz.
           | 
           | But in a further tangent - I think this using this type of
           | question as a minimum-talent filter stopped becoming viable
           | as soon as it became commonly used. In the time since, it's
           | become more a minimum-knowledge filter -- and that doesn't
           | tell you anything about the candidate's methods in solving a
           | problem with derivable requirements.
        
           | magicmouse wrote:
           | There are about 3 slightly different methods for doing
           | FizzBuzz, in any language, and this was but one of them.
           | 
           | You could express it also as an empty string, then
           | concatenating as necessary: ''' // to those objecting to
           | using a modulo-15 test, // we could have done the above code
           | as follows: var ss = "" if mod(b.cell_seq, 3) == 0 "Fizz" &=>
           | ss if mod(b.cell_seq, 5) == 0 "Buzz" &=> ss if ss == "" ss =
           | to_str(b.cell_seq) '''
           | 
           | The problem with FizzBuzz as a programming language
           | exploration is that it is far too short of a program to
           | reveal the totality of a language, since it only consists of
           | using the if/pattern match capability, modulo function,
           | concatenating strings, and converting an integer to a string.
           | The Stock market ticker program is a much better demo of the
           | language, because it shows how to do client/server
           | programming in a very easy way.
        
             | kortex wrote:
             | I think that is a better FizzBuzz example. You are right
             | that it isn't meant to showcase the whole language, but
             | lacking a composable solution (mod N1 || mod N2... for N
             | prime factors) makes me immediately think the language does
             | not lend itself well to that kind of composition.
             | 
             | And as others mentioned, Fizzbuzz is merely a "can you
             | program _anything_ test. " But I do prefer the "general"
             | fizzbuzzjazz, which accepts a list of numbers and a list of
             | words [fizz, buzz, jazz,...] and emits the strings for
             | appropriate prime factors.
        
           | morelisp wrote:
           | > The entire point of FizzBuzz, as a programming practice, is
           | to ensure the programmer does not try to write this exact
           | code
           | 
           | No, the point of FizzBuzz, which is an _interview practice_
           | is to make sure that the candidate has literally the minimum
           | ability to translate a natural-language problem description
           | into code.
           | 
           | There is no point using it for anything else. Not demos of
           | languages or tools, not looking for a particular shape of
           | solution, you don't even really need to let them finish
           | writing a bug-free version of it. It is _only_ to filter out
           | the people who  "learned a language" but cannot actually
           | write a program. Which is unfortunately a _ton_ of people.
           | 
           | https://imranontech.com/2007/01/24/using-fizzbuzz-to-find-
           | de...
        
         | throwaway894345 wrote:
         | > declarative languages have almost no bugs
         | 
         | That one piqued my attention. It's one thing to say "fewer
         | bugs" and quite another to say "almost none". Rust is a
         | declarative language with one of the more rigorous static
         | analysis checkers (for pedants: among mainstream languages) and
         | I still write buggy code.
        
           | ModernMech wrote:
           | In what way is Rust declarative? When I think of a
           | declarative language, I think of Prolog or SQL. Rust to me
           | would seem to be explicitly imperative.
        
         | bawolff wrote:
         | > declarative languages have almost no bugs"
         | 
         | Is this even a declaritave language? Doesn't look like it to me
         | at a glance.
        
       | NiceWayToDoIT wrote:
       | https://xkcd.com/927/
        
         | temporallobe wrote:
         | There's always a relevant XKCD!
        
           | cestith wrote:
           | 927 is that relevant one in a surprising number of cases.
        
             | cylon13 wrote:
             | You could even call it a standard reply
        
       | toboche wrote:
       | Not even looking at the way the language and tool chain works,
       | the home page is very confusing, with each following paragraph
       | making almost no connection to others. What's worse, the YouTube
       | video makes is mostly based on a fairly convoluted argumentation
       | that doesn't seem to be logical to me.
       | 
       | If the page is supposed to draw attention of any fairly technical
       | folks, it definitely needs some more thorough reasoning and
       | argumentation to do so.
        
         | magicmouse wrote:
         | I apologize for the bad writing. I am not a good writer at all,
         | but my programming is quite solid, and i hope you will take it
         | for a spin. It has many nice simplifications, from the reformed
         | Regular Expression syntax, to the automatic dependency checking
         | in layout and refresh (if the model changes values, any part of
         | the visualization that is affected is automatically refreshed).
        
       | csbartus wrote:
       | At first sight it seems a romantic adventure rarely found on the
       | interwebs.
        
       | throwaway894345 wrote:
       | This page seems to have a bit more info, but in general the whole
       | site seems light on details and heavy on promises:
       | https://beadslang.org/
        
       | KingOfCoders wrote:
       | No examples, no sale.
        
         | ModernMech wrote:
         | https://github.com/magicmouse/beads-examples
        
       | yalcinbar wrote:
       | I hope this whole thing is a joke.
        
       | eggy wrote:
       | It looks interesting. The reference card immediately made me
       | think of the J vocab reference card (the old one, not the Nuvoc
       | one!). I do like the declarative nature of beads, and it does
       | remind me of Red or Rebol in a way as someone has already
       | commented here.
        
         | tom_mellior wrote:
         | Where do I need to look for declarative examples? This:
         | https://github.com/magicmouse/beads-examples/blob/master/Exa...
         | looks like good old imperative Basic.
        
           | magicmouse wrote:
           | There are more examples in the SDK, and the larger projects
           | which have complex drawing going on, show the declarative
           | layout system to its full advantage.
           | 
           | Probably the best liked feature of Beads is invisible in the
           | syntax, as it follows the State-Action-Model pattern (see
           | sam.js.org), and when a state variable changes, any layout
           | that used that variable is automatically regenerated. This is
           | of immense value when you have 500 things on the screen, and
           | knowing which part of the screen to rebuild on any
           | perturbation of the state is actually a lot of work, and the
           | source of many under/over refresh errors.
           | 
           | This might be called a sprinkling of PROLOG's deduction
           | system, where logical implication is done in the runtime. I
           | am not aware of any top 20 language with deduction. The
           | layout system is declarative like CSS, but includes
           | variables, looping, and IF statements to make it more
           | flexible.
           | 
           | The simplification that Beads offers is really only apparent
           | in graphical/interactive software, and client/server
           | programs. Otherwise people will stick to Python, etc.
        
             | tom_mellior wrote:
             | So it's Basic for 99% of the overall programming, with
             | something like CSS or Android's layout engine thrown in to
             | solve the remaining 1%, specifically laying things out on a
             | screen? Maybe you forgot to link to a convincing example.
        
       | replwoacause wrote:
       | I think this project is really cool and am disappointed by so
       | many of the negative sounding comments. They kind of remind me of
       | the infamous Dropbox comment.
       | 
       | I think some healthy skepticism is fine but the mockery and out
       | of hand dismissals seem like they should be beneath this crowd.
        
         | [deleted]
        
       | vogon_laureate wrote:
       | "Some people, when confronted with a problem, think 'I know, I'll
       | use regular expressions invent a new programming language that
       | will unify everything.' Now they have two problems."
        
         | magicmouse wrote:
         | Funny you should mention Regular Expressions. In Beads there is
         | a complete rewrite of the syntax for regular expressions,
         | replacing the meta characters with a more readable vertical
         | format that facilitates comments, and offers subroutines. For
         | example, compare the IPv4 address regular expression as done in
         | JS:
         | 
         | ``` (\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\\.(\d|[1-9]\d|1\d\d|2[0
         | -4]\d|25[0-5]){3}| ```
         | 
         | with the Beads notation:
         | 
         | ``` pattern octet group or digit // matches 0..9 set:'1-9'
         | digit // matches 10 .. 99 '1' digit digit // matches 100 .. 199
         | '2' set:'0-4' digit // matches 200 .. 249 '25' set:'0-5' //
         | matches 250 ..255
         | 
         | pattern IPv4 octet '.' octet '.' octet '.' octet ```
         | 
         | The Javascript version is extremely hard to read. I can't
         | change the underlying engine that supports regular expressions
         | as that is built in to the Browser runtime, but i can at least
         | make notation friendlier.
         | 
         | Unified languages in the past like VB6 and Borland Delphi were
         | beloved, and many people were productive in those environments,
         | and clinged to them long after MS for example wanted to migrate
         | people into .NET, because they were so much simpler.
         | 
         | The current complexity level that people have to endure is
         | unnecessarily high. Never before in history did people write in
         | 3 different languages in the same source code file (as they
         | routinely do in JS + CSS + HTML), where they don't even agree
         | on how comments are notated.
         | 
         | The current situation benefits the large incumbents like
         | Google, Facebook and Amazon.
        
           | bawolff wrote:
           | > The current complexity level that people have to endure is
           | unnecessarily high. Never before in history did people write
           | in 3 different languages in the same source code file (as
           | they routinely do in JS + CSS + HTML), where they don't even
           | agree on how comments are notated.
           | 
           | People dont usually put them all in the same file. Html and
           | css are mostly not even programming languages. And shell
           | scripts commonly have sed or awk embedded in them.
           | 
           | I'm not saying that a more unified approach is bad, on the
           | contrary there's pros and cons, but you're being a bit
           | hyperbolic about it. Nothing about the current situation is
           | that new or unique. Nor is proposing a more consistent
           | environment new either. Computer world has been going back
           | and forwards on this since forever.
        
           | IanCal wrote:
           | I've got to be honest I can read the regex example even
           | without the comments you added in your example, I can't read
           | the example.
           | 
           | "Group or digit" matches 0-9?
           | 
           | I dont think it helps that you're missing newlines. Try
           | putting four spaces at the start of every line.
        
         | jackcviers3 wrote:
         | Not to mention not researching your problem space seems to be
         | an afterthought for these types of people. It's not a novel
         | problem or solution.
         | 
         | Haxe already exists [1] to unify everything, similar to beads'
         | claims. It doesn't.
         | 
         | Unifying has been done better before with it, C (it does run
         | almost everywhere!), Java, Flash/Flex, and JS+HTML. Many have
         | entered. Few win for a little while, and eventually everything
         | loses.
         | 
         | 1. https://haxe.org/
        
           | magicmouse wrote:
           | I consider the unified languages of the past to be VB6 and
           | Borland Delphi as two successful environments that had many
           | happy users who preferred to live inside that world and get
           | things done without a lot of fuss. I know my friends when VB6
           | started to be disfavored by MS and they felt pressure to
           | learn .NET refused to use .NET as it was just too hard
           | compared to VB6. The reference manuals for .NET are 1000's of
           | pages when you print them all out.
           | 
           | My measurement of complexity includes both the syntax of the
           | language, and also how many library API's you have to learn.
           | 
           | Haxe, which has roots in an open source version of Adobe's
           | ActionScript is an excellent product. I often consider
           | switching to Haxe for the implementation of the transpiler as
           | it would yield Linux support. I currently emit AS3 or JS
           | code, but Haxe is a very strong possible direction in the
           | future as Haxe has a lot of portability.
           | 
           | I don't consider C a unified language. It had no database, no
           | drawing model, no event model, and Berkeley Sockets was a
           | library added in to support the internet, that unfortunately
           | did not achieve complete standardization. C is the most
           | portable language, but it just a step above Assembler, and
           | full of pitfalls.
           | 
           | Tools do wax and wane in popularity; they are all useful in
           | certain circumstances, and the more generally useful the
           | tool, the more it gets used. VB6 was abandoned by its owner
           | MS, when Gates retired (Basic was his pet project, as it was
           | the original foundation product of MS' fortune). People used
           | it as long as they could (and some still do). VB6 didn't make
           | the jump to the Internet, but it could have if MS hadn't
           | tried to force everyone into .NET (which was very complex).
        
             | zem wrote:
             | comparisons with vb6 and delphi add a lot more context to
             | the philosophy and design of the language. i would consider
             | making that point prominently on the home page.
        
               | [deleted]
        
       | dajoh wrote:
       | Not super excited to build my next project in a proprietary
       | language with a closed source compiler/toolchain made in Adobe
       | AIR...
        
       ___________________________________________________________________
       (page generated 2021-05-27 23:02 UTC)