6 ms·
Are there any smalltalk fans out here that can point out to the unenlightened the "interesting" aspects of Smalltalk? It seems to have quite the following.
by rtpg 13y ago
Are there any smalltalk fans out here that can point out to the unenlightened the "interesting" aspects of Smalltalk? It seems to have quite the following.
- weddpros 13y agoPros: Smalltalk is a very simple object oriented language, dynamically typed and GCed, it has closures (used everywhere!). It has NO keywords at all, and a very simple syntax. Smalltalk is very readable. It also has amazing IDEs/debuggers. It's very easy to learn. And it was born in 1972, just like me! Cons: aging technology with very little traction, no fast VM (compared to JVM), no multithreading... I switched to Java in 1996 because the future of Smalltalk was cloudy. I'd switch back to Smalltalk if it could run with the same performance as Java. It's a really amazing language.
- stcredzero 13y agono fast VM (compared to JVM), no multithreading Back in 1996 Smalltalk VMs were still outperforming Java VMs on real workloads, in large part due to not having multithreading. (Makes GC simpler and faster.) Also, there were multithreaded Smalltalks around.
- weddpros 13y agoYes, Java had no JIT in 1996... But it had corporate traction, and good marketing ("it's an internet technology!"). Nowadays, I choose the language I want to work with, but I don't switch back to Stk because of speed.
- pjmlp 13y agoYes, I got to play with VisualWorks at the university that time, but then Java took over the enterprise.
- kilon 13y agoPharo and Squeak use the CogVM , its a VM that supports JIT compilation and as such is very fast. Its not as fast as Java because afterall Java is static typed. However there is a way to get even faster than JAVA code. Pharo comes with a library named "Nativeboost". Nativeboost is essentially an inline assembler. But unlike C/C++'s inline assembler of using assembly syntax, the inline assembler of Nativeboost uses Pharo syntax as each assembly command is a Pharo object like everything inside Pharo. Also because VM will stop all execution when it executes assembly code, you can enjoy raw machine code speed. Thus you can have Pharo code that can outperform Java code. If Assembly is not your thing , Nativeboost can be used also as a FFI to call C dynamic libraries. Currently C++ is not support because of name mangling but its possible to compile a C++ library as C library to be used by Pharo. Also Nativeboost's FFI offers support for Objective C as well. There are also two projects to run smalltalk on Java, one is called redline smalltalk, the other's name eludes me now. There is also another project to bring Smalltalk to Java including even the Smalltalk IDE called "RTalk". But that project seems to be vaporware for now.
- erikj 13y agoIsn't Squeak VM very fast nowadays?
- e12e 13y agoThere's also redline smalltak for the jvm, but I'm not entirely sure of it's status: http://www.redline.st http://www.redline.st [edit: on the subject of performance, and interesting Smalltalks, I'd also recommend checking out Gemstone GLASS: http://seaside.gemtalksystems.com/ http://seaside.gemtalksystems.com/ They also made "maglev" ruby: http://maglev.github.io/ http://maglev.github.io/ ]
- kilon 13y agoI am using Pharo myself. http://www.pharo-project.org/home 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.
- vidarh 13y ago