Hacker News new | ask | show | jobs
by cooldude127 5909 days ago
Seems kinda silly that you're referring to Scheme as a "modern programming language" and then excluding C/C++/Objective-C. Scheme dates back to 1975, while Objective-C is only from 1986. So by your standards, Scheme would be considered less modern than Objective-C.
1 comments

It has to do with how good old plain LISP, pre-Algol-60, has a nature that has allowed it to naturally and steadily evolve (well, subject to all the usual human foibles, e.g. the fate of original formula LISP being capped with Common Lisp).

C hasn't in my considered opinion significantly evolved from its mid-70s beginning. Too much of C++ is held back by its C compatibility requirement, but I will admit I haven't paid attention to it for a few years. In either case, they very seldom have GC runtimes, and very few interpretive run times for them have been developed. Scheme had both in 1975 (by virtue of running on top of MACLISP).

As I understand it, Objective-C is C with Smalltalk style classes. Wikipedia says it "is a thin layer on top of C, and moreover is a strict superset of C." A quick skim of the Wikipedia article suggests that it's very much like C++ in how I view this, both are mid-'80s languages that built something on top of C with similar backward compatibility and efficiency design goals (the two are of course linked), including no GC.

You can do conservative garbage collection of both and Objective-C 2.0 added it as an official feature (although that's not available on the iPhone version according to Wikipedia).

Anyway, all things considered, I don't consider them modern in the way Scheme and Clojure are (Common Lisp got stuck in amber), and I'm pretty sure I'd consider some version of FORTRAN after 1977 more modern than they are. Certainly higher level, see Fran Allen's flames in Coders at Work for how much the low level nature of C has set us back.

C is a good universal assembly language. C++ is good for certain performance critical applications (VLSI design and simulation were good '80s examples as I understand). Neither are good for many if not most i<whatever> applications.

I can't render an opinion on Objective-C's suitability for these type applications (I only have theoretical knowledge of Smalltalk style objects and know nothing about the whole package), and it's almost certainly the best language under the new restrictions ... but suppose we just defer this until it has a REPL. (A LISP feature from the very early '60s, after the first punched card FORTRAN subroutine version. They'd just switched from vacuum tubes to transistors....)

That is or was a design goal, but I gather from all the discussion it's not even on the official road map. Meanwhile, today you can use Gambit-C Scheme to run a REPL on an iPhone ... you just can't use this implementation that compiles to very efficient C for your app and follow the new ToS.