Re: multi-core software
På Sat, 06 Jun 2009 21:46:51 +0200, skrev George Neuner gneun...@comcast.net: On Fri, 05 Jun 2009 16:26:37 -0700, Roedy Green Add to that the fact that programmers have shown themselves, on average, to be remarkably bad at figuring out what _should_ be done in parallel - as opposed to what _can_ be done - and you've got a clear indicator that threads, as we know them, are not scalable except under a limited set of conditions. George I find the dataflow model of concurrency on Oz to be interesting and to address many of the issues you just mentioned. See in particular: 'Dataflow variables and declarative concurrency' and onward. http://en.wikipedia.org/wiki/Oz_(programming_language) - John Thingstad -- http://mail.python.org/mailman/listinfo/python-list
Re: The Complexity And Tedium of Software Engineering
På Fri, 05 Jun 2009 08:07:39 +0200, skrev Xah Lee xah...@gmail.com: On Jun 3, 11:50 pm, Xah Lee xah...@gmail.com wrote: The point in these short examples is not about software bugs or problems. It illustrates, how seemingly trivial problems, such as networking, transferring files, running a app on Mac or Windwos, upgrading a app, often involves a lot subtle complexities. For mom and pop users, it simply stop them dead. For a senior industrial programer, it means some conceptually 10-minutes task often ends up in hours of tedium. What on earth gave you the idea that this is a trivial problem? Networks have been researched and improved for the last 40 years! It is a marvel of modern engineering that they work as well as they do. In some “theoretical” sense, all these problems are non-problems. But in practice, these are real, non-trivial problems. These are complexities that forms a major, multi-discipline, almost unexplored area of software research. Again, it is it not a trivial problem theoretically. Unexplored? What world are you on? I'm trying to think of a name that categorize this issue. I think it is a mix of software interface, version control, release control, formal software specification, automated upgrade system, etc. The ultimate scenario is that, if one needs to transfer files from one machine to another, one really should just press a button and expect everything to work. Software upgrade should be all automatic behind the scenes, to the degree that users really don't need fucking to know what so-called “version” of software he is using. Actually they mostly are. At least on my machine. (I use Windows XP and Ubuntu Linux.) Today, with so-called “exponential” scientific progress, and software has progress tremendously too. In our context, that means there are a huge proliferation of protocols and standards. For example, unicode, gazillion networking related protocols, version control systems, automatic update technologies, all comes into play here. However, in terms of the above visionary ideal, these are only the beginning. There needs to be more protocols, standards, specifications, and more strict ones, and unified ones, for the ideal scenario to take place. No, there are already to many protocols and the ideas of how a network infrastructure should be built are mostly in place. I think we would benefit from cleaning up the existing interface. That is by removing redundancy. What does need further research is distributed processing. Again this is a highly complex problem and a lot of work has been put into trying to make simpler and more manageable interfaces and protocol's. See for example the languages Erlang and Oz to get an idea. - John Thingstad -- http://mail.python.org/mailman/listinfo/python-list
Re: The Importance of Terminology's Quality
På Fri, 30 May 2008 02:56:37 +0200, skrev David Combs [EMAIL PROTECTED]: In article [EMAIL PROTECTED], Robert Maas, http://tinyurl.com/uh3t [EMAIL PROTECTED] wrote: From: [EMAIL PROTECTED] [EMAIL PROTECTED] the importance of naming of functions. Lisp is *so* early a language (1960?), preceeded mainly only by Fortran (1957?)?, and for sure the far-and-away the first as a platform for *so many* concepts of computer-science, eg lexical vs dynamic (special) variables, passing *unnamed* functions as args (could Algol 60 also do something like that, via something it maybe termed a thunk), maybe is still the only one in which program and data have the same representation -- that it'd seem logical to use it's terminology in all languages. From C is the very nice distinction between formal and actual args. And from algol-60, own and local -- own sure beats static! And so on. To me, it's too bad that that hacker-supreme (and certified genius) Larry W. likes to make up his own terminology for Perl. Sure makes for a lot of otherwise-unnecessary pages in the various Perl texts, as well as posts here. Of course, a whole lot better his terminology than no language at all! David Perl is solidly based in the UNIX world on awk, sed, bash and C. I don't like the style, but many do. -- John Thingstad -- http://mail.python.org/mailman/listinfo/python-list
Re: The Importance of Terminology's Quality
På Thu, 08 May 2008 04:14:35 +0200, skrev Kyle McGivney [EMAIL PROTECTED]: • Module, Block, in Mathematica is in lisp's various “let*”. The lisp's keywords “let”, is based on the English word “let”. That word is one of the English word with multitudes of meanings. If you look up its definition in a dictionary, you'll see that it means many disparate things. One of them, as in “let's go”, has the meaning of “permit; to cause to; allow”. This meaning is rather vague from a mathematical sense. Mathematica's choice of Module, Block, is based on the idea that it builds a self-contained segment of code. (however, the choice of Block as keyword here isn't perfect, since the word also has meanings like “obstruct; jam”) If the purpose of let is to introduce one or more variable bindings, then I don't see how changing to block or module would improve anything. I've always found it fairly intuitive to parse (let ((x 5)) ...) to let x be five. Additionally, replacing let with the synonyms you provided would approximately yield permit x to be five or allow x to be five. In my mind you have constructed an argument in favor of let here (obviously it's better than block, because nobody's going to come along and be confused about whether let will obstruct or jam them :) How about bind? (bind ((v f (mod i)) ((a b) list) (t (rem q))) 1. is a multiple-value-bind 2. is a destructuring-bind 3. is a let http://common-lisp.net/project/metabang-bind/ To me this is a example of where the ANSI group could have spent more time on naming. -- John Thingstad -- http://mail.python.org/mailman/listinfo/python-list
Re: Python's doc problems: sort
På Wed, 30 Apr 2008 06:26:31 +0200, skrev George Sakkis [EMAIL PROTECTED]: On Apr 29, 11:13 pm, Jürgen Exner [EMAIL PROTECTED] wrote: [EMAIL PROTECTED] [EMAIL PROTECTED] wrote: Is this self-promoting maniac still going at it? Although i disliked Perl very much [...] Then why on earth do you bother polluting this NG? Back into the killfile you go jue \|||/ (o o) ,ooO--(_)---. | Please| | don't feed the | | TROLL's ! | '--Ooo--' |__|__| || || ooO Ooo Doesn't copying Rainer Joswig's troll warning constitute a copywright infrigment :) -- John Thingstad -- http://mail.python.org/mailman/listinfo/python-list
Re: Choosing a new language
På Sat, 29 Dec 2007 19:16:09 +0100, skrev Joachim Durchholz [EMAIL PROTECTED]: However, for web applications, I found a far easier variant: I just reload the page being debugged. (I have to make sure that the backend is in the same state when reloading, but that's usually easy to accomplish.) So web pages are one area where code modification during debugging is less important. Haveyou looked at selenium? I quote: Selenium is a test tool for web applications. Selenium tests run directly in a browser, just as real users do. And they run in Internet Explorer, Mozilla and Firefox on Windows, Linux, and Macintosh. No other test tool covers such a wide array of platforms. Browser compatibility testing. Test your application to see if it works correctly on different browsers and operating systems. The same script can run on any Selenium platform. System functional testing. Create regression tests to verify application functionality and user acceptance. There is also a Lisp interface cl-selesium though I can't find the code on the net now. -- John Thingstad -- http://mail.python.org/mailman/listinfo/python-list
Re: Choosing a new language
På Sat, 29 Dec 2007 18:58:30 +0100, skrev Arnaud Delobelle [EMAIL PROTECTED]: On Dec 29, 3:11 pm, Achim Schneider [EMAIL PROTECTED] wrote: [...] Lisp throws lambda calculus right into your face, which is a good thing. Scheme might be the better choice, it's lexically scoped:http://mitpress.mit.edu/sicp/ There are also video lectures with people with funny hats speaking wise words. Common Lisp has lexical scoping as well (although defvar allows you to declare dynamically scoped variables). -- Arnaud More precisely defvar, defparameter, progv and (declare (special var)) create variables with dynamic scope. let and let* do as you said use a lexical scope. (unless you use a declare as above) -- John Thingstad -- http://mail.python.org/mailman/listinfo/python-list
Re: is laziness a programer's virtue?
On Sun, 15 Apr 2007 18:25:19 +0200, Xah Lee [EMAIL PROTECTED] wrote: Laziness, Perl, and Larry Wall Xah Lee, 20021124 In the unix community there's quite a large confusion and wishful thinking about the word laziness. In this post, i'd like to make some clarifications. American Heritage Dictionary third edition defines laziness as: “Resistant to work or exertion; disposed to idleness.” In this context I think you can safely take it to mean: Don't work hard, work smart. Avoid repetitious work. If somthing seems to elaborate find a more efficient way. In a course I took on verifiable programming I found working with Hoare logic extremely tedious. So I started using rewriting loops as recursive procedures and using induction instead. It took about a quarter of the time as the invariant of a loop fell out rather naturally this way. I failed the course, but when I took the course over again a year later I noticed that the book had been rewritten and now half the book was dedicated to Generator Induction. (Seems the professor noticed I failed in a interesting way and figured out it was not so stupid after all.) Naturally I had no problems the second time ;) This is just one example but it should convey the idea. -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ -- http://mail.python.org/mailman/listinfo/python-list
Re: merits of Lisp vs Python
On Mon, 18 Dec 2006 05:19:49 +0100, //[EMAIL PROTECTED] wrote: [EMAIL PROTECTED] writes: So don't (poke (random) value). That would be obvious to anyone capable of writing a device driver in C or Lisp or Oberon or Similarly in C programs, don't do *random = 0; Avoiding that is easier said than done. C programs suffer endless bugs of that type. Don't know where you get that idea. I have used a bounds checker in C++ since 1990.. If I set a pointer to a space on the heap that isn't allocated I would get a error. If I forgot to deallocate it it would warn me when the program terminates. Then I just jump to the place in the file where the memory reference was allocated. Admitably it could be a great problem if such tools weren't available, but that hasn't been the case in years. Much worse are buffer overflow errors. Functions that don't check buffer constraints. But then most modern compilers can turn that on too. Wanna overwrite the return stack. A cookie at the end checks for this as well. As for old libraries like string(s) modern replacement's are available that check constraints. For that matter C++'s type checks are much stricter than C's. In fact it hasn't been much a problem for a long time. (Debugging template error's now that is a pain..) Incremental linkers and fast compiler time also makes incremental developement possible. -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ -- http://mail.python.org/mailman/listinfo/python-list
Re: merits of Lisp vs Python
On Sun, 17 Dec 2006 00:19:40 +0100, //[EMAIL PROTECTED] wrote: Incorrect, I believe. The above is like saying Lisp's lack of optional manual storage allocation and machine pointers makes Lisp less powerful. It's in fact the absence of those features that lets garbage collection work reliably. Reliable GC gets rid of a large and important class of program errors and makes possible programming in a style that relies on it. Truth with modifications. The foreign function library of most systems does allow manual storage. If it didn't it would go into conniptions when talking to C where stored values are never moved. You can make languages more powerful by removing features as well as by adding them. This is what Haskell does, with its functional purity. Haskell's lazy evaluation semantics pretty much depend on the purity. Some people like it some people don't. (I should add I have never put serious effort into learning Haskell so my opinion should be taken with a grain of salt.) Like many lispers I use multiple paradigms. I have similar problems with SmallTalk by the way. See also SPJ's papers on composable memory transactions in Haskell: http://research.microsoft.com/~simonpj/papers/stm/index.htm These transactions rely on Haskell's pure functional semantics and if I understand correctly, can't be implemented reliably without it. And just like GC gets rid of a large class of pointer and storage allocation errors, composable transactions in concurrent programs get rid of lock-related errors, traditionally a huge source of problems in real-world code. These days modern CPU's have multiple cores. Parallelism is obviously easier to accomplish with a functional style so I might take a closer look in the near future. -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ -- http://mail.python.org/mailman/listinfo/python-list
Re: merits of Lisp vs Python
On Wed, 13 Dec 2006 03:13:26 +0100, Paddy [EMAIL PROTECTED] wrote: Not even close. In my example above: for a in y: dosomethingwith(a) y could be a lot of built-in types such as an array, list, tuple, dict, file, or set. - Paddy. I was refering to the recursive Lisp example. Did you even read the post? -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ -- http://mail.python.org/mailman/listinfo/python-list
Re: merits of Lisp vs Python
On Wed, 13 Dec 2006 09:39:44 +0100, Timofei Shatrov [EMAIL PROTECTED] wrote: On 12 Dec 2006 18:03:49 -0800, Paddy [EMAIL PROTECTED] tried to confuse everyone with this message: There are a lot of people that use Wikipedia. I think some of them might want to learn to program. I think you misunderstood the goal of Wikipedia. It is not to teach people programming. I make it easier for them to find Python by helping to maintain Python within Wikipedia. If someone wants to find Python, he types Python in the search bar and works from there. He certainly wouldn't end up in doctest article. Some people dislike Wikipedia which is fine. Some people dislike Wikipedia and deliberately sabotage it, which is vandalism. Writing vanity articles about non-notable things is not much better. You are being silly. Wikipedia has for instance the best coverage of math of any encyclopedia (if you can call it that). This is how I came in touch with it. If you want trivia you get trivia. If you want Phd. level math it has that as well. It is as diverse as the people that use it. -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ -- http://mail.python.org/mailman/listinfo/python-list
Re: merits of Lisp vs Python
On Wed, 13 Dec 2006 01:54:58 +0100, Paddy [EMAIL PROTECTED] wrote: Robert Uhl wrote: Steven D'Aprano [EMAIL PROTECTED] writes: Speaking as somebody who programmed in FORTH for a while, that doesn't impress me much. Prefix/postfix notation is, generally speaking, more of a pain in the rear end than it is worth, even if it saves you a tiny bit of thought when pasting code. Of course, you use prefix notation all the time in Python: for x in range(0,len(y)): dosomething(x) In Python, most containers are directly iterable so we are much more likely to arrange our program to use: for a in y: dosomethingwith(a) -Paddy. In lisp: (loop for a in y do (do-something a)) There is one difference.. There is no iterator so you have different pronouns for each sequence type: list: (loop for a in y .. array: (loop for a across y .. hash: (loop for a over y .. hardly ideal, but workable. Still it is a lot simpler to change the declaration in the start of the loop than having to changing the access to all references to a variable as you might have to with recursion. Consider (defun func-iter (list) (func (first list))) (when (not (endp list)) (func-iter (rest list))) (You could write (mapc #'(lambda (e) (func e)) list) but that is beside the point.) or something like that. What happens if you change the type to a array? Total rewrite.. From a software engineering point of view iteration is preferable to recursion because maintenance and aggregation is simpler. (Sorry about the digression.) -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ -- http://mail.python.org/mailman/listinfo/python-list
Re: merits of Lisp vs Python
On Sat, 09 Dec 2006 22:04:04 +0100, mystilleef [EMAIL PROTECTED] wrote: Bill Atkins wrote: Are any of these not subjective? Objectivity is in the eye of the beholder. Lisp is much more than a functional language. Maybe so. But I've only ever appreciated its functional aspects. I wouldn't choose Lisp or its derivatives for OO related tasks even if I'm high. You are just being silly. Lisp's OO environment CLOS is vastly superior to Python classes. Both in terms of expressive power and flexibility. You might even find out if you ever learnt how to use it. Lisp also supports procedural programming just fine. In the windows world the best way to access system libraries are via .NET. Thus each language inventing it's own libraries is quickly becoming a thing of the past. Also you can mix and match languages according to need. Python is fine if you approach programming as Lego, simply gluing together libraries. But if you want to do some serious algorithmic's you may find that it is just to slow. -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ -- http://mail.python.org/mailman/listinfo/python-list
Re: merits of Lisp vs Python
On Sat, 09 Dec 2006 22:49:59 +0100, mystilleef [EMAIL PROTECTED] wrote: Donkeys have wings. ? You attitude towards CLOS is obviously insane. In the windows world the best way to access system libraries are via .NET. Thus each language inventing it's own libraries is quickly becoming You're only proving my point. Why do you think most windows developers use .NET? Lisp can also use .NET. .NET =/= C# Python is fine if you approach programming as Lego, simply gluing together libraries. You mean it's fine for what 90% of programmers do? Yes CRUD (Create, Read Update, Delete).. Sure you can do that in any languge.. Not sure I would call it programming. But if you want to do some serious algorithmic's you may find that it is just to slow. Slow for users who aren't familiar with Psyco, Pyrex and C extensions, sure. Even then.. -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ -- http://mail.python.org/mailman/listinfo/python-list
Re: merits of Lisp vs Python
On Sun, 10 Dec 2006 01:29:43 +0100, Steven D'Aprano [EMAIL PROTECTED] wrote: Oh my god! Lisp can echo STRINGS to the interpreter Why didn't somebody somebody tell me that That *completely* changes my mind about the language! I'm especially impressed that it knew I wanted them printed in uppercase without being told. Except it is not a string. It is a list of symbols. Hence the upcase. This is how you write a string in Lisp and that does preserve case. (If you want symbols to be case sensitive and default case to be lower then most Lisp's allow that, but the ANSI spec dosn't give a standard way.) -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ -- http://mail.python.org/mailman/listinfo/python-list
Re: What is Expressiveness in a Computer Language
On Sun, 25 Jun 2006 20:11:22 +0200, Anton van Straaten [EMAIL PROTECTED] wrote: [EMAIL PROTECTED] wrote: In this context, the term latently-typed language refers to the language that a programmer experiences, not to the subset of that language which is all that we're typically able to formally define. That language is not a subset, if at all, it's the other way round, but I'd say they are rather incomparable. That is, they are different languages. The subset characterization is not important for what I'm saying. The fact that they are different languages is what's important. If you agree about that, then you can at least understand which language I'm referring to when I say latently-typed language. Besides, many dynamically-typed languages have no formal models, in which case the untyped formal model I've referred to is just a speculative construct. The language I'm referring to with latently-typed language is the language that programmers are familiar with, and work with. That is starting to get a bit too mystical for my tastes. I have to agree. \sarcasm One step further, and somebody starts calling C a latently memory-safe language, because a real programmer knows that his code is in a safe subset... And where he is wrong, dynamic memory page protection checks will guide him. That's a pretty apt comparison, and it probably explains how it is that the software we all use, which relies so heavily on C, works as well as it does. But the comparison critiques the practice of operating without static guarantees, it's not a critique of the terminology. Anton Actually I have never developed a C/C++ program without a bounds checker the last 15 years. It checks all memory references and on program shutdown checks for memory leaks. What is it about you guys that make you blind to these fact's. Allocation problem's haven't really bugged me at all since forever. Now debugging fluky templates on the other hands.. But then debugging Lisp macro's isn't much better. -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ -- http://mail.python.org/mailman/listinfo/python-list
Re: Software Needs Philosophers
On Tue, 23 May 2006 15:58:12 +0200, John D Salt jdsalt_AT_gotadsl.co.uk wrote: [EMAIL PROTECTED] wrote in news:[EMAIL PROTECTED]: [Snips] Wrong. We live in a paradise of ideas and possibilities well beyond the wildest dreams of only 20 years ago. What exciting new ideas exist in software that are both important and cannot be traced back to 1986 or earlier? I'd like to believe that there are some, but I can't think of any at the moment. All the best, John. Well most have to do with wireless nets and connectivity. One is that all compoters will be connected to the net all of the time. When you go out you will not bring a mobile phone you will bring a PDA (Personal data assistant). You can call people, listent to music, wach videoes. You can connect to the web cans at home and see that the children are ok or turn the oven on while on the way back from work, etc. As you move from sector to another the PDA aquites the closest transmitter and hooks on to it. Most use wireless networks to connect aplliances in their homes. Instead of tv stations you order movies and TV series from online servers. etc.. Also the AI part. AI will not consist of cumputers trying to pretend to be people. The will take vocal commands. The will remember your preferences. It will know when you are on vacation. Turn the alarm on, lower the house theperature and turn on lights periodically to make it look inhabited. It will know what movies and shows you like to watch and order them accordingly. It will know who you know and order incoming messages accordingly by priority, also block out those you do not what contact with. There is now a clear idea of how windows systems should behave. Windows interfaces have evolved accordingly. It is now far less tedious to connect systems to the net or make a windows interface.. etc, etc.. -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ -- http://mail.python.org/mailman/listinfo/python-list
Re: Xah's Edu Corner: accountability lying thru the teeth
On Tue, 14 Feb 2006 10:33:49 +0100, Xah Lee [EMAIL PROTECTED] wrote: i longed for such a accountable predictions for a long time. Usually, some fucking fart will do predictions, but the problem is that it's not accountable. So, lots fuckhead morons in the IT industry will shout ... more obscene language Fine, I will hold you accountable for what you said abot IT security two weeks ago. Let's see 'By switching from C to a high level language like Lisp all security problems go away, it's that simple.' Look up 'insertion attack' Then eat SOAP. lol -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ -- http://mail.python.org/mailman/listinfo/python-list
Re: write a loopin one line; process file paths
On Wed, 19 Oct 2005 11:48:01 +0200, Xah Lee [EMAIL PROTECTED] wrote: Thanks a lot for various notes. Bonono? I will have to look at the itertools module. Just went to the doc http://www.python.org/doc/2.4.1/lib/module-itertools.html looks interesting. But I believe Python is designed for easy to code and read and maintain in mind. One has to admit that without some training, FP is not very intuitive, my head spin when I see haskell code. A for loop is easier to understand. This i'm not sure. Of the past couple of years i increasingly developed a theory (probably well-known among proper experts), that the difficulty of human feats of various forms, are primarily a perception and familiarity thing. This may be getting off topic, but i wrote an essay expresising much of the idea using Juggling as a example: Difficulty Perceptions in Human Feats http://xahlee.org/Periodic_dosage_dir/t2/juggling.html likewise, i think this applies to mental feats as well. In particular, i think that whether imperative code or functional code is easier for the mind is almost ENTIRELY dependent on which one the person is more familiar with, coulped with a innate attitude one may have picked up. Well, if you want clean FP, you can always try haskell which is getting better and better in terms of real world module support(file system, network etc). oh Haskell, my love! I am really going to learn it now. (maybe i'll start A-Java-Haskell-A-Day) This month i just learned and read about how Perl 6 is implemented in Haskell! (because one Taiwaness hacker single-handedly by happenstance tried to do it, as a by-product of learning Haskell) This Pugs (Perl6 in Haskell) really brought two rather incompatible communities together somewhat for mutual exchange. (the learning, on the surface, is politely said to be mutual, but i'm pretty sure it's mostly Perlers learning from the Haskell folks) ... there is a sentiment among the elite tech-geeking morons, early on imbued by the concept of troll, so that they in general don't communicate and learn from any other language except their own. Anything cross-posted is considered as troll, and the inter-language communication has been essentially completely cut off. Basically, the only ones generating all the garbage posts are these troll-criers themselves. (will have to flesh out on this particular point of net-sociology in a essay some other day.) Xah [EMAIL PROTECTED] ∑ http://xahlee.org/ Honestly.. your programming skills suck John -- Using Opera's revolutionary e-mail client: http://www.opera.com/mail/ -- http://mail.python.org/mailman/listinfo/python-list
huygens lands on titan
-- Using M2, Opera's revolutionary e-mail client: http://www.opera.com/m2/ -- http://mail.python.org/mailman/listinfo/python-list