• Zombywuf (unregistered)

    Wow, never realised the cult of the leader was so prevalent in here. If the leader says you are wrong it's because you are wrong!

    I've worked under bosses who respected you putting in the work to change things that needed changing, and I've worked under bosses who would actively revert my bugfixes because they were in his code which I should never be touching. Leaving me having to explain to the customer (on more than one occasion) why the bug I said was fixed and demonstrated being fixed is now broken again.

    Before you ask, if the changes to "his code" caused any bugs, he certainly didn't tell me about them. He refused to say any more than "you shouldn't be touching that code".

  • (cs) in reply to Zombywuf

    "Wow, never realised the cult of the leader was so prevalent in here. If the leader says you are wrong it's because you are wrong!"

    What cult? This is how every social order in history has functioned.

    If you truly believe you're superior in some way to the alpha of the pack, you challenge him. Sometimes this takes the form of preparing a convincing argument that your idea is worthwhile, other times it means trying to tear his throat out with razor-sharp incisors.

    If you succeed, your prestige increases. If you fail, you either accept your subservient role or go find another pack to be a part of.

  • (cs) in reply to biziclop
    biziclop:
    It's funny how all the stories nowadays seem to be about the pig-ignorant in-house developers confronting the intrepid and ingenious consultant.

    Whereas usually it's the other way around, most consultants don't know anything about anything, except acronyms and generic systems, so all they will suggest is you should stop developing a specific solution and try using Spring MVC and Axis.

    Even if the project isn't written in Java.

    Heh. One "genius" developer decided once to "rewrite" his assigned project. As he was the only dev assigned to it, he threw away the EJB 2.1 code and switched to Spring, and finished about 80% of the entire app in 2 months.

    However, this dude forgot that our app server doesn't have Spring... or Hibernate ... or anything like that, as it still runs J2EE 1.4. The implications of setting up the QA environment were enormous. The dev was laid off (the first credit crunch victim) and nobody was able to even compile his stuff.

    I think this is the only time I've seen a manager discard an entire app and ask us to rebuild it from scratch.

  • (cs) in reply to sumoman
    sumoman:
    Of course you would team up with Rob; so you both could carry on whining about the world being so unfair. Instead of requesting things politely, you better demand responsibility for your domain. That would keep you accountable for events, but you would also not be treated that bad any longer.

    When did I say the world was unfair? In fact, as I mentioned earlier, the whole fiasco netted me a promotion (in another department) and a raise.

    I also never mentioned anything about requesting things politely - in fact I said I did the clean-up-the-code-without-asking thing, and that's precisely what pissed off my manager. In other words, I took responsibility for the quality of the code I was working on, which is what you implied I needed to do, and that's what caused the problem.

    Shut up now, mmk?

    Zombywuf:
    Before you ask, if the changes to "his code" caused any bugs, he certainly didn't tell me about them. He refused to say any more than "you shouldn't be touching that code".

    Do you work where I work? That sounds exactly like the manager I've been talking about. The code I cleaned up last was code he originally wrote, and those words are almost exactly what he said to me (never mind that I was supposed to be working with that code).

    Rootbeer:
    Sometimes this takes the form of preparing a convincing argument that your idea is worthwhile, other times it means trying to tear his throat out with razor-sharp incisors.

    Unfortunately since the latter option is a crime, and the former option rarely works on the type of leader we've been talking about, we're left being unable to actually improve the codebase we're assigned to.

  • Mike (unregistered)

    When AI goes bad, you don't get the terminator, you get this crap

  • (cs) in reply to dkf
    dkf:
    pink_fairy:
    Why the simple string type should be elevated above its lowly peers is beyond me.
    Because a very large fraction of programs work with strings, whereas far fewer programs need most of the other types. It's the same argument which says that arrays are a good thing to handle specially. Any time a program wants to deal with input from or output to a human, or even just to open a file, it needs a string somewhere. Any time a program wants to have O(1) read access to a collection of data, it needs an array. These are massively common requirements; languages prioritizing such things makes a great deal of sense. I've also seen (at times) arguments that numeric types are nothing special; performance measurements say that such claims are also dotty.

    Clarification: I don't expect many individual programs to use a very large number of types; that would be silly. I was expressing the fact that in the space of all programs, the total frequency of usage of most types is far less than for strings.

    To string a long or not to string along? I think the key word here is "simple."

    Is an XML doc a simple string? Under all but the most primitive circumstances, no.

    Is a SQL query a simple string? That way of thinking leads to injection attack.

    Is a date a simple string? Is an email address a simple string? Etc etc.

    I realise you're not proposing that these and other examples should be universally regarded as "simple strings." I just feel that your argument depends very much on (other people's) assumption that they can or should be. At some stage a language designer has to choose a bridge between primitive or built-in types and a better abstraction of real-world types. I'm not convinced that "string" is it.

    And, note, "built-in" does not necessarily mean "first-class." Except in BASIC (see commenter above), where everything is primitive, nothing can be abstracted, and therefore everything is "built-in." Which would be kind of like buying a first-class ticket for a ride in a dung cart, I suppose.

    Andy Goth:
    SomeCoder:
    pink_fairy:
    Andy Goth:
    You know, this reminds me of C++.
    Apparently the noble art of flame wars is dying.
    I was going to comment similar to what you said but I figured it was just flame bait cause... WTF?
    Do you two seriously think I was saying that Victor's programming language reminds me of C++? The thing that reminds me of C++ is Victor's approach to "implementing" loan underwriting. Rather than actually implementing any high-level features, C++ tries to give its users the ability to implement these features for themselves. My example was first-class strings, which aren't part of C++ but are implemented in terms of C++. And since they're not actually part of C++, they're not fully integrated with string literals.
    No, I think you were penning a particularly inept flame. This is hardly a rebuttal to that contention. Victor was presumably using a reasonably sophisticated language (I'm guessing VB here, and I'm not joking) to reverse-engineer a brain-dead restricted sub-set of the same thing, without the libraries. Stroustrup used an unsophisticated language (and, sigh, I like C) to implement a considerably more powerful superset -- C++. The two situations are entirely orthogonal. Contemplation of either might remind me of the Schleswig-Holstein question, but that doesn't mean that ipso facto anything I follow up with is going to be any more relevant or sensible.

    Once again, your example had nothing to do with "first-class" strings. Your example concerns the "built-in" string type. My counter example is Ruby: class String is an object of class Class, which ... er ... makes it "first class," in a rather more meaningful way than "able to prat around with naked literals." Scala might be an even clearer counter example.

    Java, on the other hand, has "special support for the string concatenation operator." Golly.

    Ready availability of a linguistic truss does not a "first class" object make.

    Now, what C++ did provide, in contrast to Victor, was the templating mechanism, which you imply (and I know you're doing so merely for rhetorical purposes) is solely used at the individual user level. No it's not. Actually, it's used to implement "strings" at a library level, as you well know. You are presumably also aware that the STL -- strings, warts<T> and all -- is part of the language. As in, it's part of the standard.

    Tragically, we are still unable to express the astonishingly useful construct

    std::string a;
    std::string c;
    c = "b" + a;
    in C++. On the other hand, there are startlingly few languages in which one can meaningfully express the equally elegant
    "a" += "b"
    Operators are a bitch, aren't they?

    I suggest that your basic premise here tends towards the low-wattage.

  • (cs) in reply to Mr B
    Mr B:
    Curious George:
    Andrew:
    Victor smiled. "I'm a programmer. I don't need, nor do I want, to learn the business. The business users can just tell the system what to do."

    WTF? Is this seriously how devs think?

    SOME devs think this way. I'm in the class of devs who finds it much easier to work on things if I know why they do the things they do, so I end up learning a bit about the business just because I'm curious.

    Any developer who thinks that way is a complete idiot, which I will now prove:-

    Not only will you be better at your job if you understand the business behind the systems you are trying to develop/maintain/fix, you also increase your value to the business, and you actually MAKE YOUR JOB EASIER by doing so.

    Not if, like me, you worked for Heinrich Himmler.

    (It was chicken-farming. Chicken Farming, I tell you!)

    I'm allergic to Rhode Island Reds.

  • (cs) in reply to pink_fairy
    pink_fairy:
    On the other hand, there are startlingly few languages in which one can meaningfully express the equally elegant
    "a" += "b"
    How does "changing a literal value" make any sense?
  • (cs) in reply to pink_fairy
    pink_fairy:
    Tragically, we are still unable to express the astonishingly useful construct
    std::string a;
    std::string c;
    c = "b" + a;
    in C++.

    While I agree with you wholeheartedly, I just have to nitpick something. The lacking construct you provide as an example can be trivially obtained like so:

    std::string a;
    std::string c;
    c = "b";
    c += a;

    Technically this is more verbose, but it is not any less meaningful than your example, nor would anyone consider it more difficult to use in any meaningful way.

  • john (unregistered)

    I'm thinking of creating a similar "expert system," but instead of being a "general purpose expert system" (i.e. a general purpose programming language), it's going to be made for a SPECIFIC purpose, with KNOWN requirements. It's a side-effect: I want to create a platform to execute D&D 3.5 campaigns on, but the actual specification of a D&D 3.5 campaign is too flexible.

    Sounds like Victor isn't going "we need to do X, so we'll write something to interpret things in this range of tasks;" but rather saying, "I find X boring and don't want to know about it, so let's just write a new programming language, maybe call it perl, and tell them to write their own program."

  • db (unregistered) in reply to Heron

    [quote user="Heron"][quote user="sumoman"]Of course you would team up with Rob; so you both could carry on whining about the world being so unfair. Instead of requesting things politely, you better demand responsibility for your domain. That would keep you accountable for events, but you would also not be treated that bad any longer.[/quote]

    Personally I think we are being trolled by a 17 year old girl in a gas mask.

  • Anonomous Coward (unregistered) in reply to Robert S. Robbins

    Better yet Give them Access and then pay me to come in and clean up the mess!

  • sumoman (unregistered) in reply to db

    [quote user="db"][quote user="Heron"][quote user="sumoman"]Of course you would team up with Rob; so you both could carry on whining about the world being so unfair. Instead of requesting things politely, you better demand responsibility for your domain. That would keep you accountable for events, but you would also not be treated that bad any longer.[/quote]

    Personally I think we are being trolled by a 17 year old girl in a gas mask.

    [/quote] Essentially correct. But you also have to picture the strap-on.

  • Zombywuf (unregistered) in reply to Rootbeer
    Rootbeer:
    What cult? This is how every social order in history has functioned.

    The cult where you believe the leaders bullshit. There were a number of comments to the effect that if a programmer does something and their manager tells them they're wrong, clearly that manager is correct. This is cult behavior.

    As for tearing out your managers throat with razor sharp incisors, I think you'll find that most companies don't operate a dead mans shoes policy.

    Heron:
    Do you work where I work? That sounds exactly like the manager I've been talking about. The code I cleaned up last was code he originally wrote, and those words are almost exactly what he said to me (never mind that I was supposed to be working with that code).

    Used to work, passed tense. Glad it's passed, still tense.

    It may have been the same place, it's a company that has appeared on The Daily WTF, and who's CEO responded to the post.

  • (cs) in reply to pink_fairy
    pink_fairy:
    Tragically, we are still unable to express the astonishingly useful construct
    std::string a;
    std::string c;
    c = "b" + a;
    in C++.
    That compiles and runs quite happily, due to the free functions for std::string addition. Did you mean "b" + "a"?
    On the other hand, there are startlingly few languages in which one can meaningfully express the equally elegant
    "a" += "b"
    As has already been stated, the ability to append to a literal seems somewhat meaningless - how do you refer to the result? Perhaps you should drop down to C and use strcat("Hello", "world");

    (Eek!)

  • Herman (unregistered)

    I can't believe how many people are out there capable of creating an immensly complex/retarded system to do a simple task.

    I also can't believe how many people out there lack common sense when developing software. The "there has to be an easier way"-bell is simply broken in a lot of people.

  • (cs) in reply to Herman
    Zombywuf:
    It may have been the same place, it's a company that has appeared on The Daily WTF, and who's CEO responded to the post.

    Ah, then it wasn't the same place. Probably a good thing.

    Herman:
    I can't believe how many people are out there capable of creating an immensly complex/retarded system to do a simple task.

    I am led to believe that one of the reasons my future full-time employer (amazon.com, I start in May after graduation) decided to hire me over some other candidates is that in the design exercises in the interviews, I opted for staying as simple as possible, only increasing the complexity of the design as the interviewer added requirements. I'm glad I'll be working for an employer which values such things.

    Incidentally, I hate the "ClassFactory" mentality of design with a passion.

  • fist-poster (unregistered)

    Regarding the C++ flame war:

    Was it pointed out that if your intention is to concatenate string literals (perhaps because it is too long to fit into a single line), you can't use + operator, but even in C you can just let the compiler do the concatenation:

    const char *p= "On first line\n" "On second line";

  • John Muller (unregistered)

    I'm thinking about Final Fantasy XII, where you could configure party members with 'gambits'

    You have a list of conditions, and actions. The first true condition with a valid action causes the action to be executed.

    copy-pasta from an example at http://www.ffxii.com/gambit-system

    1 Party Member [KO'd] Cast Life 2 Party Member [HP less than 30%] Cast Cura 3 Party Member [Darkness] Use Eye Drops 4 Party Member [Slow] Cast Esuna 5 Party Member [Poison] Use Antidote 6 Yourself Cast Protect 7 Yourself Cast Haste 8 Yourself [MP less than 10%] Use Ether 9 Undead Enemy Use Phoenix Down 10 Flying Enemy Cast Gravity 11 Enemy [Weak vs. Fire] Cast Fira 12 Leader's Enemy Attack

    I personally loved it, and wish it was more complex... but I'm sure many, many players went "WTF?!"

  • annonymous (unregistered)

    Bruce sounds like an Accenture type. Odds are, his system cost a fortune, was incredibly cumbersome to use, and was only a win from management's point of view. The user's probably hated it. And he was gone well before they had much chance to really look into it, at which point a new consulting team that cost even more was sent to suggest more work they could do to improve the system.

    As a code monkey consultant who works for a living building systems he has to stick around and support, I despise these people.

  • ExpertBuyer (unregistered)

    Victor was trying to create his own custom "off-the-shelf" expert system.

Leave a comment on “The Expert System”

Log In or post as a guest

Replying to comment #:

« Return to Article