12 ms·
Objective-S: architecture-oriented language based on Smalltalk and Objective-C
- mpweiher 4y agoOh. Sorry, the website is currently not in a very good state. Feel free to ask any questions here. Note: very pleased that the box serving the site is pretty consistently at less than 1% CPU during the HN hug of death.
- zapzupnz 4y agoI’m interested in this. What’s the developer experience like? Is there an LSP server to be able to use with VSCode?
- MaysonL 4y agoCheck out this blog post: https://blog.metaobject.com/2022/08/native-gui-distributed-system-in-tweet.html https://blog.metaobject.com/2022/08/native-gui-distributed-s...
- mpweiher 4y agoWhile there is support for autocomplete in the Stsh framework (for the interactive shell, but you can use it independently), there is no LSP support yet. May I ask what you would be interested in doing with it?
- zapzupnz 4y agoI'm always interested in exploring different languages for teaching various computing concepts to my high school computer science students.
- mdaniel 4y ago> Note: very pleased that the box serving the site is pretty consistently at less than 1% CPU during the HN hug of death. The connection has timed out Tempt not the fates, for they are cruel -- or, alternatively, the "hug" is not one thing --- https://github.com/mpw/Objective-Smalltalk#readme https://github.com/mpw/Objective-Smalltalk#readme is the repo linked from the Download page in Wayback, for those into such things (but based on a recent commit, it's not Open Source: https://github.com/mpw/Objective-Smalltalk/blob/master/Stsh/Classes/MPWStsh.m#L6 https://github.com/mpw/Objective-Smalltalk/blob/master/Stsh/... )
- eevilspock 4y agoThis project is at least 12 years old! Clearly you believe in it.
- mpweiher 4y agoWeird. Just checked and it's still up, hasn't even restarted. Not sure why you think the presence of copyright makes something open-source. All open-source licenses depend on copyright, otherwise the code would be in the public domain.
- jadodev 4y ago"All rights reserved" is NOT open source. Open source licenses imply copyright ownership, not the other way around. This is a copyright violation.
- mdaniel 4y agoIANAL, but I thought the phrase "All Rights Reserved" was in direct opposition to "Some rights reserved, some rights released under the following conditions" upon which Open Source licenses are based So, yes, AIUI all creative works ever have copyright, but only Open Source grants rights to others, such as folks who might want to contribute to your project
- nextos 4y agoI agree with the Objective-S goals [1], and it is cool to see research in this direction. Are the mechanisms for defining architectural styles and some predefined styles (OO call/return, pipes & filters, REST and event broadcast) all that is new from Objective-S? Any other future goals? These seem relatively easy to implement as e.g. Lisp macros? Clojure supports many of these. Personally, I would like to see more research in program semantics. I think languages should try to reduce expressiveness whenever possible by offering mechanisms to do so, i.e. DSLs and DSL tools. Along with the total lack of popularity of design-by-contract / Hoare logic / refinement types, I think this is the biggest mistake in modern language design. In other fields, engineers strive to use components and to combine them in ways that yield artifacts with provable properties. An elementary example of this are truss structures in mechanical engineering. There is not that much research direction in this area. Personally, I like Dafny [2]. There is quite a lot of research on advanced type systems and theorem proving, but I think there is still a big gap in usability and automation. I think DSLs to restrict semantics + automated program analyses could be an excellent alternative. Infer [3] is pretty nice. Similar approaches that targeted a language with better semantics would be able to offer a lot more guarantees. [1] http://objective.st/About http://objective.st/About [2] https://github.com/dafny-lang/dafny https://github.com/dafny-lang/dafny [3] https://fbinfer.com https://fbinfer.com
- eevilspock 4y agoMarcel, it might help non-language design experts like me to wrap their head around Objective-S and the notion that "OO call/return, pipes & filters, REST and event broadcast" are just (higher-order?) styles that can be implemented in a truly general purpose language (i.e. Objective-S) by providing concrete examples of how Objective-S does this and other presumably-general-purpose-but-not-actually-according-to-you do not? Is functional programming yet another style, or is it a subset of call/return, or a subset of pipes & filters? If it is its own style, how might Objective-S implement this style? What would map-reduce look like? What about higher order functions and currying? Or is Objective-S itself at root a functional language? You've said very categorically in another comment that Objective-S is NOT just reinventing Lisp. Can you explain? Perhaps my questions don't make any sense. As I said, I'm no meta-language expert.
- bsaul 4y agoIt looks to me like the situation we have today is that architectural components are deployed as separate binaries ( queues, proxies, web server etc), with PL being used mostly as glue code passing data between them using client apis. Provided i correctly understood Objective-S endgoal, what makes you think integrating them into a language runtime will lead to better results ?
- Xeoncross 4y agoI still remember my horror when I saw the pain of something as simple as string concatenation in Objective-C. The community literally has to write special micros to make joining a string palatable [1]. I salute the brave souls who made OSX/iOS apps before Swift. NSString *myString = @"Hello"; NSString *second = [myString stringByAppendingString:@" World"]; [1]: https://stackoverflow.com/questions/510269/shortcuts-in-objective-c-to-concatenate-nsstrings/16862414 https://stackoverflow.com/questions/510269/shortcuts-in-obje...
- ardit33 4y agoAgreed. But once you get some macros (or categories) then Objective-C becomes a great language. Is both elegant and very powerful as it is has the perfect balance between a static and a dynamic language. Swift on the other had is a language where wonks decided to throw every silly feature they thought off to the point that is becoming more complex than even Scala. I wished Swift was just a modernized Objective-C with a normal non bracket syntax and some extra facilities that it was missing. It is such a wasted opportunity
- nightowl_games 4y agoObjective-C is powerful yes, but elegant? Not sure. It can do everything but I always felt like it was basically the opposite of elegant.
- richarddaystrom 4y agoI would describe it as practical
- mpweiher 4y agoAgreed, and that's kind of where Objective-S started: https://blog.metaobject.com/2019/12/the-4-stages-of-objective-smalltalk.html https://blog.metaobject.com/2019/12/the-4-stages-of-objectiv...
- teakettle42 4y ago> Swift on the other had is a language where wonks decided to throw every silly feature they thought off to the point that is becoming more complex than even Scala. What features in particular do you think represent unjustified complexity? Swift is not my favorite, but I wouldn’t consider it to be a “kitchen-sink” language, and it’s certainly less complicated than Scala.
- munchler 4y ago> By allowing general architectures, Objective-S is the first general purpose programming language. Really? I stopped reading at this spot, since this claim is so ridiculous. https://en.wikipedia.org/wiki/General-purpose_programming_language https://en.wikipedia.org/wiki/General-purpose_programming_la...
- mpweiher 4y agoYou might try reading further, because the claim is actually well-supported. Just because we call something "general purpose" doesn't mean it actually is.
- EddySchauHai 4y agoIf you can build Objective-S in a language then isn't the language that contains the set of Objective-S and other languages in theory more general purpose? I'm not sure I get the definition.
- yellowapple 4y agoI guess it's the same question as whether the ability to implement an Erlang VM in C makes C a functional and/or concurrency-oriented language.
- User23 4y agoC is a functional language[1]. That’s one of the finer examples of Haha, Only Serious I’ve seen for programming. [1] http://conal.net/blog/posts/the-c-language-is-purely-functional http://conal.net/blog/posts/the-c-language-is-purely-functio...
- KerrAvon 4y agoI like what I've seen of Objective-S; I completely support and appreciate the thought you've put into it, but I don't think that's a great claim to make. Implicit is the claim that C, Lisp, Modula-2 are not general purpose languages, which is ridiculous. You may not want to deal with C's various problems, and it may take pages and pages of code to do in C what one line of Objective-S could do, but doesn't mean it can't be done.
- brtknr 4y agoMy two pence: It’s not a very sexy name for a language compared to the competition.
- mpweiher 4y agoYep. Still working on it. Suggestions?
- Apocryphon 4y agoObjective-Swift? :P
- layer8 4y agoMarwel ;)
- nazgulsenpai 4y agoBigTalk!
- sebastianconcpt 4y agoDefinitively not that one!
- motoboi 4y agoLongtalk
- nazgulsenpai 4y agoBig agree! :)
- andsoitis 4y agoGeneral Purpose Language, since it is the world’s first general purpose language.
- layer8 4y ago
- lagrange77 4y agofound a typo > [...]we know some good architectural styles for software, those architectural are difficult to use, because they clash[...]
- brabel 4y agoThe author made a comment saying the website is not yet in a good state... I found lots of typos, if the author is interested: Page http://objective.st/Language/ http://objective.st/Language/: * the "Object templates" sample code ends outside the code box. * Section "Messages": this whole sentence is basically a typo: - expressions are handlde by message conneectors, and again like Smalltalk, Objective-S distinguishes three kinds of messaege... - Objective-S has two mechanisms for chaining muliple messages What text editor is the author using? Virtually every editor nowadays supports spellchecking.
- aaaaaaaaaaab 4y agoMarcel Weiher has been stubbornly treading his own path for more than a decade. As the iOS/macOS world moves towards Swift, he goes back to Smalltalk principles. As Apple introduces SwiftUI to appease the webdev crowd raised on React, he builds his own small and efficient GUI story. I'm quite convinced he's onto something.
- deleted 4y ago[deleted]
- lastdong 4y agoFound typo, in first Paragraph of “Objective-C without the C” section: “It dose not require a VM.”
- bogwog 4y agoHow much of this is tied to Apple frameworks? I noticed that the Linux support requires GNUStep, so I'm assuming quite a bit? The impression I'm getting is that this requires a non-trivial, Apple-flavored runtime to be useful. GNUStep apps are pretty awful experiences today due to being based on outdated Nextstep UI concepts that do no adapt well to anything other than MacOS. Is this meant to be used for creating GUI apps? Because if it is, relying on the ancient GNUStep for multiplatform support seems suspect. And if it's primarily intended for Mac/iOS development, then why should someone use this over Objective-C/Swift? (btw no hate for GNUStep here, I've played with it in the past and think it's awesome, just not very relevant nowadays)
- metadat 4y agoIt seems the amount of code you need to write to get overly-specific common things done is extremely small compared to Swift, Obj-C, Rust, Java, Go, or Python.
- jupp0r 4y agoTip for making a programming language website: put some example code on the front page.
- eevilspock 4y agoTip for critiquing the front page of a programming language website: make sure you're actually looking at the front page. http://objective.st http://objective.st
- deleted 4y ago[deleted]
- fernly 4y agoThere are numerous typos. When I saw what I'm pretty sure is on in a code example I gave up. a := flag ifTrue: { 2. } ifFalse:{ 3 }. ^ ? if not a typo an odd inconsistency.
- sebastianconcpt 4y agoThis is hugely interesting! So it creates a runtime directly on the silicon? no VM no GC? How does free memory? Automatic reference counting?
- andrekandre 4y ago> It uses the host platform's C ABI. It dose not require a VM. to me thats whats cool about obj-c, not the syntax or whatever, but the runtime that you can construct classes and methods at runtime just like a "vm" but much simpler and lightweight... its amazing to me that apple never made a construct-the-app-while-its-running type of rapid development tool... the pieces were all there afaik
- anamax 4y agoIt's not obvious how Objective-S handles unreliable resources. I ask because every remote resource is unreliable on several levels, and it's often both important and impossible to figure out which level is misbehaving. (Is AWS down, Comcast, my router? Or did I fat-finger some part of the URI?)
- dang 4y agoRelated: Objective-S: architecture-oriented language based on Smalltalk and Objective-C - https://news.ycombinator.com/item?id=27100272 https://news.ycombinator.com/item?id=27100272 - May 2021 (54 comments) Objective-Smalltalk: now serving its own web site - https://news.ycombinator.com/item?id=18964665 https://news.ycombinator.com/item?id=18964665 - Jan 2019 (26 comments)
- madis 4y agoWe already have LISP. Every once in a while someone invents a new language to solve some old problem, and as the new language evolves, it becomes closer and closer to LISP.
- zoltar 4y agoAffordable lowercase letters for a few decades now. Most of us just call it Lisp.
- mpweiher 4y agoThat's one thing I am acutely aware of and monitoring closely, and in fact it's one of the blog posts that's ripening to be released sometime: Am I building a Lisp?. And every once in a while it looks like it might be that I am, in fact, arriving at a Lisp, but in the end they turn out to be false alarms, so the answer is still fairly resoundingly: No.
- Banana699 4y agoThe only thing lisp seems to have not figured out yet is this small thing we call "Syntax", which the PL community mostly figured out 50 years ago : you write terse notations and the compiler builds up the tree for you, you don't layout the syntax tree yourself. Lisp also seems to have a shortage of knowledgeable advocates who understands other programming languages enough to know that not everything is or needs to be a lisp.
- travisgriggs 4y agoI've watched Marcel's efforts with admiration for his commitment for a long time. I looked at this and browsed some of the examples, and something clicked for me finally. I did a good solid 20 years of dedicated Smalltalk. When I started doing Objective-C, I was glad I could send messages, but noticed a number of differences. One of the things that you don't see just comparing syntax between Smalltalk and Objective-C is some of the deeper differences. Objective-S, like Objective-C, has type annotations. In ObjectiveC, there is a preference for void return types. Smalltalk, has no annotations, but all functions methods return. If you don't specifically return something from a method, self is the implicit return type. For any closure, it's always the last value of the expressions. It made cascading messages really easy, because methods tended to return the thing you wanted most of the time. When I started doing Objective-C, I commented on this lack of object return. I don't recall what the answers were, but it was clear that ship had sailed. :) Since then, as I've sailed with Swift and Kotlin and Python, it's clear that that is the dominant pattern. Python, which doesn't have types, still returns None when nothing is specified. And then last year, I did some work on Erlang/Elixir. Like Smalltalk, all functions return something. You can return nil if you want, but you have to make the effort to do so. Otherwise, you just get the result of the last expression. And I loved it. It makes it so you can compose functional chains really easy and idiomatic. It's led me to wonder why any language that wants to be more "functional" has a Void return type. And once again impressed that Smalltalk, for all of its OOness, is really quite functional in some ways. Functional programming, is of course, many things. But one of them is obviously the good old f(x) -> y thing we learn in high school. Functions take input, and return output. A function that returns nothing, isn't that useful. But we also have computerese "functions" that are more "subroutines". An imperative sequence of steps designed to produce a certain side effect. When one makes a Void function, it seems one is essentially saying "not interested in functional here, just want side effects." I'm not as opposed to side effect programming as some, but I guess I prefer the approach like Smalltalk and Elixir which strongly encourages returns of some value (even if ignored) so that one can be simultaneously functional and side-affecty. I'm disappointed that Objective-S didn't embrace the no-such-thing-as-a-void-return philosophy of Smalltalk, even while lifting so much from Smalltalk.
- mpweiher 4y ago
- deleted 4y ago[deleted]
- elviejo 4y agoAlan Kay said: "Current software is built like the pyramids... By the arduous labour of thousands of slaves. That is because we still don't have the equivalent of the Arch. That allows Notre Dame to have 3 times the volume of the keeps pyramid with a third of the mass." Since it seems you are building such an arch I thing a good name could be: NotreDameLang. ArchLang.
- elviejo 4y agoAlan'sArch NotreLang