objective.st
Home
About
Language
Examples
Scripting
URIs
Outlook
Publications
Download
Blog

Objective-S

Objective-S is possibly the first general purpose programming language. It makes creating well-architected and efficient programs not only straightforward, but easy, fun and fast.

Yes, this sounds insane, programming languages we call "general purpose" number in at least the hundreds, starting with C, Java, Smalltalk, Ruby, Python etc.

However, these are actually DSLs for the domain of algorithms, and this architectural mismatch, the fact that we have to use algorithm DSLs for tasks that are not primarily algorithmic in nature lies at the heart of much of the pain we have in software development today.

More here.

Hello World!

The traditional hello world prints to stdout, and we can do that:

stdout println:'hello world'.

Objective-S is expression-oriented, so just typing the string will also print it in the REPL:

'Hello World!'

In a complete script, this looks as follows:

#!env stsh
#-greet
'Hello World!'

If you want to show Hello World in a UI, you can use a label:

#Label{ #text: 'Hello World!' }

This works with both UIKit and AppKit.

For the the web we can define a small server in code, with the GET method for the path /hello mapped to the our greeting string:

scheme HelloServer {
    /hello { |= { 'Hello World!'. } }
}.
HelloServer serveOnPort:8090.

Alternatively, if we just have data, we can define a dictionary-based store and serve that:

#MPWDictStore{  #hello: 'Hello World!' } serveOnPort:9001

News

Jun 20th , 2022

Now served via an ARM cloud instance.

August 13th, 2020

Site update: Publications, About.

August 1st, 2020

Esteban Maringolo suggested Objective-S as a better name, so giving that a try.

January 18th, 2019

Copy of objective.st website running dynamically on a Digital Ocean Droplet.

December 28th, 2018

Linux port (using GNUstep).

October 22nd, 2018

SQLite scheme handler (via property paths).

October 14th, 2018

Syntax for defining scheme handlers with property paths.

April 2nd, 2018

Filter definition syntax.

July 15th, 2017

Now have real class and method definition syntax.

May 15th, 2014

The Objective-Smalltalk REPL is now available as an embeddable NSTextView subclass, in addition to the Unix command line.

May 12th, 2014

More unicode support: in addition to symbols like π there is now also support for various operator-like constructs like ≠,≤ and ≥ extended (in-)equality tests, the arrows ⇦ and ← for assignment and ⇨, → for attaching connectors to ports.

March 24th, 2014

Auto-complete for local variables and messages in stsh. The algorithm takes into account both syntax and actual live objects for very accurate results.

February 19th, 2014

Cocoa Heads Berlin presentation.

February 7th, 2014

Simple live coding demo video driving Apple's Quartz API via MPWDrawingContext.

February 1st, 2014

Objective-Smalltalk presented at the FOSDEM Smalltalk DevRoom, video available

August 10th, 2013

Polymorphic Identifiers paper accepted at DLS 2013 pdf.

Copyright (c) 2012-2020 Marcel Weiher (st)