We recently shared with you a list of books that we have been reading for joy and to build up our neural connections, while developing our mathematical algorithms. And so today, as we reach the end of the year, we thought we would list the most popular tech articles from our blog.
Usually, debug builds are 10-20 times slower than release builds, but the slow speed is not usually a problem. But what if you need to debug code with a very large dataset? In this case, to catch bugs you may well end up waiting far too long, or else you might encounter many problems with the release build, when you skip the debug stage.
In our “Fast Debug in Visual ...
You must have heard of ChatGPT, that artificial intelligence chatbot developed by OpenAI. It interacts with humans in a conversational way by supporting queries made in natural languages.
For developers, ChatGPT’s most attractive feature is its ability to generate code in any programming language. But how useful is AI-generated code? Let's find out by asking ChatGPT to solve some simple tasks that arise in CAD development projects. (We conducted this study some time ago; since then, ChatGPT has perhaps become smarter.)
In our experiment, we asked ChatGPT to solve the following tasks:
Since 1999, LEDAS has provided software development services to clients in a number of areas of hi-tech engineering, and as a result our team of developers works with a broad set of software tools.
At the very least, we need project management software, a compiler, and an operating system. In fact, we need more software than on that short list, but for now let’s focus on these three categories. They are the most critical for any software developer.
At LEDAS, these three main categories are represented primarily by Jira, Visual Studio, and Windows. Some other programs, such as for version control, text documents, spreadsheets, and presentations, are now freely available, so anybody can avoid those licensing costs.
Jira is often considered a leader in the market for project management ...
Geometrical modeling projects often contain some form of central hierarchy of objects. A geometric kernel, for example, has a hierarchy of geometric entities. Another example is a geometric solver which has a hierarchy of objects and constraints. Simplified inheritance diagrams for these hierarchies are shown in the figures below.
Many routines/algorithms of other modules need to process all the entities in a hierarchy in a similar fashion, although with different implementation details. So, polymorphism naturally is used with these kinds of hierarchies.
Assuming we are talking about C++ (and this is usually the programming language of choice for algorithmic libraries in CAD), using virtual functions is the first consideration for implementing polymorphic behaviour.
However, a variety of routines applied to the entire hierarchy, ...
This post was written by a LEDAS developer in his own blog, and now we repost it here. Focus on performance is the major goal in our projects, and we are going to publish more posts on this topic.
It is well-known that Debug build in Visual C++ is very slow compared to Release build, with the typical ratio about 10-20 times. Various reasons behind it are often stated, and some people even believe that it is inevitable because it is caused by lack of compiler optimizations.
If some issue happens only on a large dataset or in a real-time application, and it cannot be extracted into a smaller test case, then developer is forced to debug Release build. Which is rather painful ...
Templates are a very powerful feature in C++, because they allow you to write generic programs that accept a data type as an extra parameter. This feature of them means that we don’t need to repeat similar code for different data types.
When templates were first introduced in C++, their capabilities were unforeseen. Since then templates have grown into a separate functional language inside of C++. This language has its own syntax, rules, and huge number of specifics, one of which I will discuss later.
Each template defines a family of functions. It is, after all, a functional language. But the family does not produce any code on its own. Instead, the compiler generates code only for functions that are actually used in the program. This process ...
The C++ language is known for its slow build times. This problem is not present in the world of pure C, which might give a hint that the problem is caused by some ...
Following the event, we wanted to know what our LEDAS programmers thought about C++ 20, and now we have their answers available to share with you.
C++ 20 highlights four major new features: concepts, ranges, coroutines, and modules. Here is how our ...