Domain: loria.fr
Stories and comments across the archive that link to loria.fr.
Comments · 73
-
SmartEiffel: Classic Compiled Object Language
Both Objective-C and C++ have object oriented concepts graphed on as an after-thought.
Your best bet for a classic compiled object language is either SmartEiffel or EiffelStudio.
If you are going to demand using a C-like language then your best bet is D.
-
MetapostMetapost is a part of Knuth's TeX suite of languages. http://en.wikipedia.org/wiki/MetaPost. It is a graphic language that emits Postscript and supports spline line drawing. It was derived from Metafont, the font generation language for TeX.
First, Metapost is implemented as a macro language, so it is similar to C shell languages in the way it is evaluated. The symbols x, y, and z are predefined macros. For a location x the construct 3x is three times x. There are built in lengths, so 2cm and 1in are lengths. You can extend the language by defining you own macros for prefix or uinary and binary operations, which is the way that many of the operators are implemented.
The if and loop syntax
if boolean1 : expr1; else: expr2; elseif boolean2: expr3; fi
for i=1 step t until n: statement; statement; endfor
There are four levels of precedence. This is why multiplication by a constant can be expressed by putting a number in front of a value.
These are just some of the syntax features. The data types include splines, transforms, colors and numeric pairs for points. Built in operations can find points where two curves intersect and sub-curve sections between intersections.
It's fun in a strange fashion, and you can make some interesting geometrical pictures.
-
Re:Epic type system fail - universal covariance
The introduction has this gem:
Gosu supports a simplified version of generics. Generics are a way to abstract the behavior of a class to work with different types of objects, but to still retain type safety. There are no wildcards, and generic types are covariant, like Java arrays, which is usually what you want.
And here's how to make the type system bite the dust with this flaw:
uses java.util.*;
var xs : List<Object> = null;
var ys = new ArrayList<String>();
xs = ys; // type system allows this blatant LSP violation
xs.add(123); // we just added an integer to a list of strings - great
print(xs.get(0)); // yeah, this prints 123 - just to be sure
ys.get(0).length(); // finally, a ClassCastException which should've happened 3 lines earlierWhat's funny is that Eiffel has already fallen into the very same trap, and is still trying to dig itself out of it.
Since when does the line xs=ys; not generate a warning?
-
Epic type system fail - universal covariance
The introduction has this gem:
Gosu supports a simplified version of generics. Generics are a way to abstract the behavior of a class to work with different types of objects, but to still retain type safety. There are no wildcards, and generic types are covariant, like Java arrays, which is usually what you want.
And here's how to make the type system bite the dust with this flaw:
uses java.util.*;
var xs : List<Object> = null;
var ys = new ArrayList<String>();
xs = ys; // type system allows this blatant LSP violation
xs.add(123); // we just added an integer to a list of strings - great
print(xs.get(0)); // yeah, this prints 123 - just to be sure
ys.get(0).length(); // finally, a ClassCastException which should've happened 3 lines earlierWhat's funny is that Eiffel has already fallen into the very same trap, and is still trying to dig itself out of it.
-
AI?
There are many things that could be done in compsci that would be great, but when someone mentions an upcoming "earthshaking" announcement in the field, the first thing that springs to mind for me is true, hard AI. We all know it's coming; someone just needs to figure out the last few pieces. I fancy Knuth's chances more than most.
"My job is to compare the AI literature with what came out of the electrical engineering community, and other disciplines; each community has had a slightly different way of approaching the problems." -- Knuth
Then again, he might be announcing his new luddite cult
;) -
Re:a French computer programmer?
OTOH, reading Bellard's FAQ on his latest result does seem like he was interested more in fast algorithms and not in Pi. So I stand corrected. Still.. he's not some random programmer to us.
:P Following links from his FAQ, I found two cool books: -
Re:It's not for dumb people
in the end, procedural programming is simply more intuitive
Maybe that's the reason why you can do procedural programming in functional languages. And monads are the way to do it; they are so important because they provide the bridge between the imperative and functional worlds, keeping the best of both.
If you really appreciate imperative programming, you should learn how monads work, because monads are a mathematical (declarative) description of procedural computations. Monads are used by building a sequence of operations, much like a Unix pipe, carrying state from one operation to the next. (Why defining a monad then, instead of using an imperative language? Because with the monad, you have the definition visible in your program, instead of hidden in your execution engine/virtual machine).
As for the *why* of monads: they are a Design Pattern in functional languages, just like "Observer" or "Strategy" are design patterns in Object-Oriented Programming. If you structure your code according to the predefined pattern, you'll likely get some benefits in terms of flexibility and mantainability.
The benefits provided by monads are close to those provided by Dependency Injection and Inversion of Control in OOP: you can delegate some complex processing into a supporting framework. Then you can build your application in terms of small blocks whose control flow is handled by the framework in the right order, thus helping reusability and simplifying the bookkeeping a lot.
For the *how* this is done, I recommend reading about the assembly line and space station metaphors (in that order), as well as any explanation intended "for imperative programmers". As I said, the structure of a monad is similar to a Unix pipe, but with user-defined types instead of just plain text. The "lift" and "bind" functions are methods defining an interface to comply with the pattern definition (they are a constructor and a sequencer, respectively).
-
Re:different skillsBullshit. All I was saying was that the skills that qualify people for writing math libraries don't qualify them for working for ad placement. Are you joking? This might have been all you were trying to say when you started, but it's not what you actually *did* say, and you've since spewed so much nonsense and zealotry that whatever point you might have been trying to make is long gone in the wash. Some of my personal favorites: Apple is all about design and marketing fluff, with a little engineering thrown in. I doubt it will get you a job at all if implementation of transcendental functions is your primary skill. Darwin's libm is based on Berkeley's, and the last release seems to have been in 2006 If Apple engineers are re-implementing transcendental functions or encryption routines for OS X, they are fools. Do you actually think that any of this has to do with what you claim to be arguing about? Hell, I agree with the point that you say you were originally trying to make. Writing transcendental function libraries is very different from doing statistics.
What I disagree with is that implementing transcendental functions requires no mathematical knowledge, and all of the other nonsense that you've posted since then. I'm just trying to refute some obviously misinformed opinions. If that comes across as being an Apple zealot, I'm sorry that you feel that way. Sometimes the world isn't the way you think it is. Darwin's libm is based on Berkeley's, and the last release seems to have been in 2006 Darwin's Libm is almost entirely *not* based on BSD, and is pretty damn easy to find with Google (you may need to register at opensource.apple.com in order to grab the sources from there):
http://www.opensource.apple.com/darwinsource/10.5.3/Libm-292.4/
A quick search didn't find any direct benchmarks comparing Apple's libm to glibc, but does turn up plentiful evidence that the GNU libm is lousy enough that Apple would be very well motivated to write their own:
http://rnc7.loria.fr/astafiev.pdf
Have a look at the performance and accuracy tables comparing the GNU libm to the Intel libm on pages 17 and 18. The GNU library is 3 times slower and orders of magnitude less accurate than the Intel library. You haven't shown any benchmarks, there are no papers, nothing. It's all just a bunch of hot air. Neither have you. I wouldn't get too indignant. If they don't publish, they aren't contributing to science or research, it's that simple. If they make some researcher's climate simulation run 10% faster, or give more accurate results than the scientist can get from the GNU libm, then yes, they're contributing to science and research. Far more so than we are by having this discussion. -
Re:not necessarily information overload
This is why Don Knuth stopped using email in 1990. Before this he had 15 years of email interruptions, which were presumably disorientating:
"It's impossible to shut email off! You send a message to somebody, and they send it back saying "Thank you", and you say "OK, thanks for thanking me..."
Email is wonderful for some people, absolutely necessary for their job, and they can do their work better. I like to say that for people whose role is to be on top of things, electronic mail is great. But my role is to be on the bottom of things. I look at ideas and think about them carefully and try to write them up... I move slowly through things that people have done and try to organize the material. But I don't know what is happening this month."
http://www-cs-faculty.stanford.edu/~knuth/email.html
http://tex.loria.fr/historique/interviews/knuth-clb1993.html
So now some organization has deemed that this is the year the phenomenon has gone mainstream. It's kind of strange that they mention the problem as information overload when inbound communication overload is a more accurate description of that particular problem. Information overload is a problem too. It's easy to just keep researching, because the signal to noise ratio is so good that research becomes addictive and the amount of material is virtually endless.
Some people handle these things well, some people don't. The sort of people who didn't weren't all playing solitaire 20 years ago, a lot of them were workaholics. A workaholic is almost always a star employee, simply because he is addicted to the work. But the thing was, eventually researching something used to get boring because eventually the info that they were researching dried up and they moved on to actually solving their problems (if in an imperfect but still very good way).
Unfortunately now, in the process of doing your research the most efficient way, a workaholic is very tempted to develop web addiction, which turns an excellent worker into a poor worker. -
Re:What advantages does this have over Ada?Ada has the strong typing capabilities of Pascal, with multitasking and object support as well. It seems to be the main Pascal-like language for serious, high-reliability applications. Does Free Pascal offer any advantages over Ada? You might as well ask what advantages it offers over Eiffel, another language that offers strong typing, object support, and clean clear syntax. Better yet Eiffel not only has a GPL compiler with LGPL libraries, you can also opt for a GPL compiler suite, libraries and complete development environment.
The advantage, in the end, is that it is Pascal, and if that's the language that someone wants then other languages like Ada and Eiffel, despite similarities just aren't Pascal. -
Re:small addition
There's not only "room" for Windows, OSX and Linux, but there's a crying need for new blood in the OS arena.
Maybe someday new stuff like Isaac will see some real world use. There certainly are lots of interesting research OS out there. In the meantime the problem is that the ones we have are "good enough". So there is little incentive for change. -
Must read floating-point articlesWhat every computer scientist should know about floating point numbers (HTML, PDF).
and
When bad things happen to good numbers (as well as Becker's other floating-point columns on that same page)
-
Not just an Eiffel Compiler
No one notes it here, but besides the Eiffel Compiler (anyways, we have had a GPL eiffel compiler for about 10 years), the guys at Eiffel.com are releasing not just the compiler, but also one of the most complete IDEs you can find under a Free license.
It has a project editor, integrated debugger, including browsing the object structure in run time, a class browser, an integrated documentation generator, and you can write your designs in BON (a graphical notation, UML-style) and flip back and forth from diagrams to code seamlessly. You probably can compare it pretty well to Eclipse, but much lighter (it's written in Eiffel instead of Java).
Even if you are not planning to use Eiffel, I would love to see that GPL IDE being used for other languages...
-
Oh my, oh my...
...how things change. for BM's earlier position on free software see The Ethics of Free Software . For a decent eiffel compiler (last time i tried, ISE's sucked hard. funny that, for a company made by the number one authority on software engineering), try SmallEiffel. and don't take me wrong, i think Object-oriented Software Construction is one of the great classics of computer science. but there is a gap between theory and practice.
-
Re:.NET/Mono
It's also worth noting that the GNU Eiffel com piler SmartEiffel provides a tool that can compiler Eiffel code to Java byte-code, so you can run Eiffel programs on a JVM too.
Jedidiah. -
Re:Info please?
I haven't heard of this language, and don't want to do too much research (go go procrastination!). Can anyone tell me some of the basic info about this, and what makes it different? Why would I want to use this language over something already available, for example.
Eiffel has been around for a long time, and is a mature language. What does it offer? A very clean and well designed Object Oriented language with a very clear and readable syntax and great support for Design by Contract. The principle behind Design by Contract is simple enough: objects, and methods provide contracts - providing you meet their stated requirements, the guarantee things in return. Statically typed languages offer some level of this already: you have to provide paramters of the right datatype, and it guarantees the datatype of the return type. Design by Contract essentially just extends this principle to allow for much more expressive contracts than just type signatures, and things like object invariants (properties of an object that are guaranteed not to change). The result is a much clearer statement of intention as to how code should work, and a powerful test harness that massively speeds up the test/debug cycle. In theory you can achieve this by liberally sprinkling assertions through your code. The advantage of having a language with explicit support for Design by Contract is that things like inheritance of contracts and invariants are all handled automatically and elegantly etc.
As well as this release of EiffelStudio as open source, there's SmartEiffel which is an open source Eiffel compiler (which supports a number of extra features beyond what is given in the recent ECMA spec).
Jedidiah. -
Re:.NET?!?
-
Re:Haiku Commenting?
What parts do what should be clear from the names of function calls and variables, but whenever a function becomes longer than something really short, yes, it needs comments describing what happens where. If a function does something complicated, it's worth starting with a comment describing pre- and post conditions.
Now there is an excellent idea! It doesn't take a lot of effort - you should be able to come up with some basic constraints on inputs and outputs if you have any decent idea of what the function does - but it is very helpful documentation to anyone else, particularly for people who have to call the function (as it clerly delimits exactly what they need to provide, and exactly what they can expect to get back). Better yet, as long as you use a system that supports it you can get a whole lot of benefits in terms of automated checking and debugging of your code, saving you a lot of effort later.
Eiffel and D support pre and post conditions directly in the code (instead of in comments). Java has JML which is a syntax for writing pre and post conditions in comments, as well as some tools to do extra checking, add runtime checks to your code (or not) based on the conditions, write the conditions into JavaDoc properly, and automatically generate JUnit tests based on the conditions. If you program in Ada there's SPARK which supports pre and post conditions as comments as well as a range of other annotations, and provides extremely powerful tools to do extensive static checking and analysis and even generate automatically simplied proof obligations based on your annotations. If you program in Python there's PyContract which allows you to write pre and post conditions into docstrings and switch on or off runtime checking of those contracts. I expect there are plenty more, so hopefully other people can mention those.
Jedidiah. -
I told you they shouldn't have changed the logo...To go from the most badassed logo ever to appear anywhere in the world...
http://cch.loria.fr/documentation/O2000/slides/Tow le/images/sgi.logo.jpg
to an utterly bland, vanilla logo:
http://truegrid.com/images/SGI_logo.gif
Well...they had it coming. [ shakes head ]
blakespot -
Re:Well, given the options
Python is a great language (and so is ruby while I am at it) but it seems to me if you are coding open source applications you might be better off with a stictly typed language based on contracts like smart eiffel. It seems like the safest way to ensure the new programmers can jump in to a project with some certainty of confidence that any boneheaded mistakes they might make will be caught by the compiler.
Java is strictly typed too but it's not really free and there are restrictions on the distribution of the runtime. Eiffel also compiles to the JVM if you really want to go that way. -
it's 11^281+1
-
LaTex?
I'm sure that a mature student such as yourself knows to use LaTeX for the advanced math formulas you're no-doubt creating. LaTeX is the only real answer for complicated math equations and such. Check out LaTeX: Math into LaTeX Short Course.
Moderate this comment
Negative: Offtopic Flamebait Troll Redundant
Positive: Insightful Interesting Informative Funny -
Re:Miguel has told you why
SmartEiffel (the GNU Eiffel compiler) is also able to compile to JVM bytecode (besides its more usual mode, which produces C code).
-
Re:High Level Assembly (HLA)
As the other poster said: Insightful, not Funny.
For example SmartEiffel compiles Eiffel-code to assembly-like C-code and then compiles the C-code to executable code using an ANSI-C compiler. Smart and efficient way to make a new compiler produce extremly fast code and be crossplatform without an extra effort. -
Google is your friend
You can search: latex math
And you get this: LaTeX: Math into LaTeX Short Course -
Re:PointlessYour point that _just_ another layer of abstraction doesn't introduce anything worthwhile has been answered by other people. (Dude, why don't you program in assembly, or brainfuck, or whatever?
:)For what it's worth, please make a distinction between C++ and C, they are two very different beasts. Two of the most common Eiffel compilers ISE Eiffel and SmartEiffel do compile to C code, not to C++ code. You probably refered to one of those when making your claim that Eiffel compilers generate C++ code (which is a false statement). Also please note that conceptually an Eiffel compiler can generate assembly code as well. In fact VIsual Eiffel does it. And ISE Eiffel does compile to Microsofts
.Net byte code as well. -
Re:Advantages?Eiffel is also interesting in that the designer has never released a really free version of the compiler
well, i think there was/is a "personal" version for windows and linux that's free but limits the number of classes you can have in a program.
if you want a "free speech" compiler, don't overlook SmartEiffel, a pretty good GPL'ed implementation of the language.
-
Re:Eiffel is not bad, but...
Good thing there are open source versions such as SmartEiffel and Fine!
-
Re:Germany?
Specifically, they very likely used the NFS lattice siever written by Prof. Jens Franke, Thorsten Kleinjung and Friedrich Bahr. It's the fastest siever I know of, partially thanks to decend assembler optimization for different cpu types. Oh, and it's distributed under the GPL! The latest version is not on the net as far as I am aware, but an older version, and MPQS code, can be found at ftp://ftp.math.uni-bonn.de/people/franke/mpqs4lin
u x
And Franke has worked with the BSI before, the RSA-160 announcement here
mentiones that the sieving was done at the BSI, while for RSA-576 apparantly only parts of the post-processing were (perhaps the linear algebra?)
Alex -
Re:But do YOU charge for support?
No, but the SmartEiffel team charges. They have an open mailinglist and answer doubts and bug reports, but they don't offer access to their CVS tree, just the releases. So if you want a bug fix before their next release you have to pay for it. This doesn't pay the project, but the money helps them.
-
Re:Computers
-
Re:Ethics of Free Software
Who does this guy work for?
Well, Bertrand Meyer is a CS professor (having posts at UCSB and Monash University), but more to the point he has a company which tries to commerialize his "Effiel" programming language. Meyer was annoyed that a group (amusingly, from Meyer's native France) made an free version of Effiel. Meyer then saw fit to attack the icons of free software in revenge. Pretty childish, really. -
Re:All the features of C++
Are SmartEiffel, GNU Smalltalk, or GNU Common Lisp somehow unsuitable? Why are you seriously considering proprietary versions, regardless of price?
-
Re:OSS alternatives to code checking toolsMaybe you ought to think outside the box. Maybe the question you should ask is "Am I using the best language for the job?"
Perhaps you should consider using languages such as Ada or Eiffel which do not allow the errors which occur under C.
GNU Gnat and GNU SmallEiffel are two starting points for investigating safer, more robust OSS languages.
-
eiffelSmarteiffel (formerly smalleiffel) can compile to jvm.
I believe jvm isn't a good fit for some languages, but it does appear to work out for higher level stuff like eiffel and (the already mentioned) python (jython).
-
open source gui/database project for SE ..The ELJ project - http://elj.sourceforge.net/ has been successful in providing much needed multiplatform libraries to SmallEiffel/SmartEiffel developers.
The wxEiffel GUI library provides a comprehensive interface to the wxWindows GUI. Database interfaces to Firebird, sqlite, berkeley db, mysql, postgres.
There are even libraries for Regular Expressions and for those who like the perl way of doing things - see Perlish.
The 0.5 release announcement in comp.os.linux.announce gives more details. The ELJ project is undertaking the necessary work to move from SmallEiffel to SmartEiffel.
There are many other open source Eiffel projects:
- GOBO - lex, yacc, xml, data structures, date/time libraries and
- eposix which aims to provide a a 100% complete Eiffel binding to Standard C and POSIX.
Eiffel has come a long way over the years. Misconceptions still abound. You can now develop multiplatform applications using open source Eiffel tools and libraries. There are small hurdles to jump as there are with anything. Give it a try and become involved if there is something about Eiffel which you find appealing.
-
EiffelThere is no silver bullet. There is no simple solution that will solve all problems. But it helps to not using overly complicated languages.. Before I tried out Eiffel I had been struggling with C++ for quite a long time.. C++ is extremly hard to learn! It's easy to learn the basics, but after a while everything just becomes a mess.. It's overfeatured and it's hard to debug.. Then I gave Eiffel a try, mostly just for fun, and everything became clear.. It just makes sense! It's simply a beautiful programminglanguage!
It's pure OO, just like smalltalk, not hybrid.
It's syntax is easy to learn, write and read.
It has assertions nicely integrated into the language, everything must meet the precontitions and postcondition you set up. It feels natural to add checks and tests pretty much everywhere instead of cluttering the code with assert()s and #ifdef DEBUG..
SmartEiffel (the GNU Eiffel compiler) compiles to ANSI-C or JVM so it's portable to every platform there is.. Some other compilers can also compile to
.NET..
You can use existing C and C++ shared libraries without wrappers/bindings. (although making bindings are preferrable to make it follow standard Eiffel-style)
It manages memory for you and has a garbage collector. You never have to think about buffer overflows and malloc()/free() again!
Its runtime speed is as fast as C/C++, and sometimes even faster because the compiler compiles to C-code that is more optimized than most human beings can code..
I could rant about it forever, but I won't.. Instead you should read one of these great tutorials!
Eiffel for beginners
Eiffel: An advanced introduction
Eiffel Object-Oriented Programming
And of course, the GNU Eiffel compiler: SmartEiffel ;-)
-
Re:Very cool task this yearWhat's wrong with Eiffel? I mean once you get past the $$$ issue of getting it...
What's wrong with GNU SmallEiffel?
-
Re:If you're worried about threading/memory bugs
If you were going to do something like that, wouldn't it be easier to use Eiffel.
-
The Project Revision Control SystemI'm currently doing similar research for my company and here is what I've found by the moment:
- take a look at PRCS, it has very sophisticated tool for finding diferences between binary files - Xdelta - this might be what you are looking for.
- the site with good (however incomplete) collection of links.
- I've found some comparisons among different RCS on BitKeeper site (in favour of BitKeeper of couse
;) ).
-
Literate programming...
... is the only truly well-commented code. Literate programming was invented by Knuth. If you don't know who Knuth is: he's the author of the definitive CS work called "The Art of Computer Programming". Ask any of your friends who actually studied computer science about it.
Knuth wrote more than books. For example, he wrote the typesetting program, TeX which is to this very day the most popular way academics in the CS field employ to write their papers (especially using a macro package called LaTex). He just wasn't satisfied with the available ways to write mathematical books at the time (early 80s). He had a good reason - you can see the difference in quality between it and anything else - especially Word (Ugh).
To ensure you'll have the right idea about the quality of his work, note he's actually sending people checks when they find a bug in his books or his code. Of course people tend to frame them rather than cache them
:-). Also note that nobody has managed to obtain such a check for a long time.So, what is literate programming anyway? Instead of inventing yet another definition, here's a pretty good definition which you can find in the site, together with many others:
Marc van Leeuwen. "Requirements for Literate Programming" in CWEBx Manual, pg. 3-4.
The basic idea of literate programming is to take a fundamentally different starting point for the presentation of programs to human readers, without any direct effect on the program as seen by the computer. Rather than to present the program in the form in which it will be compiled (or executed), and to intercalate comments to help humans understand what is going on (and which the compiler will kindly ignore), the presentation focuses on explaining to humans the design and construction of the program, while pieces of actual program code are inserted to make the description precise and to tell the computer what it should do. The program description should describe parts of the algorithm as they occur in the design process, rather than in the completed program text. For reasons of maintainability it is essential however that the program description defines the actual program text; if this were defined in a separate source document, then inconsistencies would be almost impossible to prevent. If programs are written in a way that concentrates on explaining their design to human readers, then they can be considered as works of (technical) literature; it is for this reason that Knuth has named this style of software construction and description "literate programming".
Does it work in practice? All I can say is that I have used it in a real-world project with great success. The main downsides to it, and this applies to any type of documentation, is that it takes up-front time (even if it does save time later), and that you need to employ people with some measure of writing ability. It is surprising how many people can code well, but are hard-pressed to write coherent, readable description of their code. Especially if you write your documentation in English and the programmer's native language is Hebrew or Russian
:-(Oh, and it also is hard to do in IDEs like Visual Studio. And you won't learn about it in your university, never mind your VB in 3 days course. Just like design by contract and many other techniques, the problem isn't that humanity doesn't know how to write software well - it is that humanity doesn't want to.
-
Re:Quality, Workmanship, Pride...
The old joke, "if builders built buildings the way programmers wrote programs
..." is still frighteningly true; other engineering professions do not often have a commonplace equivalent of a blue-screen or core-dump.
There are several problems with this, and I tend to get ticked when I see this quote tossed around.
Firstly, software is only as reliable as the language it is written in. That may sound trite, but the reality is that your language (at least in computer science) limits your ability. This is why Perl and Python are taking off, why Lisp is returning, why everywhere you look we're fleeing from C and C++. It is much, much, much harder to write secure code in C than Python, Perl, Ruby, Java, or even C++ given the standard template library. x = raw_input() can't overflow, blow the stack, overwrite important memory locations or in other ways fuck my program. That kind of security comes at an incredible cost in C---but you get it for free in every other language. But we aren't brought up to value security like we value efficiency in school. 2% of us move on to assembly to optimize their algorithms, 80% stay with C because it's the first language they know, and the rest hurry up and use Java or Perl. It's a depressing fact that lazy people like myself, who program in Python, Eiffel, or C++ because we are simple-minded and dislike complexity, and who are quite often the only people who understand *conceptually* the ideas in CS, are also the ones who are ignored, who persist in our laziness despite the attitudes of those around us, and who have such difficulty selling our ideas to other people! It's embarassing that I can do in 50 lines of Python what it would take someone 500 in C to do, even if they had the appropriate libraries! Now ask them to make it secure, if you want a great laugh! They cannot... But when have you ever seen anything written in a language *other* than C segfault? (matlab doesn't count) Half of Lisp's good reputation, when it had one, was because it was cured of that. Python, Java, Eiffel, and C++ all have exceptions to help the programmer cope with EXCEPTIONal situations, why doesn't C sympathize? Instead we get "errno" and hundreds or thousands of EXXXXXX error code constants. Fuck that. The new generation wants a real solution; a solution that doesn't begin with C[++|#|objective]
Secondly, quality of code doesn't matter to the users anyway. If it takes 25% more C code to make something work in the last funky 2%, well it's got to be out by yesterday so forget it. C++ would be great if we could have more flexibility with the libraries; the Be people spent serious time and effort in making their system libraries expandable. (If they hadn't, we'd wind up with the MFC instead of the highly-praised BeOS model.) When Windows crashes, no one is surprised. When IIS drops a few hundred users, it's written off. When MS-SQL mangles a couple rows, it's rare. When I can't connect my modem to my ISP, the phone lines are too old. These are all excuses, but in reality, you can fuck people 2% of the time and it won't be a problem, especially on this scale. Everyone knows that Microsoft's software is shit, but can we prove it? Our bad experiences are usually buried in the last fractions of a percentage point that they can legally ignore. If a building killed 2% of the people in it, it would be a problem. Nobody dies if eBay loses one of my bids. How do we even diagnose these problems when they are that rare? It's not often that every test reality will throw at your program is available to you to know while you are designing or implementing your program. Even if they were, the people programming in inferior languages like C don't always have the luxury of doing extensive tests. There is "make" for building, CVS for versioning; where is the analog for testing? Saying quality control in programming is lax may not be an understatement, but what if we were in the towel profession? Would it matter if 2 out of 100 towels just were no good? Don't take yourself too seriously---where it is a life-or-death situation, they aren't using the same languages. They're using Ada! ;)
Third, the language you would want for this purpose has already come and gone. Eiffel had every feature it could to support the ideology of software engineering. It was a terrible flop in spite of the fact it was, and continues to be a great idea. Merely knowing these features exist in any language makes me unhappy that they don't exist in C++ or Python, or any other language people can actually use. ISE somehow remains profitable without any non-commercial interest. I have to wonder where they are used, because my only experience with it that wasn't purely motivated by my own interest was that Object Oriented Software Engineering was recommended to me by many people as a great book to learn about object-orientation from. I would be tempted to say government work if that weren't Ada's niche already. Perhaps it is education, but it certainly isn't popular around here. SmallEiffel hasn't been updated in how long? Instead Eiffel leaves the earth to be one with BeOS on the great hard drive of the sky. Or something.
To summarize: 1) it's C's fault, we all know it, and we're leaving it in the dust as of now, 2) you're comparing apples and oranges, and 3) learn Eiffel.
Remember, it's only as bad as it is today because people refuse to change. It doesn't have to be this way, and in fact, I believe it is changing for the better. Not everyone is drenched in their own anticipation of .NET or the common language mangler.
--
Daniel -
To eliminate Mach banding, go to 24/32-bit
From the DVD/Mpeg2 it is a rather dark scene, but on the highest Mpeg4 setting it is dark & "muddy" and gets rather pixellated. I've noticed that while you can't see the "grid", there are still "striations/gradation/banding" (one of those words).
What you're seeing is Mach banding (Java demo; explanation) caused by the interaction between color quantization and the eye's high-pass edge detection filter. It kills the quality of anything played back at 15/16-bit high color. DVDs don't show this because the hardware decoder uses 24-bit or higher color, which eliminates most Mach banding.
-
techniques to factor big numbersIf you want to actually try this, there are several things to realise, first you need a lot of computing power, including at least one very large multiprocessor machine with several (>4) GB of RAM. Think high-end Alphas, slightly dusty Crays, think big.
The current record factorings were done with the GNFS (General Number Field Sieve).
GNFS consists of a sieving phase that searches a fixed set of prime numbers for candidates that have a particular algebraic relationship, modulo the number to be factored. This is followed by a matrix solving phase that creates a large matrix from the candidate values, then solves it to determine the factors.
The sieving phase may be done in distributed fashion, on a large number of processors simultaneously. The matrix solving phase requires massive amounts of storage and is typically performed on a large supercomputer.
Some pointers:
- Integer factorization
- RSA-155 English press release
- Description of the task, from Singh's The Codebook Challenge
- RSA-129 factoring
- What are the best factoring methods in use today? (RSA Security FAQ)
- A Cost-Based Security Analysis of Symmetric and Asymmetric Key Lengths by Bob Silverman
In case you haven't noticed...It isn't easy, and cannot be fully solved using a distributed.net technique.
to factor a 760-bit number in one year would require 215,000 Pentium-class machines, each with 4 Gigabytes of physical RAM.
to factor a 1620-bit number in one year would require 1.6 x 10^15 Pentium-class machines, each with 120 Terrabytes of physical RAM.
Good luck.
-
Re:consumer preferenceYes, it is. If I buy Microsoft Office, I am buying software that works. If I download StarOffice, I am getting software that doesn't work. If I download some random utility from FreshMeat, I am downloading something that is almost guaranteed not to work and to be held together with hooks and bailing wire.
It is a bit disingenuous of you to choose Star Office as an example of a "Open Source" program.
Star Office is a second or third-rate also-ran that was released as Free Software after Sun bought it, sobered up, and realized they had no customers for it. As such, the bug you found in its installer as well as its poor user interface are both the result of mediocre commercial "closed-source" processes, not of a mediocre "open-source" effort. Admittedly, it doesn't seem to have improved any since Sun released it as Free Software.
Freshmeat is a real mixed bag, no question about it.
Denial about the flakiness of open source software is one of the most serious problems in the community.
Amen to that. I continue to be shocked by what the latest crop of linux weenies recommend as "pretty good". I haven't run into that kind of bozosity since I made the mistake of trying (for fun, thank God, not because I needed it to DO SOMETHING IMPORTANT) to bring an Amiga 2000 into the present back in 1998 or so... I have since recovered a little bit of my sanity, but the recommendations I received from Amiga nuts were um, often charmingly misguided.
There has been a little bit of a paradigm shift in the unix culture since the popularization of unix via Linux---there are a lot more people doing some kind of unix-for-unix's-sake kind of thing rather than interesting-things-that-are-most-easily-done-on-un ix.
One of most interesting things about the unix world is that people still develop large unix programs at universities and release them as free software. These provide other business cases for using free software, especially for one-shot or infrequent tasks:
If you want to learn about finite element analysis, do you shell out five figures for a single-seat ABAQUS license or do you download TOCHNOG or FELT? (admittedly, the mid-tier FE vendors will gladly send you demo versions of their code with tutorials, but the source code of analysis software is a learning resource in and of itself.)
If you need to do some numerical analysis from scratch maybe four times a year, often for as-yet-unfunded work, do you spend days humiliating yourself convincing your boss it's worthwhile to shell out four figures for MATLAB, or do you download GNU Octave and live with its limitations? (Most of the other Matlab clones out there, last time I looked, fell into the category of "software people have recommended to me as pretty good".)
If you write one FORTRAN program, maybe a thousand lines, a year, do you shell out for one of the superb commercial Fortran 90/95 implementations, and spend a month or so coming up to speed on all the new features of modern FORTRAN, or do you live with g77?
As an aside, TeX still certainly has a niche for production of the finest computer typesetting. For a different perspective on software quality in free software, I suggest you read Knuth's
"The Errors of TeX".
foog -
Well ...
That remind me of the time I was in a store and I saw the subtitled tape for "Kiki's Delivery Service" and someone asked me if this ``Disney'' movie was any good
... there are days where I wish not everybody always think that since it is animated and released in the US, it is a Disney cartoon.
You know I sometime wonder why some of us fight to try to explain to people that contrary to common belief Japanese Animation is not only Violence and Sex ... and that if they could only lay your eyes upon such fantastic movies made by Studio Ghibli as Kiki or Laputa, Nausicaa or "Omoide PoroPoro" as well as "Mimi wo Sumaseba", people's mind would change for sure.
I am only very happy that all those fantastic movies are finaly coming to DVD (See http://www.nausicaa.net/miyazaki/video/release.htm l for more details).
As for Nadia, this show is a favorite of mine, and even if I am not sure I want to get into the Disney/Anime rant party, let me just tell you that if you want to see a great show, see Nadia ...
Btw, for a few anime links, try my bookmark section on my web page ;) -
Well ...
That remind me of the time I was in a store and I saw the subtitled tape for "Kiki's Delivery Service" and someone asked me if this ``Disney'' movie was any good
... there are days where I wish not everybody always think that since it is animated and released in the US, it is a Disney cartoon.
You know I sometime wonder why some of us fight to try to explain to people that contrary to common belief Japanese Animation is not only Violence and Sex ... and that if they could only lay your eyes upon such fantastic movies made by Studio Ghibli as Kiki or Laputa, Nausicaa or "Omoide PoroPoro" as well as "Mimi wo Sumaseba", people's mind would change for sure.
I am only very happy that all those fantastic movies are finaly coming to DVD (See http://www.nausicaa.net/miyazaki/video/release.htm l for more details).
As for Nadia, this show is a favorite of mine, and even if I am not sure I want to get into the Disney/Anime rant party, let me just tell you that if you want to see a great show, see Nadia ...
Btw, for a few anime links, try my bookmark section on my web page ;) -
Well ...
That remind me of the time I was in a store and I saw the subtitled tape for "Kiki's Delivery Service" and someone asked me if this ``Disney'' movie was any good
... there are days where I wish not everybody always think that since it is animated and released in the US, it is a Disney cartoon.
You know I sometime wonder why some of us fight to try to explain to people that contrary to common belief Japanese Animation is not only Violence and Sex ... and that if they could only lay your eyes upon such fantastic movies made by Studio Ghibli as Kiki or Laputa, Nausicaa or "Omoide PoroPoro" as well as "Mimi wo Sumaseba", people's mind would change for sure.
I am only very happy that all those fantastic movies are finaly coming to DVD (See http://www.nausicaa.net/miyazaki/video/release.htm l for more details).
As for Nadia, this show is a favorite of mine, and even if I am not sure I want to get into the Disney/Anime rant party, let me just tell you that if you want to see a great show, see Nadia ...
Btw, for a few anime links, try my bookmark section on my web page ;) -
Mach banding example here
> Thank you
:)
You're welcome :)
> All these things I had been pondering before, but it's very hard to do a web search on "color depth" or "frame rates" and get useful results
Aye, you won't find the answers unless you knew what you were looking for, but if you knew what you were looking for, you wouldn't need to look. Or something like that ;-)
You can see an example of "Mach Banding" here
http://graphics.lcs.mit.edu/classes/6.837/F00/Lect ure04/Slide22.html
This page shows how our eye percieves Mach Banding
http://www.loria.fr/~holzschu/cours/HTML/ICG/Resou rces/Shading/21.html
And this applet lets you try it out:
http://www.cs.umb.edu/~ram/ArtAndVision/MachBandin gApplet.htm
Cheers
-
Why buy a book when a very good online manual is..