Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I am using Pharo myself.

http://www.pharo-project.org/home

What it offers that none other language offers AFAIK apart from lisp is foremost live coding. In case you are not aware live coding simple means to code an application while the applications runs. With other languages making mistakes is quite costly. With Pharo (and Squeak) if you make such a mistake the debugger will pop up and ask you politely :D to correct your mistake after that it wont punish you by restarting your app but rather allow you to resume where you were. Whats impressive is that this allow you to code entirely inside debugger and even introduce mistakes on purpose to see overall how your app is behaving. There are no files to compile, compilation takes place per method.

Another thing I like about Pharo is the distribution process. I have been burned by Python and really sucky distribution libraries and very buggy py2app and py2exe. If you want to distribute a pharo app, thats is very simple and require zero packaging. Pharo does not install in your OS, its a simple folder containing an executable that loads image files. Those image files is memory dumps of byte code which contain all you need to run the app. So all you have to do is zip the folder and share away. You also do not need specialized tools to run multiple versions and/or instance of Pharo. Just put Pharo in diffirent folders and voila. Also now PharoLauncher allows you with easy to download custom images and manage your existing ones with ease. PharoLauncher is again a Pharo folder containing an image containing the PharoLauncher tool and library :)

The IDE is also very , very nice. Again when I was coding in Python I was not happy with the IDE. The Pharo IDE is written in Pharo its easy to use once you figure out the main functionality and quite well documented. Most importanly the IDE is tailor made for Pharo instead of general purpose nonsense that will offer substandard support for your language of choice. I like the fact that it wont allow you that easily to make mistakes and that it comes with so many tools to make your life easier. Its the best IDE I have use so far.

Lastly I really love the community , they are very friendly with Begineers and newcomers and they really deeply care about Pharo. Its quite actively developed, bug get fixed and there is always new features coming in. There is also Amber , Pharo brother, that compiles to Javascript and can use any Javascript library.

I can go on and on and on, but thats the most important things for me. The rest you can discover by yourself, all I can tell you is that there is a lot more. Foremost coding in Pharo is a lot of fun and very productive.



> What it offers that none other language offers AFAIK apart from lisp is foremost live coding. In case you are not aware live coding simple means to code an application while the applications runs.

You can do the same in Ruby with (the very much Lisp and Smalltalk inspired) Pry, though probably not as advanced.


Which is one reason why Ruby Motion is such a nice environment for iOS development. You can query and send messages to live objects in the running system. You cannot change method definitions without recompiling, unfortunately.


There is also a live coding environment for ObjST that I wasn't able to show during the FOSDEM talk. In this case, "live" means re-evaluation with every keystroke.

I'll upload a video of that later.


yes this looks definitely very close to live coding. If it can replace live objects on the fly even when already referenced by other live objects its live coding in its true form. You just gave me a big reason to add Ruby to my list of languages to learn next :)

I think IPython offers something similar for python too. Its makes me very happy to see live coding making its way through the dynamic languages as I am a huge fan of live coding :)


I don't think it can outright replace objects, but Ruby objects are extremely malleable, so you could e.g. override each and every method for a specific object to forward to a replacement. Replacing the object entirely wouldn't be impossible, but it'd likely require some more invasive changes.


yes those things Python can do too. Replace methods, recreate objects etc. And probably you can find tons of workaround for things it cant do out of the box. Its not bad, not bad at all :)

I really like Ruby :)




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: