Domain: mit.edu
Stories and comments across the archive that link to mit.edu.
Comments · 7,673
-
Re:Lua? Anyone? Anyone?
There were to two about Lua last year-- see http://ll3.ai.mit.edu/.
-
Re:Article is total nonsense
Read the first abstract here.
They mean English as a programming language, which would, indeed, be the easiest to learn of them all, provided the person attempting to learn it were already a fluent speaker/reader/writer of the natural language English.
I agree about Perl, however. Perl can be more cryptic than Enigma! Hardly "easy to learn". -
Re:Lightweight?
At the LL1 page they define a lightweight language as one which is easy to learn.
Following the analogy of heavyweight vs lightweight threads, I initially thought it would be about languages which are either very small once compiled, or that have simple interpreters.
But who am I to question some guys at MIT?
-
before you waste bandwidth
-
before you waste bandwidth
-
Let's do it better ...
BTW, for anyone who thinks the little "I voted" receipt they recieved means diddly, it doesn't. There is no way for ANYONE, in any state in our union to verify that their vote was in fact counted, and NO way for anyone to verify that votes were not made up, and so on, and so on.
We need a major FEDERALLY MANDATED VOTING REFORM ACT with complete transparency in the whole process including voter registration, vote casting, tabulation, and accounting and auditing. The end result will inevitably combine computers and the internet, public key encrtyption, AND a paper trail, into a system where EVERYONE can validate their vote (while still absolutely retaining their privacy), where EVERYONE can count the votes (how long does it take a computer to count to a million these days? 2 seconds?), where EVERYONE can verify that no more votes were counted than voters registered, and where blind trust in counts done behind closed doors (whether by machines, by hand, or by aliens from planet zork) is eliminated.
Finally, please remember that paper ballots are not the answer ... otherwise the term "stuffing the ballot box" would never have been invented.
For an interesting study on the beginnings of such a system, and to get an idea of the social changes that would be required, check out
http://theory.lcs.mit.edu/~cis/voting/herschberg-t hesis/all.pdf -
tech review covered this a month ago.This is ancient but you didn't get to hear about it here because my submissions are uninteresting. The story I submitted:
2004.11.01: Robot ears for urban violence
Technology Review's Prototype column reports an improved acoustic recognizer intended to function as ears for the police in bad neighborhoods. "Software developed by Ted Berger, director of the University of Southern California Center for Neural Engineering, can be trained to recognize and distinguish sounds that are indicators of a security breach or a safety hazard, such as a gunshot..." Though Berger's innovations lower the rate of "false positives", other countries have already developed and deployed such systems for defense purposes. The grunts in Iraq could sure use one of these. If you invert the math for the acoustic beam-forming, you get a nifty intelligent buildings kind of application. -
Re:What?
How about a national database for tracking when everyone uses the restroom. We could put little sensors on all toilets to track how often they're flushed!
There is a prototype here.
- shadowmatter -
Re:Err, of course?
-
Object Lesson
What We Can Learn From BSD
By Chinese Karma Whore, Version 1.0
Everyone knows about BSD's failure and imminent demise. As we pore over the history of BSD, we'll uncover a story of fatal mistakes, poor priorities, and personal rivalry, and we'll learn what mistakes to avoid so as to save Linux from a similarly grisly fate.
Let's not be overly morbid and give BSD credit for its early successes. In the 1970s, Ken Thompson and Bill Joy both made significant contributions to the computing world on the BSD platform. In the 80s, DARPA saw BSD as the premiere open platform, and, after initial successes with the 4.1BSD product, gave the BSD company a 2 year contract.
These early triumphs would soon be forgotten in a series of internal conflicts that would mar BSD's progress. In 1992, AT&T filed suit against Berkeley Software, claiming that proprietary code agreements had been haphazardly violated. In the same year, BSD filed countersuit, reciprocating bad intentions and fueling internal rivalry. While AT&T and Berkeley Software lawyers battled in court, lead developers of various BSD distributions quarreled on Usenet. In 1995, Theo de Raadt, one of the founders of the NetBSD project, formed his own rival distribution, OpenBSD, as the result of a quarrel that he documents on his website. Mr. de Raadt's stubborn arrogance was later seen in his clash with Darren Reed, which resulted in the expulsion of IPF from the OpenBSD distribution.
As personal rivalries took precedence over a quality product, BSD's codebase became worse and worse. As we all know, incompatibilities between each BSD distribution make code sharing an arduous task. Research conducted at MIT found BSD's filesystem implementation to be "very poorly performing." Even BSD's acclaimed TCP/IP stack has lagged behind, according to this study.
Problems with BSD's codebase were compounded by fundamental flaws in the BSD design approach. As argued by Eric Raymond in his watershed essay, The Cathedral and the Bazaar, rapid, decentralized development models are inherently superior to slow, centralized ones in software development. BSD developers never heeded Mr. Raymond's lesson and insisted that centralized models lead to 'cleaner code.' Don't believe their hype - BSD's development model has significantly impaired its progress. Any achievements that BSD managed to make were nullified by the BSD license, which allows corporations and coders alike to reap profits without reciprocating the goodwill of open-source. Fortunately, Linux is not prone to this exploitation, as it is licensed under the GPL.
The failure of BSD culminated in the resignation of Jordan Hubbard and Michael Smith from the FreeBSD core team. They both believed that FreeBSD had long lost its earlier vitality. Like an empire in decline, BSD had become bureaucratic and stagnant. As Linux gains market share and as BSD sinks deeper into the mire of decay, their parting addresses will resound as fitting eulogies to BSD's demise. -
Re:Yesterday's tomorrow?
Wouldn't current technoloy be a lot more efficient?
Sometimes modern technology will be more efficient, but not always. Some of you may have heard of Gray's Paradox. Or the MIT RoboTuna project. Gray's Paradox in a nutshell is that it seems a fish does not have the muscle mass needed to provide enough thrust to acheive the speeds and distances that fish can swim. It's actually short by a factor of 10. MIT is creating a robotic tuna to study the effect of a flexible hull that provides the thrust needed to move through the water. The RoboTuna has seen some Gray's Paradox properties of it's own, and it isn't swimming with full efficiency yet. With flexible hulls, ships might get more fuel efficiency, higher speeds, or the ability to hold stationary in turbulent waters. The ornathopter experiment may lead to similar breakthroughs in flight. You don't know what you might find until you try. -
Law is not moralityIt is in fact ALL law is; a clear specification of what is good and bad behaviour, ie. morality/ethics.
Watch out on the sweeping generalisations, or some anonymous pedant is likely to point out the flaws in the statement as a matter of principle. Not all law is about "good and bad": a substantial portion of it is entirely utilitarian. Taxes are not legislated in such-and-such a way because of "good/bad" reasons (although any attempt to be "fair" will ground itself in that territory) but rather to generate revenue for public works in a viable manner. Some trade regulations are grounded in morality (no cheating, stealing, etc) but just as many exist for purely utilitarian reasons. Copyright isn't about enforcing the moral truth that "stealing is wrong", despite what some propagandists would have us believe: it's supposed to be about the utilitarian goal of promoting the progress of science and the useful arts. (In practice these days it's more about protecting entrenched interests -- a perennial problem with utilitarian laws of this sort.)
Rant ends. Summary: law has far less to do with morality than you think it does. No argument against "clear and simple" though. Preferably "as few as reasonably possible" also: Tacitus could well be a modern commentator, not a guy who died nearly 2000 years ago, with lines like, "And now bills were passed, not only for national objects but for individual cases, and laws were most numerous when the commonwealth was most corrupt."
-
Re:Seen it before
I too think that a better use for the He3 on the moon is to support a moon colony and to fuel exploration of the solar system. For earth based energy, looks like we are solving the problems of D-D reactions: Experimental Fusion D-D reactor
-
Distributed vs. centralized repositoriesI played around with several source control systems a while back; I like Darcs, it was the easiest of the distributed systems to understand, with a concise and easy-to-understand command-line interface.
But in the end I think a centralized repository is right for many (most?) projects: Why Bitkeeper Isn't Right For Free Software (by Greg Hudson) was the most convincing argument to me.
Of course, you can simulate a centralized model with a distributed system (just don't use the distributed bits), but it seems like you are on your own at that point. Subversion is behind when you compare distributed features (of course), but when you compare the other features (usability, access via various method, programmatic access, etc), it's way ahead. As it would be; centralized systems are easier to think about, so they are easier to develop with and on top of.
-
Worst Wikipedia Entry Ever!
The Wikipedia entry is 4 paragraphs long but tells you NOTHING about the story. If you've have no clue what Battle Angel Alita is about, read more here.
-
Re:Hold Crap!Chinese teaches more about eastern languages, latin, about western.
Chinese teaches you about whatever dialect of Chinese you learned, and I believe a bit about Korean. Latin gives insight into French, Spanish, Italian, and a lot of English, plus a leg up in understanding legal terms, medical terminology, etc. (Although I'm sure some linguist could come around now and point out all of my errors...)
What's rec? What's l? What's h? What's t? What's fun? What's less? What's greater? It's not documented, and I don't want to read up on OCAML to find out that it isn't documented, either.
rec indicates that the function is recursive (something covered in section 1.1 of the OCaml manual). l, h, t, less, and greater are (prepare for shock and awe) variable names, representing the following values: l is the list being sorted, h is the head of that list, t is the tail of the list, less is the list of values that are less than the head of l and surprisingly greater is the list of values greater than (or equal to) h. If you have trouble telling what a variable is, it's no wonder Haskell befuddled you (Do you look at a function like let f x = x + 3 and ask, "What's x? What's 3?"). By the way, before you ask, List.partition is a function that partitions a list into two sublists according to some predicate. I'd apologize for it not being documented, but well... it is.
Certainly a fibbonnaci series computed in a loop runs faster than the equivalent recursive solution.
Well that certainly depends on whether you mean recursive in the sense of the process or in the sense of the procedure (see SICP if you don't know the difference. The difference in performance between a for loop and something like:
let fib n =
let rec fib_h a b n =
if n = 0 then b else fib_h (a + b) a (pred n) in
fib_h 1 0 n;;Unless, of course we're talking about a memoized version. But if you want one, it's actually pretty damn easy to wrap a recursive function with a memoizing wrapper. By the way, do you really want to be talking about speed and efficiency in a thread about Perl?
Tree manipulation is generally a toy problem.
Tree manipulation is a toy problem? Last time I checked, trees (and heaps and treaps, and all sorts of other recursive data structures) are all over programming.
What's more, I can write recursive solutions in perl if I really have to.
And I can do imperative programming in OCaml if I really have to. Your point was what again?
We're programmers. We do need to understand that complex underbelly.
So you know all about the properties of the semiconductors making up your machine? You can tell me how to build a J/K filp-flop and a shift register? You know all about circuit layout optimization? The inner workings of a DVD burner? See, that's one of the nice things about programming. You only need to strip off a certain number of layers of abstraction to do your job well -- sometimes you need to go deeper, sometimes you don't need to go deep at all.
We often need to prove that we're using exactly the correct function, and that it operates in the smallest amount of time, using the fewest resources possible.
And so you're advocating Perl?!? It's nigh impossible to reason at all about imperative programs and prove them correct, but when you've got a language that essentially encourages willy-nilly programming styles (yes, I know you can code clean Perl, but it takes a lot more effort than other languages) and highly mutable state like Perl than pretty much all hope i
-
Re:Intel should know better...Overstated
What I really wish they'd do next is what IBM pioneered [...]every byte of data -- including every byte on every disc drive -- had a unique address. I thought that was a groundbreaking idea at the time.
Err, like so many things this can be traced back to Multics in the mid 1960s (more info here and here). Multics embodied, and in many cases pioneered, computing ideas that are still appearing today: capabilities, I/O coprocessors processors (AKA channel controllers; not unique to Multics but common on those days and reappearing now), mapped I/O, multi-user servers, and then-unique IO devices like real time clocks!
You can be a genius in the computing field by merely reading old papers and re-implementing their ideas. Most people don't read the literature. Save your brain cycles for inventing stuff that's really new. Stand on the feet of giants! -
Please, learn physicsFirst learn and read about how transformers work. They are bi-directional by nature, law of physics my friend. They are called step-down transformers by the power company (cause that is the way power normally goes), but they just as easily step-up cause the electrons don't care what the label says. Its done all the time with standard utility transformers! You're arguing it as if this is a theory. It done all the time, passe, old news.
Here are some links on how the grid and customer transformers work.
You can use your existing power transformer so long as you don't exceed its power rating. Here is one utilities regulations.
And of course this hinders centralized control - if a power line needs to be worked on, how do you guarantee that no current is flowing in it?
All grid-tie inverters on the market autosense the power lines going down or short-circuit to pass the NEC. This is called anti-islanding.convert the pole transformers to be dual and rig it so that if you generate excess power, your metering runs backwards
Nonsense, nothing new required. Hook PV panels on one side of a standard meter, and it spins backwards feeding power onto the grid. PV owners do this all the time even without the utilities co's knowledge.slightest mismanagement can cause blackouts and other system failures
The whole point of distributed generation is a highly redundant system of local power sources produces a more reliable power grid. Old news, not theory.Look. I'm not interested in a argument for its sake. Every time you pull some new reason out of the air that solar can't work I've proved you wrong and uninformed. If you want to learn more, or have informed opinions you want to share, then fine - but I am starting to feel this is going nowhere. (have you learned anything about solar in this process?)
-
Joseph Weizenbaum saw it coming in the 1970sYou may not remember but in the 1970s there was a professor at MIT named Joseph Weizenbaum who was worried about exactly these sorts of problems. In his case he largely refused to do research in the area of natural language comprehension, specifically speech recognition, because of his fears of government misuse. Further he recommended that scientists and researchers wake up and publicly discuss the negative implications of their work.
I find it ironic that for monitoring the Internet there is no need for speech recognition, and given its popularity as a communication medium, it has actually made the government's eavesdropping tasks that much easier.
Weizenbaum is also the author of the Eliza program, in which a person interacted via a keyboard with a simulation of a psychologist. It is considered the mother of all chatbots. Many people, including many experts, were taken in and thought it was a real person. This finding disturbed Weizenbaum.
Weizenbaum's thoughts on these subjects can be found in his book Computer Power and Human Reason. We had it as a text book at MIT and I would argue that it should be required reading for all scientists and technologists.
-
Persistance of Vision
A persistance of vision toy, which is a simple microcontroller that blinks 8 LEDs on and off so that when waved through the air, an image or message appears to float in front of the viewer can be made in bulk for really cheap.
-
Re:Confused senses
I call B.S. on this unless you have a serious complex.
While I have no idea if this guy is telling the truth about his own condition, "synesthesia" is a real neurological condition. It can be brought on by drugs, such as LSD, or it can occur naturally...
http://web.mit.edu/synesthesia/www/synesthesia.htm l -
Re:The comic is awesome, but...
The Watchmen is a very complex comic,
Here, here! What's great about the Watchmen isn't the core story. It's how the story is told. A great deal of its ingenuity lies in its variety of panel layouts, use of parallel story lines, flashbacks and recurrent visual themes. It's the rich interplay between those diverse elements that makes the comic so exceptional. Achieving a similar level of detail and interplay in a movie would be a prodigious feat of cinema. -
Re:New Terms
Since RMS's office is now in the Gates building...
Actually, it's not -- it's between the Gates and Dreyfoos Towers, but "officially" on the Dreyfoos side. See? -
Re:electric motors
Sport bikes make around 150hp I recall. For a NA, 1-liter 4-cylinder that's pretty good in my book. Imagine what a V8 can do with that technology (as it is essentially two I-4 blocks sharing a crank). On the second issue, take a look at this page: http://lancet.mit.edu/motors/motors3.html.
-
Re:Um...
It's the Spanish Inquisition Sketch from Monty Python.
-
Re:Dark Angel?Dude! *I* am not the webmaster of said site! But I'll gladly tell you what appreciation *I* have for the guy's effort. I chose to link this particular sight because it was more visual than many of the other fan sites that are on the web. (As least it would have been if it was maintained as well as it was in the past.) I thought it might give
/.ers a chance to compare and contrast thed "look" of the characters and settings of Gunnm (aka "Battle Angel" or "Battle Angel Alita" and "Dark Angel". For a little more substantiave treatment of the Manga, go here .But before I go any further, let me say that I think I've been misunderstood. I spoke in jest of Mr. Cameron. "Dark Angel" had it's own appeal (Anyone who doesn't think Jessica Alba is a cutie has no balls.), but it is easy to poke fun of it when compared to Gunnm. For example, DA and BA both take place in a futuristic version of the United States. But whereas DA seems to be in the not too distant future when everything is more or less recognizable to people of today, BA has an alien, otherworldly feel that I think is much more sci fi. As such, the plot and theme of BA is more focused on basic ideas that are more universally identified - things like what it means to be human, what one is willing to fight for. DA on the other hand is wrapped up in pop culture baggage that will only be recognizable to someone with a late 20th century upbringing weaned on the likes of Cameron's previous cinamatic bash-fests.
Despite Cameron's reputation for glorious action, the stunts and effects on DA are mediocre at best. I liked BA because beyond the violence and gore (often creative at times) that gives it edge, there are tender introspective mements in the plot that dramatically extends the characters multidemensionally. Cameron had a chance to do the same in DA series but it isn't executed as well.
But enough raving from a fanboy. Check out Gunnm for yourself if you are interested and do your own comparison. -
Re:It's gotta be about more than cash
-
Re:Satelite imagery
It will be an amazing asset for schools and colleges etc.
When I saw this, my first thought was, "here's yet another way schools and colleges, etc., have been rendered obsolete by technology".
With the growing amount of free material available, ISTM that brick/mortar learning institutions will become mostly vestigial, serving only to enhance vocational skills. But maybe I'm just a glass-half-empty sorta guy. -
Re:The real purpose
Here is one of my favorite MIT hack stories because it was subtley increased.
-
The real purpose
I heard the real purpose of the test was to place a police car on the roof.
-
Re:Too funny!
The campus paper ran a great version of that ad - page 10. It's a big list of usernames, networks, IP addresses, and dates with the caption "IS THIS YOU?"
The thing is - none of the IP addresses in the ad start with "18.", the MIT Class A. So, no, it isn't us, but thanks for asking! (And thanks for paying for the color spread.)
On a loosely related note, The Tech also ran an awesome interview with Jack Valenti, MPAA President, earlier this year. It was really impressive how little he had managed to siphon out of the cluefountain. (Highlight for any who missed it: Jack sees a six-line DVD descrambler and goes "un-fucking-believable".) -
Re:Too funny!
The campus paper ran a great version of that ad - page 10. It's a big list of usernames, networks, IP addresses, and dates with the caption "IS THIS YOU?"
The thing is - none of the IP addresses in the ad start with "18.", the MIT Class A. So, no, it isn't us, but thanks for asking! (And thanks for paying for the color spread.)
On a loosely related note, The Tech also ran an awesome interview with Jack Valenti, MPAA President, earlier this year. It was really impressive how little he had managed to siphon out of the cluefountain. (Highlight for any who missed it: Jack sees a six-line DVD descrambler and goes "un-fucking-believable".) -
MIT Research in Very Large Mosaics Systems
Hi.
The following website, assocaited paper and movies demonstrates a system for acquiring, mosaicing and rendering very large mosaics. Although the dataset in the paper is 800MB, the system can scale to much larger sizes.
The acquisition phase acquires multiple images per position at varying apertures to generate high dynamic range images (24bpp). This process is mechanized and programmable lending itself to scalability. The mosaicing takes advantage of distributed computing to compute a nonlinear optimization across many machines (enabling scalability). The rendering software adaptively manages the images in memory using visibility and other methods to enable interactive viewing. The interactivity can be traded off for rendering quality (the progressive rendering can be seen in the movie). Furthermore, the renderer decompresses the high dynamic range from a logarithmic scale to a linear one based on either user input or heuristics for optimal viewing.
The effect is that you can acheive much higher resoltion and dynamic range than previous mosaicing methods or sensors.
Shortcomings are the acquisition times (limited to the mechanical apparatus).
http://graphics.lcs.mit.edu/~neel/omnivis/omnivis. html
-
Try the works of Dr. Betty EdwardsIf your current problem is the, "Blank Page" syndrome, you probably should start with the three books of Dr. Betty Edwards:
- Color
[just published this past August]
ISBN:1585422193 - Drawing on the Artist Within
ISBN: 067163514X - New Drawing on the Right Side of the Brain
ISBN: 0874774241
I also purchased the following at Linuxworkd NY this year and found it a good read that would be germane to your needs:
- The Art of Interactive Design
by Chris Crawford
ISBN: 1886411840
- Adobe is on the SVG Working Group
- The standard utilizes aspects of Illustrator for rendering the:
- Edges;
- Spaces;
- and Relationships;
- Aspects of Photoshop for rendering:
Relationships (yes there is some crossover);
Lights and Shadows
- Color
-
Re:Tetris.
Actually, the story of how Tetris got made and was released is quite interesting. http://vadim.www.media.mit.edu/Tetris.htm
-
Re:Plato made it up this parable.
For reference, here are some links to the bit where Plato actually tells the story of Atlantis:
http://classics.mit.edu/Plato/timaeus.html (search for the bit starting "Then listen, Socrates, to a tale which, though strange, is certainly true
...")
http://www.perseus.tufts.edu/cgi-bin/ptext?lookup= Plat.+Tim.+20d&vers=en
http://perseus.uchicago.edu/cgi-bin/ptext?lookup=P lat.+Tim.+20d&vers=en
In response to your comments: yeah, Troy was thought to have been maybe fictitious, until someone discovered that a city had existed at around about the right time in round about the right place, which is now for the sake of convenience called "Troy".
As for the story of Atlantis which Plato puts in Critias' mouth: (1) the story is actually about the people of Athens conquering Atlantis - thousands of years before Athens existed; (2) did you by any chance get that idea of multiplying the numbers by 10 from Indiana Jones and the Fate of Atlantis? Sound historical research, that.
-
Re:Fractal compression is NP-hard
Optimal Fractal Coding is NP-Hard:
http://theory.lcs.mit.edu/~ruhl/papers/1997-dcc.ht ml
Might be a reason why it never took off... -
Re:Electric Trains
Yes, many people think electric trains aren't being made anymore because they don't often see them at big box retail outlets. Lionel is still around and primarily sells O-gauge trains. The nice thing about O-gauge as opposed to HO or the other scale model trains is the size of the models and how rugged they are. O-gauge is funny, because there are two types of trains: 0-27/0-31 which isn't built to scale and runs on 3-rail track and 1:48 O-scale which is built to scale and can run on 2-rail or 3-rail track.
Some of the best electric trains being made today are done by one of Lionel's competitors: Mike's Train House based in Columbia, Maryland. They have a nice variety of high-quality starter sets such as a Pennsylvania RR 2-8-0 steam freight train or a Union Pacific F-3 diesel passenger train that make a good beginning point for those interested in trains.
Also, model trains rank pretty high on the geek-o-meter. MIT has had Tech Model Railroad Club since 1946. Getting involved with model trains allows a person to hack on both hardware and software, and is a lot of fun.
-
Don't extend. Its overrated.
Honestly, its easier to write a recursive descent parser by hand for a programming language than you think, and interpreters are ridiculously easy unless you're worried about making it fast, which is way overrated too. It mattered with 640KB of RAM at 20MHz, but these days, its just stupid to care unless you notice its insanely slow.
First off, if you've not found this link: http://compilers.iecc.com/crenshaw/, then I recommend you start with it. While its about writing a compiler, it really help make parsing much clearer.
Scheme is a good language to check out if you want to start with another design(a scheme interpreter can be written in a few hours, even in C, if you're slick, even if you're not, it would be short project to get 90%).
Some other reference material: Parsing Techniques(free online). Also: Modern Compiler Design by the same guys and well worth the investment. Concepts, Techniques, and Models of Programming Languages, teaches kernal theory of language design, and may open your mind to some other techniques you may not be aware of.
Checking out the archives on Lambda The Ultimate would be wise too. Also, if you're in Boston on December the 4th, you might check out the Lightweight Languages Workshop at MIT.
-
It depends on your goals (but usually Lisp)
I'm not really sure what your goal here is. Are you wanting to write a compiler for the sheer joy of writing a compiler? That's a good goal, for sure, and I recommend that every programmer write a compiler or two during their careers, or at least some interpreters.
On the other hand, maybe you want to extend an existing language because you need some specific language feature. Also a good goal, but I do want to caution you to evaluate existing languages first; you may find that some language does what you want, or makes it easy to write a language library that does what you want.
Or maybe you want to write an interpreter to script a bigger program. Then I'd say that you may be better off using something that's already there.
In the first case, if you want to learn how to write a compiler, I generally recommend writing Scheme, or some other simple Lisp. Scheme has advantages in that its parse tree representation is obvious (that's why Lisp looks like it does), the structure of an interpreter and of a compiler are quite similar, and it covers the fundamentals of compilers without burdening you with a bunch of cruft. (If this is your first compiler, you may want to leave out continuations and garbage collection for now.) The very excellent book Structure and Interpretation of Computer Programming has what you need: chapter 4 is about writing interpreters (for Scheme, some modified Schemes, and Prolog), and chapter 5 is all about writing a compiler. All the code in SICP is in Scheme, but the book starts from the beginning with (+ 1 1).
SICP may be too academic for your taste, so you may prefer Paradigms of Artificial Intelligence Programming instead. It uses Common Lisp, and has a little bit more practical feel that SICP. Chapter 22 is about writing a Scheme interpreter, and chapter 23 is about writing a Scheme compiler. Unlike SICP, PAIP doesn't cover the garbage collector. PAIP uses Common Lisp, and although it has enough of an introduction to be a "refresher" for somebody already familiar with Lisp, it's not really suitable for learning the language.
It's really simple to write Lisp in Lisp. Indeed, a month ago I wrote one for a comp.lang.lisp post, just to get a silly quine to work! That's why I keep talking about Lisp and Scheme: it's easy to do.
If Scheme isn't your thing, then Pascal may be a good alternative. Don't try to get fancy with heap allocation, pointers, objects, and other new add-ons; I'd start with plain old Wirth-designed Pascal, and get fancy later if you want. Pascal is really designed for a classroom setting. I have a dim memory of Ada being used for this purpose in some books, but I can't speak very authoratively there.
Of course, the definitive book on writing compilers is the Dragon Book. But you may want to be familiar with some basic CS theory about FSMs first.
Now, that's if you want to learn about compilers for the joy of learning about compilers. But what if you just need one particular language feature for your problem, and that's why you want to write a compiler? Well, then I'd suggest you make sure you've looked at a lot of different languages first. Some languages have surprising features that may let you write a small in-language library to do what you need, instead of needing to extend the compiler.
Lisp is a good candidate for this. John Foderaro once described Lisp as "a programmable programming language". You can alter the language to suit the problem at hand, instead of having to work the other way around. At work now, I use Lisp as a bridge between two very different programming languages because I can extend it in both directions to cover what I nee
-
A few ideas
First, there are two kinds of small languages:
1. small languages like lua, io, and scheme that are small in the built-in libraries and in the total distro. These three are great places to start- both are small, OOPish, allow higher-order programming by passing classes, objects, functions and methods as objects.
2. Then there are languages that are big in some ways, but small in syntax. Some of these are easier to extend than so-called "little languages." The reason is usually that their syntax is small, in an isolated place, easy to get at, and meant to be modified. The two best examples for this are Smalltalk and Lisp. Both of these languages satisfy your other requirements and really kick ass for extention. Unlike the above languages, the so-called little-languages, most Smalltalk and Lisp dialects have big, useful libraries. Unlike a big fat language like perl or C++, having a useful library doesn't mean that the language is a huge pain in the ass to extend.
Both Lisp and Smalltalk have a number of implementations. I am a big fan of Squeak Smalltalk, though systems like Little Smalltalk or even GNU Smalltalk maybe worth checking out.
A lot of people here have bad feelings about Lisp-like languages. It's a shame, since Scheme, ISLISP (OpenLisp is a great implementation) and Common Lisp are all *very* powerful languages. You can be quite productive with them once you get over the part about whining about parens. But Lisp may very well be the best option here, there is a long history of people writing custom-syntaxes and language extensions. Look up Common Lisp macros- power almost beyond comprehension, a lot of fun to play with, and with an elegance all its own.
There are examples of people writing a C-like syntaxes for various Scheme implementations. IIRC, Gambit-C (a Scheme to C compiler) comes with one. On Cliki, there are a bunch of other alternative Scheme syntaxes listed.
To, one of the big advantages to using a language in the second category is that syntax extension/modification is done in the language itself, rather than in C. With that comes the familiarity of the language you're creating and the other benefits you gain by using a high-level language like Smalltalk or Common Lisp.
Just some thoughts... -
It's Java Swing
It's a Java Swing app, running on a Mac:
Welkin.java
-
Re:The question is not about a browser
This is pretty much my reaction. Look at the screenshot mentioned, and ask yourself how that mesh of lines will help you find the best BBQ sauce recipe or download porn faster. Maybe I'm not seeing the forest for the trees. Did I say porn? I meant Elizabethan poetry.
-
This is the future of the web
Browsing metadata is the next frontier in the evolution of the web. Some of the other RDF browsers popping up include Gnowsis, MIT Haystack, and Fenfire.
With the growth of the Internet, the value of data itself is dropping, while the value of metadata (i.e. "data about data") increases, introducing a need for tools that can manipulate metadata. That is what RDF is all about - standardizing a way to represent metadata. It is not a standard for the metadata itself...those standards will be determined the same way everything else is on the Internet: with the best solutions rising to the top.
The most common objections to this scenario?
a) "Nobody will bother entering metadata". Wrong...it's already happening. Users are voluntarily generating metadata all the time. Just check out sites like flickr (photo blogging) and del.icio.us (collaborative bookmarks), not to mention Amazon reviews and Ebay ratings.
b) "RDF tags will just be abused with spam, trolls, and other useless info". A variety of techniques are emerging that are designed to protect the integrity of user-contributed data, including trust metrics like Slashdot's own distributed moderation (PDF) or Advogato. -
Re:Wasting bandwidth
OK, then how about an application to record what happens on screen? I am not familiar with such apps on Linux, but there must be some (I know there are a lot of them on Windows). This way you can have an AVI the minute after the presentation ends. This AVI can be just dropped onto the timeline in the video editing software and it would be piece of cake to intersperse it with the video of the presenter. A side advantage is that the quality of the recording would be much better this way (I was watching a lot of MIT World videos (a cool site, BTW) and the quality of the slides is often very poor, because they use only one camera).
-
Re:JobsYou wanted references?
You'd think you could google.
NATO document affect on local climate human impact reference ref ref ref ref ref ref ref
-
All your DNS are belong to us!Yeah, right.
And FTP, and HTTP, and TCP/IP, and DNS and TraceRoute, and everything else, apparently.
I'll bet that Vinton Cerf and Tim Berners-Lee don't believe this any more than I do.
-
All your DNS are belong to us!Yeah, right.
And FTP, and HTTP, and TCP/IP, and DNS and TraceRoute, and everything else, apparently.
I'll bet that Vinton Cerf and Tim Berners-Lee don't believe this any more than I do.
-
Re:Voting machines are prone to human failure
-
Re:For the love of.....American lysenkoism, such as it is, is the result of giving money to the people who promise the most. It's a collective problem, without any one identifiable person driving the drivel.
I saw this in the telecom industry. Our company had a mania for the "make or buy" decision. That meant, in practice, that the money went to the group that made the biggest promises. Consequently, everyone promised more than they could actually accomplish. Managers knew that, of course, but they went along because they were subject to the same pressures. You could see, year after year, more hyperbole and overstatement creeping into goal statements, mission statements, and everything. It becomes an erosion of honesty, and (like in lysenkoism), one can imagine drifting off into a fantasy world.
In industry, of course, the free market will eventually stop such corporate fantasies. If only because people stop buying the resulting products and the company flounders.
Another example of such over-promising is the Institute for Soldier Nanotechnology. Mind you, the ISN is a bunch of competent people doing real research, and I expect them to do great things. Still, they cannot resist making wild promises on their web site, http://web.mit.edu/isn/aboutisn/index.html.
"Imagine a bullet-proof jumpsuit, no thicker than ordinary spandex, that monitors health, eases injuries, communicates automatically, and maybe even lends superhuman abilities."
Uh huh. Lemme see. How much force needs to be applied to stop a bullet in the thickness of spandex? Quite a bit. If you do a minor calculation, you'll find it's completely ridiculous, yet these guys with physics Ph.D.s tolerate this kind of crap as advertisement.
They tolerate it because if they don't, someone else will say it, and that someone will get the money. The Army guys play along. That way, they can presumably point out to congressmen the wonderful things they will get from their research money.
Personally, I think that the root of the problem is that no one is really paid to evaluate these research proposals. It's expected to be done in one's spare time.