You might think he's a idiot but he's quite brilliant.
Don't take my statement too serious. I would never declare a person an idiot because of one sentence he or she said. That's why I used "
". What I indeed meant is that what he said is stupid.
I am not an extremist that says "Revolution! Get rid of inequality starting with raping our economic-system!", No I understand quite well and know that we have to transcend to such system slowly if it is even possible. Summation: It would be nice if it were like that
I am an extremist and idealist, that's why I have those stubborn opinions. I know it can't work these times, but there's already a lot of progress in the sector where people understand that the current economy is not ideal in all cases. To cite you: "It would be nice if it were like that". *sign*
Ah, enforcing freedom, ok.
I know what you mean, but this "freedom" is the reason why I don't like GPL and why I am really glad a lot of libraries have a more permittive license.
Yeah, it's really enforcing freedom, so says the license text. It may sound weird to force people to keep the freedom up. But in my opinion it's needed especially for those people who really want their stuff to be free (as in speech) in the future, so that people who want to hide other's work can't just do it.
And it's of course okay to have another opinion and dislike licenses like the GPL. I am just saying that I think it's the only way software can work.
The reason why it doesn't work in commercial settings is that they are, uhm, commercial.
When company A releases their superb 3D monster engine under the GPL, they will probably get finance problems. However, looking at it from another view, everyone would just benefit from it. The big drawback is of course that those people need to earn money to make a living, and I'm also quite unsure of models where both principles can be combined. But I'm sure it'd be possible to do it.
May I ask what you dislike exactly at IDEs, just out of curiosity?
Sure. At first, there's the editor. I haven't found one IDE that has a really strong text editor, which is one of the most important parts in programming I guess. Some IDEs allow to use external editors or even embed them, but that turned out to not work as it's supposed to be (I tried it with MSVC and Eclipse for example, just for interest). Another thing is that IDEs come with rules you have to follow. For example there're projects, solutions, dependant configuration settings, platform-specific stuff, editions of IDEs etc. pp. Then IDEs try to be allrounders. They provide an editor, project explorer, outliner, debugger, refactoring tools, auto-completion, build tools, configuration tools, GUI designers, ... Some love this fact, but I'm more a fan of "one program, one task", so I can choose the best tool for every part and combine them as I like.
That's a risky claim. And don't tell me a lot of people don't make mistakes. [...]
Hehe, surely not. And to be honest, finding and fixing errors is one of the interesting parts in programming, isn't it?
I can understand why many people are used to the debugger. I got used to just think a lot more about my code and execution structure. This can take some more time sometimes, but it gives you those "Aha! D*mn" moments that I think are incredibly important to fully understand the problem and make you avoid similar problems in the future. Also it gives me a better understanding of what really happens, instead of checking a variable and thinking "Okay, here's the error, let's go back a bit and check where the wrong statement is". Maybe the difference between using a debugger and not using one is that the debugger shows you more the problem in your code, where your brain uses a little more abstraction.
I find, Microsoft Office is good software
It is good software when used right. Sadly the default approach for users is to use it wrong.
When people don't separate data and visualisation, it's mainly because they don't need it. What may be a fundamental principle in C++ development, can't be applied 1:1 to text processing or presentations. And where the separation is still appropriate, it is possible through format style sheets, slide master etc.
Exactly, they don't need it. But I've stopped to count the moments where I was really pissed when they didn't do it. (happens a lot at university, when two guys are working on one report, for example. It's usually a pain to modify the documents so that they look and feel like it's from one person) And it's really not only a fundamental principle in C++, it's a principle that applies to all sectors where you have to visualize data.
A good example is the web. In the past, when Frontpage etc. were dominating the market, there were problems all over the place. The tools mixed data with its representation (and ignored standard, but that's another topic) thus leading browsers to faulty displays, very static ones or it raised problems for disabled people who're forced to use screen readers, for example. As the time passed by, more and more people found out that the separation of data and its represantation has benefits, for example to change the visualisation without touching data at all (this was the main reason; fortunately it made disabled people happy, too
).
And this fact also applies to documents. MS Word, OO Writer etc. do mix data and visualisation completely, which is a bad thing in my eyes, because the same reasons apply. When you take LaTeX for example, then you're mostly only writing the data part, and the LaTeX compiler does the rest. You can still modify the visualisation, of course, but important is that you can *re-use* your data for other media or whatever. Another example is XML with XLST, very powerful.
I guess the reasons are mainly the big community and exchange of knowledge, as well as giving the possibility to a wide user-base to have the software.
My main reason is the knowledge thing. I am so thankful for so many projects that are Open Source and I was able to learn from. It's a thing that can't be paid with money and is so much important to get new innovations more quickly and less error-prone.
Another big reason I like is that I'm able to modify programs to suit my needs and that I HAVE to send them back when I plan to release it, so that others can benefit from it. This is such a strong principle and it turned out to just work perfectly. Open Source wouldn't be such successful nowadays when licenses didn't force people to keep the freedom alive.
But I still think there is space for closed-source software, may it be because the authors don't identify themselves with the open source philosophy, or because of commercial reasons. An extreme attitude like open-source being the only way is not only idealistic, but also a bit intolerant.
It may be intolerant, but it's still my point of view.
If it *would* be possible to do it that way, then it would be perfect. Of course I'm not so stupid that I say it is indeed possible, at least not these days. I can understand that people need to make money to feed their children, and I'm also doing closed source stuff just to be able to live. But I'm really not happy with it.
But I wonder why you treat software in such special terms?
Because software is different. Software is knowledge and can be compared to books, for example. You can call me oldfashioned, but in my opinion knowledge should be free, always.
You have to differentiate between the pure software and its distribution, for example, which also counts for books. Distributing software means to pay for packaging, shipping, material (CDs, DVDs, whatever) and the manpower behind all that stuff. But it doesn't mean that the software itself, the knowledge inside it, must cost money. The same goes for books: You have to pay the lecturer, the publisher, the printing office etc.
Sure, it's a complete ideal point of view, I know that myself. But infact there're so much "products" that do it like that already: Pay for the stuff that costs money, get the rest for free (in terms of beer and speech).
Regarding material things like computers or cars, no one asks that question, since there is no way to just duplicate the thing.
Yes, but the times were different in the past. 20 years ago, when you bought a computer, you got all that datasheets and internals. You were even able to catch your soldering bolt and hack the board, which was absolutely great, really. The material was sold, but knowledge was open. As more and more people got interested in computers, companies were attracted whose goal was to make money, not more, not less. Do you think we would still have all those incompatibility problems if the world would be more open?
The same goes for patents, like you said. In my eyes patents are the root of all evil. It prevents people from reworking on ideas others had. And isn't it a pain that ideas, that already existed (you do never invent ideas, you discover them), can be patented so you're the only one who's allowed to work with them? In my eyes it's only fear that others can make it better -- and to connect that with the today's world: Make more money, because the product is better.
An open-source license can't prevent people from stealing ideas, just from stealing concrete implementations.
And that's the point. Ideas are there, everybody can have them, so you can't really own one.
At first, easiness is the most important thing, and then, productiveness is. But it's not true that this means easiness can't be measured, just that one needs to be careful. And there's no reason why it can't be both, like SFML. It's very easy and very productive!
You're right. The only thing I want to add is: How do you define easiness? I think something is easy when it's like other things you've worked with in the past, not more, not less. When the first cell phones came out with their "new" keyboards, I bet it first was a problem for many people, and they called that complicated (many older people still call it like that). But once they got used to it and found out that it works good, it became easy.
Could you answer a few questions?... Do you compile by calling g++ directly? Does it have auto-completion? can you click on a function and switch between definition/declaration and so on (or perhaps with a shortcut)?
At first, before answering your questions: You have to stop comparing vim with your current IDE. It's like comparing Windows and Linux, it's not possible. You're able to reach your goals with both of them, but it may be done in completely different ways.
I usually compile using SCons (SConstruct), scons.org. vim does have auto-completion, yes (if you mean something like IntelliSense, then yes, that's also available and called omni-completion). Yes, you can click on a function and switch between declarations and definitions. Natively vim has support for that for C, only, I think. However there're tons of add-ons for such things. Shortcuts are always possible. You can map any key to any function.
It's important to treat vim like what it is: an editor. It doesn't do refactoring for you, and it doesn't embed the debugger, it doesn't have an outliner in the raw version etc. Either you use add-ons for such things, or you use other tools that are specialized for those tasks. Personally I'm mostly fine with the regex substitution and search, since they're very powerful. And that's by the way something why people are afraid of using vim. They think they will do a step backwards.
Speaking of myself, I can guarantee that's not the case, but you must be fully ready to learn a complete other approach and work cycle than with any IDE you experienced before.