8 ms·
What you learn by making a new programming language
- IWeldMelons 2y agohttps://old.reddit.com/r/ProgrammingLanguages/ https://old.reddit.com/r/ProgrammingLanguages/ is a treasure trove for those who wants to engage in the quest.
- lallysingh 2y agoEvery program expands until it becomes a compiler or checks mail. Emacs's sin was doing both.
- jpgvm 2y agoAngry upvote. Maybe it's true failing though was stopping short of becoming the OS.
- yjftsjthsd-h 2y agoIt's not its own kernel, but emacs can run on Linux as PID 1, at which point it rather seems like it should count as an OS. Given its affiliation, emacs/Linux probably still counts as GNU/Linux, but still...
- 01HNNWZ0MV43FF 2y agoI say if it's not running as the kernel, it's not an OS. Otherwise you could "boot to" any terminal app. Nano? OS. Cat? OS. Echo? Believe it or not, OS. Good grief.
- randomdata 2y agoWhat we do know is that the S in OS stands for system. A kernel alone does not a system make. There needs to be other components to round out an entire system. Why does Emacs not fit the bill?
- kbolino 2y agoPID 1 has some unique responsibilities. In particular, any process that gets orphaned when its original parent exits is automatically reparented by PID 1, and so the process running as PID 1 must watch for unexpected SIGCHILD and clean up the zombies with waitpid or similar.
- striking 2y agoOne could argue (many have, in the form of a tedious copypasta) that Linux is not the operating system because an operating system needs both a kernel and a userland. Why wouldn't `nano` count as a userland in the same way as anything provided by a typical distro today?
- deleted 2y ago[deleted]
- yjftsjthsd-h 2y agoWell, cat and echo can't run other programs, so no they wouldn't qualify. I'd have to check the nano docs to see if it can spawn other programs, but I'd be shocked if it's any good at it. In stark contrast, emacs can and is good at running programs, including interactively in terminals that it manages itself. I'm happy to agree that the kernel is a big part of the OS, but a kernel alone does not an OS make.
- deleted 2y ago[deleted]
- saghm 2y agoMaybe a potential use case for GNU Hurd?
- lallysingh 2y agoThere are no use cases for Hurd.
- shortrounddev2 2y ago> Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp https://en.wikipedia.org/wiki/Greenspun%27s_tenth_rule https://en.wikipedia.org/wiki/Greenspun%27s_tenth_rule
- efilife 2y agoIs this a joke I'm not getting? Any examples of such software?
- steeleduncan 2y agoI think the point is that - you write some piece of software - then you add a straightforward configuration language - then you add variables because you don't want too much copy/paste - then you add if statements to allow conditional configuration - then you add loops because you are sick of seeing configuration that consists of unrolled loops - ... At some point your configuration system is Turing complete, so could be considered a programming language. However it was never designed as such, so it is not a horrible one TeX would be a good example of this. Ansible playbooks are (I believe) Turing complete, and YAML itself has such a huge spec, that if it isn't Turning complete and/or self aware already, I can't imagine it'll be long before it is
- AtlasBarfed 2y agoBut if configuration is the example, a full fledged Lisp program as your configuration is TOO MUCH. Do you want configuration files functioning as malware vectors? And what about Lisp is enduser friendly? Configuration files are intended to address people that are programming-lite to poweruser-not-programmer level. Lisp s-expressions are recursive tree structures with prefix ordering, which is a "great filter" for the IQ of users. Greenspun's law, being a joke of Lisp users, actually indicates the inability of the Lisp community to understand why their language is niche to ultra-high-IQ people. If syntax patterns, formats, and programming languages survive for decades, there is a grassroots practical reason for their existence that ironically the ultra-smart all-knowing Lisp hacker just can't properly fathom.
- bunderbunder 2y agoIn fairness, this is also every modern Web browser's sin.
- rzimmerman 2y agoI spent time on a compile-to-JS language and found it very rewarding: https://github.com/rzimmerman/kal https://github.com/rzimmerman/kal This was before async/generators were added to JS and callback hell was quite real. I wanted to shape it in the way I’d learned to program in Visual Basic. Very human readable. The result is no longer useful, but it was a fun goal to have the compiler compile itself.
- pansa2 2y agohttps://news.ycombinator.com/item?id=41234863 https://news.ycombinator.com/item?id=41234863
- JohnMakin 2y agoOne of the most fundamental experiences I ever had was attempting a graduate level course at the end of a long series on compilers. You really get an eye opening view of how languages are translated into the language the machine understands. After going through a few toy languages and then finally tackling creating a simple JVM, here is the #1 thing I would go back to myself and scream until I was blue - Make your initial grammar SUPER simple. Like, don't go guns blazing and try to add all these cool features you saw in another language or always thought about. Start stupid, stupid simple, get that working, then build on top of it.
- lioeters 2y agoThis is why the Lisp syntax is a great candidate for an exercise in making your own language. For example, Make a Lisp. https://github.com/kanaka/mal https://github.com/kanaka/mal It's simple to lex and parse into an abstract syntax tree, so you can get on with exploring more interesting aspects of programming beyond the mere syntax. (Not to say that there aren't interesting aspects of grammar and innovative syntax, but those can probably be explored later on as macros.) Last time I created a toy language, I implemented a C-like infix syntax but still used a Lisp evaluator at its core from a previous project.
- JohnMakin 2y ago> It's simple to lex and parse into an abstract syntax tree, There are some "cheats" for this, tools like ANTLR etc. that are good at generating parsers from a particular grammar. But of course, I think a beginner should try to do this on their own to get a feel for it. Personally, for me, I do find writing parsers a little tedious and not the most fun part of making a language.
- whartung 2y agoFor many simple languages, the most complex construct is the expression. Lots of things come to light there. Lots of recursion/fun with stacks, operator precedence, the type system, parameter passing. Pretty much a good solid chunk of language is wrapped up in expressions. Get expressions working, and the rest starts to readily fall into place.
- AnimalMuppet 2y agoNo. No, I really shouldn't. Yes, I might gain a better understanding of how things work. I can do that lots of ways; others may be a better use of my limited time. (For that matter, doing other things that don't give me a better understanding of how things work may be a better, more valuable use of my limited time.) Yes, I could get a language that fits what I need better... in theory. In practice, it would be buggy, inconsistent, and incompletely implemented. It would not actually fit what I need better than existing languages.
- pc86 2y agoHow is using a language that is buggy, inconsistent, and incomplete any better than use a better language to write an app that is buggy, inconsistent, and incomplete? Checkmate.
- jbs789 2y agoUmm if we are looking for analogies. I would prefer a castle built on rock rather than one built on sand.
- PhilipRoman 2y agoBetter than a sandcastle built on a rock, I suppose...
- TeMPOraL 2y ago> rather than one built on sand Well, that is exactly what your app is if it's built on modern "state of the art" tooling - you're probably pulling in a thousand trivial dependencies; every day, something gets updated, and you're rolling dice on whether or not your program will build. Writing your own language to build your app in creates a lot of big problems, but not those particular problems.
- AnimalMuppet 2y agoYes, my apps are buggy, inconsistent, and incomplete (as are all apps). But they're less bad than my language would be, because they're my day job, and my language wouldn't be. So, not checkmate at all.
- napierzaza 2y agoI remember when I was making music. It was really fun and engaging. Then I learned about microcontroller projects for making my own synthesizer. It was fun and it took me two years to build my synth. At the end of it I had not made music for long enough to have lost the knack, and I was sick of even learning how to use the synth because I was worried I would have to debug it. So I just didn't make music ever again. Why consume yourself with some sub project that goes nowhere?
- tombert 2y agoI've had two projects that end up being "oops, I made an interpreter". It starts innocently enough, you just have a JSON that has some basic functionality. Then you decide it would be cool to nest functionality because there's no reason not to, so you build a recursive parser. Then you think it'd be neat to be able to add some arguments to the recursive stuff, because then you can more easily parameterize the JSON. Then you realize it might be nice to assign names to these things as you call them, you implement that, and now you're treating JSON as an AST and you're stuck with maintaining an interpreter, and life is pain.
- gavinhoward 2y agoSee also the Configuration Complexity Clock: https://mikehadlow.blogspot.com/2012/05/configuration-complexity-clock.html https://mikehadlow.blogspot.com/2012/05/configuration-comple... . This is why I have a separate config language and code language. My config language is essentially JSON with newline separators and a first-class binary type (base64). I added little else. When I get the temptation to add code to it, I just pull out my other, general-purpose language instead.
- aapoalas 2y agoI'm basically in charge of maintaining and developing a product that (on purpose) started at 9 o'clock. We've resisted the call to implement loops and such in our DSL but I can hear the wolves howling and I doubt I have much longer...
- pxc 2y agoI think the world needs programmable config langs because slinging YAML and JSON quickly becomes miserable (as is extending them through templating alone) and general-purpose programming languages usually have shitty ergonomics for writing configuration. The only question in my mind is whether our common config langs should be Turing-complete (e.g., Nix, Nickel, Jsonnet, Pkl) or not (e.g., HCL, CUE, Starlark, Dhall), which I think can only be determined through experience over the long term.
- cvoss 2y agoI've dreamed about making my own language for about 10 years or so. Started out just messing around. My vision for what it would be and its purpose has changed over time. About 2 years ago, I "got serious" about designing and implementing it, though that doesn't mean I've spent a serious amount of time on it yet. But it's happening! It's a language for the domain of writing and verifying formal proofs. Basically, I didn't enjoy the experience of working with the couple of proof assistants I tried, so I'm doing my own thing. My objective is to create a language where I can document "everything I know" about math, if for no other reason than to prove to myself that I know those things, and to return to that knowledge if it ever slips away. It's so much fun!
- alexwashere_ 2y agoSounds neat - got any example code you could share?
- cvoss 2y agoNot ready to do that yet. But I hope so one day!
- PodgieTar 2y agoI made a little toy compiler for a university project many years back, and I agree with the article - it's quite a nice way to get hands on with syntax and helps you think a bit more deeply about what is actually happening. https://github.com/Podginator/Rattle/tree/master https://github.com/Podginator/Rattle/tree/master It used JavaCC, which I found to be a pretty simple way to get up and running. I also worked a job that used yacc to create their own DSL for a piece of software. Same thing, really. Easy enough to get up and running, and messing around with.
- elashri 2y agoIt is always my dream to write an interpreter for my imaginary language that does provide a more human readable syntax to write scripts. It is basically language that compiles to bash because it is everywhere but I really hate writing bash although I write bash/zsh code a lot. Yes I can use python (other scripting language for that) but this is not cool as writing your own programming language and also you don't always have access to python environment. Bash just runs everywhere (at least for me). It is also my motivation to learn about compilers and how they work.
- morning-coffee 2y agoThe timing of this article is great for me as lately I'm fascinated by the Forth language and the simplicity behind its apparent strangeness. I've been tempted to start playing with similar ideas just for fun. (https://ratfactor.com/forth/the_programming_language_that_writes_itself.html https://ratfactor.com/forth/the_programming_language_that_wr... is a great read, btw.)
- graypegg 2y agoI think maybe a good middle ground is write an interpreter for an already spec'd esoteric language like brainfuck. [0] It's really fun. Brainfuck specifically is great because there's a lot to optimize with only 6 total operations. (An example, multiplication has to be done as repeated addition in a loop, make a multiply AST node! [1]) and you could knock out a (BF => AST => Anything you want) compiler in an afternoon! Bonus, there's a lot of really impressive brainfuck scripts out there. Nothing compares to seeing your compiler take in some non-sense ascii, and spit out an application that draws the mandlebrot fractal. [0] https://esolangs.org/wiki/Brainfuck https://esolangs.org/wiki/Brainfuck [1] https://github.com/graypegg/unfuck/blob/master/src/optimisers/multiplication.js https://github.com/graypegg/unfuck/blob/master/src/optimiser...
- mckn1ght 2y agoSimilarly, I’ve been thinking lately about forking Swift, because there’s a lot I love about the language, but also a lot of, IMO, unnecessary sugar and redundant surface area.
- kstenerud 2y agoI haven't made a programming language (and never will), but I did build a BNF-inspired metalanguage for describing text and binary formats to scratch the itch of trying to describe a binary data format I was developing: The metalanguage: https://dogma-lang.org/ https://dogma-lang.org/ It's even got a syntax highlighter: https://marketplace.visualstudio.com/items?itemName=kstenerud.dogma-v1 https://marketplace.visualstudio.com/items?itemName=ksteneru... The binary format I wanted to describe: https://github.com/kstenerud/concise-encoding/blob/master/cbe.dogma https://github.com/kstenerud/concise-encoding/blob/master/cb...
- zX41ZdbW 2y agoIt will be good to add "Programming Language Checklist" to the references: https://www.mcmillen.dev/language_checklist.html https://www.mcmillen.dev/language_checklist.html
- looneysquash 2y agoAre there some good resources for learning type theory?
- throwaway17_17 2y agoI would suggest Robert Harper's "Practical Foundations for Programming Language". [1] This take a relatively thorough approach to the development of language semantics, with particular emphasis on Type Theory. Addition work on Type Theory is scattered throughout academic work, but Harper is good place to start. The implementation of 'normal' type systems in mainstream languages are for the most part just semi-performant straight forward instances of the more formal algorithms presented in the literature. Searching for lectures by Neel Krishnaswami on YouTube will yield some decent results on developing Type Systems as well. 1 - http://www.cs.cmu.edu/~rwh/pfpl.html http://www.cs.cmu.edu/~rwh/pfpl.html
- Jeaye 2y agoAnyone wanting to work on a new language is most welcome to help out on mine: jank. It's a native Clojure dialect on LLVM with C++ interop and all the JIT goodies one expects from a lisp. jank is currently part of a mentorship program, too, so you can join (for sree) and get mentored by me on C++, compiler dev, and Clojure runtime internals. 1. https://jank-lang.org/ https://jank-lang.org/ 2. https://clojureverse.org/t/announcing-the-scicloj-open-source-mentoring-project/10884 https://clojureverse.org/t/announcing-the-scicloj-open-sourc...
- aeonik 2y agoWere you able to implement transducers at the core of Jank? Or did you end up sticking to the existing Java implementation as much as possible?
- Jeaye 2y agoTransducers, in Clojure, are implemented in Clojure, rather than in Java. In jank, the Clojure source for transducers is exactly the same. For example: https://github.com/jank-lang/jank/blob/a14f4d7c7e8097d5ab5881715d59904adbb5cf1b/compiler%2Bruntime/src/jank/clojure/core.jank#L655 https://github.com/jank-lang/jank/blob/a14f4d7c7e8097d5ab588...
- aeonik 2y agoYou're right, my bad. I was thinking back to when Rich Hickey talked about how he wishes he could go back and bake transducers into the core of Clojure. I can't find the reference right now though. Might be a good Clojure 2.0 thing.
- pclmulqdq 2y agoOne project I started recently was a dice rolling discord bot. Halfway into it, I realized that I really wanted an AST for dice roll expressions to avoid a whole bunch of bugs and special cases, so that project is now mainly a compiler. More seriously, I have been very tempted recently to make a programming language specifically for cryptography, but I am holding off until I can no longer stand assembly.
- norir 2y agoI think many people underestimate how easy it is to get started writing a language. It is a bit like improvising music: it's just one note followed by another note followed by another. Almost any intermediate level programmer can write a program that parses a hello, world program and translates it into the language they already know. Once you have hello, world, you add features. Eventually you realize you made mistakes in your initial design and start over but your second design will be better than the first because of the knowledge that you now have. After enough iterations, you will have a good language that you like (even though it won't be everyone's cup of tea).
- codr7 2y agoYeah, the high stakes are part of the thrill, because it's oh so easy to paint yourself into enough of a corner to have to throw the whole thing away and start over.
- sixthDot 2y agoVery true. Working on a proglang is more like running a marathon than a 100 meters. Another thing that would surprise people is that how few complex data structures or subtil algorithms are required. For example in styx-lang, my little retard baby language, there is literaly no binary searches, no sorting, no hash map, no hash sets, yet it is still fast because actually a compiler most of the time only has to deal with very small vectors (5 parameters, 10 enum members, 15 statements in a body, etc.)
- allanren 2y agoSeems the future of programming language is natural language
- deleted 2y ago[deleted]
- TrackerFF 2y agoIn woodworking you make tools all the time, namely jigs. So much of woodworking, whether it is making cabinets, musical instruments, art, or whatever involves making your jigs, templates, and a bunch of other stuff. Hell, even larger projects like complex workbenches. You rarely make actual tools, though. It's unheard of that a woodworking goes on to make their own router, band saw, planer, jointer, chisels, etc. - but you can learn a ton by starting with the absolute bare basics, before investing a ton in expensive tools. Kind of makes me wonder where this analogy fits (if at all) in the world of software engineering: Some tools are probably either too complex, or don't really make sense making, if you're going to use it to actually build something. I mean, it is a good intellectual exercised for the curious, and you pick up a bunch of things underway, but at some point it is probably good to ask yourself if your time is better spent on something else.
- news_to_me 2y agoThis is so true. I feel like I've learned more about programming in the last two years making Cassette[1] than in the past decade of professional software development. Every developer should make a language at some point. I want to see everyone's weird, half-baked languages! I want to hear about what other people struggled with, and the tradeoffs they've made! [1]: https://cassette-lang.com https://cassette-lang.com
- giancarlostoro 2y agoThis looks neat. I tried VB.NET a few weeks ago, and felt like it was mostly pointless since almost all resources are done in C# and so you have to translate from C# to VB.NET anytime you want to do anything, which can be a bit of a pain. But one thing I really liked was the "begin end" type of code blocks.
- DeborahWrites 2y agoEvery ~3yrs an article like this floats across my screen. Every time, I think it sounds SO fun. And then do nothing. Given this time I have the excellent excuse of a new job, I don't expect to break the trend this year. But one day . . . one day . . .
- bsnnkv 2y agoMy version of this was building my own tiling window manager (I also ended up building my own hotkey daemon with its own syntax and parser along the way)
- Doches 2y ago> It's special that we make our own tools I've always taken this to heart, but not necessarily with programming languages. Any piece of software that helps run my business that I can reasonably make and maintain myself, I do. I build my own CI/CD app, orchestration/deployment tool, task planner, bug tracker, release note editing & publishing tools, blog editor, logstash/viewer for exceptions, etc. Does building (and especially maintaining!) all of these tools take up a lot of time, and distract me from the primary business of building the software that I actually sell? Sure, of course it does. But it also keeps me fresh and forces me to expand the scope of ideas that I regularly work with, and keeps me from becoming "that guy who makes that one app" and who isn't capable of moving outside of his comfort zone. And while that doesn't (yet) extend to building my own tools in my own languages, it certainly does extend to writing my own DSLs for things like configuration management or infrastructure. My tools may be homerolled and second-rate, but they're mine (dammit!) and -- this part is important -- no one can take them away from me or catch me out with a licensing rug-pull.
- cardiffspaceman 2y agoLandin wrote a paper called, "The next seven hundred programming languages."[1] The paper predicts quite a bit of the present. So I named my programming language, DCC. [1] https://www.cs.cmu.edu/~crary/819-f09/Landin66.pdf https://www.cs.cmu.edu/~crary/819-f09/Landin66.pdf
- atum47 2y agoLong time ago I was stuck at the airport and I end up writing a interpreter in Python. I stop the project at arithmetic, so, basically a fancy calculator. After that I saw a really interesting video about Shunting Yard algorithm, so I gave that a got as well [1]. At some point, I want to try to write a programming language, I know a little bit about assembly but it is most theory; haven't done much programming using it (only basic stuff, back in college) but I find it fascinating. 1 - https://github.com/victorqribeiro/shuntingYard https://github.com/victorqribeiro/shuntingYard
- mjhay 2y ago> It will be a bad language, and that's okay This same advice could be applied to most hobbies. It doesn't have to be good, and it certainly doesn't have to make money. It just has to be fun and rewarding. If you learn something, even better. > Go Forth, make something fun *golfclap*
- stevekemp 2y agoAnd here's my tutorial FORTH, based upon a thread from hacker news: https://github.com/skx/foth https://github.com/skx/foth Forth is always appealing, whether literally, or in puns.
- mjhay 2y agoVery cool, I'll check it out. I've been meaning to give Go a spin.
- loscoala 2y agoI also came across FORTH through hacker news. I ended up developing a compiler that can translate FORTH into C. For the interested reader: https://github.com/loscoala/goforth https://github.com/loscoala/goforth It was a great experience and I can only recommend trying to develop a programming language yourself.
- flobosg 2y ago“Beautiful Racket” comes to mind: https://beautifulracket.com/ https://beautifulracket.com/
- tunesmith 2y agoI've had a pet idea for a long time that is nonsensical but I still wish existed. I'd like a programming language that encodes the "why", like forces you to compile in the business reason for the code in question. And then it'd automatically survey you, and if your prior business assumptions are no long true, then compilation would fail, forcing you to remove or rewrite until the code fits your "why" again.
- kabdib 2y agoWrite the debugger first. Or at least, very early. You're going to need one anyway . . .
- danielvaughn 2y agoLast year I tried to build a language and I wholeheartedly agree - it's amazing how much it teaches you. My particular language was merely meant to be transpiled to other languages, so I didn't get into the runtime or compilation stuff. But I quickly learned why braces and ignoring whitespace is so important. I also had to think extremely hard and carefully about the exact syntax and what each token meant. It's a very rewarding intellectual activity. One thing I'd like to add is that even though you can totally write your own parser, it's an absolute joy to use Tree-sitter: https://tree-sitter.github.io/tree-sitter https://tree-sitter.github.io/tree-sitter I plug it every time I get a chance. It makes refactoring your grammar incredibly easy, and lets you just focus on your syntax.
- liamilan 2y agoI built Crumb (https://github.com/liam-ilan/crumb https://github.com/liam-ilan/crumb) a year ago, before starting university. It completely changed the way I conceptualized programming as a whole. You start feeling deja-vu every time you open a new language, and the "ah-ha!" feeling you get when you see something in another language you had to think about when implementing your own is super rewarding. A year later (this summer) I used Crumb to land my first job at a pretty cool startup! The payoff was way more than I could have ever expected.
- codr7 2y agoHighly recommended! And I do mean new. Because having an opinion is good, and validating it is even better. I find it to be mostly educational, humbling and fulfilling; but occasionally VERY frustrating because there's just no end of things to fix and improve. https://github.com/codr7/sharpl https://github.com/codr7/sharpl
- giancarlostoro 2y agoNice, I really want to see a Clojure equivalent on .NET where its a Lisp language, but it fits in with its ecosystem.
- neonsunset 2y agoThere is https://github.com/clojure/clojure-clr https://github.com/clojure/clojure-clr (I cannot testify for usability, the project is alive but it seems to need more contributors to really get going)
- Lerc 2y agoI still hope to make one, but a combination of ADHD, depression and so many things to do and learn keep getting in the way. At my current rate I'll know everything and be ready to get started on the day I die. But my feature wishlist is First class functions, Garbage collection, Transparent parallelism, Explicit parallelism, Type inference with strong type consistency, Dynamicly typed by annotation, Operator overloading (every language should either have vector/matrix operators or the ability to build them) And a few more that I can't recall just now. I've made it hard for myself. Failing that maybe just a hacked JavaScript without implicit type conversion between objects/strings etc. (the source of most "Wat?"), frozen array tuples, operator overloading. Implied "this." on identifiers defined and used inside class definitions.
- CleanRoomClub 2y agoAs someone with similar mental health barriers, what strategies do you employ to overcome them?
- Lerc 2y agoI have not overcome them. Currently on dexamphetamine, my partner has noticed an improvement, me less so. Have been productive for the last week or two so making the most of it. List making, planning, routines, and pretty much anything that follows someone saying "You just need to ..." Doesn't work for me, or for any of the other ADHD sufferers I know of.
- maxbond 2y agoI wouldn't say I've overcome anything either but I'll throw in my two cents. Personally I have accepted a.) most of my projects will be unfinished when I die and b.) if I am just staring at an empty terminal session and nothing is happening, it's not going to help to heap abuse on myself and feel guilty for not being productive. The only path forward will involve accepting that work isn't happening and doing whatever it is I can find a spoon for. On really bad days, that means just going to sleep. The sooner I accept that the sooner I will find a way to the other side, and nothing is getting done before then. Reading about Taoism and Zen has helped. In terms of productivity, I have appreciated the book The Creative Act: A Way of Being by Rick Rubin. It's an attempt to apply Taoist ideas in a modern context, but where a Taoist text would say "the sage does XYZ," Rubin says "the artist." It's about finding a way to continue being creative when doing so is painful. Medication and therapy have been a mixed bag for me, but my friends have had to go through multiple medications and therapists, so I remain optimistic. I'm trying to get into the habit of exercising and meditating. Wishing the best for you both.
- mikewarot 2y agoMaking a whole new software/hardware ecosystem is what happens if you keep going... behold... the BitGrid. Turing Complete, Actually performant, and possibly crazy enough to work [1] https://esolangs.org/wiki/Bitgrid https://esolangs.org/wiki/Bitgrid [2] https://github.com/mikewarot/Bitgrid https://github.com/mikewarot/Bitgrid And my latest attempt at things, because Pascal isn't popular enough, includes C and a Web emulator [3] https://github.com/mikewarot/Bitgrid_C https://github.com/mikewarot/Bitgrid_C
- lifeisstillgood 2y agoI just realised I went down the rabbit hole yesterday. I needed to track work to be done on my work project - so I started writing Todos. And then grepped them, and started extracting things from the todos - like a dotted name (foo.component.feature) and now I have realised it’s a DSL and I should have used lexx not regexes and … it’s a good idea through !
- systemBuilder 2y agoWhen I was in high school I learned about BNF and so i wrote a program that let you type in BNF rules and then it would run a recognizer on an arbitrary string to decide if the string met the BNF rules. I don't know if I could write that again, but it was a definite eye-opener and I learned a ton from that project ...
- martyalain 2y agoI learned that all programming languages come from the lambda calcul, created in the 30s, ten years before the computer era, a simple text rewriting machine using nothing but 2 operators, abstraction and application, working on a sea of words. Something like the Yin and Yang of TAO. More in http://lambdaway.fr http://lambdaway.fr .
- bitbasher 2y agoI've been thinking about programming languages a bit and I agree. I was looking at Odin and some other languages. I find it fascinating a language can be purpose-built, like Odin. It's a language that was built for game development. It got me thinking what a language built for web development may look like. It also got me thinking, we have 'game engines' which are tools built around the same idea. Why don't we have web-CRUD engines? Sure we have frameworks, but we don't have entire purpose built applications for building fullstack applications.
- Moon_Y 2y agoSimilar to woodworkers making their own tools, as programmers, we have the ability to create everything from operating systems to tools. This privilege is rare in other fields, allowing us to get closer to the tools we use. This autonomy enables us to have a deeper understanding and mastery of the tools and technologies we rely on.