19 ms·
Beads: Computer language and toolchain
- csbartus 5y agoAt first sight it seems a romantic adventure rarely found on the interwebs.
- throwaway894345 5y agoThis 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/ https://beadslang.org/
- m4r35n357 5y agoWeb language, not _computer_ language!
- sprkwd 5y agoIs the beadslang website made in beads?
- rob74 5y agoSince 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 5y agoBeads 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 5y agoAny day now? That seems... optimistic. Are there objective reasons to think that this is true?
- bawolff 5y agoWeb assembly is not a hypervisor and doesn't intend to be one.
- magicmouse 5y agomany people, myself included, view Web Assembly has a future virtual machine that is universally available across hardware, ending the hassle of making specific executables for each operating system. A kind of improved P-Code system, if you are familiar with how UCSD Pascal worked (another brilliant Prof. Wirth project).
- bawolff 5y agoThat's a very different claim than your parent post. Portable generic VM (like the jvm but for anything), sure why not. Having web browsers allow arbitrary access to hard disk? That's something else.
- _bohm 5y agolooks like squarespace ...
- cestith 5y agohttps://github.com/magicmouse/beads-examples/tree/master/Example%20-%20Beads%20website https://github.com/magicmouse/beads-examples/tree/master/Exa...
- bshimmin 5y agoThere's an example Beads web site here: https://github.com/magicmouse/beads-examples/tree/master/Example%20-%20Beads%20website 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 5y agoNote 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/Example%20-%20Calculator/calculator.beads https://github.com/magicmouse/beads-examples/blob/master/Exa...
- mijoharas 5y agotheir loop syntax looks a bit crazy... [0]. [0] http://www.beadslang.com/downloads/refcard.pdf http://www.beadslang.com/downloads/refcard.pdf
- magicmouse 5y agoThe 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.
- zellyn 5y agoThis video gives more of a feel for the language. https://youtu.be/4WYxAfX_fTw https://youtu.be/4WYxAfX_fTw It's definitely… interesting.
- bumbledraven 5y agoHe uses both g_second and g_seconds without a compile error. Maybe the system defines both?
- magicmouse 5y agono, there is a typo in the video. The SDK is the best authority for Beads examples, as those are checked on each build for any errors. We have about 20 sample programs, some large enough to show most of the language features.
- snoopen 5y agoA 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 5y agoIn the illustration of the stack of things it replaces, it includes "Unix". Which is... you know... a claim one could make.
- scoopertrooper 5y agoI'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.
- sixQuarks 5y agoThat’s nothing, I’m simulating the universe that you think you’re living in on beads.
- nicaragua 5y agoI replaced my computer with beads. Girlfriend loves them.
- maciejfiedler 5y agobeads is girlfriend
- tofukid 5y agoIt 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 5y agoBeads 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
- jsight 5y agoThis is their example of Fizzbuzz: https://github.com/magicmouse/beads-examples/blob/master/Example%20-%20FizzBuzz/fizzbuzz.beads 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.
- JustSomeNobody 5y agoI'm struggling to see the advantage over currently popular languages.
- magicmouse 5y agoCompared to HTML/CSS/JS, Beads is much simpler. You can learn Beads in probably under 10 hours, while CSS takes at least 100 hours to master. Most of the older popular languages like C, C++, Java, have huge external libraries you have to learn to make graphical interactive software. So for the target application area, which is graphical interactive software, Beads is far simpler, and has many features to avoid error at compile time, and keep running with fault tolerance at execution time.
- OskarS 5y ago// this shows a persistent value FizzBuzz grid // whatever cell you pick is remembered for a month Wait, what?
- ZiiS 5y agoGiven the implementation is `cookie_write(KEY, my_state, duration:1 day)` I am fairly sure even this example has a bug.
- magicmouse 5y agoI 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.
- jeroenvlek 5y agoThis seems like the brain child of one ambitious smart person that still needs to receive feedback from the outside world.
- jb1991 5y agoIt 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.
- sz4kerto 5y agoWe 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.
- zitterbewegung 5y agoI'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 5y agoYou 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 5y agoI 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-robotics-acb8a6a8a5f5 https://medium.com/starsky-robotics-blog/the-end-of-starsky-...
- gfodor 5y agoAh, youth.
- ElFitz 5y agoFunnily 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.
- daenz 5y agoHow did you convince your friend?
- ElFitz 5y agoWe 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 ^^’
- wolverine876 5y ago> 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.
- ModernMech 5y agoThis is the author: https://twitter.com/CodingFiend 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.
- danpalmer 5y agoIt'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.
- jb1991 5y agoI'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 5y agoFrom 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).
- koprulusector 5y agoCame 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
- xiaodai 5y agocan't tell if it's a parody
- yewenjie 5y agoA new programming language without the source?!?
- danpalmer 5y agoThe 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 5y agoI 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.
- GianFabien 5y agoIt's the old style vs substance argument. Marketing: do a song & dance then pick style. Engineering: just pick substance and get on with it!
- NiceWayToDoIT 5y agohttps://xkcd.com/927/ https://xkcd.com/927/
- temporallobe 5y agoThere’s always a relevant XKCD!
- tromp 5y agoReminds me a bit of Rebol [1] and its close cousin Red [2]. [1] https://en.wikipedia.org/wiki/Rebol https://en.wikipedia.org/wiki/Rebol [2] https://en.wikipedia.org/wiki/Red_(programming_language) https://en.wikipedia.org/wiki/Red_(programming_language)
- larzang 5y agoI was thinking more TempleOS or Time Cube
- magicmouse 5y agoRebol 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 https://yazz.com/visifile/index.html), which is another integrated product.
- 9214 5y ago> They are well funded. Rebol Technologies went bankrupt, and Rebol is de-facto dead since more than a decade; Red barely manages to get by thanks to a recent crypto spike. > I would say the languages are very different in the sense that Beads is clearly aimed at graphical interactive software. So is Red with it's native GUI engine. [1] > Red exists as a systems programming language, a variant customized for building crypto contracts, and then as a general purpose language. "Domain-specific languages" is the term you are looking for. > They are so different that it is hard to compare. Both share the same goal of replacing modern software practices with biased, batteries-included toolchain, varying only in implementation. > Red being a concatenative language has more in common with FORTH than Algol. Red is not concatenative in any sense of the word, nor any other language in Rebol family that I know of. [1]: https://github.com/red/docs/blob/master/en/view.adoc https://github.com/red/docs/blob/master/en/view.adoc
- eggy 5y agoIt 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 5y agoWhere do I need to look for declarative examples? This: https://github.com/magicmouse/beads-examples/blob/master/Example%20-%20Tic-Tac-Toe%20networked/TicClient.beads https://github.com/magicmouse/beads-examples/blob/master/Exa... looks like good old imperative Basic.
- magicmouse 5y agoThere 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 5y agoSo 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.
- mastrsushi 5y ago>"Replace the entire stack with one language". I'm I the only one who sees the irony in this statement?
- zubairq 5y agoBeads is an excellent language I feel, but the killer feature in the works is being able to travel "back" in time
- nicaragua 5y agoI 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 5y agoThere 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.
- daenz 5y agoIs this like a time-travelling debugger like rr[0]? 0. https://rr-project.org/ https://rr-project.org/
- magicmouse 5y agoBeads 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.
- perfunctory 5y agoyesno datatype with values Y, N, U or ERR ¯\_(ツ)_/¯
- TacticalCoder 5y agoAnd 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 5y agoThe 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 5y agoDoesn'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)
- magicmouse 5y agoIn practice any JS programmer will find that the use of the undefined value is very familiar. In Beads it is abbreviated to U as it is used constantly, because the default value of something in the graph data structures is U. For symmetry reasons, the error and undefined values work across all types, which cleans up one of the messes in JS, where you have undefined, NaN, null, and goodness knows what else. That we have a uniform error value for nodes is a very minor point; it is almost impossible to generate an error value in the protected arithmetic world of Beads. Square root of -1 is one of the only ways I can think of. There is no try/except in Beads, there are no exceptions as all functions are total, and all arithmetic closed (like Excel).
- c01n 5y agoI 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 5y agoI think it's written in ActionScript. That might have something to do with it.
- magicmouse 5y agoif i can find a better cross platform delivery mechanism than AIR that isn't too far away from JS, i will switch, as there are a fair number of Linux-based programmers out there. Sorry for the current inconvenience of requiring Wine. But it does run okay according to some of my users.
- vitiral 5y agoLooking 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.
- nitnelave 5y agoIt 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.
- goatlover 5y agoWasn't Meteor.js trying to do that as well for the web a few years ago?
- magicmouse 5y agoMeteor has a lot of users, and is still around. The problem with Meteor is that it uses JS, and that language has a lot of problems. Typescript has clobbered meteor, as people have realized that JS makes it far too easy to make a typographical error that crashes at runtime.
- goatlover 5y agoJS is still ahead of TS in usage according to the Tiobe Index and Github language commits. As far as typographical errors go, every already knew JS was a dynamic language, like Python and Ruby. I'd say other frameworks like React and Angular, or their predecessors out-competed Meteor.
- chhickman 5y agoThe 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.
- js8 5y agoIt's kind of reminiscent of 4GL languages (https://en.wikipedia.org/wiki/Fourth-generation_programming_language 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 5y agoA 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.
- chhickman 5y agoI 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.
- elcapitan 5y agoSo this is basically some sort of 4GL language for web dev?
- magicmouse 5y agoyes, it is a higher level language, that is ideal for making web apps.
- kortex 5y ago- 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 5y agoThe 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/Example%20-%20FizzBuzz/fizzbuzz.beads https://github.com/magicmouse/beads-examples/blob/master/Exa...
- rush86999 5y agosounds a whole lot like XML except XML never became universal
- replwoacause 5y agoI 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 5y ago[deleted]
- blacktriangle 5y agoI think you have the wrong takeaway from this thread. The project marketing is terrible, it is confusing, lacks focus, makes senseless claims, and doesn't showcase the project's strong points. People are telling the author where his marketing is falling short, and the developer has already updated his marketing in a few places to make it better. What you're watching is improvement in real-time.
- ModernMech 5y agoI have the opposite impression as you. Honestly, you're one of the only people in this thread who engaged with the author in a respectful way, and I thank you for that. I agree with you that the author needs to do some work on the marketing side, and the helpful pointers provided here by you and others will hopefully move him in that direction. Still, there are others in this thread who should be ashamed of themselves. We have people implying the author is childish, outright calling him disrespectful, calling his project a joke and a parody... it's all really quite sad. I mean, here you have a guy who has put years of work into a project, who embodies the hacker ethos, and a community of self-described hackers can't push past his lack of marketing ability to engage with the technical merits of this diamond in the rough. Set the marketing on the main page aside, and you have a 136 page technical reference (linked helpfully on the front page) that contains a lot of great info. Yet the closest anyone came to engaging with it here was to complain that it's a PDF. I think this twitter thread had it right about the community here: https://twitter.com/rikarends/status/1382759991162068995 https://twitter.com/rikarends/status/1382759991162068995 Which baffles me to some degree. You'd think this community, of all communities, would be welcoming and inquisitive when confronted with strange new ideas, despite bad marketing. The community is not just technically focused, but built around a startup incubator whose founder warned of this exact dynamic! And yet all we seem to get is superficial discussion related to marketing.
- nerpderp82 5y agoThis 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.
- megameter 5y agoI 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 5y agoI 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.
- vadansky 5y agoReminds me of TempleOS. Hopefully the creater won't suffer a similar fate
- dqpb 5y agoLinkedIn page of the creator: https://www.linkedin.com/in/edward-de-jong-6a15086/ https://www.linkedin.com/in/edward-de-jong-6a15086/
- cjohnson318 5y agoI 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.
- magicmouse 5y agoThe problem with both Swift and Kotlin, is that you must use libraries to draw and handle events, which typically makes it tied to a single OS (Swift only really being used in OSX at present). Kotlin might rely on the very extensive JVM libraries, which are horrendously complicated. I don't know what you mean by a step backwards. This a batteries-included environment like VB6 and Borland Delphi, but emits to the current web app universe we live in, so it is definitely in the now.
- toboche 5y agoNot 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 5y agoI 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).
- KingOfCoders 5y agoNo examples, no sale.
- ModernMech 5y agohttps://github.com/magicmouse/beads-examples https://github.com/magicmouse/beads-examples
- tavoe 5y agoA 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/ 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.
- jryans 5y agoI don't think you're fully appreciating the context here... The moderator of that community had been trying over and over, both privately and in public, to get this person to follow community norms for years, but they just would not do so. To me, who has been in that community for years, it was entirely the correct action to take. Moderation is hard and no fun at all, but it needs to be done, or else a community will descend into madness.
- magicmouse 5y agoI was kicked out of the future of coding chat group by Ivan Reese, who exercised his cancel culture powers to permanently ban someone for daring to say that Steve Jobs had cojones for ordering hundreds of millions of dollars in parts for his products before they even shipped and knew if people liked them, unlikes the cowards at HP who only bought 10k Idea Pads (which preceded the iPad). It is ridiculous to equate a colorful, and accurate, word "cojones" with a descent into madness. Steve Jobs by most personal accounts had a bad temper, but he was amazing, and I for one miss his great designs and inventions that he brought forth. To me, Steve Jobs is the most exciting inventor of my lifetime, an incredible example of masculine energy focused in a constructive and creative manner. The community didn't vote on it, Ivan exercised his power, because has a personal dislike for me. I met a few nice people on that discord group, but didn't enjoy being followed around by word police.
- IncRnd 5y agoThis 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 5y agoHTML is the only bug-free language
- deleted 5y ago[deleted]
- yalcinbar 5y agoI hope this whole thing is a joke.
- dkersten 5y agoI 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.
- jliving207 5y agoWell "sorry no Linux support" doesn't make it right that they wouldn't bother to make nix compatibility!! Hard Pass
- vogon_laureate 5y ago"Some people, when confronted with a problem, think 'I know, I'll u̵s̵e̵ ̵r̵e̵g̵u̵l̵a̵r̵ ̵e̵x̵p̵r̵e̵s̵s̵i̵o̵n̵s̵ invent a new programming language that will unify everything.' Now they have two problems."
- jackcviers3 5y agoNot 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/ https://haxe.org/
- magicmouse 5y agoI 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).
- wespiser_2018 5y agoThis 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.
- PaulDavisThe1st 5y agoI 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.
- dajoh 5y agoNot super excited to build my next project in a proprietary language with a closed source compiler/toolchain made in Adobe AIR...
- jasonshaev 5y agoI 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 5y ago> 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 5y agobignum 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_arithmetic_software#Languages https://en.wikipedia.org/wiki/List_of_arbitrary-precision_ar...
- travv0 5y agoJust 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.
- dottedmag 5y agoIs 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".
- magicmouse 5y agoBeads can generate desktop and mobile, however 99% of the users so far are just wanting to make web apps so i spend 99% of the time working on improving the web side and client/server output mode.
- CRConrad 5y agoFree Pascal / Lazarus.
- kreetx 5y agoDoes anyone know other "full-stack web" language attempts?
- bawolff 5y agoJavascript (netscape used to sell it as a server side language in the 90's, and more recently there is node.js). But really with web assembly, anything you want.
- magicmouse 5y agoThere is Elm, and Yazz Pilot (now called visual javascript), and the Red project can generate web stuff as well (but is at the moment fairly focused on Crypto contracts).
- pmontra 5y agoIs 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?
- bawolff 5y agoI feel like this is an unfair criticism. We all have pdf readers. Lack of linux support is only a worthy criticism because appearently portability is a primary design goal and this is going to "replace" linux, but in general that's criticizing the tress for lack of seeing the forest.
- magicmouse 5y agoPDF prints well, and has nice search features, and has a nice zoom feature to accommodate people of different visual acuities, which the web does not always do well. This is the first time i have ever seen anyone prefer the web. Maybe if i put a table of contents in the PDF that would help. There are some people reporting that the Windows .EXE runs okay under Wine in Linux, but yes it would be nice to support Linux desktop natively.
- pmontra 5y agoI share your surprise: are there any major languages with a PDF as their main documentation source? Nothing beats an hypertext at looking for something IMHO.
- 1vuio0pswjnm7 5y agohttps://beadslang.org/blog/2021/3/23/rip-segmentation https://beadslang.org/blog/2021/3/23/rip-segmentation
- Sophistifunk 5y agoThis is.... gibberish. What's going on here? Are we being trolled?
- magicmouse 5y agoThe Multics operating system, which was funded by the DARPA at MIT's Project Mac for 10 years, was superior to Unix from a technical standpoint, and it used segmentation. http://pages.cs.wisc.edu/~solomon/cs537-old/last/segmentation.html http://pages.cs.wisc.edu/~solomon/cs537-old/last/segmentatio... Unix has Paging but not segmentation. Segmentation allows you to grow a memory block without having to copy as it grows, something that just plain paging cannot do.
- bawolff 5y agoThis seems like a mildly interesting project targeting visual displays type niche (is it something similar to the processing language? E.g. a language for making visualizations of data?) Afaict its features are: * a string matching DSL that the author thinks is more readable than regex (but what isn't more readable?) * a very basic graph db * a syntax that's more Algol like than c (matter of personal taste i guess) *a declarative layout engine with strong reactivity support *combining both the server and client side in one lang. * support for a time travelling debugger But its totally overshadowed by the utterly bizarre or dare I say "batshit", marketing material.
- magicmouse 5y agoBeads follows the State-Action-Model pattern (SAM, see sam.js.org) very closely. Beads is targeting web apps, mobile and desktop graphical applications. You didn't mention time travel debugging, even on software running on remote customer machines. That's a neat idea. I would describe the syntax as a mixture of Python and Modula2, which both contributed major features. But has deductive elements as well, which can be traced back to PROLOG. There are also physical units of measurement such as 3 Newtons * 4 seconds / 3 meter * 2 ergs / 12 kg. I followed the spec from Van Snyder at JPL, who asked the FORTRAN committee to add it decades ago. Only Frink has a stronger unit system. There are about 70 new things in Beads all told. I hope that people take it for a spin. If people aren't willing to try new things, how are we going to move forward? You can learn the entire Beads product from soup to nuts in less time than to get half way through a CSS book. Simplicity is a virtue, and thankfully Beads has zero category theory, with no Functors and Monads or Java method factories, etc.
- GianFabien 5y agoReading through Beads author's blog reveals him to be a person with decades of experience. To me it appears that Beads is a well thought out attempt to address the multitude of issues that the author has experienced over the years. NASA lost the Mars Climate Orbiter due to a confusion of values being in feet or meters. https://www.simscale.com/blog/2017/12/nasa-mars-climate-orbiter-metric/ https://www.simscale.com/blog/2017/12/nasa-mars-climate-orbi... That is exactly the sort of mistake that the support for physical measurements mitigates. There probably never will be a programming language that pleases all the syntax camps and all the semantics camps. Why not just use macro-assembler? It is the purest language that isn't binary machine code.
- knolax 5y agoNot really a technical comment but this is the first time I've seen language syntax written down with graphs in documentation. I honestly would've preferred text but it is interesting. What tool did you generate them with?
- magicmouse 5y agoThe syntax diagrams are from a handy free web service at this link: https://www.bottlecaps.de/rr/ui#nonterminal https://www.bottlecaps.de/rr/ui#nonterminal
- GianFabien 5y agoThat was the standard for Pascal. Apple even had a poster: https://3.bp.blogspot.com/-4Mvjg7-02Mw/W_HBzLA8hBI/AAAAAAAAA0I/nJr6X9axwYEloVL3KLkl0rq7BwlTt2wagCLcBGAs/s1600/IMG_3146.jpg https://3.bp.blogspot.com/-4Mvjg7-02Mw/W_HBzLA8hBI/AAAAAAAAA...
- pabe 5y agoThe "64bit" video and stack of books replaced by a single component made the impression that this must be satire. I didn't look further because of that.