Here’s the Deal
Slant is powered by a community that helps you make informed decisions. Tell us what you’re passionate about to get your personalized feed and help others.
Hybrid languages (e.g., Java, C#, C++) make it easy to slip into procedural thinking. Smalltalk's pure OO approach makes it hard not to think in object-oriented terms. In addition, since the entire IDE and runtime components are there in the image for you to browse, you have plenty of examples of good OO design to learn from. See More
Smalltalk missed an opportunity to become mainstream when its implementations cost $5000 per seat versus $0 open source. New open source implementations (Pharo, Squeak) have minor corporate backers but not yet an IT behemoth. Direct jobs are scarce (but indirectly Smalltalk experience is very well regarded). Online communities are relatively small. See More
One of my favourite 5 languages. I love using it because OO programming becomes so clear. See More
Dave Mason's Experience
Python has an interactive mode that lets you inspect and manipulate live objects. The docstring feature and dir() function make Python better at this than many comperable scripting languages. If you like that about Python, you'll love Smalltalk, which does this kind of thing even better. See More
You can edit code and swap it in while the your program is still running after an exception has already been signaled, or restart from anywhere in the call stack. You can inspect and modify the state of any object. Some Smalltalkers write unit tests and then program exclusively in the debugger. See More
All tools (Inspector, Browser, Debugger etc.) are written in Smalltalk and are live objects in the environment. All sources are present, so that the tools can easily be studied, changed and experimented with. The same goes for the other components like the compiler, OS-Integration etc. See More
Proper AST macros allow you to write DSL's in Julia that allow you to program much closer to your problem domain. Once you have a DSL that is properly debugged, this tends to eliminate the "translate the specification into a program" step and allows libraries to export extremely convenient API's. For example, for a given math problem which has a standard graphical notation on paper, it is often possible to write a Julia macro that almost exactly matches the notation that one would use on paper. Examples would include index notation for tensors ( https://github.com/Jutho/TensorOperations.jl ) that translates repeated indices into tensor contractions, or a reaction network DSL to translate a list of chemical reactions into the differential equations that they lead to. See More
Julia code is easy to read and avoid a lot of unnecessary special symbols and fluff. It uses newline to end statements and "end" to end blocks so there is no need for lots of semicolons and curly braces. It is regular in that unless it is a variable assignment, function name always comes first. No need to be confused about whether something is a method on an object or a free function. Unlike Python and Ruby, since you can annotate the types a function operates on, you can overload function names, so that you can use the same function name for many data types. So you can keep simple descriptive function names and not have to invent artificial function names to separate them from the type they operate on. See More
Racket is based on Scheme (LISP Family) and is very similar to Clojure. So there are a ton of () at the end of s-expressions (in total give a few take a few the same amount as Java or similar languages). The reason it is easier to learn is that it is not trying to be "Pure" if there is even such a thing in terms of Functional Programming. The great thing about Racket is it has everything included. You get DrRacket for developing programs. You want to add a picture to your software you can insert pictures. If you want to add libraries just open the package manager. The Syntax is an opinion but it really does feel easier to see what is happening since everything is in brackets) Racket is a really a Programming Language for making Programming Languages. So there are smaller syntax Racket called Student Racket which makes things easier to pick up. See More
This is a very different approach than Python's duck typing. Static vs dynamic typing is something of a Holy War, but opponents of static typing have probably only used a dysfunctional variant like Java or C++. Haskell's type system is much better because it has Hindley–Milner type inference. This means the static type system helps you more than it gets in your way. See More
Help millions of people make better decisions.
Each month, over 2.8 million people use Slant to find the best products and share their knowledge. Pick the tags you’re passionate about to get a personalized feed and begin contributing your knowledge.