Slashdot Mirror


User: Y

Y's activity in the archive.

Stories
0
Comments
39
First seen
Last seen
Profile
(view on slashdot.org)

Comments · 39

  1. filtering in my hometown on At the Library: a Briefly Vocal Minority · · Score: 1

    Your argument for filtering is a lot more rational than most of the people who have supported filtering where I live. We now have public filters installed in our libraries, based on letters to the editor claiming, "The internet is a broken product. It has not served its function, and therefore, we should be able to recall it like any broken product. The fact that young children can see objectionable material means that the internet is not safe."

    My answer to that: "The interstate highway system allows more deaths from vehicular accidents than any other mode of transportation. We should recall the interstate highways because they are obviously broken if they allow such frequent death."

    The point this letter writer missed is that the internet (and the interstate) are not broken. They have served incredibly well, and rank among the most successful government projects to date. Both have the functionality for which they are intended. For the internet, this means transmitting scientific and military information between computers. For the interstates, this means a quick means of mobilizing troops across the country. Both have gone on to have large success in the public sector. Neither the internet nor the interstates are broken. The fault lies in individual web surfers/car drivers. The interstate itself does not send autos into head-on collisions - drivers fall asleep or can be drunk. The internet itself does send porn to your screen - you click on the link as you surf the web.

    The other disturbing comment I saw on this hastened debate was from a minister. According to him, parents could not reasonably be expected to imbue their children with morals - society has to do that for them. And of course, these morals belong to the faith which this minister preaches. They are obviously right, and should be adhered to by everyone. Everybody else's morals are subordinate to this man's morals. He went on to say that he was disturbed that of all the nation's colleges, only .5 % had filters in the public computer labs on campus. I'm disturbed that .5% of colleges HAVE filtering. I would think that by the time people go to college, they can think for themselves and decide between right and wrong.

    Where the responsibility lies is with the parent. If you don't want your child viewing pornography, you need to instill in them a sense that the objectification of women (and men) as sexual toys is wrong. The most important quality you can teach your child is the respect for their fellow human beings. This is not to say children should be taught that nudity is shameful, because if you teach your children that, then they will be actively looking for pornography because of your stance on nudity. Repressing your children is not the answer to teaching respect.

    I think if parents (and schools) would teach children to respect their peers, we would see a lot of these problems diminish. Think about crimes such as assault, rape, and murder. These all occur because of an inherent lack of respect for the victim. Murder happens when a criminal puts so little value in a person's life that they destroy it, and rape and assault happen for similar reasons. But in today's culture and media, which builds and entire economy on sexual objectification, I suppose that's too much to ask for.

    > Mike

  2. Re: rap and hip-hop on Courtney Love Sues for Her Share · · Score: 1

    Also, check out the Roots and DJ Shadow. The Roots is a group from Philadelphia with some big names (e.g., Rahzel, Godfather of Noise) who have incredible diversity in their music. I saw Rahzel in Houston a year ago, and it was amazing - the range of his vocal percussion is incredible. I also saw DJ Shadow (who is from the Bay Area) last year. He does turntable/mixing/scratching stuff - a great show, and Shadow stayed afterwards to sign stuff and talk with the fans indefinitely, which is something few artists do. Also from the Bay Area is Latyrx who do some good stuff.

    > Mike

  3. Re:My 2 cents (ban napster from univ) on Metallica Vs. Harvard · · Score: 1

    My university is also privately funded. But letting students use Napster made working on the network incredibly slow. Many of us cs majors were trying to do year-end projects, and the instability in the network caused by napster traffic was inexcusable. At one point in time, we had up 60% of all residential traffic being taken up by Napster.

    I pay for my bandwidth. I should be able to do my work without worrying whether someone's penchant for Britney Spears is going to make working in the computer labs impossible.

    > Mike

  4. Re:your responsibility on The Code War-- Software By Other Means · · Score: 1

    For all I care, Bill Gates can be a racist child-molesting serial killer.

    Good for you. I personally don't agree with the hypothetical situation supporting a racist child-molesting serial killer because he makes a good product. I think ethics should play some role in decision making, even technical decision making. I certainly don't want to live in a world where psychotic sociopaths hold all the wealth and power. That's why I'd draw the line at the situation you presented.

    > Mike

  5. Re:Generic Java on C# Under The Microscope · · Score: 1

    Also, take a look at this paper on NextGen. NextGen is a superset of GJ and hopefully a release will be coming soon.

    A couple of examples of what NextGen adds to GJ:

    - ability to write expression "new T(...)" where T is a type variable.

    - ability to write expression "instanceof T" where T is a type variable

    GJ and NextGen's implementations of genericity are much better than C++ because they allow for sound typing and code reuse. I use GJ at work, and I am currently working on a tool to generate HTML documentation for GJ source code, a javadoc-like tool which we are calling, uh, gjdoc. It will fix some issues I had with pizzadoc's generated HTML. The first release (0.5, forthcoming) will not support cross-referencing other classes (e.g., via hyperlinks in method argument lists or return types), but it will document GJ source and support the important tags like @param, @return, and, of course, @author. I'm planning on developing linking in the second release. The issue with links is when documenters provided unqualified names: the search for a qualified name from a simple name is outlined in detail in the Java language spec, and it requires a good amount of code.

    Anyway, try GJ out. You might like it.

    > Mike

  6. Re:And the obvious difference is... on Slashback: Rumination, Apologies, Kisses · · Score: 1

    What about weapons? I think America needs tougher gun control laws. There is no reason anyone should need an automatic assault rifle to take down a deer on a hunting trip. If you need that much firepower to kill an animal, you're a piss poor hunter. I would draw the line at regular hunting rifles and maybe a small set of handguns for those homeowners who insist on protecting themselves. Anything else goes beyond what is necessary for self-defense or hunting.

    What good are cell phone scanners except as a tool to spy on your neighbors? And I have never seen anyone use a bong for anything but marijuana.

    Napster, likewise, exists explicitly for the purpose of trading mp3s. They have stated on their website that you won't have to sift through pages of unknown artists, so any argument about Napster providing exposure to underground artists is bullshit. Despite the RIAA's inherently evil nature, Napster doesn't have a leg to stand on.

    What is the difference between downloading napster and buying a bong or an assault rifle with regards to crime potential? Not much. Their primary uses all amount to something criminal because none of them have practical legal use. Unless, of course, you can convince me otherwise.

    > Mike

  7. Re: GJ and generic programming, C# redux on Anders Hejlsberg Interviewed On C# · · Score: 1

    errr. in your example you say that the output for Java and C++ would be the same. This is simply false.

    My mistake.

    Just because you can't think of a use for a feature, does that mean it's a bad feature?

    No, but I think the way C++ and C# handle the situation I presented is a bad idea. I prefer dynamic dispatch because it makes for clean, easy-to-read code. But that may just be my opinion.

    But until that time I guess we're just stuck with these poor excuses for assembly languages.

    I like C. C is a perfectly good language, and I like to work at a lower level now and then. If functional specs get you off, more power to ya. But from the code I see just floating around the web or coming from software firms that charge their clients shitloads of money, I think a lot of people could stand a few lessons in good program design. There's more to programming than the write-compile-debug loop.

    > Mike

  8. Parametric Polymorphism in Java on Anders Hejlsberg Interviewed On C# · · Score: 1

    If you're interested in parametric polymorphism, check out GJ or this paper on NextGen. GJ is currently available for download, and NextGen is still in development.

    > Mike

  9. VB is all disadvantages on Anders Hejlsberg Interviewed On C# · · Score: 1

    VB is a terrible language. No language I have worked with has come close to the frustration levels I reach when I work with VB.

    Many VB developers who can stand ;'s will switch.

    Choosing a language because of trifling syntactical details ("I don't like ;'s") is inane. If we want to talk about syntax, why the hell does VB require a "_" every time you want to extend a command over more than one line.

    The huge disadvantage with vb and Java, is that your code gets locked in to the version of the runtime you're using, upgrades seem mandatory, and its a trap many c++ people may fall into.

    IIRC, most old Java code will pass through current JVMs. You'll get a deprecated warning when you compile, but it will still run, if that's what you're concerned about. Languages evolve and designers may realize that they need to change their original design. Improving a language - gasp!

    Maybe Sun keeping control of Java is not such a bad thing if the programming community wants to endow it with the features from C++ and the like.

    > Mike

  10. Re: GJ and generic programming, C# redux on Anders Hejlsberg Interviewed On C# · · Score: 1

    I agree that concentrating on components is a worthy cause. No language I know does that well, not even Java. However, I think Microsoft is going about it the wrong way, and I will qualify my disagreement with a few examples. Unlike Mr. Hejlsberg, I tend to side with ivory tower philosophies, and my opinions about programming languages reflect that. With memory and processors becoming ever faster, and with the advances made in virtual machine technology, slowness will become less of an issue. Until that time, I won't pretend that Java can handle kernel-level
    functions efficiently. That's what C is for.

    The override keyword

    C# deviates from the standard Java/C++ inheritance mechanism for methods by providing an "override" keyword. By default, C# shadows method names whose names appear in a particular class' superclasses. E.g.,

    class A {
    public void printme() { Console.Writeline( "I am an A."); }
    }

    class B : A {
    public void printme() { Console.Writeline( "I am a B."); }
    }

    class C {
    public void printthem( A thing ) { thing.printme(); }
    }

    void main()
    {
    A a = new A();
    B b = new B();
    C c = new C();

    c.printthem( a );
    c.printthem( b );
    }

    Do you know what the output will be?

    I am an A.
    I am an A.

    The method printme() in B shadows, but does not override printme() in A. You need to use the override keyword to do that, which is standard behavior in both Java and C++. In class B, you have two versions of printme() floating around, which can lead to confusion and incorrect code, especially with novice programmers. IIRC, C# was supposed to help reduce casual programming errors (forgetting deletes for news, etc.), but I don't see this particular feature as very helpful.

    new for methods?!

    Of course, the compiler will generate a warning with the above code stating that B.printme should have the prefix "new". It will still compile, but it wants your blessing to shadow the method. I can't think of a situation where I would want to use C#'s method inheritance scheme. The thing I like about Java's treatment of method overriding is its consistency. I know what my program is going to do. Imagine a programmer wants to extend a component Doohickey for which he has the API but not the source, and he shadows a method he didn't know existed in his implementation, called Thingamajig. Imagine his surprise when he passes a Thingamajig to a method processDooHickey( DooHickey ), and it behaves very strangely and not at all like he coded.

    And God said, 'Let there be types.'

    But my gripes with the method inheritance mechanism is nothing next to my disgust at the inclusion of "unsafe code." I believe very strongly that in order for an object-oriented language to be truly object-oriented, it has
    to have a notion of safe types. C++ does not have a notion of safe types, it has the pretense of types. You can still jack around with the individual bits comprising an object in memory. C++ is not so much an object-oriented language as it is press-on objects tacked onto a portable assembler (C). C has no such pretense: types are merely directives to the compiler on how much memory to allocate for data. C# seems to be taking the C++ route with its "unsafe code."

    With type safety, you can usually generate a type-soundness theorem, a guarantee that your program will produce results within a certain type
    bound. This eliminates many of the crashes due to invalid data floating around in an ambiguous form. I am reminded of a question on an exam in my
    programming languages class:

    A certain software company in Redmond, WA, discovers this great language Haskell. It has many exciting features, like a type-soundness theorem, safety, blah, blah, blah. A bright young intern at said company sends a memo to his superiors agreeing that Haskell could be the wave of the future - it only needs two slight modifications, the addition of "peek" and "poke", direct memory access function calls.

    1) What would the proposed changes do to the parser?

    2) What would it do to the type-soundness theorem?

    3) Is this an afternoon's project?


    What do you think?

    > Mike

  11. Re:Microsoft goggles on Anders Hejlsberg Interviewed On C# · · Score: 1

    It isn't clear to most people that C++ and Java are simply poor languages for frameworks, and parametric polymorphism, and binary portability.

    While I sort of side with you on C++, I disagree strongly with Tim Sweeney's remark about parametric polymorphism and Java's inability to deal with it. I assume Mr. Sweeney has not taken the time to look at GJ, a.k.a., Generic Java which provides a good start towards parametric polymorphism. The type parameterization of classes/interfaces/methods provided by GJ has been a godsend for me - fewer messy manual casts to deal with.

    Also, take a look at this paper on NextGen, which is an extension of GJ that will allow expressions like "new T()" and "instanceof T" where T is a type variable.

    It is my personal belief that C# is one of the most poorly designed languages to come around in recent years, but I will expound on this in a different post because I have to catch the bus home in a few minutes.

    > Mike

  12. Re:This is not meant too gratuitously ... on Overcomming Programmer's Block? · · Score: 1

    I have to agree with Megasphaera - I often find coding in C++ tiresome. I've worked with Java for a few years now, and I find it fits my needs rather well. Recently, I've taken to coding in GJ, which is an extension of Java to allow parametric types (something like templates in C++). However, unlike C++ templates which copy the entire class guts into each ground instantiation (e.g., Vector<String> is a ground instantiation of Vector<T>, where T is a type variable) of a parameterized type, GJ creates a base class and performs type-checking at compile time to ensure proper usage of a ground instantiation. It eliminates a lot of the nasty manual casts one might have to do in a Java program and all ground instantiations are related to each other semantically.

    Although java may be ..uhm.. quicker? simpler?

    I'm going to go with "designed better". Yes, I'm one of those ivory tower wackos who believes in type safety over speed/efficiency. I will concede that debugging under Java sucks, make that blows. Java, on the other hand, makes it easier to get it right the first time so you don't have to waste as much time debugging your "new" and "delete" statements. Also, contrary to popular belief, garbage collection is a Good Thing (TM). A copy collector is by its nature more efficient than hand allocation because it only touches memory currently in use. Hand deallocation has to touch all allocated memory, not just the memory in use (unless you are a fan of memory leaks).

    For low level programming where time is important, I wouldn't recommend Java - I'd say use C. For high level programming, I would recommend Java.

    > Mike

  13. Re:why not functional lang? on What About Functional Languages? · · Score: 1

    For example, why would you use an OODL?

    A few points to consider:

    1. Using an object-oriented language allows you to create inductive data definitions that you can translate directly into code. With some of the more popular languages like C and perl, you have to hack your own representation for anything moderately complex, and there is much more room for error.

    2. Well-designed object-oriented languages carry with them a guarantee of type safety. While this prevents the low-level access to memory that bitbangers are so fond of, it protects the program from crashing by protecting the contents and type of any object in memory from bizarre side-effects. One of the other nice benefits of type safety is given a type soundness theorem for the language, you can prove that your program will always produce an answer of type X. Because of C++'s memory access hooks leftover from C and the "unsafe" mode provided by the specification of C#, neither of these languages can offer any kind of real type soundness. Neither can C, but C has no such pretense: Kernighan and Ritchie explicitly state that "types" in C are just directives for the compiler that indicate how much memory should be allocated for a variable declaration.

    3. Dynamic dispatch is a wonderful, wonderful thing. You can avoid writing messy if/switch statements in many cases by dynamically dispatching on the type of an object.
    For example, if you had a abstract syntax tree generated by a parser, instead of using a switch statement of series of if/else if/else like this:

    switch( node.type )
    {
    case Expression : ...; break;
    case Statement : ... ; break;
    case Declaration : ... ; break;
    ...
    }

    which can get really ugly when you try to add more types of nodes, use object inheritance and create an abstract node or interface called SyntaxNode that all derived nodes extend or implement (excuse my bias towards Java as my language of choice; I'm sure similar cases could be built with Smalltalk, etc.). Each concrete syntax tree node (ExpressionNode, DeclarationNode, StatementNode) can be treated as a SyntaxNode. This allows code like the following:

    [ inside a class that traverses the syntax tree ]

    String getInformation( SyntaxNode n )
    {
    return n.getStringInformation();
    }

    Now, the class or interface SyntaxNode has a method getStringInformation() that returns a String. Each class that extends or implements SyntaxNode is given this method as well. It's then up to each node to provided the necessary code, but when the traverser goes over each node, it will dispatch to the getStringInformation() provided by the concrete node class. That way, if you want to add a new node, say, WhileNode, it takes minimal effort to integrate this into the existing code base. With switch statements, you have to worry whether you've updated all of the proper control-point locations.

    Problems with object oriented languages? The main problem is the overhead associated with creating objects and ensuring type safety. Because of this, object oriented languages are not quite at the point they need to be to code low-level projects like operating systems and drivers. However, for large-scale applications, object-oriented design often provides benefits far outweighing those provided by imperative style programming.

    : Mike

  14. Re:How many lambda calculi are there? on Big Ball Of Mud Development Model · · Score: 1

    When I say lambda calculi, I mean variations on the lambda calculus, e.g., the lambda calculus + assignment, the lambda calculus + mutually recursive closures. While perhaps it is too abstract for beginners, it is something that should be taught at some level.

    I did use the word trivial. A lot of good programming style boils down to having a clear definition of the data on which you are operating. Aspiring programmers should be taught how to construct inductively defined data, how to model programs to handle inductively defined data, and how to provide the implementation for the program model.

    Let's say you have a definition of data:

    SEXP := NUMBER | SLIST
    SLIST:= empty | (cons SEXP SLIST)

    This provides the definition for a data set that encompasses numbers, lists of numbers, lists of lists of numbers, etc.

    To write a generic program template, you look at the data definition and provide a clause for all possible forms of the data. A program to process SEXP's would have a helper program to process numbers, and a helper program to process SLIST's, which would have cases for empty and cons. If you wanted to be strict, you could define NUMBER as

    NUMBER := zero | (suc NUM)
    i.e., 1 = (suc zero), 2 = (suc (suc zero))

    Once you have the program templates defined, you can "port" it to whatever language best suits your needs. If you are using a functional or imperative programming language, your cases will be inside conditional blocks. If you are using an object-oriented language, your cases should be handled by dynamic dispatch.

    The other issue in good programming comes when not enough people follow a model of incremental development. Software should be built on stable kernels of code that are tested at each step of the way. Deliberate thought should be put into designing code interfaces so that when the time comes to make modifications to a codebase, the modifications fit snugly in parameters already defined by the codebase, rather than hacks thrown on like press-on nails. You don't have to worry about legacy as much if your original code was written to stand the test of time.

    Have you looked at the Slash code, for example? Most of the code is in one monolithic function affectionately nicknamed the "Beast." There is hardly any sense of modularity or interface design between modules because there are hardly any modules at all. It makes it very difficult to improve without a massive rewrite as any improvements will have to be add-on hacks. If the current state of programming education does not improve and start teaching fundamentals instead of dropping students in a C++ (or Pascal, or whatever) environment and saying, "Learn!", then code will continue to turn into unmaintainable spaghetti.

  15. The Achilles' Heel of Programming on Big Ball Of Mud Development Model · · Score: 1

    Actually, one of the biggest issues facing software development today is the way programmers are taught. In high school programming classes, the focus is on how to program in a particular language with immense detail given to syntax (Pascal, C, etc.). There is no idea of the underlying semantics of the language being passed on to the student.
    In addition to this, many programmers are taught to be bitwise-byte-foolish. By using architecture-dependent and/or close-to-machine-level optimizations, they destroy any chance of lending extensibility to their programs.
    Computer science education should focus on teaching good design skills so we turn out programmers and not code monkeys. One way to start is by teaching about lambda calculi, and progressively working up to functional programming, and finally to object-oriented programming. Once design principles (e.g., design patterns) are engrained in a programmer's mind, it's a trivial task to learn a new language to apply these principles to. We need to teach people how to recognize semantic differences between languages rather than syntactic so people don't choose a language for a project on how many braces they have to write. Unfortunately, too often are we following the "industry standard" rather than focusing on what's really important.

    -Y

  16. Re:Bullshit? on Libsafe: Protecting Critical Elements of Stacks · · Score: 1

    You and me both" would become "Me too", or "me also", not "I also" or "I too", because they are at the end of the sentence, not the beginning.

    "We both" is not correct, since it changes the sentence structure. (again, moving the subject from the beginning to the end of the sentence.)

    Moving a subject from the beginning to the end of a sentence has never been the reason for subject demotion to an objective case, except in colloquial usage. In the rare (archaic) case that the subject is the last word (assuming a declarative sentence), it is still in the subjective case. Take for example the sentence, "Accursed is he who kills for pleasure." Now, eliminate the relative clause, and you get "Accursed is he," not "Accursed is him." You can't stick a subject at the end of a sentence with an action verb. "A description would like to see you and me both" doesn't work. A large chunk of English grammar and syntax is based around word order since it has lost most of its cases.

    CmdrTaco actually started an entirely new sentence where the subject is "You and me both" and the predicate is implied. The correct full sentence is "You and I both would like to see ...." There is no movement of the subject to the end of the sentence at all. However, "you and me both" has been brought into the common parlance as a standalone phrase and is perfectly acceptable by itself.

    -Y

  17. Dr. Richard Smalley... on It Came From Beyond ... In Buckyballs! · · Score: 1

    is the name. The year I matriculated was the year after Smalley won the Nobel prize, and our president's speech at matriculation was rife with references to this. That and how he didn't find male buttocks funny, but that's another story.

  18. Re:Who cares? GC doesn't belong in C++. on Ask Bjarne Stroustrup, Inventor of C++ · · Score: 3

    making garbage collection standeard in C++ would be that it would reduce the language a bit by forinstance forbidding typecasts between pointers and integers

    You lost me there. Why would garbage collection prohibit that?

    At the basic machine level, everything in the computer's memory is just bits. As such, a garbage collector, without having some sort of memory markup, cannot tell if a memory address holds a value or a pointer to another address. One of the better forms of garbage collection is copy collection, which just reaches the memory currently being used - all other memory is ignored. It does this by following pointers. I believe Java implements this form of GC. If the garbage collector can't tell if a memory address holds a pointer or a value (as is the case with C++, which will allow all kinds of crazy casts), it can't know if the data it's looking at is needed or not.

    As it is, garbage collection in C++ can only be conservative, which collects iff there is no doubt that freeing that particular memory address is a safe operation. Naturally, this is much less efficient than only accessing memory in use.

    There is a saying, "Objects die young." Most objects that are instantiated are only there for the duration of a function call. Assuming this to be generally true, copy collection is very efficient, because it won't have to access most of the instantiated objects. Hand allocation/deallocation requires that you touch every piece of allocated memory. Saying that hand allocation/deallocation runs more efficiently than GC only holds true for conservative collectors. More formally put, GC runs in O(memory in use) and only runs when memory runs out. This is multiplication by a constant, so it is still O(memory in use). Hand (de)allocation runs in O(allocated memory). If memory in use = allocated memory, than you can't free anything anyway.

    The power of pointers is its weakness. You can't guarantee object integrity when you can randomly write to the memory holding the object.

    And if you can't guarantee object integrity, you can't guarantee good garbage collection. GC really doesn't belong in C++.

    - Y

  19. Re:Poor forethought...well, maybe not on The Ultimate Geek Food · · Score: 2

    A lot of my friends and I eat Indian food fairly frequently, and I know one person in particular who carries around a garlic spray (that's right, spray) so he can spray his pizza at meetings where free pizza is to be had. I'm pretty sure he sprays it on other food, too.

    Point being that different people have different tastes, and just judging just by the eating habits around my school, Indian would sell fairly well, assuming people want to buy Dilberitos. I'd be willing to wager that there will be new flavors coming out if this initial venture is successful, but it's probably a good idea to invest in a small but varied subset of tastes, test market reaction, and then unroll big-ass product lines. Of course, I'm not an econ major, so I couldn't tell you with certainty.

    - Y

  20. This is good, but... on Anti-Spam law Passed in Colorado · · Score: 1

    ... what about the spam that isn't commercial? Over the past school year, many of my classmates and I have received e-mail from a woman in Taiwan who, we think, is pushing some sort of religious material, but we can't be sure because the entire e-mail is written in Taiwanese. These e-mails are very large (edging close to 1 MB, IIRC) and I'm sure they do nothing to ease the load on our mail servers.
    What kind of solution can we provide to check this problem at the source? Most people will say, "just delete it from your inbox," but this doesn't help the servers deal with the flood of mail.

    Thoughts?

    - Y

  21. Art is worthless on LonelyNet · · Score: 1

    Um, no.

    My sister is a studio art major, and as much as I kid her about being in a "hippie" major, she's found something that she's really interested in and really believes in. She also does dance on the side, but there are no pornographic overtones in any of her performances.
    Art, at its core, is about self-expression: writing, painting, drawing, sculpting, dancing, cinematography, etc., etc. Sure, there are flim-flam "artists" and intelligentsia who ride the crests of trends in order to make money/get laid/become famous. But for you and several other people in this thread to make a blanket generalization of all artists only shows the shallowness of your ignorance and your unwillingness to cast aside a stereotype for a moment and actually look at some of the art that is being produced.
    With the vast number of people making art, it shouldn't be too difficult a task to find some form of art that you enjoy. If it is difficult to find art that satisfies your aesthetic taste, then the discovery of such art is all that more rewarding. In some sense, truly elegant code can be considered art. Take a look at the etymology of the word "art." Its Latin root:

    ars -tis f. (1) [skill , method, technique]; 'ex arte', [according to the rules of art]. (2) [an occupation, profession]. (3) concrete, in plur., [works of art]. (4) [conduct, character, method of acting]; 'bonae artes', [good qualities].

    Art is much more than what the NEA gives funding for. True artists bring a certain skill or technique to their profession, whether that profession is drawing or chemistry. They exhibit bonae artes when they do their work and when they share their work with other people. Art comes from those people who invest themselves in their creations and their careers.
    If people decide that they want to devote their lives to those things we nominally consider art, then they shouldn't face persecution. If you have ever faced persecution for your choice of career fields and wished your tormentors would show some human courtesy, perhaps you should extend the same courtesy to other people. There will always be sanctimonious fakes posing behind the mask of artistic taste. There are fakes in computer science who are in it for the big payoff, and I would venture to say all fields of work share this odious burden.

    </diatribe>

    - Y

  22. Insightful? on Full Moon · · Score: 1

    I'm not really sure how this counts as insightful. I see no "insight" offered by this post.

    - Y

  23. Clumsiness of JAVA on Inside Java 2 Platform Security, Architecture, API Design and Implementation · · Score: 1

    IMHO JAVA is rather a poor language, with many niggling and unnecessarily clumsy constructs. It is too similar to C/C++.

    Syntactically you may have a point, however, semantically, Java and C++ radically differ in certain key areas.
    For starters, Java is built object-oriented from the ground up. C++ is a set of object-oriented principles grafted onto C. This causes problems with granting improper access to object innards via C low-level function calls onto C++ objects.
    Secondly, Java classes can extend superclasses and implement interfaces. Java can implement many interfaces, but can only extend one superclass. In C++, multiple inheritance is allowed. Let's say you have a C++ class M which inherits methods from both superclasses K and L, and both K and L have a method f. Which f does M implement? Java avoids this problem by only allowing class M to inherit the methods of its superclass L. If M implements interfaces J and K, M has to provide the implementation of any method f that might occur in both J and K.
    Thirdly, Java doesn't have pointers. Pointers are evil. The fact that you can do arithmetic with them leads to inconsistent programming and innumerable ugly hacks. If you are designing a program that requires OOP to maintain consistency and modularity, having a low-level feature like pointers around doesn't help you ensure that your objects are fully protected. Instead, Java passes references to objects between methods, which allows the programmer to modify object contents, but not the reference itself.

    Just my 2 cents (adjust for inflation).
    - Y

  24. Re:runtime compilers on Inside Java 2 Platform Security, Architecture, API Design and Implementation · · Score: 1

    Isn't there a simple way to just run java executables? I shure would like to actually be able to learn and use java without needing to get some fancy smansy memory intensive, disk space clogging mess. What about the gnu java compiler: gcj? Can I just run output from said java app with say standard libc stuff?

    The problem is that Java compilers actually create an interpreted bytecode format that is (allegedly) cross-platform compatible. For the most part it is, GUIs notwithstanding. Java also does garbage collection (copy collection, I believe), which would have to be compiled into the final executable. The other alternative would be conservative collection, since copy collection and the ideas of stack and heap cause issues (is it a pointer? or a value? It's all fscking bits!)

    But the main problem is cross-platform compatibility. Class files can be copied from, say, a Sparc station to an Intel box and reused. However, if we had true compilers for Java, we'd have to recompile the source for each platform, or have 10 million different class files, one for each architecture.

    So how you want to deal with it depends on what features of Java are most important to you.

    - Y

  25. Re:Some answers from a fellow nerd on Women CS Majors Declining · · Score: 1

    Did you, yourself, have to go through many psychological and social trials and tribulations before achieving your competence in computers? Did
    people point and laugh at you, call you names? Did people of the opposite sex consiously avoid you, showed no interest in you, because they knew
    that hanging out with you would mean ostracising themselves from their own social circle?


    Actually, yes. When I was in high school, I was constantly ignored by the opposite sex and ridiculed for my pursuits of CS. The things that I found interesting (Intel Assembly, C, etc.) drew blank stares from a lot of people if I ever tried to talk about them. People got up and moved away from me at lunch because they didn't want to hear me go off on some CS tangent - and still people say "Don't talk about school. You're not in class right now." I am a male.

    This is the only portion of your post that I disagree with. My experiences make me acutely aware of the need to provide support. Women (and men) need support and the freedom to choose their own futures. It's all about generating passion for learning. Without that passion, there is no desire to work towards something like a CS degree. I am a dyed-in-the-wool Romantic (e.g., Goethe, E.T.A. Hoffman) and I believe people should aspire to expand their horizons and enjoy themselves, searching for that "höheres Dasein" (higher state of being for those who don't speak German). One should find something in which one can totally immerse oneself. I am studying CS because I love solving CS problems. I also study linguistics because I love learning about languages and reading their literature, esp. folklore. Had I not received support from my parents, teachers, and good friends, I would not be where I am today. I believe that finding a career that is mentally rewarding is far better than settling for one that is financially rewarding.

    Maybe my philosophy can be expressed as a paraphrasing of a proverb: Catch someone a fish, and you will feed them for a day. Teach someone to fish, and you will feed them for a lifetime. Teach someone to love to fish, and they will never starve for fulfillment.

    - Y