1. Find a pseudo-random number generator and the seed that generates a sequence that best approximates the block given (i.e. a sequence that has low number of differences with the input)
I can't imagine how to do this step without examining all output from all possible pseudo random generators.
There is no need to label it "BOMB" if you just require all bombs use the classic bomb shape: bowling ball sized black spheres with a large fuse on top. A stick or bundle of TNT should be OK too, assuming it is bright red and also uses a lit fuse.
What's that? You say Emacs has built-in support for helping you find out which s-expression the star is in? Dude. If you need a computer to help you read code, the code isn't readable.
Hmm, does your editor hilite language keywords? Strings? Comments? Should it? Can you do without it? If so you might want to turn it off. Oh you like that feature? What about autoindenting? Does allowing the computer to do it for me mean I am white-space impaired? Most people would agree that any aid the computer can give is a good thing; it's what computers are for.
Regarding your example, yes it is easier to immediately spot the block in the Java code. I remember when I first started struggling with Lisp. I found it very hard to read code, and I had to concentrate very hard on starting and ending parens, where each block was etc. I quickly got much better at understanding Lisp code visually. And most lisp environments have an editor available that will auto highlight the matching paren when the cursor is on one.
By the way I think your little list of usability principles perfectly describes assembly language.
Sorry if this reply is a little long winded. I wanted to give some specific examples. As has been stated before, technically there isn't anything LISP can do that C or Perl can't. It's just that I find doing those things in LISP much simpler. Some of the things (many have already been mentioned here) I like about LISP are:
1) uniform syntax -
- easy for emacs to autoindent, mark and copy, etc. because the editor can always easily identify an expression.
- s-exps are easier to read than things like "int *(*(*func)())[] "
(perl syntax such as "${$ref}->{$val}" is ugly and breaks the emacs autoindenter).
Which is automatically expanded to a form like the above, where two methods are
produced so that a function can be called either by symbol or by actual object.
There is less code duplication because the duplicate code is written by the macro,
not me for each function declared this way. Note that a LISP macro works by
executing code to product code, not substituting values into strings.
Another example is the CL "with-slots" macro. The syntax is like this:
(with-slots (last-name first-name addr1 city state zip) cust-rec
...code...)
Within the above "..code.." block, read/writeable lexical vars have been created
and bound to the named slots. This can save huge amounts of coding when accessing
object slots. However my point is not just the utility of "with-slots". It is that
it is nearly trivial to write macros of this sort for any of your own structures.
So I can write code that looks like
(with-pdf-file (*output-file*:pagesize *report-paper*)
(with-ds book-list
(with-idx (book-list . book_id)
(iterate-rows book-row
(with-columns (title isbn author-list) book-list book-row
(with-indexed-pdf-page pageno:title title )
...code...
)))))
Macros can handle all of the repetitious "glue" code such as slot access,
opening/closing files, etc. , and I can concentrate on the..code.. part.
- closures, destructuring, lambda forms, the reader, condition system,
mapping functions, CLOS, arbitrarily large ints, rational numbers
I used to spend lots of time in C or Perl trying to minimize code duplication.
Often I would have functions that were very similar but would receive different
arguments and execute different chunks of caller provided code at certain points.
In C or Perl this can be a huge pain. In LISP this sort of thing is trivial
using lambda forms, special vars, etc.
- commands like FORMAT, LOOP allow concise coding of common dull tasks, such as:
(format t "~{~{~&I received ~R number~:*~p: [~{~10:r~^ / ~}]~}~^~%~}"
(loop for idx below 6
collect (list idx (loop for jdx from 1 to idx collect (random 100000)))))
I received zero numbers: []
I received one number: [37,932]
I received two numbers: [89,603 / 53,797]
I received three numbers: [32,288 / 95,547 / 35,564]
I received four numbers: [41,133 / 54,848 / 7,337 / 98,224]
I received five numbers: [35,457 / 56,703 / 86,795 / 73,667 / 22,086]
NIL
*
3)simple interface to 'foreign' libraries. I just began work with LISP several months ago; it was simple
to integrate the ClibPDF and FreeTDS libraries with my code to produce PDF reports from LISP running
on Linux talking to SQL server.
I remember seeing these kind of statements about LISP as well. I'm not sure why you get so upset and angry about it, to the extent that LISPers are labeled pricks and bastards. It merely led me to investigate why so many [apparently] smart people had so many praises for LISP. What I found was that IMHO common-lisp *is* that good; I would rather write in CL now than any other language. FWIW my background is 10+ years of Unix, C, Perl, SQL,/bin/sh etc.
I feel strongly that a large part of the psychological healing that the American people need to experience will ONLY come after those towers are rebuilt. Also I feel they should be built so in some way they are better than before. This is not just about who has the biggest tower; this is more like a bully who pushes you down at school to remove your dignity. Do you from then on crawl around on your knees for his enjoyment, or do you stand up and show him you are not afraid? Our national dignity depends on rebuilding in a huge way.
that said, I think the reason we need to keep upgrading our hardware is because of the shitty bloated software that we have to keep upgrading to. CPU speed is only part of it of course.
Another factor to remember is that even a civilization that lasts 10,000 years (a long time for an advanced civilization to last?) is only present for a tiny fraction of the life of the universe. So not only is advanced intelligent life probably somewhat rare, they are likely to be very sparsely scattered across both space AND time. We could be surrounded by them in space, but with them being alive 10 million years ago, or 10 million years in the future.
This is exactly why the IT world is filled with buggy crappy memory eating bloated slow shit code.
Not to mention that this type of attitude (programming is easy anyone can do it: therefore treat your developers like peons) is likely to result in a company losing their best developers.
Sure anyone can learn to code.. That doesn't change the fact that one good programmer can often do the work as 10 or more crappy ones. Also not to mention the fact that in addition to taking much longer to produce, the resulting code is probably going to be poorly written and hard to maintain.
>I want an editor that uses Alt- keys, not "Ctrl-X Ctrl-that Meta-x foo" for everything. Not sure I understand this; how is Alt-f (for example) better than Ctrl-f? Sure emacs has a lot of ctrl key commands, but I don't see any way around this. You can either map all the commands to mouse clicks or keystrokes (or both) ; and since there are only so many keys available, some key sequences tend to get lengthy. Emacs is my favorite editor -- I don't think you can give it a fair evaluation after a single month of use. I have had 30 files open in emacs for monthes at a time before; I can't remember the last time I had emacs crash on me. I used to get multiple Visual Studio crashes PER DAY back when I used it a few years ago. Sucks ass when the program I am debugging crashes the debugger and the whole OS too! BTW Most Windows programs I use require several Alt keystrokes in a row to do menu functions, too.
umm yes ping and hardware do have a big effect; however I have seen good players with ping 250 routinely beat mediocre players with ping 50 ; also, most players prefer to play against others with similar ping times, that way the playing field is equal.
And I guarantee that if you "switch to rocket launcher,put on autorun and hold down the fire button" in a game with me or the folks I tend to play with you will get beat repeatedly. Not to mention you will run out of rockets in about 5 seconds.
sorry about the off topic
this should help: I hate Verant I hate Everquest, they ruined it with all their nerfing
wow, you have stumbled onto the secret of fast computing:
char *null_ptr = NULL;
strcpy(null_ptr,"Set_System_Speed=TURBO");
on some systems you might need to use the word LIGHTNING instead of TURBO.
Let's see if we can sum this up.
1. If the language doesn't have pointers, it must suck.
2. If Mr Frilly has never personally seen something written in said language, it is dead.
3. If the language is alive despite 1 or 2, there is an obvious explanation, such as government regulations.
Mr. Frilly, are you out of college yet? Please come back in 15 years when you have learned something about software engineering.
ps. I'll tell you what sucks: pointers.. I stopped raving about them right after I gave up my pacifier.
Absolute bullshit.
safety controls the amount of run-time error checking.
1. Find a pseudo-random number generator and the seed that generates a sequence that best approximates the block given (i.e. a sequence that has low number of differences with the input)
I can't imagine how to do this step without examining all output from all possible pseudo random generators.
What if you have to fly in a plane to get to the lab where they have this equipment? You could be blown up.
There is no need to label it "BOMB" if you just require all bombs use the classic bomb shape: bowling ball sized black spheres with a large fuse on top. A stick or bundle of TNT should be OK too, assuming it is bright red and also uses a lit fuse.
What's that? You say Emacs has built-in support for helping you find out which s-expression the star is in? Dude. If you need a computer to help you read code, the code isn't readable.
Hmm, does your editor hilite language keywords? Strings? Comments? Should it? Can you do without it? If so you might want to turn it off. Oh you like that feature? What about autoindenting? Does allowing the computer to do it for me mean I am white-space impaired? Most people would agree that any aid the computer can give is a good thing; it's what computers are for.
Regarding your example, yes it is easier to immediately spot the block in the Java code. I remember when I first started struggling with Lisp. I found it very hard to read code, and I had to concentrate very hard on starting and ending parens, where each block was etc. I quickly got much better at understanding Lisp code visually. And most lisp environments have an editor available that will auto highlight the matching paren when the cursor is on one.
By the way I think your little list of usability principles perfectly describes assembly language.
Sorry if this reply is a little long winded. I wanted to give some specific examples.
,name (arg ,@args)
,@args)
,@body)
,@args)
,arg)))
,ds
,(append (list name ds) args)
,arg)))))))
..code..)
...code...)
:pagesize *report-paper*)
:title title )
...code...
..code.. part.
As has been stated before, technically there isn't anything LISP can do that C or Perl can't. It's just that I find doing those things in LISP much simpler. Some of the things (many have already been mentioned here) I like about LISP are:
1) uniform syntax -
- easy for emacs to autoindent, mark and copy, etc. because the editor can always easily identify an expression.
- s-exps are easier to read than things like "int *(*(*func)())[] "
(perl syntax such as "${$ref}->{$val}" is ugly and breaks the emacs autoindenter).
2) advanced abstractions -
- macros:
For example:
(defmacro defmethod-ds (name arg args &body body)
(let ((ds (gensym)))
`(defgeneric
(:method ((,arg datasource)
(:method ((,arg symbol)
(let ((,ds (find-datasource
(if
(error "Can't find ~A~%"
Lets me declare certain generic functions as
(defmethod-ds method-name object (arg1 arg2)
Which is automatically expanded to a form like the above, where two methods are
produced so that a function can be called either by symbol or by actual object.
There is less code duplication because the duplicate code is written by the macro,
not me for each function declared this way. Note that a LISP macro works by
executing code to product code, not substituting values into strings.
Another example is the CL "with-slots" macro. The syntax is like this:
(with-slots (last-name first-name addr1 city state zip) cust-rec
Within the above "..code.." block, read/writeable lexical vars have been created
and bound to the named slots. This can save huge amounts of coding when accessing
object slots. However my point is not just the utility of "with-slots". It is that
it is nearly trivial to write macros of this sort for any of your own structures.
So I can write code that looks like
(with-pdf-file (*output-file*
(with-ds book-list
(with-idx (book-list . book_id)
(iterate-rows book-row
(with-columns (title isbn author-list) book-list book-row
(with-indexed-pdf-page pageno
)))))
Macros can handle all of the repetitious "glue" code such as slot access,
opening/closing files, etc. , and I can concentrate on the
- closures, destructuring, lambda forms, the reader, condition system,
mapping functions, CLOS, arbitrarily large ints, rational numbers
I used to spend lots of time in C or Perl trying to minimize code duplication.
Often I would have functions that were very similar but would receive different
arguments and execute different chunks of caller provided code at certain points.
In C or Perl this can be a huge pain. In LISP this sort of thing is trivial
using lambda forms, special vars, etc.
- commands like FORMAT, LOOP allow concise coding of common dull tasks, such as:
(format t "~{~{~&I received ~R number~:*~p: [~{~10:r~^ / ~}]~}~^~%~}"
(loop for idx below 6
collect (list idx (loop for jdx from 1 to idx collect (random 100000)))))
I received zero numbers: []
I received one number: [37,932]
I received two numbers: [89,603 / 53,797]
I received three numbers: [32,288 / 95,547 / 35,564]
I received four numbers: [41,133 / 54,848 / 7,337 / 98,224]
I received five numbers: [35,457 / 56,703 / 86,795 / 73,667 / 22,086]
NIL
*
3)simple interface to 'foreign' libraries. I just began work with LISP several months ago; it was simple
to integrate the ClibPDF and FreeTDS libraries with my code to produce PDF reports from LISP running
on Linux talking to SQL server.
McDonalds won the restaurant wars, decisively. Must be the best food.
I have no idea what the point of your post is.
I remember seeing these kind of statements about LISP as well. I'm not sure why you get so upset and angry about it, to the extent that LISPers are labeled pricks and bastards. It merely led me to investigate why so many [apparently] smart people had so many praises for LISP. What I found was that IMHO common-lisp *is* that good; I would rather write in CL now than any other language. FWIW my background is 10+ years of Unix, C, Perl, SQL, /bin/sh etc.
I'm awed by the miniscule size of my scrollbar
I must admit I've never heard 'it' referred to as a scrollbar before..
Yeah I was thinking more along the lines of using a friend's PC to post AC, then his regular station to mod up.
Had to have posted AC then used his own mod points to mod it up..
Which the hell report are you reading?
/ id pSurvey.nsf/1c963eb504904cde41256782007493b8/338c3 7864812e4c9c125684200315d77?OpenDocument
http://www.db.idpproject.org/Sites/IdpProjectDb
Basically women are treated like shit in and out of Taliban control, but I think the article makes a case that under the Taliban it is worse.
Obviously all tall buildings need to have military personal standing on the roof with stinger missiles to stop incoming planes..
/bin/laden
$ rm
I feel strongly that a large part of the psychological healing that the American people need to experience will ONLY come after those towers are rebuilt. Also I feel they should be built so in some way they are better than before. This is not just about who has the biggest tower; this is more like a bully who pushes you down at school to remove your dignity. Do you from then on crawl around on your knees for his enjoyment, or do you stand up and show him you are not afraid? Our national dignity depends on rebuilding in a huge way.
first off let me say lisp rules..
that said, I think the reason we need to keep upgrading our hardware is because of the shitty bloated software that we have to keep upgrading to. CPU speed is only part of it of course.
Another factor to remember is that even a civilization that lasts 10,000 years (a long time for an advanced civilization to last?) is only present for a tiny fraction of the life of the universe. So not only is advanced intelligent life probably somewhat rare, they are likely to be very sparsely scattered across both space AND time. We could be surrounded by them in space, but with them being alive 10 million years ago, or 10 million years in the future.
This is the same point I'm making "The average home raised corn fed american can't code jack. " This goes for americans or anyone else..
This is exactly why the IT world is filled with buggy crappy memory eating bloated slow shit code. Not to mention that this type of attitude (programming is easy anyone can do it: therefore treat your developers like peons) is likely to result in a company losing their best developers. Sure anyone can learn to code.. That doesn't change the fact that one good programmer can often do the work as 10 or more crappy ones. Also not to mention the fact that in addition to taking much longer to produce, the resulting code is probably going to be poorly written and hard to maintain.
Maybe because it looks as much better than current TVs as current TVs look than 50s black and white TVs..
>I want an editor that uses Alt- keys, not "Ctrl-X Ctrl-that Meta-x foo" for everything. Not sure I understand this; how is Alt-f (for example) better than Ctrl-f? Sure emacs has a lot of ctrl key commands, but I don't see any way around this. You can either map all the commands to mouse clicks or keystrokes (or both) ; and since there are only so many keys available, some key sequences tend to get lengthy. Emacs is my favorite editor -- I don't think you can give it a fair evaluation after a single month of use. I have had 30 files open in emacs for monthes at a time before; I can't remember the last time I had emacs crash on me. I used to get multiple Visual Studio crashes PER DAY back when I used it a few years ago. Sucks ass when the program I am debugging crashes the debugger and the whole OS too! BTW Most Windows programs I use require several Alt keystrokes in a row to do menu functions, too.
And I guarantee that if you "switch to rocket launcher,put on autorun and hold down the fire button" in a game with me or the folks I tend to play with you will get beat repeatedly. Not to mention you will run out of rockets in about 5 seconds.
sorry about the off topic
this should help: I hate Verant I hate Everquest, they ruined it with all their nerfing