All these languages incorporated (over time for better or worse) some object-orientation.
Objet-Orientation was actually introduced almost 40 years ago: putting the data (state/data structure) and function (behavior/operation/function) together into one definition, to ensure for good that not the wrong operation/function can be applied on the data (invoking a function / call with the wrong data...). Smalltalk is my favorite in that respect, because the first thing in every expression is the object reference that receives a message to do something, followed by a parameter, which is also an object reference. Smalltalk is also (almost the only language) in which classes are first-class objects, and the method new returns an instance of that class.
| thisThing |
thisThing := Something new.
Smalltalk got also rid of the cluttering parentheses. In general, the code looks much more concise, but still very prosa. Class and method definitions look like this:
Something subclass: /#Object
"Defines 'Something' as subclass of class Object. --- PS: w/o /"
"Class method that returns a new instance with name set"
| aThing |
aThing := Something new.
aThing name: aString.
"Instance method that returns the name"
"Instance method that sets the name"
name := aString
Smalltalk uses parenthesis only to enforce precedence.
Regarding Object-Orientation: Take a look at the brilliant approach of using CRC-Cards - Class-Responsibility-Collaboration-Cards - to crack the OO-nut without going technical. It helps to break down a system into very suitable software components without the syntax clutter of a any language, and helps to think in encapsulated, real-world objects rather than a sequence of operations on a pile of data data types.
I'm glad this got worked out...
Here is my current toolset: https://github.com/aktos-io/aktos-espruino-tools
Smalltalk was in my TODO list (my list of languages to be learned) along with Elixir, Lua and Lisp =)
Our learning survey is mainly motivated by our commercial applications' needs (we learn whatever we need to, or invent sometimes). For example I was forced to learn Python in order to program a Telit 863-PY GSM module, then I liked it very much =)
I'd really recommend that you just use EspruinoTools command-line app:
sudo npm install -g espruino
And module loading will 'just work'.
...indeed, one learns what the 'economic needs' - or - the market(s) dictate... just a little bit screwed, because 'the markets' are made and that mostly by non-engineers... leading to 'rabbit trails'. Because something is 'fashion', most go down these trails kudo-ing one another and many good things get thrown out... luckily, later, some of the discards recover and are picked up in one or the other way when returning to a more straight path... and luckily too: once in a while along the rabbit trails, some other good things are discovered as well...
Sorry for the late reply, we have been dealing with a CAN bus issue.
I generally examplify "learning a programming language" with "using a rent car", or "taking a bus". You might feel yourself comfortable in your car (or some models of buses) but if you need to travel to meet with your friends, it wasn't be a problem the type of vehicle you use; you would just use it to reach the target. That's such a kind of thing to me.
Don't worry about formatting, just type in the text and we'll take care of making sense of it. We will auto-convert links, and if you put asterisks around words we will make them bold.
For a full reference visit the Markdown syntax.
© Espruino, powered by microcosm.
Report a problem