Yes, the metaprogramming and runtime-compiler features are a glaring omission from my post, but other than that it still points towards not being functional. The fact that there are outlier Lisp implementations that don't perform common optimizations yet still conform to the standard simply shows that these are not Common Lisp artifacts but implementation-specific artifacts, so the language itself is not categorized by these.
Regarding "the modern sense of the word", has functional ever meant (in a strict sense) anything other than pure functional when it comes to applying the term to a programming language itself? You can write in functional *style* in any language with a GC (primitive or "userspace"), just like you can write in OO *style* in any language with composite data types (or where it can be faked), but that doesn't mean that the language *itself* is a functional or OO language. When the language itself provides such tools as primitives or actively enforces the programming style, then the language itself bears the title. Lisp really does neither with functional programming, but as a general purpose imperative language (the other styles are substyles of imperative programming in this context due to the strict evaluation order, excluding metaprogramming where you can define your own rules) it's not hard to do functional style even without primitive support for it.
But the only way it's "more" functional than C is that it has a GC, allowing functional style without worrying about cleanup. Pretty much everything else in Lisp corresponds to C's functionality, barring the additional primitive datatypes (complex numbers, etc). Even tail-call optimization is not part of the Common Lisp specification and a number of Lisps don't have it.
Haskell is a functional language, with some pseudo-imperative trickery to be able to actually express behavior. Lisp is an imperative language, though its ease of list creation and GC makes it pretty easy to write in functional style for cons-based data. However, once you get beyond lists and have to use real object-building functions & constructors, the "functional" programming you do in Lisp is not all that different in flow from something like Java (though with far less verbosity). The core of the language is not functional at all, unlike Erlang or Haskell; all Lisp composite datatypes are mutable by default, and there are no call semantics that I'm aware of that rely on functional optimization (TCO optionally notwithstanding).
I'm in private research, so I'm completely screwed when it comes to such things; at least at school you'll have access to some. But yes, Thanks Princeton!
The human perception & understanding of the real world is more akin to fuzzy pattern matching, with exemplars, relations, and exceptions (not throw/catch, but "A is like B except for..." or adding "except when..." clarifications to well-understood general rules), with expectations of consequences related to those pattern matches. This has absolutely nothing to do with chains of imperative commands, but is more like declarative programming.
Problem is, all this knowledge & understanding is wrapped up in a huge tangled web of vague concepts & familiarity links. A person can't sit down and communicate absolutely everything they know to make an objective decision, no matter what language is used, or else training of people would get a whole lot easier too.
Yes, I agree. There is such a blind reverence to the CLHS and "[just grab a lib|roll your own] is so easy, why bother?" is so prevalent that it seems that many in the CL community don't even conceive of the possibility of an updated standard, just delving into what nuances can be extracted from the current spec for edge cases and optimization conditions. Plus, many of the libraries are something that a CL hacker banged together in his interactive sessions and aren't very robust or documented, but become ad-hoc standards simply because nothing else is out there. It's amazing that arguably the best functional/imperative/metaprogramming language out there has formed such a terrible ecosystem (The Lisp Curse, etc).
Good on Scheme for moving forward, and while I didn't watch the videos, it sounds like much of this new functionality is standardizing on libraries instead of burdening the core too much.
I don't even care anymore about music & movies coming out anymore, purely because of all this crap that's in association with and being supported by my potential purchases.
I'm not getting crashes, but memory usage always spins up from about 500MB baseline (with all my tabs open) to over 1.5GB where the window itself becomes unresponsive to the OS. Version 7 claimed it fixed a memory leak, but I still get that behavior.
They need to stop with all the UI updates and new features and fix the bugs in the system. I'd love for it to contain metrics telling me how much CPU or memory the plugins are taking (I have AdBlock Plus, the Java crap, BugMeNot, and maybe 1 or 2 other small ones), in the case that it's not the browser itself. Even if the plugins are to blame, Firefox should have tools & a runtime ecosystem that aids in preventing or reporting bugs.
I keep hearing people say that the council of Nicaea canonicalized the books of the bible, but I don't think there's any real evidence for it. Cue the wiki page for it. I have read citations before that a list of books compiled and used in the Christian church was found on fragment dating back to the mid 70s AD, which matches the currently accepted books of the New Testament. Of course, [citation needed] for that, but whatever.;-) The notion that the Nicene council determined the books of the bible seems to be related to the "Holy Blood, Holy Grail" hoaxes & speculation.
I'd love to see the designs for Zuse's work digitized as well, even though his real work did get reconstructed. The man independently (re?)invented binary floating point, made the first real programmable computer, all apparently without study or knowledge of Boole or Babbage, simply because he was a civil engineer sick of doing math by hand. That's just awesome and needs to be commemorated.
Screw performance, the real issue about local installed games is ownership. If I have a locally installable game, I can play it 10 years from now, after the original publisher goes bust. All this online-only "cloud" hype eliminates the ability to actually own a workable copy of a game in perpetuity.
Of course, now that the web clients are getting powerful enough to run full games on their end, everything will be available to cache that local copy and hack your own locally installable version of the game that will last beyond the lifetime of the hosting, but of course that'll be all made illegal and access to your own browser's content will be protected behind DRM.
If the employer also becomes a private ISP, and every employee is charged 1NZD per month for internet access at their workstation (taken straight from the paycheck, after everybody gets a 12NZD/year raise), then they own and are liable for the internet connection at their desk, not the company.
Exactly. We have fundamental systemic issues that a bit of "stimulus" spending here & there is not going to fix. Plus, most of the things you mentioned are there due to entrenched assets, with no representation of the opposing side. For instance, who lobbies on behalf of the public domain?
And then there's all the big stuff like health care, social security, and the real estate market black-holing a ton of value.
It is blind zealotry that commits these sorts of things. Take religion out of the picture, and you have people killing each other over sociopolitical differences, land & resource disputes, racism/xenophobia, plain ol' feuds, etc, all in the same brain-off mob-like mentality.
Humans act like this in general, regardless of which banner they choose to use to claim solidarity and justification. Beliefs about society or humanity, whether they be political, cultural, ideological, religious, etc, are not necessarily problems in and of themselves. But any time there is a social gathering around such a belief, there is opportunity for it to be used as a rallying movement. Religion is a peer in this; you can't really say religion should not exist without also saying that ANY beliefs (social, political, etc) also shouldn't exist, since they have the same effect. (See, for example, the USA's response in heralding a banner of "security" to distort itself after 9/11.)
I agree that most seasoned programmers have already used most of the design patterns themselves. The value of the book is to give names to those patterns, to aid in communicating design and intent within a team of programmers. The very act of labeling gives these things a concrete boundary instead of just nebulous knowledge mixed in inside programmers' heads. The boundaries established also allow analyzing the scope and robustness of the patterns in isolation.
I can't wait until these sorts of things are possible with commodity ARM (or other architecture) chips as well, especially for overall power consumption.
They're making a 256MB version with additional ports for $35. I doubt they could put 2GB of RAM on there; most of these ARM SoCs are intended to use stacked chips, and I don't think they've gone beyond 256MB in the stacked form factor.
Even if the chip does allow using a non-stacked configuration, that's still extra board real estate & wiring which increases the complexity of the build, and $5 isn't going to get you 2GB of memory anyway.
Yes, the metaprogramming and runtime-compiler features are a glaring omission from my post, but other than that it still points towards not being functional. The fact that there are outlier Lisp implementations that don't perform common optimizations yet still conform to the standard simply shows that these are not Common Lisp artifacts but implementation-specific artifacts, so the language itself is not categorized by these.
Regarding "the modern sense of the word", has functional ever meant (in a strict sense) anything other than pure functional when it comes to applying the term to a programming language itself? You can write in functional *style* in any language with a GC (primitive or "userspace"), just like you can write in OO *style* in any language with composite data types (or where it can be faked), but that doesn't mean that the language *itself* is a functional or OO language. When the language itself provides such tools as primitives or actively enforces the programming style, then the language itself bears the title. Lisp really does neither with functional programming, but as a general purpose imperative language (the other styles are substyles of imperative programming in this context due to the strict evaluation order, excluding metaprogramming where you can define your own rules) it's not hard to do functional style even without primitive support for it.
But the only way it's "more" functional than C is that it has a GC, allowing functional style without worrying about cleanup. Pretty much everything else in Lisp corresponds to C's functionality, barring the additional primitive datatypes (complex numbers, etc). Even tail-call optimization is not part of the Common Lisp specification and a number of Lisps don't have it.
Haskell is a functional language, with some pseudo-imperative trickery to be able to actually express behavior. Lisp is an imperative language, though its ease of list creation and GC makes it pretty easy to write in functional style for cons-based data. However, once you get beyond lists and have to use real object-building functions & constructors, the "functional" programming you do in Lisp is not all that different in flow from something like Java (though with far less verbosity). The core of the language is not functional at all, unlike Erlang or Haskell; all Lisp composite datatypes are mutable by default, and there are no call semantics that I'm aware of that rely on functional optimization (TCO optionally notwithstanding).
I'm in private research, so I'm completely screwed when it comes to such things; at least at school you'll have access to some. But yes, Thanks Princeton!
Lisp is not a functional programming language any more than any other language with a GC is.
The human perception & understanding of the real world is more akin to fuzzy pattern matching, with exemplars, relations, and exceptions (not throw/catch, but "A is like B except for..." or adding "except when..." clarifications to well-understood general rules), with expectations of consequences related to those pattern matches. This has absolutely nothing to do with chains of imperative commands, but is more like declarative programming.
Problem is, all this knowledge & understanding is wrapped up in a huge tangled web of vague concepts & familiarity links. A person can't sit down and communicate absolutely everything they know to make an objective decision, no matter what language is used, or else training of people would get a whole lot easier too.
Yes, I agree. There is such a blind reverence to the CLHS and "[just grab a lib|roll your own] is so easy, why bother?" is so prevalent that it seems that many in the CL community don't even conceive of the possibility of an updated standard, just delving into what nuances can be extracted from the current spec for edge cases and optimization conditions. Plus, many of the libraries are something that a CL hacker banged together in his interactive sessions and aren't very robust or documented, but become ad-hoc standards simply because nothing else is out there. It's amazing that arguably the best functional/imperative/metaprogramming language out there has formed such a terrible ecosystem (The Lisp Curse, etc).
Good on Scheme for moving forward, and while I didn't watch the videos, it sounds like much of this new functionality is standardizing on libraries instead of burdening the core too much.
I don't even care anymore about music & movies coming out anymore, purely because of all this crap that's in association with and being supported by my potential purchases.
0 degrees Fahrenheit was the freezing point of a particular brine, which was the lowest freezing point liquid material available at the time.
Unfortunately, its value is slowly losing its accuracy from its use in the recalibration of the standard unit for redundant futility.
I'm not getting crashes, but memory usage always spins up from about 500MB baseline (with all my tabs open) to over 1.5GB where the window itself becomes unresponsive to the OS. Version 7 claimed it fixed a memory leak, but I still get that behavior.
They need to stop with all the UI updates and new features and fix the bugs in the system. I'd love for it to contain metrics telling me how much CPU or memory the plugins are taking (I have AdBlock Plus, the Java crap, BugMeNot, and maybe 1 or 2 other small ones), in the case that it's not the browser itself. Even if the plugins are to blame, Firefox should have tools & a runtime ecosystem that aids in preventing or reporting bugs.
Tech analogy: Single point of failure. The bigger the pie is that you assemble, the more focused corruption will target it wanting a free slice.
No, those were the "secret" Dead Sea scrolls, not these normal ones. </whydoIknowthis>
I keep hearing people say that the council of Nicaea canonicalized the books of the bible, but I don't think there's any real evidence for it. Cue the wiki page for it. I have read citations before that a list of books compiled and used in the Christian church was found on fragment dating back to the mid 70s AD, which matches the currently accepted books of the New Testament. Of course, [citation needed] for that, but whatever. ;-) The notion that the Nicene council determined the books of the bible seems to be related to the "Holy Blood, Holy Grail" hoaxes & speculation.
I'd love to see the designs for Zuse's work digitized as well, even though his real work did get reconstructed. The man independently (re?)invented binary floating point, made the first real programmable computer, all apparently without study or knowledge of Boole or Babbage, simply because he was a civil engineer sick of doing math by hand. That's just awesome and needs to be commemorated.
Screw performance, the real issue about local installed games is ownership. If I have a locally installable game, I can play it 10 years from now, after the original publisher goes bust. All this online-only "cloud" hype eliminates the ability to actually own a workable copy of a game in perpetuity.
Of course, now that the web clients are getting powerful enough to run full games on their end, everything will be available to cache that local copy and hack your own locally installable version of the game that will last beyond the lifetime of the hosting, but of course that'll be all made illegal and access to your own browser's content will be protected behind DRM.
TFS says it only generates 20-30% of a facility's power needs.
Do you expect an absolute 100% success rate from any solution? And what would you be willing to pay or give up in the pursuit of such a success rate?
If the employer also becomes a private ISP, and every employee is charged 1NZD per month for internet access at their workstation (taken straight from the paycheck, after everybody gets a 12NZD/year raise), then they own and are liable for the internet connection at their desk, not the company.
Exactly. We have fundamental systemic issues that a bit of "stimulus" spending here & there is not going to fix. Plus, most of the things you mentioned are there due to entrenched assets, with no representation of the opposing side. For instance, who lobbies on behalf of the public domain?
And then there's all the big stuff like health care, social security, and the real estate market black-holing a ton of value.
As long as I can have a gasoline/diesel powered laptop, I don't care!
It is blind zealotry that commits these sorts of things. Take religion out of the picture, and you have people killing each other over sociopolitical differences, land & resource disputes, racism/xenophobia, plain ol' feuds, etc, all in the same brain-off mob-like mentality.
Humans act like this in general, regardless of which banner they choose to use to claim solidarity and justification. Beliefs about society or humanity, whether they be political, cultural, ideological, religious, etc, are not necessarily problems in and of themselves. But any time there is a social gathering around such a belief, there is opportunity for it to be used as a rallying movement. Religion is a peer in this; you can't really say religion should not exist without also saying that ANY beliefs (social, political, etc) also shouldn't exist, since they have the same effect. (See, for example, the USA's response in heralding a banner of "security" to distort itself after 9/11.)
I agree that most seasoned programmers have already used most of the design patterns themselves. The value of the book is to give names to those patterns, to aid in communicating design and intent within a team of programmers. The very act of labeling gives these things a concrete boundary instead of just nebulous knowledge mixed in inside programmers' heads. The boundaries established also allow analyzing the scope and robustness of the patterns in isolation.
I can't wait until these sorts of things are possible with commodity ARM (or other architecture) chips as well, especially for overall power consumption.
They're making a 256MB version with additional ports for $35. I doubt they could put 2GB of RAM on there; most of these ARM SoCs are intended to use stacked chips, and I don't think they've gone beyond 256MB in the stacked form factor.
Even if the chip does allow using a non-stacked configuration, that's still extra board real estate & wiring which increases the complexity of the build, and $5 isn't going to get you 2GB of memory anyway.
Life is a sexually-transmitted disease with a 100% mortality rate.