Tag Info

Hot answers tagged

96

I don't really intend this to be a bashing answer, but these are the reasons I do not personally use Qt. There are plenty of good things to say about it -- namely that the API works most of the time, and that it does seamlessly bridge platforms. But I do not use Qt, because: In some cases, it just doesn't look like native programs look. Designing a single ...


87

Because when those libraries were written, some major browsers did not support those features. Once written and used, these features cannot be removed from these libraries without breaking many applications. (In this case, "major browser" means a browser that still has large market share, which includes older versions of browsers like Internet Explorer, ...


78

Let's talk about cars. Oh wait, we already did - remember that time we met, some time ago? We talked about cars. In fact, you seemed to be quite the expert on cars. You were able to explain, in detail, all of what's right, wrong, and exciting about the latest Formula 1 race. You knew by heart all of Lamborghini's models, including their price and ...


73

Using libraries instead of reinventing the wheel: Great! That's how everybody should do it. You don't get paid to do what's already done. Using snippets: As long as you understand what you copy-paste, and as long as you invest the time to make it all consistent (instead of a patchwork of different styles and approaches), there is nothing wrong with it.


51

It's a joke, or rather, a witty way to make a point. "vanilla X" refers to "X in the most basic fashion" or "X without anything extra", so "Vanilla JS" is JavaScript as exposed by the browser. VanillaJS is native JavaScript. That includes the DOM, various newfangled APIs, the core language features. It excludes third party code, i.e. what one would normally ...


36

As people say, each tool fits to each problem and situation... But if you're C++ programmer, Qt is your framework. No rival. We develop a complex medical imaging commercial application, and Qt holds on. I don't say that the 'cons' that people say about it are false, but I have the feeling that they don't have tried Qt for a long time (its continously ...


33

Because different browsers have different implementations and features baked in their JavaScript engine. The same "vanilla-JS" code could run differently on two different browsers, or even two different versions of the same browser. The abstraction layer provided by popular JS libraries is a way around this. Behind the scenes, it works around the different ...


25

No. I've seen some nightmarish effects of a dozen developers all adding their own little "util.h" style libraries to projects, and have it turn into a giant mess of inconsistent function naming and behaviors. Much like PHP. So for that reason I avoid doing it. I avoid needing to do that by using programming environments that give me nearly all the tools ...


25

Both OpenGL and SDL are C libraries and expose a C interface to the rest of the world (as pretty much every language out there can interface with C but not necessarily with C++). Thus, they're restricted to the procedural interface that C gives you and the C way of declaring and using data structures. Over and above the "interfacing with other languages" ...


23

1. Backwards compatibility JavaScript is an implementation of ECMAScript. Most of those functions were introduced in ECMAScript 5 (ES5) however many older browsers which still have a significant enough share of the market do not support these functions (see ECMAScript 5 compatibility table), the most notable of these being IE8. Generally libraries will ...


21

Coding is the lowest level of programming in fact. The higher level of abstraction you can get to, the better programmer you are. Choosing right libraries (not necessarily open-source ones), properly connecting them together and maintaining the construct is much harder yet more efficient and time- and cost-saving, than writing everything yourself.


21

Is it ok not to understand how to solve the problems yourself, and use libraries instead? In the general, no, it's not. A library can save you the (hard!) work of figuring out how to solve a problem, and then debugging the solution, and then, maintaining it. But, if you're going to use it, you'd better make sure you understand how it works - why the ...


21

If the contract expects source code to be delivered, then the source code you give them should compile. Not giving them the libraries to do this is ridiculous. If the code in your libraries is generic helper type code, then there is nothing wrong with giving them the binaries and some license agreement with them. If the libraries contain something ...


20

good programmers write good code; great programmers steal great code.


20

Of all the things I don't like about Qt, the fact that it doesn't play well with templates bugs me the most. You can't do this: template < typename T > struct templated_widget : QWidget { Q_OBJECT; public signals: void something_happened(T); }; It also doesn't play well with the preprocessor. You can't do this: #define ...


19

The best I can think of is the Apache Portable Runtime project. From Wikipedia on APR: The Apache Portable Runtime (APR) is a supporting library for the Apache web server. It provides a set of APIs that map to the underlying operating system (OS). Where the OS doesn't support a particular function, APR will provide an emulation. Thus programmers ...


18

You should put the unit tests in the same repository because otherwise someone has to answer to the question "Where are the tests?" every time the project is handed over from one person to another. References to other repositories tend to get invalid over time when repositories are relocated and people change from one version control system to another. Just ...


17

What you're currently doing is fine, until you run up against a problem to which exists no code examples online to guide you. What you should be doing when you're looking at all this code online, is trying to understand: WHY do the pieces of code you cut and paste together work? WHY was the code designed the way it is? Why do something this way, rather ...


16

SmartFormat My favorite utility is one I wrote - a simple string builder/formatter that makes it really easy to turn data into strings with correct grammar. For example, most programmers build text from a template: "There are {0} items remaining" but this leads to grammatical errors: "There are 1 items remaining". So, SmartFormat lets you write: "There ...


16

First, this is mainly about the contract you have with the client. If you have a contract which includes delivering of the source code, your client can expect a source code he can compile by himself. If you refuse to do this, you broke the contract - and it does not matter if the missing source in lib A or lib B or lib "Utility". From the client's point of ...


15

Typically reimplementing a library to be "native" to a particular platform allows for: Simpler deployment and distribution Easier debugging More idiomatic APIs suitable for your exact platform Often better performance (platform interop can be a pain) Fixing design issues which are still in the original for compatibility For example, I started the Noda ...


15

Some of it is licensing. See http://en.wikipedia.org/wiki/Qt_(framework)#Licensing for some of the licensing history. Until 2000, people who cared strongly about open source, did not use Qt. Period. (This was, in fact, the original motivation for the development of Gnome.) Until 2005, people who wanted to be able to release free software for Windows did ...


15

This senior developer's argument makes no sense to me. They want to add overhead of constantly retrieving & compiling an internal library just so devs can occasionally read the source code? That's going to waste a lot more time than having devs go look at the source code only when they need to check if a feature is available. This is a particularly ...


15

The best place to start is probably the "design philosophy" section of the user guide. But to lay out specific differences between Noda Time and Joda Time: Noda Time keeps much more of its code internal. This makes it less flexible, in that you actually can't create your own calendar system - but also means the API is simpler both to learn and use. Nullity ...


14

Much of MS enterprise library and most 3rd party controls for .net have left me with this feeling after a bit of use. Your mileage may vary


14

I think Github where you are currently hosting is not a bad place either. Basically, Host it somewhere so that people can access. Github will do. Licence it. MIT, BSD and GPL licence are quite famous. Offer it in questions in sites like stackoverflow where you may find it useful. Inform about new-releases and features through social mediums, your blogs ...


14

Writing source code is fun. Writing documentation and commenting code is less fun. When a developer works in a company which enforces good comments and documentation, there is no choice: either this developer writes those, or he's at risk of being fired. When a developer contributes to an open source project, he's doing it for free, and especially for ...


13

Once computerworld.com.au asked Bjarne Stroustrup "Do you have any advice for up-and-coming programmers?" And he answered "Know the foundations of computer science: algorithms, machine architectures, data structures, etc. Don't just blindly copy techniques from application to application. Know what you are doing, that it works, and why it works. Don't think ...


13

Some reasons I've done it (rewrite C code in Haskell, in my case): easier deployment: one build chain only fewer dependencies (to gain more adoption) more portable (e.g. to Windows) if the code is in a high level language to add support for parallelism not easily done in low level C to make the code a bit safer with its resoures to make the code easier to ...


13

This is one of the few uses of C++ macros that is widely accepted. It is usually called an include guard. As an alternative, most modern compilers support #pragma once. This is much cleaner, but slightly less portable.



Only top voted, non community-wiki answers of a minimum length are eligible