4 ms·
A few small addendum: * Objective-C is from 1983, do you? It's not exactly new. ;) * Nimrod is pretty fast and as the only language even supports soft-realtim
by tete 13y ago
A few small addendum:
* Objective-C is from 1983, do you? It's not exactly new. ;)
* Nimrod is pretty fast and as the only language even supports soft-realtime applications out of the box. Besides that it feels the nicest to use and has a fat standard library with stuff like Redis. Sorry, I only played with that language, but already feel like a fanboy
* About GC. Yes, that's a problem of all newer languages, but whatever implementation you choose there are advantages and disadvantages and which one is the right one also depends a lot on the language itself. Sometimes you are better off with your big fancy algorithm and sometimes you really just want good old reference counting. But yeah, GC is the big great topic and I am sure it will be for the next few decades.
- taumhn 13y ago> Objective-C is from 1983, do you? It's not exactly new The dot-syntax for accessing object properties is much more recent though (2009?).
- mikeash 13y agoIt's a pretty unimportant feature though. It's just some very minor syntactic sugar for a regular message send. All uses of obj.property can be replaced with either [obj property] or [obj setProperty:...] depending on whether it's being written or read. It's about as significant as when C added the ability to declare variables in the middle of a block or support for // style comments i.e. not at all.
- gress 13y agoFor now perhaps, but it does seem as though properties are gradually being lifted into a first class language feature rather than a set of conventions.
- mikeash 13y agoProperties are, but dot syntax is almost entirely not about properties.
- gress 13y agoI'm not sure I understand what you mean by that. Dot syntax is a way to refer to properties independent of the usual message sending syntax. How can it not be about properties?
- mikeash 13y agoBecause... it's not? Declare a plain getter method: -(id)foo; Call it with dot syntax: id foo = obj.foo; Works fine. Now declare it as a property: @property id foo; Call it without dot syntax: id foo = [obj foo]; Works fine. They are completely unrelated and just introduced at the same time. You could take dot syntax out of the language without affecting properties in the least. You could take properties out of the language without affecting dot syntax in the least. (There is one exception to this, and that is the part where dot syntax understands and calls custom getter/setter names for properties. But that is the only place where they even touch, and it certainly doesn't mean they're somehow integrated.)
- gress 13y agoIf you define 'properties' as only use of the @property directive, then what you say follows. However that's a pretty arbitrary definition, since properties pre-date the introduction of that directive.
- mikeash 13y agoWell no, the wishy-washy "properties are certain kinds of methods that we can't really define in a particularly concrete manner" definition of properties is the arbitrary one. Saying that properties are those things which are declared with @property is pretty non-arbitrary. That's the definition the compiler users, that's the definition the runtime uses, and that's the definition I use. Using the wishy-washy definition doesn't help, in any case. Nobody would say that e.g. autorelease is a "property", but you can still call it with dot syntax.
- 13y ago
- kbd 13y agoYes but that's pcwalton's point. The OP complained that Rust is slow, in part, because of that feature and pcwalton pointed out that A. most languages do it now and B. that it has no runtime cost because it's just sugar syntax.
- mikeash 13y agoSure. And I'm just saying that it doesn't really matter what year ObjC got them because they're not a big deal anyway.
- mistercow 13y agoAnnounced in 2006, released in 2007 with Mac OS X 10.5.
- girvo 13y agoGlad I wasn't the only insta-convert to Nimrod! Such a neat language!
- trailfox 13y agoIt does look very interesting. I was surprised to learn that it cross-compiles to C before being compiled. I'd be even more interested if there was an IntelliJ plugin for Nimrod.
- masklinn 13y agoWhy? That's a fairly common strategy, GHC worked the same way until a few years ago (and IIRC you can still ask for compilation to go through C). It makes for easier reading of the codegen (reading C source is easier than reading machine code, even if it's generated C source) and before LLVM made it much easier to leverage C compiler optimizations & multiplatform support.
- pcwalton 13y ago> Nimrod is pretty fast and as the only language even supports soft-realtime applications out of the box. Rust has a richer set of safe memory management primitives than Nimrod does (Nimrod is reliant on non-thread-safe deferred reference counting with stack scans, while Rust has thread-safe unique ownership and thread-safe RC as an option), so I'm not sure I agree that Nimrod is the only language that can do soft real time. It's definitely a neat language though.
- eonil 13y ago> Nimrod is pretty fast and as the only language even supports soft-realtime applications out of the box. This catches me. Especially for soft-realtime stuff. Because I am looking for strongly, explicitly typed in-game logic language - which needs deterministic and symmetric coroutine. I have to check it out.
- girvo 13y ago2D or 3D, out of curiosity? I'm just getting my feet wet playing with game programming (a 2D engine, and likely using Nimrod itself for the game logic as well as engine) in nimrod, and am going to be blogging about it.
- eonil 13y ago3D. I don't think there's really a a lot of difference… Anyway it's just a small project, not a block-buster. Graphics part is already mostly written in C/C++. I won't use immature languages for low-level system due to library support and debugging ability I am still reading the manual, but Nimrod doesn't seem to have coroutine support. Do you have any idea?
- girvo 13y agoNo coroutines per se, but it does have really nice native threading support, and I'm nearly certain that coroutines could be easily put in userspace. It's a powerful language in that regard. Ask the guys and gals in #Nimrod on freenode, they're super Super helpful -- I'm not well versed enough in parallelism and concurrency to answer your question, but they are!