How Heraclitus would Design a Programming Language
CowboyRobot writes "Developer of Smalltalk Alan Kay has an interview on ACM Queue where he describes the history of computing and his approach to designing languages. Kay has an impressive resume (PARC, ARPAnet, Atari, Apple, Alan Turing Award winner) and has an endless supply of memorable quotes: 'Perl is another example of filling a tiny, short-term need, and then being a real problem in the longer term,' 'Once you have something that grows faster than education grows, you're always going to get a pop culture,' 'most undergraduate degrees in computer science these days are basically Java vocational training,' 'All creativity is an extended form of a joke,' and 'nobody really knows how to design a good language.'"
You wear wraparound sunglasses, even indoors. You wish your mother would let you ride a motorbike. You tell your friends you're pulling in $50,000 a year and $2,000 a month "playing the stock market" but in reality you're only bringing in half that and your dividends from MSFT havn't been good in years. Your non computing friends all turn to you for help; you only charge $30 an hour. Your collegues talk about you behind your back. Your workplace nickname is likely to be "The Asshole". Unlike the Linux fanboys, you actually try to pick up dates in bars but women laugh at you.
ou think you're so cool you hurt. You have mirrors on every wall in your "loft apartment", which is really a grimy little apartment next to a guy who plays Guns 'n Roses at 3am. All of your furniture is from Ikea. You sometimes think that changing your name to "Steve" would be "pretty cool". When you go to bars you only drink Miller Lite. No body ever asks you for help with their computers because they know you don't know anything but OS X, even if you do tell them you "run Unix" now. Your friends openly laugh at you.
You regularly give $10 bills to homeless guys because you have too much money. Computers baffle you, but you enjoy looking at pictures of naked women. You don't know what Linux is, but you continually bugged the IT guy at work about your computer he installed Linspire on your machine.
You shop at GAP. You probably used to use a Mac. When you saw the multiracial image used as a desktop picture and heard that this operating system came from the same country as Nelson Mandella, you knew it was for you. You meet with your friends in fair-trade coffee houses and talk about the eventual overthrow of evil corporations such as Microsoft and Starbucks. Like the Linspire user, you have very little real knowlege when it comes to computers but you would never use your computer to look at pictures of women degrading themselves.
You've been "into computers" for ohh, one or two years now and fancy yourself as "a bit of a hacker". Wouldn't know C from C++, or even Perl for that matter. Older Gentoy users may be building their homes from matchsticks. You've explained to all your friends that your matchstick house will have an "optimised floorplan". They've tried to tell you that your house violates every known building code and law in your area, but you've ignored them so far because you can't read those complicated regulatory documents.
Much like the Gentoy user but you'd also be into sadomasochistic sex if you could get it. You're not just building a house from matchsticks, you're planing to grow the trees to make the matchsticks. You've cleared some land but don't know what to do next because you havn't read the books you've got, so you've posted to alt.arborists.newbie asking for help. It's been three days so far and no one has replied. You remain hopeful.
Hello Gentlemen,
I'm a first year programming student at an Ivy League school and I've
just finished my Visual Basic classes. This term I'll be moving onto
C++. However I've noticed some issues with C++ that I'd like to
discuss with the rest of the programming community. Please do not
think of me as being technically ignorant. In addition to VB, I am
very skilled at HTML programming, one of the most challenging
languages out there!
C++ is based on a concept known as Object Oriented Programming. In
this style of programming (also known as OOPS in the coding community)
a programmer builds "objects" or "glasses" out of his code, and then
manipulates these "glasses". Since I'm assuming that you, dear reader,
are as skilled at programming as I am, I'll skip further explanation
of these "glasses".
Please allow me to make a brief aside here and discuss the origins C++
for a moment. My research shows that this language is one of the
oldest languages in existence, pre-dating even assembly! It was
created in the early 70s when AT&T began looking for a new language to
write BSD, its Unix Operation System (later on, other companies would
"borrow" the BSD source code to build both Solaris and Linux!)
Interestingly, the name C++ is a pun by the creator of the language.
When the first beta was released, it was remarked that the language
would be graded as a C+, because of how hideously complex and unwieldy
it was. The extra plus was tacked on during a later release when some
of these issues were fixed. The language would still be graded a C,
but it was the highest C possible! Truly a clever name for this
language.
Back to the topic on hand, I feel that C++ - despite its flaws - has
been a very valuable tool to the world of computers. Unfortunately
its starting to show its age, and I feel that it should be
retired, as COBOL, ADA and Smalltalk seem to have been. Recently I've
become acquainted with another language that's quite recently been
developed. Its one that promises to greatly simplify programming. This
new language is called C.
Although syntactically borrowing a great deal from its predecessor
C++, C greatly simplifies things (thus its name, which hints at its
simpler nature by striping off the clunky double-pluses.) Its biggest
strength is that it abandons an OOPS-style of programming. No more
awkward "objects" or "glasses". Instead C uses what are called
structs. Vaguely similar to a C++ "glass", a struct does away with
anachronisms like inheritance, namespaces and the whole
private/public/protected/friend access issues of its variables and
routines. By freeing the programmer from the requirement to juggle all
these issues, the coder can focus on implementing his algorithm and
rapidly developing his application.
While C lacks the speed and robustness of C++, I think these are petty
issues. Given the speed of modern computers, the relative sluggishness
of C shouldn't be an issue. Robustness and stability will occur as C
becomes more pervasive amongst the programming community and it
becomes more fine-tuned. Eventually C should have stability rivaling
that of C++.
I'm hoping to see C adopted as the de facto standard of programming.
Based on what I've learned of this language, the future seems very
bright indeed for C! Eventually, many years from now, perhaps we'll
even see an operating system coded in this language.
Thank you for your time. Your feedback is greatly appreciated.
> The itching wasn't so bad, but the burning drove me nuts.
Sounds like Hera shared more than her clitus.
Sheesh, evil *and* a jerk. -- Jade
Notwithstanding the grammar mistake--I hope editors will have corrected it before I finish writing this comment--it is not "How [Would] Heraclitus ... Design a Programming Language" but rather "What Programming Language Would Heraclitus Design." On the other hand if you are wondering how should you desing and implement a programming language, I would suggest targetting Parrot which makes implementing compilers 1000 times easier than ever before, not to even mention future interoperability and e.g. access to the entire CPAN from the level of your own brand new language, effectively solving the most important problem of new languages: there are no libraries so people don't write anything, and people don't write anything so there are no libraries. Good luck.
Sincerely,
Pan Tarhei Hosé, PhD.
"Homo sum et cogito ergo odi profanum vulgus et libido."
I'd disagree that there aren't people who can design decent languages. The problem is that they can't market them, and that developers continue to go back to the brain-dead syntax of C as if looking like C was an aspiration for a language.
Languages like Ada, Eiffel etc (which yes I have used commercially) are brilliant from a language perspective, especially for large projects. The trouble is developers would prefer to write something in 5 characters than 30 characters in a mistaken belief that they are being more productive and that typing is the longest task they undertake.
When you get into more "esoteric" areas like goal driven programming or agents then the languages become better, because the people using them are more aware of the purpose of the language and aren't constrained by a belief that it has to look like C.
C# and Java are great example of languages that took on that syntax and many of the constructs as its easier to get a language accepted when it looks like C than when a developer has to learn a new syntax that will in the long run be better.
The problem isn't language designers its us developers, we don't want to spend a week learning a new syntax for a loop, we want to use what we used before. In other words we are luddites.
Smalltalk was okay, but I prefered Eiffel, Java and C# are both by comparison rubbish, but they have better GUI libraries and marketing departments.
An Eye for an Eye will make the whole world blind - Gandhi
Perl is a very powerful language to write small tools in the UNIX philosophy. It works very well. It requires some level of competence in the user, but so does every advanced tool. And it is not a general-purpose language.
Frankly, without Perl my work would be far harder.
I also like Eiffel. Guess I am one of those scary people that actually use different tools for different tasks and do not spam the world with simplistic, general and irrelevant statements. about
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
Waka waka bang star tick tick hash,
Caret quote back-tick dollar dollar dash,
Bang star equal at dollar under-score,
Percent star waka waka tilde number four,
Ampersand bracket bracket dot dot slash,
Pipes curly-bracket bang comma comma CRASH.
Also: Isn't it odd that perl is the one language that hardly ever makes it past the slashdot lameness filter?
~Wx
sig?
It was in Dobbs' Lightning that I first read Tux Sneezed, which I still think is a rip-roaring good yarn. The scene where Atlanta Hope sees Niklaus Wirth and it's her old *ahem* "boyfriend" with the gaunt cheeks, and he said "I am Bob Dobbs", man, that's writing. The 103-page long speech afterwards, explaining the importance of strong typing and showing why all the anti-Heracletians are destroying civilization by destroying strong typing, certainly is persuasive, especially to me who's got three (going on four) contracts, each of which share the same include files. "Without strong typing there can be no civilization."
Her nonfiction book, "Antitrust: The Unknown Ideal for the New Heracletian" is, I think, a distinct letdown, but the Dobbs' Lightning bumper stickers sure give people the creeps.
I met Atlanta Hope at the time of the IEEE Committee Riots. I was in the thick of it (you have no idea how bizarre civil war gets when one side uses nerf weapons as a large part of its arsenal), and met Atlanta herself where the last stand was being made. She grabbed my right arm and howled something like "War is the Health of the State! Conflict is the creator of all things!"
Seeing as how she was on a heavy Heraclitus wavelength, I quoted with great passion, "Men should fight for the Laws as they would for the walls of the city!" That won her, and I was Atlanta's personal lieutenant for the rest of the battle.
(Epilogue: Heraclitus -- He was apt to say odd things. Once he even wrote that "Religious ceremonies are unholy." A strange duck.)
I would suggest targetting Parrot [slashdot.org] which makes implementing compilers 1000 times easier than ever before,
In light of more than half a century of dynamic language history, that's just astounding hubris. By comparison with systems like Lisp and Dylan, for example, the Parrot system is still enormously complex, limited, and cumbersome from the programmer's point of view. And compared to Smalltalk, Perl/Parrot isn't even in the same league when it comes to programming environments, browsers, and other tools (in fact, very little really is).
Kay's example of Perl as a language that reinvents the wheel poorly is as appropriate today with Parrot as it was for earlier versions of Perl. The fact that Perl is useful in practice (I use it all the time) because it has lots of libraries and ports doesn't change the fact that its foundations are poorly thought out.
But Perl! Ah, Perl! Such a bundle of contradictions! It violated every rule I held dear about language theory, and was a better language for it. Perl doesn't try to be a theoretically perfect language for any particular theory of linguistic perfection. It has principles, but it is not a slave to those principles. It has a degree of consistency, but never a foolish consistency.
No language on Earth has made me rethink my concepts of "what makes a good language" more than Perl.
proof, n. A demonstration that a conclusion is implied by certain premises and axioms.
I kindof get the impression Kay hasn't looked at modern lisp as much as historic lisp - for starters, lisp has had structured data for, well, decades (no, lisp doesn't just do symbols and lists, okay?), and while us lispers applying lessons from compsci type theory piecemeal to practical lisp drives the static-typing bigots/purists into insane flamewars, the existence-proof of the applicability of such lessons that availability of type-inferencing lisp compilers such as CMUCL and SBCL shows that Kay's comments about lisp and types are again, while not exactly wrong, are mostly applicable to the lisp of yore (and with, lisp, we're really talking _yore_, compared to almost any still-used language around today except FORTRAN), not ANSI Common Lisp.
So I don't particularly like his pigoenholing of lisp - he says there were three working extensible languages, and smalltalk was one of them, kindof not mentioning however, that lisp _wrote the book_ on extensible languages. Every good lisp program extends the vocabulary of the lisp language into the problem domain (a characteristic shared with good Forth).
I confidently predict something vaguely recognisable as "Lisp" will outlast pretty much every other computer language on the planet. You see, new dynamic languages have a choice when they get to a certain point (a choice e.g. python is now facing) - do they add the remaining features of lisp and thereby "risk" being classed as a reinvented dialect of lisp, or refuse those features, maintain their independent identity, but forever cripple their language compared to lisp?
I'd disagree that there aren't people who can design decent languages. The problem is that they can't market them,
No, the problem is that the people who know a lot about languages know little about application domains, and the people who know a lot about application domains know little about how to design languages (or at least don't spend much time on it).
That's why languages like MATLAB dominate scientific computing and languages like Perl, PHP, and Java dominate web computing, and why languages like CAML, Haskell, Lisp, and Smalltalk have never ended up being good general purpose languages.
The problem isn't language designers its us developers, we don't want to spend a week learning a new syntax for a loop, we want to use what we used before. In other words we are luddites.
Programmers contribute to the problem. But while many people have syntactic hangups, even more of them just "don't get" a different approach to programming at all.
But I think that's as much as a function of the fact that a developer today is standing on the shoulders of giants more than ever.
To quote Isaac Newton, "If I have been able to see farther, it is only because I have stood on the shoulders of giants."
Frankly, we've hit a point where there's a lot less "science" in Computer Science, or rather, the need for such training in many programming jobs.
There's nothing wrong with a well rounded education but for some people they don't have the time or inclination to take on full engineering curriculums (as I did).
While I don't mind have gotten a rounded education in light of where tech careers have gone, it's too bad I didn't follow my father... construction. Given his real estate holdings, I doubt I will reach his station in life (economically) if I stay on a pure tech track... highly unlikely.
So if CS degrees are nowadays more about vocational training, so what. A tech degree of any kind, no matter how full of yourself you are, is not going to take you where it once might. That's reality. For all the noise we hear about a focus on math & science, it seems to me to be rendered somewhat moot since some Big Wig Biz guy is going to offshore such work anyway. So I ask, what's the point?
Don't get me wrong, a good foundation in math is good, we just don't all need to become math majors...
If you manage to learn and apply algebra, you can at least solve some practical math problems. But considering some of the stories of people who can't deal with fractions, well, obviously we're failing somewhere in the math department.
Anyway, just rambling now...
-M
What about the VMS fanboy, we wear cardigans, hush puppies, tweed hats and smoke pipes. We don't normally "shop" but when the leather elbow patches can no longer hang on or the felt is just too floppy, we vist the church op-shop. We always have a pencil and pad in our pocket and a small cylindrical slide rule for a quick estimate. Tuesday trivia night is our social highlight of week and the hot chocolate and lamingtons are wonderfull. We have wives but have grown to realise sex is really just another sports activity and would much rather play with the train set in the shed.
Whoever modded the PP a Troll needs to learn how to laugh at themselves.
Viva-la-difference
Disclaimer: I know jack-shit about VMS or French spelling.
And did you exchange a walk on part in the war for a lead role in a cage? - Pink Floyd.
Perl fills a 'tiny short-term need'? Is that why Morgan Stanley, RyanAir, Amazon, Ticketmaster and even increasingly Google to name but a few are using it for real, business-critical applications?
I'm so sick of all this anti-Perl talk. I write powerful applications in Perl and they are definetly not 'write only'. If anyone writes a 'write only' program in any language then it is the programmer who is at fault. Perl assumes a bit of intelligence on the programmer's side, rather than adopting Java's policy of bondage. And contrary to what a previous comment said, Perl is a general purpose language (with excellent built-in data structures and regular expressions, and a convenient and expressive syntax).
This guy might have an impressive [sic] resume, but he is badly showing his ignorance about Perl.
I do think you have a good point about some languages being good at different tasks. I think its even better to just look at computation from a more generic perspective to get a true picture. Computer programs are written to solve problems for the most part. Most problems will have a "problem domain" so to speak. The problem, and problem domain, are key factors in choosing a language.
:)
System Automation - For a quick and easy automation task on a server I administer I choose a light-weight and dynamic language that lets me very expressively accomplish some task.
Big Business - Automating a 10,000 person brick and mortar company with virtually no technology. Things like ERP, CRM, and B2B (god forgive me for the buzzwords) are what are on your mind then. You need to integrate payrolls, manage sales, and integrate with other businesses and resources out there. Your problem domain is so large that multiple languages and tools will be used to fill the gap. And.. depending on your business you may even get into domain specific languages *or* invent new domain specific models of computation that are better at solving your particular problem.
So you can look at the most simple thing to a very large task and see that there are enermous differences in scope and scale, yet we are solving a problem, or a series of problems. Each problem and facet of the problem must be addressed and solved (correctly). Some of the time your model and business domain may not fit anything very well . Some of the time it will.
We have learned that OO programming tends to work reasonably well at modelling most problems in the business domain. As a system administrator you know that something like Perl or Python is quite good at solving problems in the system administration domain. As an embedded programmer you know that assembler can be used to solve problems when efficiency is absolutely required... but the point is that if you take things one level hire and look at the domain of the problem you are solving certain types of tools tend to work better than others. By knowing the TYPES of tools out there, not just one languages implementation of a concept, you can remain more flexible. If the problem is large enough and has enough scope, using a domain specific, possibly in house created/project specific, language to model the problem can be acceptable. It all just depends on the problem you are solving
Jeremy
I strongly disagree. Not all of us are a bunch lazy idiots as you imply. If I didn't want to spend a week learning a new syntax for a loop I wouldn't have finished reading a second Perl 6 book yesterday, now would I? I have already spent man-months learning the language that is not even fully designed yet, so I would appreciate if you kindly exclude me--and most of Slashdotters--from your hasty generalization, for even though I would tend to agree with you that most of people in general are incompetent idiots, I believe that Slashdot community is a rare exception to this sad rule, or otherwise we wouldn't be so enthusiastically discussing the possibility of designing a Heraclitean programming language with its roots in the philosophy of ancient Greece--which nota bene would be an interesting addition to postmodern languages we already have. But even though I disagree with your premiss, I fully agree with your conclusion that Java and C# are rubbish, that of course is undeniable. But this conclusion by itself is quite useless unless we answer the question why they are the way they are. Why does the competence of your proverbial marketing department is nearly without exception reversely proportional to the technical advantages of the technology in question? When we answer this question, a lot of other answers will become clear.
Sincerely,
Pan Tarhei Hosé, PhD.
"Homo sum et cogito ergo odi profanum vulgus et libido."
> ADA is good for secure stuff
Actually, Ada [sic] is for big, complicated software systems that you want to be able to maintain.
Of course, maintainability is a key component of security, and Ada does offer built-in resistance to buffer overflows, but I don't think security is the primary reason for choosing Ada [sic].
> C++ is good for GUI
That claim isn't so much wrong as... baffling.
Sheesh, evil *and* a jerk. -- Jade
Thanks,
--
Matt
ClutterMe.com - easiest site creation on the Net. Just click and type.
Which is why for years people have been writing CGI, QA and Admin scripts in Smalltalk.
Sanity is the trademark of a weak mind. -- Mark Harrold
You have got it so backwards, I don't even know where to start! For starters, C++ is NOT older than C - it's C's f***ing descendant! C was invented in the 1980s by the Borland corporation (it was invented as Turbo C), which was competing with Microsoft's QBASIC. C++ was created by Microsoft as an attack on Borland - perhaps you've heard of Visual C++?? Have you *ever* heard of Turbo C++? But you probably haven't, cos you're such a screwed up newbie.
n -the-leg patent.
Oh, and BTW - an *operating system* in C? Jesus, where have you *BEEN*! Don't you know that almost all the OS's existing today - Windows, SCO/Linux, even MacOS - have been written in C?? And that's why there's so many bugs in all of them - because C is practically *impossible* to write good code in. That's why Apple is now switching over to Objective C, which is kinda like Apple C++. I've heard that Windows XP was written in Visual C++. And SCO/Linux was going to be ported to Java, until Microsoft paid Sun off to kill the deal and IBM sued SCO for violating their big-company-with-major-trademarks-shoots-itself-i
Thankfully, the field is being revolutionised by people like Richard Stallman, who wrote gcc (the GNU C compiler), gvim and gnome, among many other open source programs. Finally, an advanced programming language like Perl can be used FOR FREE. Without a shadow of a doubt, Perl is the language of the future, even though it's still pretty young and all.
(And no, HTML is NOT a language. Go a learn a REAL programming language like Javascript, n00b).
A "write-only language"...
In Soviet Washington the swamp drains you.
The reason Perl is so popular is because it is SOOO easy to throw something together in no time at all that can access databases, websites, and so forth, without all of the messy class coding of the other languages. Would I want to write something huge in perl? Heck no. Because Perl is made for scripting and not for large projects. Same thing for PHP and and all of those languages he likens to Egyptian pyramids made from brute force.
Also, I don't know about him, but I know that at Purdue the CS degree requires the authoring of a compiler, some study of programming language theory, some classes about Database Theory (I can't remember the last time a vocational class taught tuple calculus and normalization), as well as some high level algorithm knowledge. I would consider at least that degree program a step above just some Java vocational classes, and his comment only highlights how egotistical he really is.
Just because he's really smart doesn't give him the excuse to be a real jackass.
b. Early Descriptor Architectures in Capability-Based Computer Systems (nice book -- great to see it available again)
echo 33676832766569823265328479713269.8639857989Pq | dc
LISP had it first, LISP did it better, and LISP is all you need. Let's look at why LISP is so good that it has to be mentioned ad nauseam whenever a language discussion comes up.
1 -- LISP is simple and elegant. LISP has a pure functional design, without any of that procedural/imperative/OO junk that people use to actually write software that does stuff. LISPs purity and simplicity keep it in the lab, where languages belong.
2 -- LISP is old. You name it, LISP implemented it way back when. Things like visual form designers, refactoring IDEs, regular expressions and the like don't count -- those aren't real language features, just modern rubbish that helps people do boring jobs.
3 -- LISP is highly intuitive. I've used LISP for 70 years, man and boy, and that's why I realise just how intuitive LISP is. Starting off, some people find LISP a bit daunting, and they keep wanting to write 'a + b' instead of '(add a b)' just because it's "shorter" and "clearer". In fact, though, it only takes a few short years of practise with purely functional languages to find LISP completely intuitive.
4 -- LISP is used by real professionals -- computer scientists, AI researchers from the 1980s, and Douglas Hofstatder. The post-LISP languages are used by hired help -- engineers and whatnot. I'm sorry to have to say it, but it's true. If you want to get _paid_ for programming, sure, use C# or PHP or something like that; _gentlemen_ will continue to use LISP.
Well, I hope that's finished the 'debate' (if indeed there can be debate about what is self-evident). LISP is better, and that's that. Remember, it's not what you can _do_ with a language that matters; its how much you can _say_ about it.
Incidentally, this post is a JOKE. LISP has exactly the strengths and weaknesses you would expect from a pure functional language. I just think it's weird that people always jump up and go 'LISP IS BETTER OH YES IT IS' when a language discussion comes round.
Whence? Hence. Whither? Thither.
Kay works a lot on new ideas, many of them being incorporated into Squeak and Croquet. The ideas are still rough, though, so in some cases I don't know if I'd say they were accessible yet. Such is the nature of research. (But even kids are using Squeak.)
Does that mean he passed the Turing test?
Ah, like English. Or, for that matter, everything else ever invented or discovered, accidentally or otherwise. Fire burns down houses. Wheels are attached to cars that run people over and pollute the environment. Light bulbs enable light pollution.
The quote is another example of stating something obvious in a way that seems profound.
-----------------------
You are what you think.
he probably had what Johnny Cash called "ring of fire"
So what are the lessions to be learned from languages written in the past?
- API/Libraries are important, more important than the language itself, no matter how good your language is, if you don't have a bunch of libaries ready to use the common man will solve his problems faster and better in another language. (Perl/CPAN)
- good syntax is important, do/end are no fun, {}'s are easier to read to the common man (C)
- interoperability with other languages is important (C-libraries exported to scripting languages)
At least for me that seems to be the points that make a language successfull, while not necesarrily beatifull. Most of the powerfull, but mostly failed languages, of the past (Smalltalk, Lisp) seem to either ignore most or all of these points, worse they come with their own VM, their own development environment and such, so unless you do it their way you are mostly (hard to write or ship a few ten-line long script, hard/impossible into a native-binary, etc.).
It's "egregious." I should know. I have a Ph.D. ;-)
Shop as usual. And avoid panic buying.
*sigh* I'm sick of listeing to these old academics whine about the real world.
I mean, doesn't this say it all:
Once you have something that grows faster than education grows, youre always going to get a pop culture.
Oh yeah, because pop culture is bad. We don't want something to expand so fast we lose our academic control over it.
Oh, looky here! ---> . That's the world's tiniest violine playing...
Or:
One could actually argue--as I sometimes do--that the success of commercial personal computing and operating systems has actually led to a considerable retrogression in many, many respects.
Whiskey Tango Foxtrot? So it would have been better if all these lusers (those not in academia) had never got their hands on computers? Or was U.C.L.A. supposed to supply them to us?
I dont spend time complaining about this stuff, because...
Uh, right.
I have worked in the computer business as system technician, programmer, CTO, and product manager for about 15 years--have even been on some panels in academic seminars in connection with RDF and the Semantic Web. The reason these guys (and I do believe generalizations are in order) disagree with how things are done in the industry is simply because they don't understand it. It's really that simple. They are different areas of expertise.
Computer science research has its own goals. Scalability, design-for-change, open interfaces, those kinds of things are what it's all about. In the private sector on the other hand, one thing rules: cash flow. Cash flow makes the world go 'round, and it will take precedence over scalability, modular design, and documented interfaces eleven days per week. It's not stupidity, it's really very rational. Cash flow is not about economy in the simplest sense: it would be cheaper for me to buy a one-year public transport ticket instead of buying one every month, but I don't have that ammount of cash lying around, so it's still better (in a completely rational sense) for me to get the more expensive monthly solution rather than take a loan or whatnot. That is the reason why quick fixes are sometimes the smartest way of doing things. Something else is almost always smarter than the "best" design. (Insert "cost of last 10%" rant here.)
This is especially true about all small and medium-sized Internet companies that--recently burst bubbles notwithstanding--have created a huge new economy. They are employing millions of people around the world (directly or indirectly) and have introduced computer usage to pretty much every individual in the developed world.
This did not happen because everyone was stupid and did everything backwards, and it's not "unfortunate."
It also didn't happen because the academic institutions made it happen. Academia did not turn HTML into a de facto standard. In fact, if HTML had been as complex as RDF, and treated as strictly, there's a good chance the Web had never happened. The sloppyness of implementation that is a headache to most Web developers today may very well have been one reason why the Web grew so quickly. And there is still a good chance that RDF will never make it into the mainstream, it depends on how anal the developers of it plan to be. (Although even if it doesn't, it will probably still be used at 10 huge corporations around the world that are big enough to have their own in-house academic institutions.)
Keep teaching us about scalability, and if you want to listen we will explain something about what makes mainstream businesses able to pay for systems development at all.
Well, I was trying to be funny, but obviously it didn't come off too well. But shush, don't tell anyone: I really love the ubercomplex discussions going on.
Shortsightedness is not really the virtue you are painting it to be.
Buy the monthly right now, then eat beans and rice however many months it takes to save for a yearly. Then buy the yearly, and use the money you would have spent on monthlies to make other cost-cutting investments (and a nice steak dinner reward, of course).
For example, in my previous home I cut my water and sewer bills by 80% and my electric bill by 40% by investing in slightly more expensive appliances. Payback ended up being less than two years, because the cost of electricity and water has gone up faster than expected.
The unwillingness to take a hit now (those rice and beans meals) for a payoff later is the downfall of many businesses. Optimizing investments is not as simple as you make it out to be, and cash flow is a simplistic meter that does not apply to all business situations.
Substituting high liquidity for high efficiency is still over-generalizing; as people often say when discussing computer languages, every problem is unique and may require a unique solution. Every business likewise.
This article has an interesting comparison between C, C++, Java, Perl, Python, Rexx, and Tcl.
At UC Santa Cruz, we went through this back in the early '80s (83-84). In fact, the students even organized to protest the theory-based curriculum. (OT: Any old CISSA members out there?)
Of course, we wanted courses in VAX Assembler and C. When I got out into the real world, it turned out that the theory that I had learned was of much more practical use than the so-called "practical" classes I took -- with the exception of C, which I learned on my own.
General Relativity: Space-time tells matter where to go; Matter tells space-time what shape to be.
I really liked the end of the interview and copied it to read again a few times. But felt a bit disappointed in that Kay is boosting Squeak and Lisp, dissing Perl, and yet seems to promote many ideas that are becoming mantra by perl people.
Given that the interior of Perl is (at least used to, I don't know about now or Parrot) ugly, scary stuff, I would have liked to hear Kay's take on what Larry Wall and some other pretty bright people are trying to do with perl and parrot now, and whether he thinks their philosophies are great or slumbering. Might be a flame war to end all flame wars, but relatively untutored (well Niklaus Wirth's book was my beginning at a young age and according to Kay I've probably been damaged by it) I was excited to see all the ideas that were being stolen and discussed from other languages for Perl 6. Late typing, rebuilding the language from inside at a "meta" level, these all sound great. I'm also interested time and again with Haskell and perhaps it is because I subconsciously have an urge for cleanliness like the 1/2 page of Lisp.
Would parrot written in Lisp be better? I've liked Perl and the libraries of course, but if I could do without them I wonder if Kay would recommend Squeak, something like Erlang (?), or what. The talk of the ancient computer that had 1000 times better "lost" technology than today was intriguing but there was too little about it, and it seemed to talk almost about the Cell processor there.
I feel a great amount of warmth and wisdom from Kay and it is probably too much to ask him to light the way, but if he is going to go shooting down most of the world, even people who are seriously wanting something better and trying to build it, I think he has some responsibility to address it, or at least to mention how Squeak can solve all our problems. Well I guess I have a week of surfing to find my own answers. When I looked at Squeak the last couple of times a while ago I had to turn away from it (down the dark path?) but at the very least I'd like to be intelligent about my choices.
To me perl and the people at perlmonks.org are interested in a language that assists creativity and the wild Larry juggernaught and the wizards involved in Perl 6 deserve more than Kay handed out. I hope this is not his last parting shot but the first of many challenging, wonderful discussions by Kay about how we can get to the next level.
It appears Hericlitus did have something to say about all the perl-lisp-c++-java flamewars!
Hericlitus said that the universe was nothing but conflict and strife. What was experienced was illusion. What there is is a constant incessant flux, a raging fire. What is real is the logos (the binary code), that which lies beneath the fire. http://n4bz.org/gsr/gsr7.htm
Well, sometimes you eat the bear, sometimes the bear eats you.
...because it's not just "foreach n in X loop", it's "declare type Array_Bounds is Integer range 1 .. 5; begin for I in Array_Bounds'Range loop [...] end loop; end;".
A proper type system is worth a heck of a lot more than a few characters saved typing!
OK, I'll bite. I don't remember any GUIs in the 60s... what were they?
check wikipedia (and update it if you find anything else)
-- The world is watching America, and America is watching TV.
It has memory management, quite a sensible sort actually. First, you can manually deallocate things (like "free"). Second, you can take complete control of the memory allocation of a type via "storage pools" - allowing tricks like mark-and-release or garbage collection. Third, it's clever enough to free the storage for everything of a particular type, when that type goes out of scope. All of which makes a lot more sense than C's rather brute-force "malloc" and "free".
Also, Ada leaves C in the dust for bit-flipping. You can specify layout of data down to the byte-order and bit-width, the exact modulus of modular integers, the exact delta of fixed-point numbers, etc etc.
Personally I think the reasons Ada didn't catch on much more are down to an early lack of good compilers, and a stagnant library (no standard way to access sockets? Is this the 1980s?).
You can do all that stuff, but I'm not the manual, go read it. Don't forget Ada was amongst other things designed for programming on the bare metal, for embedded (military) apps.
In other words, C isn't really a language. It's a core upon which a language can be built. C plus the standard library plus posix is a language. And even that relies heavily on the preprocessor to mutate your code to match local implementation quirks.