[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)