C++
We've been working with C++ since its release in 1986. From C-with-objects to C++11, object-oriented, functional and meta-programming, we're experts with all styles of C++.
We've been working with C++ since its release in 1986. From C-with-objects to C++11, object-oriented, functional and meta-programming, we're experts with all styles of C++.
The increase in CPU clock-speeds has been stalled for the last few years, and with it per-CPU throughput. To get more work done in the same amount of time it's necessary to throw more processors at the problem. Multi-processor systems have been affordable since 1998, and technologies like HyperThreading and multi-core processors are bringing that power to desktop and laptop. But to exploit these advances software must be multi-threaded.
Writing multi-threaded software is not a trivial exercise. The benefts are huge, but done carelessly your software will be unstable and hard to debug.
Electric Magic has been developing multi-threaded software for more than fifteen years. We've implemented servers using both standard and custom protocols. But these protocols tend to be stateless, or maintain state on a per-connection basis, and thus are relatively easy to farm out to multiple CPUs. The client side is another matter. There we have developed a range of patterns, techniques and code that smoothly integrates multi-threading and generally asynchronous functionality with the fundamentally synchronous world of event-driven user interfaces.
Communications once meant RS-232, and now it's encrypted data streams over TCP/IP, encapsulated and packaged in myriad ways. Whether you need to control a robotic arm or screen-scrape a legacy system, put a transparent RPC proxy between your systems, or reverse-engineer a data stream, we can help.
A lot of our more recent work has been in realm of library development, creating expressive and powerful foundations on which the real work is built.
We can apply our deep understanding of Mac, Windows and UNIX graphics APIs, file formats and in-memory representations to provide transformational and generational code to meet your needs.
GUI generally means frameworks, and we've worked with and extended them all. QT, GTK, MFC, PowerPlant, the venerable MacApp and TCL, and our own ZooLib. And if you have an in-house system, our broad experience let's us get up to speed quickly.
Although our main strength is C++, we're familiar with other languages, ancient and modern, and use them when appropriate.
Even in a sophisticated high-level system, assembly language or machine code is sometimes needed for its semantics, performance or direct access to hardware features. For ARM, x86, PowerPC, 68K, 6502, Z80 and more, we know when and how to make effective use of assembly language and machine code.