> We built Repl.it to make it easy to explore and learn languages and programming paradigms. We were, however, surprised by how slow-moving the programming language space seems to be. Given how fast software is growing, shouldn’t we see more innovation in programming languages?
Isn't this like saying: "the construction industry is growing fast, how come there are no new hammers being invented every other week?"
I, too, love to learn new languages that introduce me to new ways of thinking and don't want that influx to dry up, but I don't think it is necessary from the perspective of programming as an industry.
I've been coding for almost 20 years now, I definitely saw many changes in that time. Languages like Java and C# became huge, scripting languages like Python or JavaScript became not-just-scripting-languages. C went from "The English of programing languages" to "The Latin of programing languages". Then you have a newer generation starting to take over some niches with the likes of Go, Rust and a few others.
If anything what bothers me is not the lack of innovation in programming languages per se but the relative lack of innovation in program representation. We have high res monitors with incredible graphical capabilities but we still mostly just represent code as flat text files. There've been a few experiments to change the status quo, I remember the Lighttable editor making a bit of a buzz a few years ago, but nothing really changed overall. I wish that a big company like Google, Apple or Microsoft attempted something bold in that space.
> We have high res monitors with incredible graphical capabilities but we still mostly just represent code as flat text files
I think the key issue here is that flat text files remain an universal standard, easily handled with commodity tools and editors, often bundled with the OS itself.
Once in a while someone wants to revolutionize code representation (like Light Table, which you mentioned). "What if we represented code as a... flowchart, a graph of nodes, a city, a pie chart, a mind map, $YOUR_NOVEL_IDEA_HERE? Wouldn't that be great and take advantage of current hardware to the fullest?"
It turns out it's really hard to beat good old flat text at convenience and interoperability with standard tools.
I agree completely, hence why I want a big player that can throw their weight around to try something. You'd basically have to create a whole ecosystem around your fancy new tool.
It's a very tall order for some lone coder in their basement, but it's called Monday for Google.
Well one alternative representation really took off, that one where code is is a dataflow graph, whose nodes are all one-liners on a massive grid. I wonder what led to its success, where so many other interesting ideas have failed?
> I wish that a big company like Google, Apple or Microsoft attempted something bold in that space.
Me too. I tried stirring things up a bit when we were nearing the end of Eve, but nobody bit. This is work that _can_ be done, someone just has to fund it and let it grow without too much interference. The big players certainly have the ability to take care of the first part, not so sure about the second though.
> I remember the Lighttable editor making a bit of a buzz a few years ago
It's hard to believe.. but that was 8(!) years ago now. Time sure does fly.
> C went from "The English of programing languages" to "The Latin of programing languages".
There's still a huge amount of development being done in C.
> If anything what bothers me is not the lack of innovation in programming languages per se but the relative lack of innovation in program representation.
One of the benefits of using text is you get a huge number of tools that work with it, without the things that are par for the course these days like vendor lock-in. It'd be interesting to see new efforts in this area, but there's a huge barrier to this.
>There's still a huge amount of development being done in C.
I know, I do some of it! My point was more that 20 years ago in my experience you couldn't call yourself a coder if you didn't know some C. Nowadays I find that most novel coders know about it but can't really write it "fluently".
Many people still know, study and even use it, but it's not quite as ubiquitous as it once was.
> One of the benefits of using text is you get a huge number of tools that work with it, without the things that are par for the course these days like vendor lock-in.
That’s true, but you can store code in flat text files even if you don’t represent or manipulate it as plain text.
Computers got fast enough that applications can now be usable and useful despite doing things in massively inefficient ways. That inefficiency is wasteful in terms of CPU cycles but it can also be helpful in terms of development cost as it means developers can spend less time on problems like designing efficient data structures. For example, an inefficient JS application that uses reference passing is much easier to write than an efficient application that requires the developer to manage pointers and memory addressing. That's a good thing for the 99% of software that runs on CPUs that are idle 98% of the time, and a terrible thing if you have a CPU-bound programme.
That inefficiency has a beneficial side effect too - it eliminates whole classes of bugs that come from devs doing hard stuff.
We have some experiments not so much in changing textual representation but more in visual tools to make use of said high res monitors. Nothing concrete to share publicly yet.
I also wrote recently about how GPT-3 being so good with little training at code generation might make for interesting advancement in programming environments: https://blog.repl.it/codingai
>If anything what bothers me is not the lack of innovation in programming languages per se but the relative lack of innovation in program representation.
Exactly, We don't need a new programming language every month. We need a new IDE every month. I believe there is a lot of space for improvements.
I hear what you are saying. Check out BlockStudio:
www.blockstudio.app
It uses extended graphical rewrite rules, so you define the “logic” for your program by manipulating the objects that define your program. I could write more words here, but visit the link and check out the tutorial.
The reason why I bet internet will win because adoption Of its many protocol is much easy as it is using text not any ftam.
Text win - XML win too verbose and we have Json.
Whilst explore is ok (microbit I use the graphic as it is new but switch to text once i know the command). The horrible windows use click and we still use server as it can scripted, seen, edit. Easily.
We look with 3D graphic but please do not opt for a VR based prog language. Some part of the design may be graphic. But mostly text.
Based on my extremely biased view from HN, Reddit, and Twitter, it seems like nearly every dev has their own toy language project. The number of language announcements and compiler tutorials on HN is astronomical, several of which are from myself.
But it’s not __approachable__, at least not to me. Seems like survivorship bias to point to nearly every dev with a toy language project. I might feel similarly if I finish nand2tetris
I think that's internet in general. HN has 30 slots which change upto 4-6 times a day. That's 120 slots and assuming only 5% of them are show HN: new programming language. It's vastly smaller than the number of software engineers that are produced every year.
> the construction industry is growing fast, how come there are no new hammers being invented every other week?
Maybe not hammers, but there is still a lot of innovation in the basic tools of the construction industry. Look into some of the interesting recent cement innovations, a tool that's been in use since the Romans!
Humans always keep innovating even if the benefits are marginal they add up over time.
I'd say there are still lots of opportunities for language innovation. The increasing reliance on concurrency to achieve performance gains has spurred much of this. People are also looking at languages to simplify formally defined software systems. AI may make it possible for much more terse methods of programming. I'd personally love to see more work done on declarative ETL specific languages.
Same here. I've seen it described as a "Cambrian explosion" of programming languages in the last few years and I think that's right.
The pace of PL changes and new entrants seems to have quickened immensely in the last 5-10 years.
I don't have a view on the right pace of change, but the idea that it's "slow" feels weird.
I have a lot of PLI ideas myself. I have for a long time, but increasingly it feels like there's little or no need for it (sadly!), because the space is crowded with a steady flux of new entrants and new ideas as it is, many of them well marketed too.
Adding more may be fun to do as an individual. PLD and PLI are fun! But it doesn't seem like we lack for contributors in this area.
> One answer could be that programmers are not that interested in thinking about languages. Or that our languages today are sufficient and everyone is happy. But spend a few minutes on any programming forum, and it’ll become clear that a lack of enthusiasm and opinions on languages could not be the reason why we don’t see more programming languages.
Are construction workers constantly complaining about their hammers and not seeing change? If not, then the analogy doesn't really work.
Yes, they absolutely were, and now they/we have nailguns. Screwdrivers became cordless drills, wrenches became impact drivers, etc. Tools and process on construction sites today look very different than they did even 30 years ago. (And that’s after millennia of “hammers”.)
OK, there has been incremental progress in individual tools.
But that's like cutting down visual noise in text files, e.g. with python or haskell, and editors with autocomplete, and faster find tools and version control.
Building is in the early stages of automation, with large chunks pre-assembled in factories (with joinery, wiring, plumbing, etc. all installed), and then fixed together on site. The factories are becoming more automated as well.
Tools for hammering things have existed for hundreds of thousands of years. They've been optimized so much over that time that it's difficult to improve upon the current designs.
Compared to that, tools for programming are a brand new concept. I don't think the currently-popular languages are anywhere near optimal.
This make restart the work on my own lang (https://github.com/Tablam/TablaM) and convince a friend to also use this for learn rust.
Tooling around development (langs, editor, shells, debuggers, etc) is at 2 apart sides: Supported by deep-pocket companies or by the crazy/love of a very few individuals.
So, the idea to at least get a little push to justify the time is a big plus, IMHO.
Nothing per se against repl.it, but I'm surprised to see this on #1 of the front page as it's basically a call to free labour.
Will there ever be a future when companies innovate themselves again?
IMHO all these "hackathons" or "jams" are really just about finding use cases for their product and getting it tested for a very affordable reward ...
Repl.it is an amazing idea, but it's infuriating to use. No syntax highlighting in the REPL, laaaaaag everywhere, hardly any version control… It's useful for performing a 30 second Python interaction on machines without Python installed, but that 30 seconds becomes 3 minutes because Repl.it is so clunky.
I tried to log in to check whether things had improved, but apparently I need Google's permission to do so now? And, in fact, nothing will run without allowing Google's JavaScript, even once I've logged in.
Anyway, version control is there now, and you can edit existing Git repos! Except it's actually GitHub, not Git, so I can't use it for any of my existing projects, including my programming language…
That being said, I think the world is better with Repl.it in it. It's not like these other things I criticise where I think we're better off without them; Repl.it's flaws are infuriating because they're stopping me from appreciating something potentially great.
> Repl.it is an amazing idea, but it's infuriating to use. No syntax highlighting in the REPL, laaaaaag everywhere, hardly any version control… It's useful for performing a 30 second Python interaction on machines without Python installed, but that 30 seconds becomes 3 minutes because Repl.it is so clunky.
We've improved performance a lot and we'll keep working on it. I just timed it and it took me 5 seconds to start a new Python repl and execute code :)
> I tried to log in to check whether things had improved, but apparently I need Google's permission to do so now? And, in fact, nothing will run without allowing Google's JavaScript, even once I've logged in.
What do you mean by this? You can log-in via Google but that's about it.
> That being said, I think the world is better with Repl.it in it. It's not like these other things I criticise where I think we're better off without them; Repl.it's flaws are infuriating because they're stopping me from appreciating something potentially great.
Thanks we're always happy to hear feedback, negative more important than positive. I'd invite you or anyone who loves Repl.it but find it to be lacking to apply to work with us https://repl.it/jobs
Correct. It's a known issue that all of two people (including me) have ever run across! https://repl.it/feedback/p/make-replit-work-without-google (In reality, the people who submit feedback are a very skewed representation of the population-at-large, so there might actually be three people who've encountered this issue.)
I'm more interested in your response to the paragraph you conspicuously skipped:
> Anyway, version control is there now, and you can edit existing Git repos! Except it's actually GitHub, not Git, so I can't use it for any of my existing projects, including my programming language…
Repl.it is set of automation and UI tools that makes it easy for beginners learn to code and for developers to test or prototype projects.
Any feature that's implemented in the UI is implemented as abstraction over things you can do by opening the shell. Because we are a small team that prizes simplicity over completeness, and because GH is the most popular we just made that the default.
But you can open the shell (command/cntrl+k and type "shell") then use git to your hearts desire :)
We'll probably add native GitLab or whatever others want in the future. You can always leave feedback here and tell us what you want: https://repl.it/feedback
That's excellent to hear! Perhaps I can use it, after all – just as soon as I figure out how to add SSH keys to git, anyway.
I last used Repl.it so long ago, I didn't know that there was a shell. (Which is odd, since I read about how you can technically use arbitrary programming languages by installing them via the shell just a few hours ago…)
Leaving feedback now. (Fortunately, you don't need Google to do that, so I don't need to mess with my browser again.)
OK, that sounds a bit better, but what is both simplest to implement, most generic, and most useful is supporting _Git_, not some half-baked forge site APIs.
It's all actually git. And you can start a local repo without calli g to GitHub. You can just use it in half the time it takes to have this discussion.
We make all of our money from the education market through our classroom products and believe me teachers don't need more languages to teach nor in a hundred years will they teach a hobbyist language.
So I invite you to provide a compelling case for how this is a call for free labour.
I wouldn't say this is a call to free labor. It would be if you were asked to port an existing unsupported language to repl.it (which is how I read it at first). However, this is a contest to reward building your own totally new language (which presumably you were going to do anyways) at least, for some segment of time, on repl.it. I suppose it could be seen as debugging repl.it for free, because this endeavor is likely to break repl.it in so many unforseeable ways.
Elixir, Clojure, Rust, Go, Haskell, Elm, TypeScript, Nim, Crystal, Swift, Kotlin, Dart, Gleam,… – there’s so much new(ish) stuff it’s hard to keep up actually, isn’t there? Not complaining, quite the opposite.
I'd argue that those languages (except maybe Haskell), are small increments of existing languages, they're playing it safe. There's nothing wrong with that I personally like Kotlin and Clojure for example. But as I understood the jam calls for participants to be more experimental.
> We built Repl.it to make it easy to explore and learn languages and programming paradigms. We were, however, surprised by how slow-moving the programming language space seems to be.
But also: You have to build a REPL.
If I'm constrained to a 60s (50s?) interaction model with my language, how am I gonna build an innovate language? See https://www.youtube.com/watch?v=HnZipJOan54&t=394s for my take on PL innovation - can't happen in repl.
That said, this is great, I'm all for encouraging experimentation.
Yeah, same here - if it were open to solo devs, I'd definitely be more likely to try out making a toy language. As-is, I'm not going to try to get my friends to join in on something that only I'm going to get anything out of.
I'm unable to find anything about teaching Repl.it how to understand / handle a new language. So, I only see Repl.it as useful to this process _if_ you're bootstrapping from one of the languages they already support... However, if you're bootstrapping from some other language you probably have better support for it and its libraries on your home computer.
What am I missing? How is Repl.it notably useful to the process of creating a new language? It _seems_ like this is more of a "you can do it in the cloud, but not quite as well" kind of thing.
There's a surprisingly big list of languages not supported, just off the top of my head: Standard ML, OCaml, Rebol, Elm, PureScript, Racket, Lisp-flavored Erlang, Common Lisp, Zig, Perl 5.
Most of these even have JavaScript targets already.
Edit: OCaml is supported through Reason Node.js on BuckleScript.
I agree they should be there. We've been more focused more on vertical feature work than horizontal. But we're hiring a language hacker if anyone wants to help us get more language and tooling support https://repl.it/@util/jerbs#open-positions/language_hacker.t...
I love ambitious challenges like these. Is there a hackathon for reinventing the browser? Refreshing to re-think fundamentals once in a while. Thanks for organizing the jam!
We started work on it but ran into some issues. It's there but hidden. If someone is an OCaml expert consider contributing to our interpreter interface Prybar.
We already have enough happening in programming language. Hear me out, IRL we do occasionally try to learn new languages but we spend a lot of time learning new ideas, mental models and frameworks to accumulate and distribute the ideas.
This is akin to various frameworks/libraries/packages in programming world. A new programming language shall only come when something fundamental changes eg. languages to support multiple cores, going back to async as single cores become good enough, quantum computing is going to spin off new languages.
I feel it's more akin to music genres. Sometimes two genres merge to create a new one. So that kind of mix-and-match of ideas can create more programming languages, without waiting for a paradigm change I think.
Isn't this like saying: "the construction industry is growing fast, how come there are no new hammers being invented every other week?"
I, too, love to learn new languages that introduce me to new ways of thinking and don't want that influx to dry up, but I don't think it is necessary from the perspective of programming as an industry.