Optixsoft Blog

Blog

NOPs and debug


It's often necessary to edit source code during debug. To make this fixes to take effect, usually, you need to rebuild your application and restart the debug session. But there is edit-and-continue feature in Microsoft Visual Studio, which allows these fixes to take effect without restarting of the application. Ever thought about how it works?

The secret is in NOP instructions, which compiler inserts in certain places of executable code. These instructions can be replaced with new code later. Also, they allow to place breakpoints at those source code lines, which have no correspondent executable code. E.g., at the beginning of code block (opening brace in C++ and C#). Or at the operator, that would otherwise be replaced during optimization.

BTW: NOP-instructions may also be reasonable in application's release-version. E.g., to align code block for better caching.

Labels: , ,


C++0x will not have concepts!


C++ standardization committee voted to remove concepts from almost-ready C++0x standard, during it's meeting in Frankfurt in July.
Concepts are probably the most discussing innovation in C++ meta-programming paradigm. The main purpose of concepts is to specify template constraints clearly and intuitively, while improving the compiler's capability to detect and diagnose variations of these constraints. Also, concepts would allow to create a type map to use some type in template, if the type and the template are not compatible directly. As reasons for such a hard decision there were stated unfinished specification, complexity and absence of real experience. Since concepts could potentially become a new cornerstone of C++, it was decided not to standardize the "raw" specification. The time will tell whether concepts will be included in next standard, and whether they will be simplified, improved or just rewritten from scratch.

Stroustrup's post on this topic is on Dr.Dobb's.
Sutter also commented this on his site.
You can find more links, e.g., on StackOverflow.

Anyway, we are looking forward to other language innovations, such as lambda expressions, rvalue references and move semantics, generalized constant expressions, etc.

Labels: ,


15 minutes of effective communication


Does your company staff consist of young enthusiasts? Do they spend much of their free time learning new technologies? Are their professional passions interesting for their colleagues? Would you like to improve the exchange of useful experience and knowledge inside your company?
It’s the same for us. And probably our solution will fit your situation too. What is the point?

From time to time our united team gathers for approximately a quarter of an hour. Someone gives a brief lecture about something new, which will probably be interesting and useful for the others. What for?

First, it allows others to easily pass entry phase when learning new technology. How often do you read about something new and cannot get the point, because you don’t see the whole thing? But the man, who has already spent his time learning new technology and who already has clear idea about it, can briefly describe the main point and why to use the innovation. This will allow others to boost their startup when learning this technology in the future.

Also, such lectures broadens personnel’s mind. It may be useful for average developer when finding a non-typical solution, or for system architect when designing a new architecture.

It is also useful for the speaker. He learns how to speak clearly and gets the public speeches experience. It will have its meaning when communicating inside your company or with customers.

And even more – it’s the way of effective break. Because break is just the change of activity area, isn’t it? And such meetings will not only get an employee out of his everyday job, but will also let him to return to his work with clear mind and probably new ideas.

At last, it’s just another way of communication. There are not so many things that are more important, than communication in team.

So, we have five advantages.
What does it cost? Approximately 15 minutes of your working time per week. It’s not so much, isn’t it?

E.g., yesterday I had a lecture for colleagues; it was about using RAII design pattern in C++ development. If you don’t work at Optixsoft yet and missed a lecture, but if you are a developer and if your language, happily, has destructors, then I would strongly recommend you to learn this pattern. It will make your using of resources significantly easier. This pattern is clearly described in works of such C++ gurus as Stroustrup, Meyers, Sutter and Alexandrescu and is considered as important part of good coding style. You can read about this pattern, for example, in «Effective С++. 3rd Edition» by Scott Meyers or in Wikipedia.

By the way, my name is Alex Korotkin. This is my first post on our company blog. I’m responsible for development at Optixsoft, so my posts will refer to development, more or less. I will be glad to answer your questions. I’m sure that such communications will be useful for all of us.

Labels: ,


Optixsoft - Software Development For Fiber Optics. Copyright 2009. All rights Reserved.
optixsoft
Home  |   Company  |   Services  |   Products and solutions  |   Portfolio  |   Client care  |   Contacts  |   Blog  |   Site map