I'm sure it applies to others, but I know the Io example is a caricature of its own process. The getSlot()s can be translated to getSlot("getSlot") operations and so on (it's getSlots all the way down -- no, I lied, there is a CFunction barrier.) Of course strongly reflective languages like to do everything with their reflection process (sometimes with syntactic sugar) rather than providing a distinct reflection environment (which is more common in languages with a bit of reflection "tacked on")
>>31
Ah, in that case, let me direct you to the second sentence in >>25.
Name:
Anonymous2010-10-24 15:31
>>32
Ok. I am not programming, so tell me everything I need to know.
Name:
Anonymous2010-10-24 16:09
Almost any modern language comes from C.
Independently appear:
- C (structured, mid-level programming, compiled), used in OS and app design.
- Lisp (functional, high level, garbage collector, (byte-)interpreted), used in AI and research
- Smalltalk (first OOP, high level, GC, interpreted) by Xerox. Still used in academical environments, I think.
Then:
- C++ (C + OOP, syntax closer to C, compiled) OS and apps, like C.
- Objective-C (C + Smalltalk, syntax closer to Smalltalk, compiled). Basically only for iProgramming.
After that:
- Java (C + OOP + garbage collector, byte-interpreted). Applets (90's Flash), desktop apps, server side apps.
- C# (Microsoft's copy of Java: basically same features). Apps, server side apps. Applets through Silverlight, but there's no place for it between Flash and HTML5.
>>36
Also, some details about Lisp are wrong: functional
It's hardly purely functional, it's multi-paradigm, so if you want to write imperative, declarative, OO or functional code, you can do just that. Functional style may be preferred to some degree, but nothing stop you from using the same style in C (except that C's facilities are not as strong in this regard) high level
Yes, but it can also be used for mid and low-level stuff.
If you want to access the hardware or memory directly, you can do that - most implementations provide FFIs, there's also portable FFI implementations and it can also be done fairly efficiently, especially if you use implementation-specific stuff. Most implementations which compile to native code also have their own assemblers and assemblers can also be implemented portably. (byte-)interpreted
Just a handful of implementations are. Most compile straight to native code. Interpreted-only implementations are actually a minority - the only one I can think of is GNU CLISP. SBCL, CCL, ECL, ACL, LispWorks, ... all compile to native code, but some also have optional interpreters.
One thing you did get right and that is that most Lisps are GCed, but same is true for most high-level languages.
>>34
The entire ML family, Haskell, Clojure, Factor, APL's descendents, all your scripting languages, and Common Lisp itself if you're counting C++ as modern. If I wanted to do some research, I could give you many more. Sounds like "almost any modern language comes from C" to me.
Name:
Anonymous2010-10-25 10:11
>>38
GNUStep is terrible. Let me know when simple things like switching Terminal.app to UTF-8 and changing the font stop breaking everything and I'll reconsider.
>>45
Mac OS X is simply the continuation of NeXTSTEP. I like to think of Mac OS X 10.6 as NeXTSTEP 10.0. Indeed, Mac OS X 10.6.4's version reported by the kernel is 10.4.0; Mac OS X 10.5.y's version was reported as 9.y.0.
Unlike C++, C+- is a subject-oriented language (SOL).
Each C+- class instance, known as a subject, holds hidden members, known as prejudices, agendas, or undeclared preferences, which are impervious to outside messages, as well as public members known as boasts or claims. The following C operators are overridden as shown:
better than
< worse than
>> way better than
<< forget it
! not on your life
== comparable, other things being equal
C+- is a strongly typed language based on stereotyping and self-righteous logic. The Boolean variables TRUE and FALSE (known as constants in less realistic languages) are supplemented with CREDIBLE and DUBIOUS, which are fuzzier than Zadeh's traditional fuzzy categories. All Booleans can be declared with the modifiers strong and weak. Weak implication is said to "preserve deniability" and was added at the request of the DoD to ensure compatibility with future versions of Ada. Well-formed falsehoods (WFFs) are assignment-compatible with all Booleans. What-if and why-not interactions are aided by the special conditional evenifnot X then Y.
C+- supports information hiding and, among friend classes only, rumor sharing. Borrowing from the Eiffel lexicon, non-friend classes can be killed by arranging contracts. Note that friendships are intransitive, volatile, and non-Abelian.
Operator precedence rules can be suspended with the directive #pragma dwim, known as the "Do what I mean" pragma.
ANSIfication will be firmly resisted. C+-'s slogan is "Be Your Own Standard."