Slashdot Mirror


User: kafka.fr

kafka.fr's activity in the archive.

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

Comments · 16

  1. Before Lemaitre: Poe on The Vatican Invites World's Leading Scientists To Discuss Cosmology (independent.co.uk) · · Score: 1

    Edgar Allan Poe suggested something similar (and more) in 1848 in his prose poem Eureka, shortly before his death: https://en.wikipedia.org/wiki/... Admitedly Poe's ideas are highly questionable, however they're very inspirational. I wonder if Lemaitre read Poe before he did his remarkable works...

  2. Re:No --- really --- it isn't on QtCon Opens In Berlin (qtcon.org) · · Score: 2

    Just to add to QRDeNameland answer... GCompris switched from GTK to Qt. Thousands (millions?) of users. AutoDesk's Maya is using Qt. Thousands of users (professionals and non-professionals). WorkNC is using Qt. Thousands of professional users. Seems pretty mainstream.

  3. Re:I don't like QT on QtCon Opens In Berlin (qtcon.org) · · Score: 5, Interesting
    The same rants again and again...

    It's not C++

    Qt requires a C++ compiler, it uses classes, namespaces, templates... looks like C++.

    they have their own little language that compiles to C++ using an external compiler

    False. If you're refering about "moc", it just provides implementations for functions declared through various macros (Q_OBJECT, Q_PROPERTY...). If you use their meta-make (qmake) or some other Qt-aware tool (CMake, VisualStudio with Qt plugins, ...) this is mostly transparent. No "little language" here.

    It has crappy alternatives for everything in STL that work just slightly different but not any better.

    Qt supports a wide range of C++ compilers since 20 years, including some which were not quite standard conformant or were not providing a "good enough" STL. So Qt provided its own containers. But their use is required only when use some Qt APIs: you can freely and happily use STL containers everywhere else. In more recent versions, Qt's containers provide an API (alongside the Qt one) pretty similar to STL's one. Also they're often seen as easier to use by C++ beginners or non-expert.

    It has copy-on-write.

    Copy-on-write was very interesting at some point in time. As everything, it's not perfect, but in some cases it was very handy, for example allowing to return large objects by value, allowing great speedup for compilers not knowing about RVO (Return Value Optimisatin). Today it is probably superseded by the move semantic, but this is a rather recent improvement to C++ and maybe not yet supported by all compilers that Qt supports.

    It doesn't use inheritance, but gives you endless lists of almost-identical function calls (all those functions to add controls, for example).

    Look at the hierarchy of classes inheriting from QObject, look at all the virtual functions that can be overloaded by the user. Inheritance is actually used at large. And most of the "almost identical functions" are there for a purpose.

    And that stupid Q everywhere you look is just painful.

    Totally subjective and mostly irrelevent. What about those "stupid" gl/GL_ prefixes in OpenGL, vk/VK_ in Vulkan, the "G" in GTK, the "C" for all MFC classes (as if we didn't know already we were dealing with classes), and so on. Of course Qt is not perfect - no one is saying that. Using it daily in a millions-lines (commercial, expensive, closed-source) project, I have my share of gripes against it. But it's the same with any framework. After having used various frameworks in non-trivial projects (GTK+, wxWidget, MFC and a handful of others), for C++ I see Qt as "the best" framework - which in some cases means "the least bad", and never means it's perfect.

  4. Re:Sad, if true on The Last GUADEC? · · Score: 1

    "moc" provides introspection you would hardly get another way

    Not true. You can get it with plenty of other ways, including normal usage of the embedded preprocessor.

    I wrote "hardly", not "impossible". Now you may be of the elitist kind of people which assume everyone should be able to write and use something like Boost::MPL for breakfast, but in the real world easy tools are sometimes welcome.

    That's still OOP and C++.

    Associating C++ with OOP is a problem. It's a multi-paradigm language. OOP has very few valid use cases. If you want OOP abused everywhere, use Java.

    Notice I said "OOP and C++": I did not say "OOP is C++" nor the other way around.

    Qt does not duplicate the STL, it provides similar functionalities

    It has its own set of containers, strings, iterators, all of which use are not conforming to the standard concepts. They might have better implementations in some cases (for example a custom hash map implementation optimized for a given usage pattern might be faster than the general-purpose one of your standard library implementation), but the design is not as well-crafted and is significantly less flexible.

    Less flexible, quite true. But again, overall easier to use. Now their containers provide the usual "::iterator" and "::const_iterator", making them looking quite similar to STL containers. Even QString provides begin() and end().

    Indeed it uses COW almost everywhere it might make sense.

    COW never makes sense unless it's used to implement partial data sharing within a larger data collection. That's not the case in Qt. In Qt it's just used because the bad design forces the framework to copy many objects even though it's not needed.

    The thing is, quite often data is shared in a heavyweight GUI app. It may be mostly useless in Qt itself, but it's quite usefull when you *use* Qt. Now we can talk about "good" or "bad" design: I tend to prefer a design which may not be academically perfect, but clean and easy to read and use. When you have to maintain several millions LOC, perfection may have different meanings.

    Sometimes it's a real nice thing to be able to return a QString by value for (almost) free

    I don't understand how that's related. Returning a local variable or temporary variable by value is always "free" (doesn't call copy constructors) regardless of COW. It's called NRVO, though that it is a silly name. It's not really an optimization. It's more a matter of ABI.

    ABI which is not standardized, last time I checked. Here the optimization is provided by the framework, not relaying on the compiler. That said, if you don't like it, then don't use it... as simple as that.

    don't forget all of this was created long before we had rvalues and move semantic in C++.

    rvalue references allow to distinguish lvalues and rvalues at the language level. There was no problem implementing move semantics by handling rvalues explicitly. Before C++11, people used swap when they needed to move. Qt containers didn't even have swap before 4.7 (2010).

    Don't take my poor example for more than it is... There's more in sharing data than just moving. Granted, it's pretty useless for a "Hello world" label.

    "Good" language features are usually "modern" language features (sure, not always, I know). Because Qt tries to be available for older compilers, even awful proprietary ones (Visual C++ anyone?), it has to do tradeoffs here and there.

    Current Qt only works with Visual C++ 9 (2008) and higher, Visual C++ 10 (2010) or higher is even highly recommended. Decent C++ support has

  5. Re:Sad, if true on The Last GUADEC? · · Score: 1

    "moc" provides introspection you would hardly get another way, at the cost of a single macro (Q_OBJECT) and automatically generated code. That's still OOP and C++.

    Qt does not duplicate the STL, it provides similar functionalities, but arguably simpler to use. Indeed it uses COW almost everywhere it might make sense. Sometimes it's a real nice thing to be able to return a QString by value for (almost) free - don't forget all of this was created long before we had rvalues and move semantic in C++.

    "Good" language features are usually "modern" language features (sure, not always, I know). Because Qt tries to be available for older compilers, even awful proprietary ones (Visual C++ anyone?), it has to do tradeoffs here and there.

    About typesafety, well... I won't really disagree on this one ;-) but it's a real minor concern really, given the enormous benefits the whole framework provides.

    By the way, I've been using Qt for... oh my, 16 years already??

  6. New name for old idea on Gamification — How Much of It Is Really New? · · Score: 1

    The Go game is supposed to have been invented to train an emperor's son in better strategy/military skills... and that was a big pair of thousands years ago (see Wikipedia).
    Again and again, a new name on an old idea, someone is trying to sell something to people not needing nor wanting to buy it.

  7. DoudouLinux on What To Load On a 4-Year-Old's Netbook? · · Score: 2, Interesting

    Try this: http://www.doudoulinux.org/web/english/

    Should be OK for a 4-years-old. Two things:

    • - unplug ethernet, disable wifi, bluetooth and whatever network the laptop may offer;
    • - be prepared to fight sooner than later to take him outside.

    Yes, that's actual real-life experience ;-)

  8. Re:Python on How To Teach a 12-Year-Old To Program? · · Score: 1

    Are there still Logo implementations around?

    KTurtle : http://edu.kde.org/kturtle/ My 8-years old son really enjoyed playing with it, after giving him a few basic informations. Amazing how children can try and discover by themselves.

  9. Why new language, while there are good'old ones... on New Languages Vs. Old For Parallel Programming · · Score: 1

    Can someone explain me why we would need a new language... There are languages designed from the ground-up to allow parallel processing. Yes, structures inside de core language, not some extra libs. Just to name one: Ada, designed to allow parallel computing since before 1979 (yes, that's 30 years ago). Reference: http://www.adaic.org/whyada/multicore.html. Even on a single processor, doing stuffs memory-bound (such as a sort on a huge amount of data) parallelized can show significant improvement.

  10. Re:I used ada.... on The Return of Ada · · Score: 2, Informative

    [...] anything much beyond classroom-example programs. Oh yes. Check this classroom example :
    https://libre.adacore.com/aws/main.html

    "AWS: a complete Web development framework"

    As a reminder, the GNAT compiler is written (mostly) in Ada. But maybe it's not much beyond a classroom example either.
  11. Re:I used ada.... on The Return of Ada · · Score: 1

    Ever try reading in and storing an arbitrary length string? I'm fairly convinced it's not possible in Ada.

    Have a look at http://www.adaic.org/standards/05rm/html/RM-A-4-5.html and http://www.adaic.org/standards/05rm/html/RM-A-10-12.html

    For the lazy: yes it is possible, just as it is in C++ (for example).
  12. Consider Ada on Ultra-Stable Software Design in C++? · · Score: 2, Informative

    Using the good-old Ada programming language (for which a new standard should be issued this year), you can go closer to what you're looking for (though I'm not sure your goal is realistic).

    Here's a pointer to the new standard : http://adaic.org/standards/05rm/html/RM-TTL.html

    With Ada:

    • you can call externally-defined C/C++ functions (see annexe B);
    • you get quite advanced runtime-checks;
    • you have plenty of exceptions to use to catch errors (see sections 11 and section Q.4);
    • you have tasking (more or less threading) implemented inside the language (see section 9);
    • a specialized annexe is targetted toward distributed system (annexe E);
    • specialized annexes for high-integrity systems (annexe H) and real-time systems (annexe D);
    • ...and more, much more.

    It probably won't solve every of your problems, but it might help.

    For a free, quite strong Ada compiler, have a look at https://libre2.adacore.com/ (it's based on GCC).

    Oh yes, Ada is a statically, strongly, strictly typed language (e.g. the compiler won't let you assign an integer to a float variable). My opinion is that it's a Good Thing for critical programs. Useless to restart a "type war" on this subject ;-)

    Good luck.

  13. Re:I hope the Mandrake employees on Mandrake Asks for Support · · Score: 4, Informative

    Just for your information, MandrakeSoft has already
    laid off employees (around 10, I was one of them),
    and asked (on a *volontary* basis) others to accept
    salary cuts (being less paid for some time).

    So it seems they can't do more this way. There were already to much to do.

  14. Check SmoothWall on Choosing a Router/Firewall for the Home LAN · · Score: 2, Informative

    I personnaly gave a try to SmoothWall, here :http://www.smoothwall.org/gpl/

    An amazing number of features in a so little Linux distribution. Well, find an old PC (almost any might be enough), install SmoothWall on it, then you've got your personal router/firewal/NAT/almost-whatever-you-want.

    All being controlable through a web browser.

    My 2c

  15. The Game Of Go on Can You Suggest Any Non-Zero Sum Games? · · Score: 1

    Hi,
    I suggest a very (very) old game coming from China, the Game of Go. Whereas chess is a battle (you have to kill the King), Go is a war (you have to conquer territory, battles are a mean, not a goal).
    Like chess, Go is spacelly limited, but the number of possible games is incredibily huge (something around 10^600).
    When a weak player meets a strong player, this one can have a handicap : this means the game won't be so easy for the strong one, and not so difficult for the weaker one : so everyone is happy to play.
    Although rules are really simple, the game in itself can be very very complex : then the goal may not be to win, but to do a nice game, an elegant game.
    For more informations, have a look at :
    The Internet Go Server, to play online ;
    this page to have a nice introducton.
    Final word : Go is around 3500 years old.

  16. If you're free, use your freedom on Should You Vote? · · Score: 2

    Hi all, please forgive my poor english.

    I'm from France, and I would give you a recent experience. We've had a referendum afew weeks ago, about a question not very important (should our President be elected all 7 years or 5 years ?). It doesn't matter.
    What matters, is the fact that only 40% of people went to vote ! But that didn't seem very disturbing for our politicians. More disturbing for them, is that on those 40%, something like 15% went to vote, but didn't answer ! They voted blank. Hey, that's about 3 millions persons ! Indeed, there's a message here.

    Many years ago, in you country as well as in mine, many people fought and died to bring you this so simple right : to vote. Maybe I'm not welcome to interfer in US elections ("interfer" is not the right word, it's too strong, but you see what I mean -- sorry again), but please don't forget them. Go to vote.

    I could be sacarstic, and say "a people has the politicians he deserves". I think it's true - for you and for me. You don't like any of your politicians ? That's OK, so don't choose any. But tell them you don't like them. Go to vote.

    At least you'll have a legitimity to complain. If you don't go, then shut up : you did nothing to try to make better a bad situation. You don't exist.
    You know what ? Be careful, fascism ideas are still alive, everywhere in the world. Your vote is your only weapon against such ideas. If they reach the power, and you have a new Hitler as president, then prepare your blood - but believe me, some already tried this, and it's a waste of time.

    Go to vote !