9 ms·
Leapfrogging the IDE
- flavio81 8y agoTL;DR: Repl.it member (amasad, see note) wants to promote Repl.it by saying that more people are using Repl.it and thus it is the modern stuff because modern is having "no IDE, just a modern repl" and etc. So "modern, 2018" is basically having what Lisp developers have had since the early '80s. * https://repl.it/site/about https://repl.it/site/about
- geocar 8y ago> what Lisp developers have had since the early '80s We absolutely did not have a globally, network-accessible terminal with pay-as-you-go computer time. I have no experience or interest in repl.it, but I think you're understating things somewhat.
- deleted 8y ago[deleted]
- daveFNbuck 8y agoThe article seems to be saying that the advantages of repl.it are the advantages of a REPL-based development platform, not remote access: > With programmers growing up today being used to instant and interactive programming like Repl.it, Jupyter Notebooks, serverless compute, and others, it doesn't seem so outlandish to imagine a post-IDE world.
- deleted 8y ago[deleted]
- pjmlp 8y agoLisp Machines and Xerox PARC workstations had network access. In fact, parts of Ethernet protocol were researched at Xerox.
- lispm 8y agoAccess, but usually they were not serving their IDE to the outside and there was only one active user per machine.
- Filligree 8y agoWhat you did have was Symbolics, and I think this still falls somewhat short of that experience.
- amasad 8y agoI wrote another essay on how Lisp got a lot of things right but we ended up where we are today because Unix, aka the New Jersey approach, aka worse is better approach, had won over: https://amasad.me/disintegrated https://amasad.me/disintegrated
- lispm 8y agoI think this is too much interpreting into it and the specific, and very different, views of people like Alan Kay and Richard Gabriel. Alan was a visionary who actually thought a lot about making programming and computing accessible - even to children. In the Lisp/AI community SOME were working on similar things (Minsky influenced LOGO for example). Richard Gabriel was running a Lisp vendor, which addressed the UNIX market with a higher-end Lisp development and delivery tool: Lucid Common Lisp. You'd shell out $20k and often much more for a machine and a LCL license. Customers were wealthy companies and government - the usual Lisp/AI customers who also wanted to deploy stuff efficiently. > See the Lisp community practiced the Right Thing software philosophy which was also know as "The MIT Approach" and they were also known as "LISP Hackers". A typical mistake is to believe that there is a single homogenous Lisp community, a single approach or a single philosophy. In fact the Lisp community was and is extremely diverse. If you look at the LISP hackers, their approach wasn't actually to do the 'right thing' (whatever that is), but to tackle interesting problems and having fun solving it. The Lisp Hackers at MIT (and other places like Stanford) were working for government labs swimming in money and people like Marvin Minsky provided a fantastic playground for them - which then clashed with the 'real world' when DARPA wanted to commercialize the research results it funded, to move the technology in to the field of military usage (also doing technology transfer into other application areas like civilian logistics). If you've ever looked at the Lisp Machine code, you see that it is full of interesting ideas, but the actual implementation is extremely diverse and grown over time. Often complex, under-documented, sketchy - not surprising since much of that was research prototypes and only some was developed for actual commercial markets. The 'MIT Approach' was creating baroque style designs. Is it the 'right thing' to have a language standard telling how to print integers as roman numbers? Thus 'the right thing' might not be what you think - I think it is more 'image' than reality. > The destiny of computers is to become interactive intellectual amplifiers for everyone in the world pervasively networked worldwide That was Alan Kay's vision, not the vision of the Lisp community. Kay's vision was personal computing - and not the crippled version of Apple, IBM and others. Much of the Lisp community was working on AI and related. Which had much different visions and Lisp for them was a tool - they loved or hated. Lisp/AI developers think of it as 'AI assembler' - a low-level language implementing much higher-level languages ( https://en.wikipedia.org/wiki/Fifth-generation_programming_language https://en.wikipedia.org/wiki/Fifth-generation_programming_l... ). When no effective systems were available to be used as powerful development environments for small and medium-sized research groups - they invented their own networked / interactive development system using the technology they knew best: Lisp. They hacked up development environments and even operating systems. But it was not necessary to keep them, once similar platforms were available from the market. With Lucid CL one could develop and deploy a complex Lisp application on a UNIX workstation and were not bound to a Lisp Machine - which was still more expensive, used special hardware/software and was less general as a computing platform. Lucid CL was quite successful in its niche for a while - but Gabriel then tried to make that technology slightly more mainstream by addressing C++ developers with a sophisticated development environment - sophisticated, and expensive. This tool was then sinking the company. But, anyway, much of the commercial AI development moved to C++ - for example most of the image/signal processing stuff. Parts of the Lisp community shared different parts of the Kay vision: OOP as basic computing paradigm (Flavors, Object Lisp, CLOS, ...) , accessible programming (LOGO as an educational Lisp dialect), intellectual amplifiers (AI assistants) - but where Kay developed an integrated vision (Smalltalk and especially Smalltalk 80), the Lisp community was walking in all directions at the same time and this created literally hundreds of different implementations. Simple languages like Scheme were implemented a zillion times - but only sometimes with an environment like that of Smalltalk 80. The Lisp community addressed both medium and high-end needs. Something like Interlisp-D (developed right next to Alan Kay - but as a development tool for Lisp/AI software and not addressing programming for children and similar) was a very unique programming tool, but its user base wasn't large and more towards the higher end of development - most of it still in AI. There was no attempt to make that thing popular in a wider way by for example selling it to a larger audience. It was eventually commercialized, but Xerox quit the market with the first signs of the AI winter in the 80s. Its actual and practical impact was and is also very limited, since only very few living developers have really seen it and almost no one has an idea what to do with it or even how to use it. It's basically lost art. I saw them in the end 80s when they were on they way out. I doubt that from hundred authors of advocacy articles has even one used something like Interlisp-D or Lucid CL to develop or ship software. I know only very few people who have actually started it, even much less having seen it on a Xerox Lisp Machine. So much of it is based on some old people telling about it and very few have ever checked out how much of what they hear is actually true and how useful that stuff actually is. One reason for it: it's no longer available. The 'worse is better' paper was slightly misaddressed at the Lisp users - since they were not after the operating system and base development tool market (like UNIX and C was) and were not married to a particular system or environment. They used Lisp on mainframes in the 60s/70s, on minicomputers in the 70s/80s, on personal workstations (even developing their own) in the end 70s / 80s and personal computers from the 80s onwards - unfortunately Lisp never really arrived at mobile systems - though it participated in an early attempt (transferring a lot of technology to the early Apple Newton - or what it was called before it was brought to the market - projects). The main Lisp influence on what we see as web technology, was the early influence on Javascript.
- nixpulvis 8y agoI see no argument here made about hosted services like Repl.it that doesn't also apply to a simple ol' terminal emulator, or other forms of development environments. I feel like the real topic here is that there are effective developer environments on the web which can be accessed regardless of walled garden app stores. I'm trepidatious however, since I'm not a huge fan on relying on external services in general. "I can't code because the server's down" doesn't seem acceptable to me. There is a very real problem with mobile development environments though, a solution I'd like to see start with the phone manufacturers.
- collyw 8y ago> "I have one file called index.js" Say it all really. Online coding tools may be fine for beginners, but think it would be next to impossible to do my work with one.
- giancarlostoro 8y agoUltimately the best dev environment is one you have full control over. Even if it's X forwarding over SSH, at least you know you've configured the tools on the remote system.
- duiker101 8y agoI have to agree, I mean sure PyCharm can be complicated, but it has so many things that a beginner doesn't need and doesn't understand that to me doesn't even seem fair to put them on the same plane. Sure, you write code in both of them, but they don't really serve the same purpose.
- styfle 8y agoWhat if all the features of an IDE existed for online coding tools? I actually maintain a list of these tools[0] and several of them are very close to the native experience. In particular, CodeSandbox has come a long way by basically running VS Code in the browser. [0]: https://github.com/styfle/awesome-online-ide https://github.com/styfle/awesome-online-ide
- Filligree 8y agoThey still would not be nearly as fast. When I'm working with projects consisting of hundreds of files measuring hundreds of lines each, I need an IDE that's capable of using the full performance of my workstation
- amasad 8y agoThat's true, especially for client-side based online IDEs. At Repl.it we have a hybrid approach where a lot of the IDE-like functions like code intellisense run on the server: https://repl.it/blog/intel https://repl.it/blog/intel
- leggomylibro 8y agoI've never heard of repl.it, but the concept reminds me of a project that uses a Javascript REPL/IDE to try to make embedded development more approachable called 'Espruino': https://www.espruino.com/ide/ https://www.espruino.com/ide/ It's nice for learning, because you can get the immediate feedback of a terminal with physical hardware. It is extremely limiting in that you can only have one file open in the IDE though, so it is unfortunately difficult to justify for anything other than teaching or toy projects.
- phillipcarter 8y agoIn theory, this makes sense. But I'll be cautiously optimistic about this. We've had this sort of "app is always running and changes are seen live" technology with Visual Basic since a long, long time ago. But that mode of development is hardly the norm across the wide spectrum of developers.
- opcenter 8y agoI think the basic idea is sound. If all you're after is learning to program and running little toy programs, then web based REPLs are a great choice. My primary development environment is vim combined with CLI commands (and some wrapping with vim plugins to simplify the workflow). However, when I want to play around with something in Go to figure out how it works I will often go to The Go Playground (https://play.golang.org/ https://play.golang.org/) and play around there. However, as soon as I'm done (and maybe shared my findings with a peer, which I can't do as easily with my local vim + CLI environment) I'm back to my regular development environment because very little that I work on is trivial enough to stay in Go Playground. All that said, I've seen plenty of developers who seem to get by sticking to the basic feature level of Notepad. Whatever works for you.
- GreaterFool 8y agoHow is repl.it different from a bunch of other web IDEs that came and went without leaving a mark?
- adpirz 8y agoThis doesn't necessarily translate to production-level programming, but I used to teach computer science to middle and high school students. I originally used Cloud9, and had to walk students through the process of setting up a Github account, going through and setting up a proper dev environment, ensuring that their file space was showing and walk them through the run server commands. Very heavy stuff and ate into valuable time every class. With repl.it, it was simply a matter of typing out a bitly link and hitting enter and everything was set up and ready to go.
- canterburry 8y agoComing from an enterprise background and having used Eclipse and IntelliJ for many years, I am honestly puzzled by the current trend in IDEs such as VS Code, Atom, etc. given their lack of fully features refactoring support, code search which goes beyond just simple text search, native understanding of classes, interfaces, method signatures etc. I have tried all of the above 'modern' editors and almost immediately find tooling i'd assume is part of every IDE (i.e. code formatting, import organization/cleanup) but wasn't Amongst the current crop of engineers, there seems to be a stigma against even trying Eclipse or IntelliJ. I kind of feel like junior engineers are missing out on discovering some much more powerful tooling and forming their own opinions.
- wild_preference 8y agoRanges from language to language. For example, VS Code pulls TypeScript definitions of your JavaScript dependencies and thus has superior intellisense. Also, the plugin ecosystem uses JavaScript, so it tends to be more cutting edge, especially if you're working on a JavaScript project (i.e. same language as plugins). For example, VS Code and Atom had Prettier code-formatting when IDEA didn't. And they sometimes have the best support for newer languages like Elm. I'd be wary of painting people as junior developers just because they don't use your preferred IDE.
- canterburry 8y agoNo, I meant literally junior developers who join organizations fresh and are immediately steered towards VS Code, Atom, Sublime by their organization and not even provided Eclipse/IntelliJ as an option.
- cujo 8y agoI tend to toggle back and forth between Intellij and Sublime. This is almost entirely because Intellij feels slower and less responsive. My Sublime setup gets me 90% of the way to Intellij. I wish Intellij was as snappy as Sublime. I wish it was as intuitively keyboard driven as Sublime. I wish the community around Intellij was half as helpful as the Sublime one when it comes to plugins, extension, customization.
- rpeden 8y agoA couple of observations: - Something like Light Table would probably seem like a step up for repl.it users, instead of a step down. - It can take a long time to reach the point where it feels like there's a big payoff from using IDEs and similar tool. Now, I definitely see the value of being able to do something like set a breakpoint in Visual Studio, step through a bit of code and observer local values changing, and then step backward, change the value of some variables or even edit my code a bit, and then step forward again to observe how my changes impacted the execution of the code. But when you're just learning, it's hard to even know that this kind of time travel debugging and live editing is even possible, and even when you know it's possible, it can be difficult to envision how you'd want to use it until you have more experience.
- amasad 8y agoI think for someone not familiar with repl.it and just reading this might get the impression that we are anti-IDE features. That is not at all the point. In fact we think Code Intellisense is essential. We start a Language Server for many of the languages that we support: https://repl.it/blog/intel https://repl.it/blog/intel
- rpeden 8y agoThat's a fair point! I suppose I don't see Intellisense as something that's IDE specific anymore. It's available in plenty of editors that aren't IDEs, and I think that's a very good thing. The line is pretty blurry sometimes, too. For example, I don't think it would be inaccurate to call VS Code just and editor, even if it doesn't have any many features as Visual Studio. For me, the some of the big wins with heavyweight IDEs are things like built-in debuggers(which I know repl.it has), heap snapshots, CPU and memory use profiling over time, and other tools along those lines. So I definitely wouldn't want anyone to think repl.it is opposed to IDE features; I think you've already implemented the IDE features that will provide the biggest wins for your users. And so I don't come across as someone who jsut loves big, complex tools: I agree with what you've written in the past about envionments like Smalltalk and Lisp Machines. I think we've forgotten about a lot of innovation that we could be making better use of. I think we've forgotten about some of the best parts of Hypercard, too. And even VB6.
- beat 8y agoI don't know if this counts as the same thing, but I've recently started a Rails-based project on Google Cloud, using the cloud shell and its built-in editor. This is great because I don't have to futz around with a Vagrant environment or (worse) a straight Rails dev environment on my Mac, and I can do full-strength software development from the little Chromebook I like to carry around. A Chromebook plus a 100% cloud-based dev environment is a great way to work without having to radically rethink How Software Works.
- Koshkin 8y agoJust to be clear, what you carry around and enjoy using so much is essentially a wireless terminal to a mainframe.
- beat 8y agoIs that a Bad Thing? The alternative is to carry a snowflake environment around with me.
- Filligree 8y agoYou can make the environment less of a snowflake. Nix, to automate software installs and per-directory (per-git repo) environments. NixOS, to do the same for your OS. Gradle, for automated IDEA setup. Or check the config into git. Cachix, to ensure your build artifacts remain available. These problems are solvable, and the solutions already exist.
- beat 8y agoWell, yeah. But it's still a snowflake, a dev environment with build/deployment configuration and needs that are significantly different from production cloud environments. And it requires a lot of setup, and a lot of knowledge to do it well (which I actually have). Writing a bunch of automation to hide the fact that I'm working on a snowflake is not the same as not working on a snowflake. Or, I can do my development in the cloud, in an environment explicitly more similar than my desktop environment. Other than aesthetics, I don't see why this is a Bad Thing. It's making my setup easier and more consistent, and it's making my development environment portable to whatever system I want to work from, rather than binding it to a piece of hardware.
- zandl 8y agoI can answer the question why switch if the limited online one is sufficient; it’s because the developer is working less efficiently and is unaware of the impact on productivity and code quality. I’ve seen this many times, variable renamed done with text replace or by hand, inconsistent formatting and headers, silly bugs that an ide could catch as you type get committed, switching between screens to test their code constantly. Ignorance isn’t bliss, it’s just new developers aren’t getting the wisdom and expirence of the past and are repeating past mistakes instead of improving on the solutions.
- C1sc0cat 8y agoFrom experience using atom to develop some perl integration scripts for ecommerce I found the variable completion and knowledge of perl very good. The trouble is these enterprise dev tools assume you have bleeding edge hardware. Back when I developed in Oracle we had to have special pc builds and then spend over £2000 on memory and more again to buy a 20inch monitor just to get it to work!- and it still crashed every 15 minutes However quake came out at the same time and the 20 inchers where amazing to play networked games on.
- erikpukinskis 8y agoI’ve been coding for 20 years. You are correct that some people would speed up in an IDE but it’s more complicated than that. Many people are slowed down by their IDE. I see IDEs largely as a symptom of the complexity sickness in software development. Companies take a strategy of letting complexity grow to the point where it can’t be controlled. IDEs and other tools for managing massive complexity emerge, because you need such tools to work in codebasses that have become a hurricane of complexity. There is another path, where you choose to use simpler tools and adapt your plans to fit the tools. This is how the Amish work and they are able to do incredible works and be highly productive. So, yes. You can try to become like “iron man”, wrapped in tools of immense complexity to match the tasks you set yourself to. Or you can be like a Japanese carpenter and study and think and refine so that you can do only small tasks, with simple tools, and see miraculous detail emerge from the compounding interest of consistent daily practice.
- jramsay 8y agoamasad, I enjoyed the perspective of your article. I agree an engineer with many years of experience is going to have different expectations to someone who is entering the profession today. I think it's similar to my perspective on the iPad – I find it interesting but limited because my experience and mental model of computing is very different to someone who is growing up with an iPad in hand. I work on the Web IDE at GitLab (among other things) which we built after we noticed that there were a few situations in our day to day work on GitLab where we didn't need a full local development environment, like updating documentation or addressing simple review comments. It doesn't replace a local IDE from me yet, but it is helpful and we hope we can make it more useful in more situations where local IDEs have shortcomings. I think the effort and maintenance of a local development environment is also a cost that is frequently overlooked – reinstalling dependencies is a headache that disappears in an automated ephemeral environment like repl.it or where we're heading at GitLab. But that seems like it's just an iteration on the status quo rather than leap frogging to a post-IDE world. I think the idea of online interactive development can go so much further. Maybe we can integrate interactive editors/terminals/previews with our planning and code review tools so that experimentation and exploration are easier and happen in line in the discussions we have planning the next feature to build. I put a few dot points down on this line of thinking last week https://gitlab.com/groups/gitlab-org/-/epics/533 https://gitlab.com/groups/gitlab-org/-/epics/533 but I'd be interested to hear some of your more concrete ideas of what a post-IDE world might look like.
- amasad 8y ago> But that seems like it's just an iteration on the status quo rather than leap frogging to a post-IDE world. I think the fact that you'd have a globally accessible, pay-as-you-go, zero-setup, multiplayer programming tools is surely a different beast from the IDE. However, it does go further than this and most of the innovation to this end aren't coming from us but from our users and how they (an)use the system. I can try to predict what the post-IDE world looks like, but it's better to discover it.
- ken 8y agoIt sounds like users are trying to get back to working with a system image. I have trouble labeling it "post-IDE". Depending on whether you consider Smalltalk/Lisp machines to be "IDEs", it's either "original IDE", or "pre-IDE".
- amasad 8y agoI think the Lisp community invented tools that, had they been successful, would've altered the course of history with regards to devtools. I wrote an essay on this: https://amasad.me/disintegrated https://amasad.me/disintegrated
- AcerbicZero 8y agoI've read the comments here, and perhaps due to my job not being purely software development, I have a different impression of Repl.It. I'm much more of an infrastructure guy than a developer, (DevOps? So overused) and I'm not overly ashamed to admit I learned to code with Powershell, mostly via their integrated scripting environment. Trying to make the switch from ISE to pure Python was extremely difficult for me, because I was so deep into the REPL style, and I just wasn't prepared to have things obfuscated and invisible. I wanted to re-run specific lines of code, and determine variable values on the fly, so I could adjust if needed. Eventually, I learned Ruby (and abused Pry for a long time) "correctly" and I"m re-learning Python the proper way now (and abusing pdb), mostly with VS Code, but there are some very large gaps that are easily filled with a good REPL, so I find myself popping over to Repl.it to test out some snippet that isn't doing what I expect. Perhaps there is an IDE setup that would do what I want while enabling me to be more productive, but learning a (usually lightly documented) tool, full of various assumptions, while trying to learn the actual language, AND get useful work done, is not an ideal combination.
- lispm 8y agothe 60s/70s had already better tools for dial-in on mainframes.
- i_phish_cats 8y agoNext time, please disclose the fact that you are the founder of the product you are promoting.
- zwaps 8y agoSo I know you wanted to frame this as IDE vs. REPL, but most IDEs have REPL built in (I think every Python IDE can open Jupyter notebooks no problem), and the additional features just depend on context. Like, scientific computing with Python, R or Matlab? You'll probably profit a lot from using RStudio, Spyder or, well, Matlab. Huge projects with lots of data and many files... why go through the pain of a html-based file management system if you can have as many text-editors and IDEs installed as you like... I mean, the choice you frame just isn't really a relevant question. Instead, this is clearly a marketing article for your own product. You specifically ask the question in your article, why would anyone install an IDE locally, instead of using your product. The answer seems very obvious to me: Only very few people can actually use an online interface, such as your product, in actual production. For me, for example, it would be a non-starter. Not only do I work with sensitive data that I can't just upload to somewhere else, I am also often on the road and simply do not have guaranteed internet. So I'll need a local IDE anyway. Another reason is that the actual computing infrastructure is located, and protected, in a local network. So I couldn't even run my code directly. How much computing power do you actually provide? What if I actually generate large output files? Where do they go? Like, do you just send me gigabyte sized files over the tubes constantly? Do I have to download thousands of files from that terrible web-interface? How do you deal with changes in massive datasets? How do you deal with those data that need to stay local? The whole article is just weird. The use-case for local IDEs is pretty clear, and I think the people who actually have to use some local solution is, and will be, larger than those who just casually write their code in your datasets. Most people would literally get fired for using your product as you suggest. In fact I think the major use-case for your product is education and learning, specifically where you code in several languages. Like, you quote some kid asking why one would like to learn an IDE if repl.it is so cool and good. Well, that kid is obviously learning and not leapfrogging anything. Sooner or later, he/she will be coding in a company on a larger project and then all of the above applies. I also like the irony of repl.it stating its support for Open Source, while apparently not being OpenSource itself.