Reminiscing Rebol today
Lately I do so much work with heavy systems, this little example brought back some great memories working with Rebol: R E B O L [title: "GRID: SAVE/LOAD, ADD/REMOVE, UNDO, EDIT, SORT, FIND, KEYS"] sp: 0 asc: false mx: cnt: 9999 repeat i cnt [repend/only x:[] [i random now join random"ab"random"cde^/"]] scrl: func [arg] [sp: sp + arg sl/data: sp / length? x show g] srt: func [f] [ sort/compare x func[a b][(at a f) < (at b f)] if asc: not asc [reverse x] show li ] do [request-big: do replace replace replace mold :request-text {field 300} "area 400x300" {with [flags: [return]]} "" {194} "294"] updt: func [f] [f/text: request-big/default f/text show li] view center-face g: layout [ across h4 "ID" 55 [srt 1] h4 "Date" 170 [srt 2] h4 "Text" [srt 3] return li: list 330x400 [ across text 55 blue [cnt: face/data] text 170 text 80x30 rebolor [updt face] return box black 400x1 ] supply [ if none? e: pick x count: count + sp [face/text: none exit] face/text: pick e index face/data: count ] sl: slider 20x400 [sp: value * length? x show li] return btn #"^~" "Remove" [ud: first at x cnt remove at x cnt show li] btn "Undo" [if value? 'ud [insert/only at x cnt ud unset 'ud show g]] btn "Add" [ mx: mx + 1 insert/only at x ++ cnt + 1 reduce[mx random now random "abcd"] show li ] btn "Search" [ if find reduce[p: request-list"Field:"[1 2 3]h: request-text]none[exit] u: copy[] foreach i x [foreach [j k l] i [ if find pick reduce [form j form k form l] p h [append u form i] ]] if empty? u [notify "Not found" exit] fnd: request-list "" u repeat i length? x [if (fnd = form x/:i)[sp: i - 1 break]] show g ] btn "Col2" [foreach [i j] x [append y:[] i/2] editor y] btn "Save" [attempt [save to-file request-file/save/file %grid.txt x]] btn "Load" [attempt [x: load request-file/only/file %grid.txt show li]] return btn "Sum" [sm: 0 foreach i x [sm: sm + i/1] notify form sm] btn "Avrg" [sm: 0 foreach i x [sm: sm + i/1] notify form sm / length? x] btn "Max" [foreach i x [append y:[] i/1] notify form first maximum-of y] key keycode [down][scrl 10] key keycode [up][scrl -10] ] That application instantly generated 9999 rows of 3 columns of values, and displayed them in a grid, which is sortable by clicking column headers, searchable by column, fully editable (with add row, delete row (column # selected by mouse), and 3rd column editable by mouse click). It also included a last operation Undo feature, features to save and load the entire DB to/from a text file, the ability to collect all dates in the middle column and display them in the built-in Rebol text editor, mouse and keyboard navigation controls (up/down arrows, delete key, etc.), and sum/average/max functions for the first column values. It runs lightning fast with the default 9999 rows, and still acceptably fast with 99999 rows. *All in just over 40 lines total* - no other supporting infrastructure, no RDBMS system to install, no server environment to configure, no browser needed to run UI, no libraries to install, no heavy visual builder or IDE needed. Just a single Rebol binary less than 1Mb to run. I built a LOT of software with Rebol which involved significant data management, complex network operations, legit UI layouts, graphics, sound, etc. and still use some of those applications every day. I'm working in an utterly different paradigm these days, using tools that do make development outrageously productive, but I still appreciate what Rebol was able to accomplish so gracefully and simply, without any bloated infrastructure and tooling, a quarter century ago. Pretty amazing stuff!
posted by: Nick 26-Jun-2024/10:16:25-7:00
I think a lot of people had trouble realizing that that little bit of code represented the entirety of everything required to make that application, the data structures, the user interface, all the logic and functionality, and that the entire infrastructure and all the tooling needed to build the application was less than 1Mb. The fact that nothing else needed to be installed (no browser, no database system, no libraries or package management system, no IDE, etc.), really was a huge part of what made working with Rebol so productive.
posted by: Nick 26-Jun-2024/10:37:16-7:00
In hindsight, 1MB now seems huge to me. :-)
posted by: Kaj 27-Jun-2024/7:12:30-7:00
I never saw the code base for R2, but imagine that much of that binary size had not to do with not just the language implementation, but all the built-in features and connectivity: View, VID, Draw, sound, network protocols, a variety of encryption implementations, Windows installer, registry access, the whole graphical desktop environment, ODBC and MYSQL access, command shell access, DLL access, email, network configuration features, SSL, icons/images, etc. Those built-ins were what really made Rebol so productive for me - even more than that language design.
posted by: Nick 28-Jun-2024/9:02:25-7:00
Yes. Because REBOL is an interpreter, it needs to include all its functionality. Meta is a compiler and only compiles into a program what it uses. The smallest real program I have generated so far is the Atari 8-bit rainbow demo for SpartaDOS X at 29 bytes.
posted by: Kaj 29-Jun-2024/17:21:11-7:00
Yes. Rebol is very cool. Almost a complete operating system, you just need to add a bootloader, for example TinyCore :) Nick, let me ask you a question - why didn't you switch to modern, open and fully compiled Red and use it instead of Rebol? Red seems to be a good example of the development of the principles laid down in Rebol, for example, the division into a graphical and console application is practically no longer there (https://www.red-lang.org/2024/06/text-ui-view-backend.html)
posted by: Sergey_Vl 30-Jun-2024/0:53:37-7:00
Kaj, Atari - 8 bit is not the most promising platform today. I think that the technologies contained in Meta, if properly described, can become a good teaching aid for students, as Minix was in its time. Or it can remain a wonderful hobby, "just for fun."
posted by: Sergey_Vl 30-Jun-2024/1:13:29-7:00
Atari is the machine of nostalgic memories. If stuff can work on any machine, like Meta, building the core up from 8-bit makes sense.. Atari does have a history and some smaller community that could have been a starter for building up a Meta community. Having Meta work on this, you know it will be suitable for all kinds of iot projects too, a true multiplatform tool. I understand the choice not going for that other language too. Development stalled long time and the programs were slow, it never delivered on promise and headed the crypto currency tool path where serious devs needed mature tooling. Glad Nick found his new Rebol in Anvil. Imho Meta is going the right way, given the size of the team and the funds.
posted by: Arnold 30-Jun-2024/5:05:44-7:00
Sergey, I paid Cypher to have open source Rebol3 ported to Android, with View and the new UI system, and then I later paid Doc to develop Red for mobile and web, during it's first year of existence. Cypher's port of Rebol to Android was useful (and a really neat project that he completed mostly in a week), but the original plan was also to get all the ports done for iPhone and web too. Without common platform support, Rebol was becoming useless to me at the time. I needed to be able to support mobile and web, because those are interfaces which people use every day in regular life, everywhere (and that was already the case in 2012). I also offered Carl a chunk of money to port R2 to mobile and/or web, but he had already moved on. 12 years later, Red still hasn't implemented support for the common mobile platforms or Web UI, which was the main direction of it's original plan. I'm glad Doc has found a community, and the TUI UI looks really cool. I'd be interested in poking around with it if there were versions for mobile and/or web. But that seems like a fun toy project, compared to the real UI options that I use for regular work - I can't imagine having to deliver a project and have to deal with the complaints users would have if I tried putting something like that into production... I'm snug as a bug in a rug these days. Anvil is powerful, *dramatically more productive and capable than Rebol ever was for me, it can be used in every environment that I can imagine real work and common computing activities taking place, and I can deliver/update applications instantly to anyone who is using any typical device/OS in popular use, without any headaches or troubles of any sort. It's just a radically better process than anything else I've ever experienced, and I never get stuck on any problem or waste any time going down time consuming rabbit holes, no matter how small or how complex/hairy the requirements are for any project that I've encountered. The massive existing breadth of mature tools in each ecosystem (Python and JS), together with the help of AI to discover solutions and write working code is literally 100-1000x more productive, less hassle, less stressful, etc. than the process was even just a few years ago. There's just no comparison - things simply work reliably out of the box the way they're supposed to, throughout all the edge cases, and big problems of every type are just *easy to solve with the tooling I use these days. I haven't gotten hung up on any requirements yet, and I've had some exceptionally challenging clients and situations to deal with. Massive projects which would have taken months with Rebol, are simple days-weeks projects with those tools. So I'm happy and enjoying life :) I'm glad to see everyone else making progress and being dedicated to what they do. I wish everyone the best!
posted by: Nick 30-Jun-2024/10:15:26-7:00
BTW, I have used python Textualize to create UIs that run in the console over SHH - it's pretty amazing! This little CRUD example took a few minutes to create with Claude: https://antonaccio.net/nick/crud_textualize_claude--with-working-sorted-columns.py That's a CRUD grid UI, with a sqlite database backend (but it can switch to any other popular RDBMS, MySQL, Postgres, MSSQL, etc., just by changing the connection string). Just download Python, pip install textual and sqlalchemy, and run the script.
posted by: Nick 30-Jun-2024/10:26:34-7:00
BTW, I've added a wide variety of additional tools beyond Anvil and my first little stab at a small on-device toolkit (the one with bottle, pydal, and jslinb). It's easy to swap out each of those for others - I have another with sqlalchemy and metro4ui that runs on mobile and on basically any device that might actually be used these days, without any package management needed. It's appropriate for actual production work, where the version with pydal and jslinb just satisfied some really ancient requirements (for example running the UI on the first iPhone browser, in the experimental Kindle browser, some really old and lightweight browsers that came with crazy small Linux distros like Slitaz, etc. - none of which were practical for production deployment of apps in serious work environments). I'm also a bit of a fan of tools such as Pocketbase. Just copy one file to Linux, Windows, or Mac, and you've got a production ready backend which supports dramatically productive database, authorization, file storage, https termination, real-time subscription, JS and Dart framework, etc., with automatically generated REST API (and JS/Dart SDK), etc., and is blazing fast and easily supports 10,000 simultaneous connections. That's a drop-in replacement for lots of machinary that typically requires coding, installation, configuration, etc., for many core features of almost any type of app. Every piece of tooling is swappable. I can connect any front end (Anvil, Nicegui, Metro4ui, Streamlit, jsLinb, etc.) to any back end ORM and REST framework (Anvil, Flask, Fastapi, Bottle, SQLAlchemy, PyDAL, Pony, Tortoise, etc.), depending upon requires and features. Anvil always works for my production needs, but it's great to have so many drop-in replacement options that all work for varied requirements.
posted by: Nick 30-Jun-2024/10:47:24-7:00
BTW, also, tools like Pocketbase can also be used with Reb9l, and/or Meta - any system that can make HTTP calls ( don't be thrown by the fact that it supports JavaScript and dart sdks, the automated rest API works with any http connectivity). And I already showed in the past how front ends like jsLinb can be connected to Rebol or any other similar back end which can accept requests over a network, so all this tooling is potentially useful this community. That was my point with the idea of connecting to Microsoft Authentication and MSSQL - that a little bit of connectivity can enable Rebel, Meta, or any other system to be used in those environments that require compliance.
posted by: Nick 30-Jun-2024/11:11-7:00
Sergey, this version of the TUI script runs specifically with sqlalchemy 1.3.24 (pip install sqlalchemy==1.3.24). I still use that version because it works across the widest variety of python versions: https://com-pute.com/nick/crud_textualize_claude--with-working-sorted-columns-sqlalchemy-1.3.24.py
posted by: Nick 30-Jun-2024/11:52:25-7:00
Meta can run on many platforms, mostly modern ones. You don't have to confine yourself to Atari 8-bit; I certainly don't: language.metaproject.frl#where Meta is my life's work, and I'm doing commercial projects with it. It is in no way a hobby project. As Arnold said, supporting 8-bit helps Meta focus on efficiency: language.metaproject.frl#later On platforms such as PC and IBM mainframes, Meta programs are typically tens of kilobytes, similar to comparable REBOL text scripts, but with the used parts of that 1MB and even the standard C library included, so they're not dependent on those external parts and their versioning. Nick, PocketBase looks nice. It could indeed be used by Meta, similar to an Anvil server. On the other hand, Meta already has a backend for APE, which supports an increasing number of libraries, including SQLite and its own RedBean web server. So we're already working towards something similar as PocketBase, and in a portable format. In general, I don't favour generic database servers. In principle, it's always better to develop custom application servers, to fit the application. A generic database server makes it easier for programmers who can't do that, but Meta aims to make it easier for them.
posted by: Kaj 30-Jun-2024/16:22:22-7:00
Kaj, I understand your position about database servers (actually, that point was actually a big part of the initial motivation for this post), and I'm really curious to see what a typical workflow is like for creating a basic CRUD app in Meta.
posted by: Nick 30-Jun-2024/18:18:44-7:00
Currently, it's CGI, so you're always programming an application server. That's how I made the Meta chat forum. Of course, you could create an application server that is a generic database server, and I drew up such a plan for you, until it was pushed to the backburner by the first funding for Meta. I found a project that adds CGI to the RedBean web server. See the forum: social.metaproject.frl/Meta/ So I am looking into running Meta CGI programs on RedBean. Then you should be able to pack a web application with multiple CGI's into one cross-platform file, more advanced than PocketBase.
posted by: Kaj 1-Jul-2024/3:25:22-7:00
Of course, I will continue to use Anvil as my first choice, but tools like PocketBase are great when I have clients who need to have some ability to build their own backend. PocketBase has a built in visual builder, it supports every data type needed to builder most common types of applications, it creates API endpoints automatically for all the common CRUD operations (instantly and without any coding whatsoever), it's got security controls for user levels, it performs faster than anyone needs for most common application types, and a child could learn how to use it in a few minutes. This opens up some really neat possibilities, even in old paradigms, but the real power is that GPT, Claude, and even DeepSeek (free and open source) can write code to connect with PocketBase and to create a front end in a just few seconds (paste in the json returned by an API call, and those AIs fully understand the schema, without any explanation). This means that even non-developers can create real, useful, safe, performant CRUD apps in a few minutes - and of course non-developers can interact with developers, and even just AI to build more complex things, once core CRUD capabilities and common data transformations are in place. You would not believe the incredibly complex applications that I've seen some non-developers create purely by interacting with AI to write code. A few years ago, I would have expected someone to need 5-10 years of experience in a particular ecosystem to create such complex software, but I've seen it done by citizen developers who have only a cursory understanding of how the tools work. ... and we're just inch of a million mile journey in which AI enables human creativity and desire. I'm enjoying taking part in the first few steps - it's so utterly mind-boggling, but it's clear that most of the work which humans do will very soon become obsolete. It's not just like this in software development, you should see what AI can do with music composition, arrangement, and production - it would take decades of experience for most people to create and produce the sorts of music that Udio and Suno can spit out with just a few words of prompting - and None of this existed last year.
posted by: Nick 3-Jul-2024/1:37:08-7:00
Again, for my own needs, I'll using tools like Anvil, or Flask+SQLAlchemy+Bootstrap if I need to roll my own toolkit, and in almost any case, using an AI to instantly write a large percentage of the backend schema, CRUD functions, routing, etc. will be even faster and *more productive than using something like PocketBase - but it's great to have so many interchangeable productive, reliable, capable tools. It's very clear to me that we're not going to need to much to instantly build extremely complex software using AI, in just a few years.
posted by: Nick 3-Jul-2024/1:44:29-7:00
I know this isn't pleasant for anyone to accept, but it's happening. I'm not sure how society will adjust, but just as horses were replaced by cars, human work will be replaced by AI and robots, and that societal change will happen *at least as quickly as cars replaced horses. I have nothing against horses - they're awesome, just as humans are awesome - but our work *is going to be replaced by technology, very quickly.
posted by: Nick 3-Jul-2024/1:53:17-7:00
Just as a quick example, for something like a forum, I can write from scratch, configure, and install the entire application to enable that sort of functionality in 5 minutes - and run it on a VPS where I can host dozens or hundreds of such applications for $8/per month, using AI and the sorts of tech stacks that I'm discussing here. As interestingly designed as Rebol was, it embodied no such magic - and no other system without AI can enable such productivity. The increases are in the order of 100x-1000x. The differences in the design of a programming language, compiler, etc., are so low in the order of priorities, for my needs, that those factors just don't matter for 99.9% of projects. What matters is that the AI has millions/billions of lines of code, documentation, and examples to work with, and with that, productivity levels and the capabilities of the tools it knows deeply, go through the roof. And this explosive trajectory is just getting started - the primer is just being ignited in this bullet's flight :)
posted by: Nick 3-Jul-2024/2:07:26-7:00
That sort of productivity has scaled right along with all these projects of many thousands of lines of code that have been completed and are running beautifully in production during the past year. I'm not sure why anyone would want to replace dramatically capable and productive tools which make those sorts of successes possible, with soooo much less difficulty and trouble than was possible just a few years ago. The reduction in stress and trouble has been manifold more than the reduction in stress and trouble that Rebol enabled compared to earlier tools. I still love some of what Rebol accomplished, but those accomplishments have been dramatically eclipsed, and that rate of improvement is about to skyrocket. The entire paradigm and purpose of software development is currently in the process of being utterly upended by AI. Computing as we know it, and everything that affects natural life, and the very foundations of what make life itself a challenge for humans on Earth, are all about to be re-defined in profound ways. I'm involved in these discussions now, because they're still interesting, but most of us are horseshoe makers who are about to live in world where most people no longer ride horses.
posted by: Nick 3-Jul-2024/2:19:09-7:00
Here's just one example, among several hundred from the past year. I was given a database schema diagram drawn out by a statistician. I uploaded that diagram to GPT, and asked it to create the schema in SQLAlchemy. That took a minute, to create 400-500 lines of code that formed the basis of the production database schema for his project. Now the statistician had the full schema code that he could continue to adjust as needed. That project needed to run using MSSQL as the database, and for authentication to be managed by MS Windows authentication (even though Anvil provides far more effective and efficient solutions - the organization's policies and procedures only allowed for MS infrastructure). GPT provided connection strings, every mechanism, and all the code needed to authenticate (including code needed to patch the libraries to run in the version of Python we were using). Several thousand lines of code that were used to perform complex search routines, to import and deduplicate records from spreadsheets, and to sort and otherwise manipulate records in ways which each required many hundreds of lines of code and complex UI interactions, were written, debugged (just by entering error messages in a loop with the AI), and constantly evolved, just by providing natural language specifications to GPT. Along the way, when the system was installed, I needed to perform many dozens of configuration tasks such as looking up available nameservers, which GPT wrote code on the spot to perform. Each one of those tasks could have taken *lots of time to perform, but the AI created perfectly working code to perform each task, in just a few seconds. Altogether, I could have spent many hundreds of additional hours completing the work I needed to get done on that project alone - and that was just one of many, each has similar stories attached: I've connected to SO MANY third party REST APIs this year, each one would have taken dozens of hours to learn, write functions to interact with, debug, and run through typical development cycles. I likely saved thousands of hours feeding API documentation to GPT, and letting it debug error messages, suggest solutions, etc., in each development cycle. I've used it to build data structures from visual tables scanned from paper books, I've used it to explain thousands of lines of legacy code, undocumented and written in years past by long disappeared previous employees, on multiple projects. I've used GPT to refactor and integrate that code, update code for new versions of libraries, or to switch code from one library to another - that sort of thing takes GPT literally a minute, to write hundreds of lines of code that would likely take hours of headache inducing coding and life force sucking frustration. It's nothing for me to say 'please convert this PHP code which connects to MySQL, and re-write it in Python using SQLAlchemy, so that we can use it with Postgres' or 'please take this UI written in Rebol VID, and create a datagrid in Bootstrap to enable the same data input and output, and make a REST API to serve those rows of data over HTTP'. I've experienced thousands of those sorts of moments this past year. Literally thousands. And that productivity has been more enjoyable than any other experience I've ever had writing useful software.
posted by: Nick 3-Jul-2024/3:01:15-7:00
When I hear 'So I am looking into running Meta CGI programs on RedBean. Then you should be able to pack a web application with multiple CGI's into one cross-platform file, more advanced than PocketBase.' I think, cool, I bet you've got a tiny, simple single file to install, which I bet probably runs super fast, needs virtually no hard drive space or RAM to run - I'd love to see that! But... I'll need to write every single character of code to build data structures, every function call, and all the application logic involved in doing *anything - and what if there's some requirement which isn't handled natively by the ecosystem (what if I need to provide a REST API for other applications to interact with, or print PDFs, or grab images from a camera on my phone, or search through video frames for images of cats, or connect via video-conference with other users of the application, or send scheduled SMS messages based on rules, or import data from one of dozens of potential databases systems or document types, etc...) . My little pack of Bottle+SQLAlchemy+PyDAL (a routing solution and 2 different ORMs), plus a ton of common example UI code to feed GPT (to build from and adjust to perform common front end interactions, and implement common CRUD operations on the back end), is a few megabytes. That takes a few seconds to download on any device connected to the Internet, and I can run it instantly on any old Linux, Windows, Mac, or Chromebook machine, Android phone or tablet, iPhone, etc... And then I can write a few lines of explanation in GPT, Claude, or Deepseek, and hundreds of lines of working application code are complete and deployed, in a few minutes. Iterate with clients while in a short video conference, and hundreds of lines of production code gets completed. Sit down for a few hours to work on really challenging problems that used to take weeks, or often simply weren't possible because libraries or other usable solutions just didn't exist in the ecosystem - and now those problems are alleviated by painless sessions of interaction with a brilliantly capable assistant who knows every single solution that exists in a massive ecosystem, and can write working code that can be compared and evaluated - likely saving weeks of work going down rabbit holes to compare the benefits and drawbacks of each potential solution - all in a single sitting in which many thousands of lines of working code were produced effortlessly. There's no benefit in any single tool that can outweigh those sorts of capabilities in my current workflow. It's pure magic to have that breadth of knowledge and capability at your command. It's like having a company of 1000 people to hand tasks to, and getting the results back in seconds. Nothing in human history can compare to the sort of productivity that this technology is going to lead to. It's so much fun to use, and it makes work simple and easy. I'm not just relieved by the easing of work load, the speed of development, the improvement of capability, reliability, etc., but I'm amazed and entertained every time I sit down to do some work, by the increasingly astounding capabilities of these little brains that I get to work with every day, who never complain, and who work tirelessly to help get work completed. There's a real sense of renewed joy doing this work, because it's so painless compared to what I've known in the past. The problems that used to be solved by great language design are now solved by far superior tooling and intelligent help by dramatically capable AI tools. Together with improved work environments (like Anvil) which only a require a browser to perform every single piece of the development workflow, the whole idea of creating software without limits is reduced to simple and enjoyable interactions. With all that in mind, packing a web application with multiple CGI's into one cross-platform file is just not what gets me excited like it may have a few years ago, because that doesn't improve my capability or productivity in even a fractional way, compared to all the other benefits of the environment I'm now used to. That doesn't mean I don't think it's a great idea to improve performance, reduce bloat, and provide even more effective compilers and related tools - it's just not the kind of development that will affect the natural world around me in the ways that I'm suited to enjoying at this point in my life. I respect those goals, and even have a strong interest in seeing Meta satisfy those goals. For it to be useful in the world I live in now, it just needs to be able to connect to the OS and infrastructure tooling which I'm required to work with, and it needs to have an AI which knows how to use the Meta language and tooling (that's entirely doable, and will get easier to do every day, week month, as AI continues to improve very quickly).
posted by: Nick 3-Jul-2024/3:51:47-7:00
I'm still reminiscing Rebol - the example above was just one of thousands that I wrote of many years using Rebol, and I do appreciate the simplicity of what Carl created. I'd love to see more of that whole ethos and the values that Rebol embodied. I know that Meta has even more potential for better performance, much smaller and faster binaries, etc. I'd love nothing more than to help train an AI to learn it and help build the ecosystem (this other work, and my other businesses, music, and personal life do keep me occupied!)
posted by: Nick 3-Jul-2024/3:55:42-7:00
All tools that generate (parts of) some framework are outdated when you let AI generate your code. All AI needs is the base functionality and a programming language. It even reduces the need for dialects, although they can still simplify the code, but you have to make the AI learn them.
posted by: Kaj 3-Jul-2024/5:40:38-7:00
And because AI works with code directly, you don't need all these kitchen-sink solutions anymore. They make development easier for humans, but AI can just generate custom code tailored to the application, without including all those extras that weigh every application down. Pretty much the same concept as the Meta compiler. Make the generic language as powerful as possible, and don't include extras an application doesn't need.
posted by: Kaj 3-Jul-2024/5:46:50-7:00
Last year, I suggested that human readable languages will likely not even be needed, and I certainly expect that will be the case in the future. The interface to implementing desired functionality can be the discussion with AI, rather than traditional software development languages and tools. It certainly feels much more like that at this point. Right now, I can convert functionality between any chosen languages in a few seconds. What matters is the functionality, not the language. That's something I've done regularly during the past year.
posted by: Nick 3-Jul-2024/9:34:06-7:00
I know it's horrifying to think that artificial intelligence will replace human work, at least at the moment, but we're just a couple years away from the systems being more capable at research and development in every field, than any humans with doctorates and a lifetime of experience will ever be. Can you imagine how hard a pill it was for the developers of the robots used in that Google study, where the self-learned control codes dramatically outperformed those of the engineers who actually created the hardware? Can you imagine how hard it was for the world's best Go player to be beaten by a machine? It's an extremely hard pill for me to swallow watching a music AI do something that would take a studio full of musicians who have spent their entire lives working to do the exact same thing, and the AI can do it in seconds, without any effort. And we're only in the first inch of this journey. I am fully resolved to enjoying leveraging my human effort, as I always have been. The nature of the tools is simply becoming dramatically more effective, and it's about to improve in ways that we can hardly even imagine, during the next few years. Human labor is not going to be valuable in the very near future. It's going to lead to some dramatic societal turmoil, the likes of which we've never seen, but there's at least the opportunity for humans to have a potentially utopian society on the other side...
posted by: Nick 3-Jul-2024/9:51:17-7:00
The performance of the compiler and the the ease of implementing/deploying code may be far more important aspects for languages going forward, as are the strengths of the ecosystem. Meta should satisfy those first two requirements well. I'd love to be able to tell GPT at some point to just convert all this code to Meta, run the compiler and install it on my server at A2 :) That sort of agency is coming in the next couple years...
posted by: Nick 3-Jul-2024/11:10:58-7:00
I don't see AI generating binary executables and binary interfaces. It would make them opague and impossible to evaluate by humans. Apart from that AI can't do that yet without cooperating with humans, why would we ever do that? Even if we would let AI generate assembly, it would be human readable but it would make no sense. Computer languages have long solved the problem of portability - just not as well as Meta - and LLM's are designed to work with it. There is just no reason to abandon that, except make it more efficient and more universal, which is exactly what Meta does. You are still overestimating AI. As I've said before, current AI can't do innovation. Scientists will become even more critical, not less. Only the best will have a place instructing AI. Artists will have to reinvent themselves, too, and become much more creative. I've long been bothered by contemporary artists just rehashing what came before them, and now AI can do that, too, and forces them to innovate again, like we were used to. You have accepted that you want to exchange your horses for tractors, but now you're stuck in the mindset of tractors with reigns, instead of tractors with steering wheels. We know how that went. For a short time, farmers thought they wanted them, but then they disappeared from memory, while tractors with steering wheels and horses remained. Exactly because programming languages will matter less, there will be a drive towards the most fitting and efficient one. The current software mess was created by humans, based on their limitations and politics. AI doesn't have those limitations and doesn't care about the politics, if you train it properly. It has no need to maintain the mess humans created on top of the usable layer of computer languages. If you use AI properly, you will use it as the platform. You will only need one language, plus the libraries your application needs, preferably in the form of well-integrated language extensions - dialects if you will. Sound familiar? There is already a pure HTML/CSS/JS movement, because many frameworks create as many new problems as they solve. This will be strengthened by AI. Extensions can be dialects such as HTMX. Libraries that implement real functionality will remain, and will be implemented with the help of AI. In the coming few years, there will be a big shakeout of frameworks that basically only avoid humans having to write glue code. If they contain real functionality, that may survive factored out as libraries. Exactly because AI can much more easily port code from one language to another, it will be much easier to switch to the most suitable one. All those objections against Meta and REBOL that your brain and those of others constantly generate, AI doesn't care about them. I don't have to argue with AI for years to convince it, I only have to train it. If I tell it to, AI will happily generate Meta or REBOL code. And it will work around Meta's current limitations without complaining, until more advanced functionality is available.
posted by: Kaj 3-Jul-2024/11:57:10-7:00
'If I tell it to, AI will happily generate Meta or REBOL code. And it will work around Meta's current limitations without complaining, until more advanced functionality is available.'. That's just a part of what I've been explaining, from thousands of hours of real life experience during the past year and a half. There's something poetic about a person who doesn't use AI daily, telling a person who uses AI every day for production work, that they're overestimating AI. The fundamental fabric of human work is in the process of changing forever, in a way that's 1000000x more profound than tractors replacing horses (as profound as that change was). I'm just keeping up and learning to use each new capability. It's not a hard choice - there's no comparison with old ways. I'm not overestimating AI capability, for the things it's currently good at - and that spectrum of capabilities is broadening every day. BTW, I use AI tools to help teach musicians at Rockfactory every day, so that they can focus on improving their own abilities, and not get lost in time-consuming and effort-consuming challenges that lead to exhaustion and which limit the learning progress. I do the same thing with software development, every day. I'm taking part and learning constantly how to dramatically improve my capabilities, and the results are stunning, mind-boggling. Programming languages are just becoming less important day by day, and the progress in what AI has been capable of has been absolutely relentless and staggering during the past year and a half, and that pace is only ramping up to far more mind blowing capabilities - the scaling laws are expect to continue for at least the next few years, as far as anyone can tell, and that should lead to almost unimaginable improvement in capabilities. Those Earth shattering improvements have been quickly making all sorts of tooling and fundamental approaches to creative and innovative work obsolete. As far as I can tell, my time, and the effort of humanity in general is best spent maximizing the effectiveness of AI's capabilities, instead of trying to compete by building better tooling. AI will very soon be used to improve tooling in ways that humans won't be able to beat.
posted by: Nick 3-Jul-2024/12:38:25-7:00
You go to great lengths telling us you have upgraded to tractors with reigns and use them daily. It's fine with me if people would use Meta with that, but I can't spend much time on it, because it will be just a fleeting moment during the development of Meta. I must focus on the long period that will come after, tractors with steering wheels. I don't know why you keep assuming that I don't know about AI, am not convinced by it, and don't want to use it, no matter how much I write about it and point you to Meta's website. If I point an AI to it just once, it will know. You started this thread by showing how much a small REBOL script can do. We know this, but the rest of the world still doesn't want to learn about it. For decades, people have been self-defeating by making excuses to not learn about REBOL, and now they're doing it with Meta. But why would AI not use this power? It doesn't suffer from these human hangups. AI places language technology fully in the centre again, while at the same time it's on a path to hiding much of generated program code. This is a great opportunity to inject REBOL-like technology, certainly when greatly improved. It boggles my mind that you of all people argue against this and consider it futile. In any case, if there is one thing we got used to in our REBOL time, it's naysayers, so I certainly won't let them keep me from my path. There's one party who does understand, and it's AI.
posted by: Kaj 3-Jul-2024/14:10:34-7:00
"Programming languages are just becoming less important day by day" in the sense the language used will be an equal choice. But AI will suggest using Bloaty Bloatware (TM) solutions even lying/claiming these are the most optimal solutions because is has so many examples like that and it does not know or realize or care about the used cycles. The human programmer should be aware of the pitfalls of AI generated solutions as AI tends to be a pleaser too. If the human wants to check on the validity and such of the generated code, a proper proramming language should be used, or else the check will be depending on other (AI generated) computer programs. Preferably a language should be chosen that is meant to be read by a human, and these are also generatable by LLVM's. So it will make sense to train AI in Rebol and Meta instead of the tons of programming junkfood it currently gets fed.
posted by: Arnold 3-Jul-2024/14:51:29-7:00
The burden of proof is clear here. If the idea is that current language other than Meta can't lead to innovation, that's just clearly wrong. AI is often built with Python, and that domain is currently where the most amazing world changing technological innovation is currently happening. Massive systems are built with Python, and now more and more with AI. Where do you see the problem? I see the problem as optimizing where optimization is not needed, and/or pre-mature optimization. Optimizing to run on 8 bit Atari *could possibly be pre-mature optimization... AI makes optimization even easier - I've done it hundreds of times in the past year - build with one system, and then convert to other language tools instantly with AI. Having other better tools available is certainly a great option, and that's why I support the idea of Meta, and the values you're working with. I have to wonder what you imagine accomplishing with Meta that can't be better accomplished, which can't be better accomplished with the sorts of tools that I'm currently using. It certainly can't be things like forums - I can create that sort of software in minutes, and there's no need to optimize those sorts of projects - it's just not necessary to optimize. I'm not naysaying, I'm curious what more of your vision of innovation actually is. Is it saving energy with compiled applications that run with less power? Is it greater performance. What do you imagine changing on the current world stage if Meta is as resoundingly successful as you'd ever hoped it could possibly be? I don't need to optimize any more to satisfy my end goals. My end goals are *being accomplished* with all the tools and tech I currently use, in ways they could never have been with Rebol. And I'm sure those tools can accomplish end goals, for my clients, which Meta currently can't. If Meta matures and can accomplish all those same goals with the same constraints, and offer some improvement in capability, performance, productivity, significant saving of effort/cost, or any other benefit, then I'd be 110% all about using. But I don't see any sign of that being the case at the moment - I can run dozens of massive applications currently on a VPS that costs $8 a month, without any downside, and without any optimization. And I can build and run on any old, low powered device that I might possibly ever come in contact with: old desktop machines from 20+ years ago, netbooks that can be bought for $10 and repurposed with a lite version of Linux, Chromebooks, Android phones and tablets that I've gotten for $15, the first iPhone, etc., etc., etc. I have tools that cut bloat for extremely old hardware - in fact many of my colleagues wonder why I've even gone that far, when new hardware, VPSs, etc. are just ridiculously cheap and plentiful. I don't discount that optimization of every sort is useful, and I applaud you for working to provide such tools, but everything I write about here comes from the actuality of my current situation and what I'm able to accomplish, and what I see changing and improving in totally predictable, dramatically exciting ways. Arnold, calling the tools that I use Bloaty Bloatware just because they can't be compiled on an 8 bit Atari machine that not a single person in any serious environment would ever use for any practical purpose, misses that fact that they're incredibly powerful, capable, productive, effective, easy to use - especially when you've never actually used those tools to actually accomplish anything. I understand the benefit of optimizing, and creating better tools, but the genuinely *better tools* that are currently creating orders of magnitude in real productive power, usable in ways that humanity has never before imagined, and which are clearly accelerating in power at a tremendous rate, shouldn't be ignored or dismissed either. Kaj, I understand that it's your life's work to build your vision of what Meta can be, and I respect and support that - the only way I know how to evaluate its value is to compare it to all the other competitive options. That's not being a naysayer. That's just being realistic and looking at the overall benefit of any choices, from the perspective of a given final goal.
posted by: Nick 3-Jul-2024/17:04:06-7:00
For example, one thing that would be really exciting would be to hear something such as 'Because Meta is so much more efficient, we can train models with ___ capabilities and run inference on ___ desktop CPUs using a tool chain built entirely with it'. That's the sort of end goal that would be industry changing. Or, maybe something like 'your A2 VPS that can process ___ number of database writes with Postgres, handle file uploads of ___ MB per second, and connect ___ thousand simultaneous users could be handling __x as many per second, using Meta'.
posted by: Nick 3-Jul-2024/17:15:03-7:00
I started this thread because it was very pleasant to try that example and see how well it performed, and think about how no other infrastructure was required to implement those capabilities. But as interesting and pleasant that was, and as reminiscent as it made me for working with simple Rebol solutions, the truth is I can now build dramatically more performant tools that provide far better speed in production, can handle more users, can be created and deployed almost instantly, scaled dramatically in capacity, used on any common device, and can make use of any capability enabled within an already enormous existing ecosystem of tools that it child's play to connect to existing technology stacks, etc. For something to replace those tools, all those same constraints must be met, and then surpassed in some practical, meaningful, useful way. Until that's the case, I'm not being a naysayer, I'm just waiting for some hint of how and why I should expect that to be the case down the road.
posted by: Nick 3-Jul-2024/17:23:26-7:00
I do not call *your toolkit specific Bloatware. But the general development environment consists of enormous amount of that. Containing a gazillion of dependencies for the most obvious functions that can be programmed within every decent lanuage but industry standard requires 'standard' libs to be used. Not intended personally or on your personal stack of tools.
posted by: Arnold 3-Jul-2024/17:27:07-7:00
Please stop creating strawmen and putting words in my mouth. Nobody said innovation is only possible with Meta, and nobody said other software is bloatware because it doesn't run on 8-bit. I'm going to stop discussing with you, because it costs me too much time and doesn't lead anywhere. I'll point to Meta's road map again. I'll make an effort for anyone who makes contributions to Meta, but I can't spend time on the other eight billion people who don't. It only slows the project down, and would be a self-fulfillment of your prophecy that REBOL technology is somehow the most powerful and at the same time the most irrelevant.
posted by: Kaj 3-Jul-2024/17:33:17-7:00
I never said Rebol was the most powerful or the most irrelevant. It was a beautifully designed tool made for building software 'in the small' (Carl's words, not mine). It was extremely graceful and powerful for it's time. I've never claimed you said innovation is only possible with Meta, just curious about what exactly you imagine being your best vision of 'innovative', because I'm genuinely interested in how you imagine that playing out in the current environment.
posted by: Nick 3-Jul-2024/20:04:39-7:00
It's all in my previous posts.
posted by: Kaj 4-Jul-2024/3:20:49-7:00
You've never once expressed the sorts of creations you expect to be able to build that are novel or somehow industry changing, only that you think other approaches are less effective, without any demonstration of anything interesting you're building with Meta - just a couple functions like the Pig Latin example. When you presented those examples, I engaged, compiled examples, immediately built a front end, and offered support, testing, etc. You've only consistently dismissed every concrete example I've shared to demonstrate what has been profoundly game changing during the past few years for me, only saying that you can't be distracted from your own mission, which you have never really demonstrated the benefits of in any concrete way. I've posted useful interactions with AI to provide some insight into exactly how my productivity has been improved dramatically, and offered concrete support to begin getting that happening with Meta. I've been curious and interested in how to help show Meta's strengths, but only met with negative responses. I've listed applications I've created with Anvil and explained in detail exactly the features that make some extraordinary productivity possible, I've suggested how Meta might benefit from features that provide hope for comparable results, or at least have a discussion about how the perceived need for those features can be offset or replaced by better designs you have planned for Meta. I've always been supportive and respectful of your ambition and your goal to create an effective tool, based on the values that I do agree with, and our shared experiences using Rebol. You've only ever responded negatively, without any positive demonstration of what you're building and how it may be interesting to a potential supporter, and in the end only mocked those efforts to share some perspective and insight - and you wonder why there are naysayers? I've always appreciated your intentions and your work, and I've been vocal about why I think what you're doing has value. I know how difficult that road must be and I hope you're successful :)
posted by: Nick 4-Jul-2024/4:37:25-7:00
Your message remains extremely ambivalent. I can't act on it. Once more, I will make an effort for those who concretely contribute to Meta.
posted by: Kaj 4-Jul-2024/4:58:31-7:00
You've never shared any way to contribute. Just a few functions which you asked if I'd be willing to test. I compiled and tested those. I'm interested in the idea of an open source Rebol-like replacement, but you haven't demonstrated anything else to dig into. I would have been interested in building an AI model to help support and learn Meta, but your interactions here have been mostly scolding and condescending. That's certainly not in a way to invite someone to contribute. I don't have any interest in helping at this point because you haven't shared anything interesting to help with, and you haven't been kind or even friendly.
posted by: Nick 4-Jul-2024/9:38:58-7:00
Meta has been Turing complete since its first months, you can do anything with it. It is partly REBOL compatible and tells you when it is not, so I figured you know what to do with it. You twist everything I say negatively, no wonder you experience it negatively. I can't look into your head to see why you do that.
posted by: Kaj 4-Jul-2024/10:02:35-7:00
"I suspect Nick has trained an AI on regurgitating his own posts. :-) I should train one to answer him without spending time on it." "You are still overestimating AI" "You have accepted that you want to exchange your horses for tractors, but now you're stuck in the mindset of tractors with reigns, instead of tractors with steering wheels. We know how that went." "All those objections against Meta and REBOL that your brain and those of others constantly generate" "This is a great opportunity to inject REBOL-like technology, certainly when greatly improved. It boggles my mind that you of all people argue against this and consider it futile." "In any case, if there is one thing we got used to in our REBOL time, it's naysayers, so I certainly won't let them keep me from my path." "Please stop creating strawmen and putting words in my mouth" "I'm going to stop discussing with you, because it costs me too much time and doesn't lead anywhere" "It only slows the project down, and would be a self-fulfillment of your prophecy that REBOL technology is somehow the most powerful and at the same time the most irrelevant." "Your message remains extremely ambivalent. I can't act on it. Once more, I will make an effort for those who concretely contribute to Meta." "You twist everything I say negatively, no wonder you experience it negatively. I can't look into your head to see why you do that."
posted by: Nick 4-Jul-2024/16:07:35-7:00
This has nothing to do with language design and implementation. I'm sorry you feel this way, but I have made it clear before that I don't have time for this and will disengage: language.metaproject.frl#community
posted by: Kaj 4-Jul-2024/19:48:49-7:00
I'm just here sharing thoughts I'm interested in and experiences that have had a positive impact related to software development, and comparisons with my experiences using Rebol. I haven't asked personally for any of your input. I'm not sure why you're here taking part in discussions you're not interested in. I haven't addressed any topics to you. You just keep joining in and complaining about how you disagree. That's fine, I'm happy to explain why the things I express aren't wrong for me, but you don't have to announce that you'll disengage. I never asked you to engage. I wish you the best with Meta - I mean that genuinely. If I continue to write here, it's only because it's a place to express some thoughts, and I do occasionally hear from others who are interested. Sorry you're so upset that I'm sharing thoughts you're not interested in - not sure exactly what you want or expect by taking part.
posted by: Nick 4-Jul-2024/20:25:09-7:00
If you fear the ball, don't play ball.
posted by: Kaj 5-Jul-2024/4:23:27-7:00
That sounds like a line from a Will Ferrell movie.
posted by: Nick 5-Jul-2024/6:47:52-7:00
REBOL was cool. It still is. I don't get Meta. I read this "the compiler is currently written in REBOL 3." So what is the advantage of Meta over Rust, Go, V, Nim, Zig, or even D? If someone goes to code in any of the aforementioned, AI can assist in code dev. It is doubtful any AI can assist in Meta. I dl'd it, chmod'd it. And then it spewed a splash screen of not useful info. No REPL, no point. Why should I or anyone bother to learn language that is not better than REBOL and more importantly, try to convince people to spend dollars on projects on something obscure that misses understanding the design of what allegedly inspired its maker? Way too many of the "REBOL community" simply did not understand REBOL at all during the years of its active life. They do not understand it still. They will go to their graves not understanding it. Carl did not create REBOL as a language competitor to Perl, Python, Ruby, (and later node.js Javascript) and certainly not one to compete against C, C++ or Java.
posted by: Stone Johnson 17-Sep-2024/21:11:51-7:00
If you think REBOL is cool, I would expect you to like a language that is very close to REBOL but has qualities similar to Rust, Go, V, Nim, Zig and D, that REBOL lacks. That means there's not much extra for you to learn to enjoy those extra qualities. The "splash screen of not useful info" is just the standard usage info that any proper command-line program is supposed to provide. There is no reason that AI could not assist with Meta like it assists with other languages. I'm having reasonable results with it. You have to ask, if REBOL is so superior and so useful, why did not even its own community understand and use it properly according to its own creator, and why did it perish? Why is Meta achieving improvements of two to three orders of magnitude over REBOL by using C? Could it be that "the community" doesn't understand Meta?
posted by: Kaj 18-Sep-2024/9:55:05-7:00
In your own words: "Programming is inherently hard, but I do agree that it is usually made more complex than it should be." ~ Kaj > Programming is easy. Programming languages are poorly explained owing to the misuse of English by comp sci profs, most of whom have never worked real jobs in their lives. Comp Sci departments since about 1988-1990 have avoided starting with Von Neumann architecture explainers for intro courses, which end up being the most taken ones by majors and non-majors alike. Thus students grow up not knowing about computer = state machine with succession of states = direct RAM manipulation. All of that is abstracted away in "high-level" languages—they have even engaged in revisionism by calling C a "low-level" language; it is not; it has been a high-level language from its start. You know that you are dealing with weak-minded pedagogy when you come across these kinds of vacuous phrases: "Everything is an object." "Everything is an expression." Shamefully, nearly all parrot such expressed idiocy without wondering what that means, without connecting it to internals. If only they knew Von Neumann and understood RAM direct languages first, i.e., C, Pascal, they would know comp sci. Anyway, Comp Sci departments pivoted to Visual Basic, Python, Java and Javscript over the years to placate Big Tech / Silicon Valley VCs. That is why the state of things are terribe. "The current version of Meta is written in REBOL 3...Meta has a back-end that generates C and uses the C library. Even though Meta is an extensive language design, it is currently a thin layer between R3 and C." > So Meta is a high-level, alternative mini-language for C, more or less. It has a transpiler that converts this mini-language into C. It replaces all of the mini-language declarations into C statements. It then compiles the resulting C code. Is that right? --- The docs on your website for Meta are terrible, wordy, lacking direction. The docs read like someone who has bipolar has written those, to be blunt. Few have time to decipher someone's vanity project.
posted by: Stone Johnson 18-Sep-2024/12:40:52-7:00
One of the things is that as soon as you pass the point of the handling of the logic that guides the actions to be taken, the actions that are needed come from hidden system libraries or other invisible we'll take care of that things. Like GUI for example. You use Qt or wxWidgets or imGUI or GTK. Then you call those functions from those. But shouldn't there be a way to manipulate those pixels on my screen with just plain C code? Perhaps my OS would not be very happy with me doing so.. but I would be happy. And if I read "everything is an object" I know that will not be my language. Such a language could use up to 28 bytes for a simple integer. Treat the this according to what they are supposed to be.
posted by: Arnold 18-Sep-2024/13:22:47-7:00
"But shouldn't there be a way to manipulate those pixels on my screen with just plain C code? " Yes, that is called GTK. GTK is written in C. GTK widgets are essentially C structures that contain data and functions. These functions interact with the window manager, which in turn communicates with the operating system to handle tasks like drawing, event handling, and input.
posted by: Stone Johnson 18-Sep-2024/14:06:02-7:00
Well, in Meta everything is an expression and everything is a method, because that's how it's implemented internally. language.metaproject.frl#features Not sure bipolar vanity documentation is any use to you, but it states Meta is a right-level language. This is a term I introduced to address the problems with the terms high-level and low-level. language.metaproject.frl#how Meta's main backend transpiles REBOL to C. There could also be a backend that transpiles REBOL to Julia. In another thread, I saw you just started working on a transpiler from REBOL to Julia. With your harsh criticisms of Meta, how do they not apply to your own envisioned project?
posted by: Kaj 18-Sep-2024/15:32:57-7:00
"Meta everything is an expression and everything is a method, because that's how it's implemented internally." Isn't Meta a program written in the language of the REBOL 3 interpreter? Does not this program convert your "DSL" that you call "Meta" into C statements? By your own words, did you not say as much? "With your harsh criticisms of Meta, how do they not apply to your own envisioned project?" ~ Kaj Unlike you, I am honest. I said I am writing a TRANSPILER, which is what you have done. I did not claim to create a new language. What you have written is a C Code Generator. A user of your C Code Generator must feed it data that you claim is a programming language, but it is not. What you have created is a set of words to organize as data for a R3 program and that R3 program takes those words as data to create C code. I am upfront about what I might do or not. It is not personal. There is way too much lying in "tech", nothing but lying jargon that lets liars deceive people passing off what they do and sell as "technical" and "complex" and hence why people need them. E.g., THE LIE: Cloud Computing THE REALITY: Time sharing, i.e., rented computing, invented in the 1960s THE LIE: Serverless Computing THE REALITY: Time sharing, i.e., rented computing, invented in the 1960s My time is too valuable to be wasted RATHER RUDELY by people like you.
posted by: Stone Johnson 18-Sep-2024/16:29:51-7:00
language.metaproject.frl#for
posted by: Kaj 18-Sep-2024/18:53:58-7:00
If you had an open-mind, you would be sensitive to the world, i.e., people around you. If your docs were accurate, truthful, intelligent and respectful, your docs would have been written something like this: "What is It?" Meta is a C Code generator. "How It Works" You must learn how to write Meta directives, which become instructions to the C Code generator. Once done, Meta will compile your C code into an executable program. "Why?" Meta exists for those who find C too hard to understand to write programs written in C but who need the speed of programs written in C. # Instead, here are snips of your docs, which have many words but do not explain your product at all. https://language.metaproject.frl/#what -snip- What Is It? Programming languages bridge the gap between humans and the electronics of a computer. The electronics of a modern computer are often referred to as 1's and 0's, corresponding to the states of the electronic switches. This is already a language, a mathematical notation for on and off. Humans, on the other hand, communicate in natural languages. Programming languages are a mix between natural language, usually English, and mathematical notations. The gap is so wide, that many different programming languages have been designed. Meta puts the balance closer to the human than most other programming languages. Natural languages evolved together with the human brain. Your brain is well suited to process language, so a programming language closer to natural language will make writing and reading software easier, as long as it is still mathematically precise enough for the machine. If you learned an extra natural language later in life, you will know that it is daunting at first, but it becomes natural with practice. The same is true for learning a programming language, but it is easier if it's closer to natural language. If you already know a different programming language, your brain will have to get used to the concept of a programming language using more principles from human language. -snip- https://language.metaproject.frl/#how -snip- How It Works In spirit, Meta is a descendant of the REBOL and Logo languages, but with performance close to C. Meta is mostly inspired by REBOL. It is not meant to be compatible with REBOL, but it will eventually be quite close. However, it is not complete yet, and there are many subtle differences to optimise the language and extend its reach. REBOL is the brain child of Carl Sassenrath, of previous fame as the chief designer of the innovative Commodore Amiga operating system, the first consumer multimedia system. REBOL was designed to enable the creation of Domain-Specific Languages (DSL's). Because REBOL DSL's use a different grammar than, but the same lexical syntax as the general-purpose main language, they are called dialects. They are executed in the REBOL interpreter. Dialects can not only contain program code, but also data formats. Because code is just a data dialect, it can be processed as data, allowing the language to manipulate its own code. REBOL inspired the creation of the popular JSON data dialect of JavaScript (The JSON Saga from 21:45). One of REBOL's hallmarks is a dialect for cross-platform definition of graphical user interfaces. In this way, programs are written in a combination of the main language and applicable DSL's. REBOL has a human-friendly syntax of great clarity and is highly productive. It has been measured to be the most expressive general-purpose language. When the general-purpose REBOL dialect is not optimal for a certain task, REBOL supports creating a special-purpose dialect that is optimal. This way, it is not needed to revert to entirely different DSL's that would cause a mismatch with the language. Creating dialects of both program code and data is so smooth, that it can be done routinely with small granularity. Programs will be built up out of dialects, allowing to approach the essential complexity of the task at hand. -snip- https://language.metaproject.frl/#why -snip- Why? Why make the effort to learn a new language? Software development is the process of translating human ideas and goals into instructions that a computer can execute. This is typically done in multiple steps that result in multiple layers of software, each layer a step closer to the machine and larger than the previous layer, because it is more detailed. We describe the design and specification of the software in human language. When the instructions for the machine are closer to the human language specification, fewer steps and layers are needed. You become more productive, and will have a competitive advantage compared to others who don't make the effort and stick with less expressive programming languages. It is also more fun and motivating. It is known that the number of lines of program text a software developer can write per unit of time is largely independent of the programming language. Therefore, a language that can express more concepts in the same space - while still being readable - will make you more productive. The software will be smaller, less complex and of higher quality. It is known that, other factors being equal, the number of bugs in software is proportional to the number of lines of the program text and related to the complexity of the software. From security engineering, we know that Trusted Computing Bases (TCB) should be kept as small as possible to improve security and safety. The cost of software development and maintenance will be reduced. Because your brain capacity is limited, and there is also a limit to how organisations can stretch this limit by having multiple software developers work together, reducing the size and complexity of the software means that you can take on larger projects than before. The young field of computing science has been struggling to establish a reliable software engineering discipline comparable to other fields of engineering. This struggle is not over, as any user of computer devices can attest to. Complexity does not equal sophistication. Reducing the complexity of software and its development process to improve its quality, reliability and safety is of general concern for society. The language in which stakeholders communicate should be brought closer together. A human-friendlier language for software, both program code and data, can not only bring the machine closer to the programmer, it can also bring the user who commissions the software closer to the developer. A friendlier specification language will enable more end users to collaborate on formal specifications with the developer, reducing confusion about their needs. -snip- It is not personal. Your project has nothing to do with REBOL. Passing it off as such is deceptive. Merely because you wrote your code generator in REBOL does not make your directives language a new kind of REBOL. Have you written a POSIX compliant kernel with it? Have you written device drivers yet? How is Meta better than merely learning to master C itself?
posted by: Stone Johnson 19-Sep-2024/10:11:47-7:00
Meta is not REBOL indeed. It is inspired by and created using R3. As stated. Your observations about F00 are accurate, that turned into an endless waiting game with the wrong priorities. You forgot to mention the hostile attitude but you may not have experienced that, you have not asked for 64 bit support I guess. Carl meantime left the keys to the repo with people that already had turned their backs on the language. I tried to contact all of them to persuade them to hand over the repo ,not to me but to anyone they trusted enough that would care to pull the cart. But the one that did react pointed back to Carl, who does not react. REN-C is a moving target project with a lot of experimental elements, and bridging the gap between REBOL and the world of C. Interesting at times, academic at other moments. I had fun using it. I had a less Hostile (pun intended experience here than with F00 (yes I do not use that name directly). Meta is some sort of C generator, with a much much human friendlier syntax. It has a lot of potential and the limitations make a nice challenge to me to see if I can push its bounderies while I need to bend my skills to program solutions to well known or lesser know programming tasks. I think Meta is very good at CGI (Common Gateway Interface) programming. Sourcecode is readable and maintainable. I used only Meta for my documentation pages. (Disclaimer) I am not part of the development team of Meta. User and tester. The main (or maybe the only) user of my documentation too.
posted by: Arnold 19-Sep-2024/16:44:24-7:00
Arnold - GPT and I used your docs :)
posted by: Nick 19-Sep-2024/17:45:42-7:00
People should create things. Meta can be useful to someone. Perhaps Ren-C too can be useful to someone. Time is not to be wasted trying to read through people's existential crises being acted out on the Internet, however. I read this: https://altscript.com/?page_id=16 And see that Carl is fighting the last war. He seems to believe that if he makes his new language a tad more like Javascript and Python, this time, he will be lauded a hero. Even the reversion to zeroth based indexing is an error. Interpreted langs are not RAM-level langs. LuaJIT and that Julia is JIT has set the bar high. No one needs a slow interpreted impure FPL. There are enough FPL langs out there already. People need a stripped down JIT version of REBOL taking out the GUI and Internetworking, but replacing those with libCURL and something like IUP over GTK, and making it easy to interface with C function.It needs to be open source with Carl the BDFL. Carl was on the right track for IoT long before others were thinking about it. But there is no reason to reinvent the wheel when other projects (e.g., libCURL) do things better and have a bunch of maintainers.
posted by: Stone Johnson 19-Sep-2024/21:33:07-7:00
Zero indexing is the biggest mistake in computer programming language design. (Imnsho). "Computer scientists/programmers" are starting to count at 0 is the biggest lie. (Proof: the length of a string is returned as the correct counted length, not 1 less as would be when they really started their count at 0).
posted by: Arnold 20-Sep-2024/1:34:13-7:00
@Arnold exactly! No one counts including zero. Zero is a placeholder for nothingness. For RAM-restricted languages, it is a design decision error to use zeroth indexing. Likely, zeroth indexing originated from assembly language and early systems programming, where array indexing directly corresponded to memory offsets. In these low-level contexts, the first element of an array is at the memory address of the array itself (offset 0). Adoption in higher-level languages: Languages like C adopted this convention from lower-level programming, and it propagated to many subsequent languages. Since C, a high-level language, though wrongly parroted by many as a "low-level" language is a RAM-level language, and hence a memory-centric langauge. C keywords are syntactic sugar above an op code language, basically. Yet, any maker of a RAM-restricted language, which all interpreted languages are, who adopts zeroth indexing, he or she errs. The purpose of RAM-restricted languages is to abstract away computer architecture details to let programmers solve real world problems.
posted by: Stone Johnson 20-Sep-2024/11:40:30-7:00
|