Looking for Programming Language where you can write code "in the debugger" [closed]
Asked Answered
H

4

7

I used to develop with Smalltalk which is totally interactive in the way that you can change code in any browser (including the debugger) and the change becomes immediately effective in the application (without restart or anything). My question is whether there any other languages that have this. I know of none except maybe Self, but Self is really dead I fear.

Java has hot code replacement which only works partially (as long as public methods don't change). JRebel makes it better. But I'm looking for a language that supports interactive development from the beginning like Smalltalk. Note, that I don't mean a REPL. A REPL is still separated from the application, so what is executed in the REPL is not immediately effective in the application as with an interactive programming language or development environment.

Heliotropism answered 27/9, 2018 at 10:11 Comment(5)
why not continue using smalltalk? pharo is quite modern and under active development.Shamrock
Hi EMBee, being a long-time Smalltalk developer I know of Pharo :-). I fear Smalltalk is really dead and there is no point in continuing with it. Sad but reality.Heliotropism
i'd claim that smalltalk is more alive than any alternatives you might find.Shamrock
Pharo is very much alive, with mailing lists, using discord, currently being at build 1347 of version 7, a MOOC that just started with quite a lot of participants and conferences that get more participants than ever beforeEndgame
The rules are stupid, and therefore the question is off-topic. I've given up on getting sensible rules here. For questions on pharo, join discord at discord.gg/k427Q5GEndgame
N
5

You say you "used to develop with Smalltalk". My response is, perhaps you should revisit that! Both the open-source versions and the commercial versions of Smalltalk have come a long way in terms of support for modern application areas and environments.

As far as I can tell, nothing available will give you the equivalent environment to Smalltalk - except Smalltalk.

But Smalltalk can also give you client-side web programming with Amber or PharoJS (both of which give you a version of the debugging you describe), server-side web programming with Seaside (and several alternatives), mobile applications (with PharoJS), software and legacy application analysis, embedded programming, stand-alone servers, as well as the more traditional desktop programming.

Pharo is perhaps the easiest place to start (and the base for PharoJS), although Squeak and CUIS have their attractions, too. If you want to look at commercial support, there is GemTalk with its transactional object database, Cincom and Instantiations

Nickelson answered 28/9, 2018 at 12:27 Comment(1)
I think I found one language other than Smalltalk itself: Erlang. You can also change code in the running system and the changes become immediately effective.Heliotropism
S
2

how is a REPL separate from the application?

in common lisp, if you load an application into the REPL and interact with it, every action in the REPL is immediately effective in the application. you can save your state and reload that next time you start the REPL.

related, jupyter notebooks can also be saved and executed. they support many languages. i don't know if they support an actively running application though like smalltalk and common lisp do.

finally, there is pike. the language supports reloading code at runtime. it does that by replacing the compiled classes and instantiating new object instances from the replacement classes.

pike has been used to create a platform called open-sTeam where code of existing objects can be changed at runtime similar to smalltalk. it achieves that by wrapping the actual objects in proxy objects. (normal code only interacts with proxy objects, and those point to the latest version of the real object)

i believe zope version 2 written in python is also able to replace code at runtime.

none of these alternatives do have a convenient browser and debugger like smalltalk though. you may get close with common lisp if you use emacs to control your common lisp image, and i guess zope 2 had a webinterface to manage its code.

Shamrock answered 27/9, 2018 at 11:37 Comment(2)
Pike is interesting. Thanks for sharing the knowledge. Would take long time to explain why a REPL ist not the same as interactive development on the live application.Heliotropism
i do develop live applications through a REPL (ok, code editing is done in vim, but vim loads the code from the live application, and sends it back). i do admit that it is very different from the way development is done with smalltalk but the end result is similar. i'd be interested in your ideas on the matter, shall we take this to the chat?Shamrock
A
2

I would stick with Smalltalk.

You may want to try the Smalltalk/X-jv branch. I call it the best unknown Smalltalk :).

Just my 2c.

Adder answered 29/9, 2018 at 15:47 Comment(0)
I
0

I think smalltalk is a thing of it's own.

Maybe you should look more into interpreter languages than into compiler languages - for example when doing web development php is one example of many - you change the code and the result is immediately visible for the case that you change the code directly on the (local) webserver. Another interpreter language would be python (for which also a compiler exists).

Another possibility is to search for interpreters of compiler languages as for example Cling - The Interactive C++ Interpreter.

Hope that helps.

Iverson answered 27/9, 2018 at 10:32 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.