Announcing Wrox’s Professional C++, 2nd Edition

Posted in C++ on October 31st, 2011 by Admin

9780470932445 cover.inddGreetings! I’m Marc Gregoire, a Microsoft MVP VC++ since 2007, and I’m pleased to tell you that I’ve finished work on my book “Professional C++, Second Edition”.

This second edition includes the latest C++ standard, C++11, and is based on the great first edition written by Nicholas A. Solter, Scott J. Kleper. The book is published by Wiley/Wrox.

Here is the official description for the book:

Essential reading for experienced developers who are determined to master the latest release of C++

Although C++ is often the language of choice from game programming to major commercial software applications, it is also one of the most difficult to master. With this no-nonsense book, you will learn to conquer the latest release of C++. The author deciphers little-known features of C++, shares detailed code examples that you can then plug into your own code, and reveals the significant changes to C++ that accompany the latest release. You’ll discover how to design and build applications that solve real-world problems and then implement the solution using the full capabilities of the language.

Appeals to experienced developers who are looking for a higher level of learning

  • Drills down the extensive changes to the latest C++ standard, C++11, including enhancements made to run-time performance, standard library, language usability, and core language
  • Zeroes in on explaining the more poorly understood elements of the C++ feature set and addresses common pitfalls to avoid
  • Includes case studies that feature extensive, working code that has been tested on Windows and Linux platforms
  • Intertwines text with useful tips, tricks, and workarounds

Packed with best practices for programming, testing, and debugging applications, this book is vital for taking your C++ skills to the next level.

Links:


Visual C++ Team Blog

Tags: , , ,

Inside the C++/CX Design

Posted in C++ on October 29th, 2011 by Admin

Jim SpringfieldHello. This is Jim Springfield, an architect on the Visual C++ team.

Today, I want to give some insight into the new language extensions, officially called C++/CX, which was designed to support the new API model in Windows 8. If you attended //BUILD/, watched some of the sessions online, or have been playing with the prerelease of Visual Studio, you probably have seen some of the “new” syntax. For anyone who is familiar with C++/CLI (i.e. the language extensions we provide for targeting the CLR), the syntax shouldn’t seem much different.

Please note, however, that while the C++/CX syntax is very similar to C++/CLI, the underlying implementation is very different, it does not use the CLR or a garbage collector, and it generates completely native code (x64, x64, ARM depending on target).

Early on in the design of our support for Windows 8, we looked at many different ideas including a pure library approach as well as various ways to integrate support in the language. We have a long history of supporting COM in the Visual C++ team. From MFC to ATL to #import to attributed ATL. We also have a good bit of experience at targeting the CLR including the original managed extensions, C++/CLI, and the IJW support for compiling native code to MSIL. Our design team consisted of seven people and included people who worked on these and who have lots of experience in libraries, compiler implementation, and language design.

We actually did develop a new C++ template library for Windows 8 called WRL (Windows Runtime Library) that does support targeting Windows 8 without language extensions. WRL is quite good and it can be illuminating to take a look at it and see how all of the low-level details are implemented. It is used internally by many Windows teams, although it does suffer from many of same problems that ATL does in its support of classic COM.

  1. Authoring of components is still very difficult. You have to know a lot of the low-level rules about interfaces.
  2. You need a separate tool (MIDL) to author interfaces/types.
  3. There is no way to automatically map interfaces from low-level to a higher level (modern) form that throws exceptions and has real return values.
  4. There is no unification of authoring and consumption patterns.

With some of the new concepts in the Windows Runtime, these drawbacks become even more difficult than in classic COM/ATL. Interface inheritance isn’t vtable-based like it is in classic COM. Class inheritance is based on a mechanism similar to aggregation but with some differences including support for private and protected interfaces. We quickly realized that although there is a need for a low-level tool like WRL, for the vast majority of uses, it is just too hard to use and we could do a lot better while still preserving performance and providing a lot of control.

The #import feature that was available in VC6 provides a good mechanism for consuming COM objects that have a type library. We thought about providing something similar for the Windows Runtime (which uses a new .winmd file), but while that could provide a good consumption experience, it does nothing for authoring. Given that Windows is moving to a model where many things are asynchronous, authoring of callbacks is very important and there aren’t many consumption scenarios that wouldn’t include at least some authoring. Also, authoring is very important for writing UI applications as each page and user-defined control is a class derived from an existing Runtime class.

The design team spent a lot of time discussing what consumption of Windows Runtime components should look like. We decided early on that we should expose classes and interfaces at a higher level than what the ABI defines. Supporting modern C++ features such as exceptions was deemed to be important as well as mapping the Runtime definition of inheritance (both for interfaces and classes) to C++ in such a way that it was natural. It quickly became clear that we would need some new type categories to represent these as we couldn’t change what the existing C++ ABI meant. We went through a lot of different names and it wasn’t until we decided to use the ^ that we also decided to use ref class to indicate the authoring of a Windows Runtime class.

We also spent a lot of time exploring various approaches to how to hold onto a pointer to a WinRT class or interface. Part of this decision was also how to tell the difference between a low-level version of an interface and the high-level version of the interface. We had a lot of different proposals including just using a *, using * with a modifier, and using various other characters such as the ‘@’ symbol. In the original extensions we did for managed code, we in fact did use a * with a modifier (__gc). We realized we would have many of the same problems if we followed that route. Some of the breakthroughs came when we started thinking about what the type of a pointer dereference would be. This made us realize that what we were doing was similar to what we did when C++/CLI was designed. At one point, someone suggested “Why don’t we just use the ^ symbol?” After the laughter died down, it started making a lot of sense. On design point after design point, we often came to the same design decision we had made for C++/CLI.

Many of the concepts we were trying to express were already present in the C++/CLI syntax. Given that reference counting is a form of garbage collection, using ^ to represent a “refcounted” pointer in ZW fits quite well. Dereferencing of a ^ yields a %, also like C++/CLI. While many concepts are expressed the same way, there are a few areas where we decided to deviate from C++/CLI. For example, in C++/CX, the default interface on a class is specified through an attribute in the interface list while in C++/CLI it is an attribute on the class itself.

In C++/CX we have a much better story than C++/CLI when it comes to interoperating references types with regular types. In C++/CLI, managed objects can move around in memory as the garbage collector runs. This means you can’t get the real address of a member (without pinning) or even embed anything except primitive types (i.e. int) into your class. You also cannot put a ^ into a native class or struct. In C++/CX, objects do not move around in memory and thus all of these restrictions are gone. You can put any type into a ref class and you can put a ^ anywhere. This model is much friendlier to normal C++ types and gives the programmer more flexibility in C++/CX.

We will be providing more insight into our design over the coming months. If there are specific things you would like to know more about, please let us know.


Visual C++ Team Blog

Tags: , ,

iPhone camera comparison, 4S battery woes, and more in this week’s mobile news.

Posted in IPhone App Programming on October 29th, 2011 by Admin

The developers behind Camera+ have posted a comparison of the cameras on each version of the iPhone along with some regular cameras.

Lifehacker tells you how to stop your smartphone from constantly tracking where you are.

Apple is perplexed by the 4S’s battery usage.

The iPhone 4S is available in 29 different countries now, this is the fastest iPhone rollout ever.

Here is a list of apps on sale this weekend for Halloween.

Finally, the biography of Steve Jobs is now available. A must read.


Mobile Orchard

Tags: , , , , , , , , ,

Linda Carlson, Director of Global Community Relations for Sony Online Entertainment, talks to Game Careers

Posted in Video Game Programming on October 28th, 2011 by Admin

Linda Carlson, Director of Global Community Relations for Sony Online Entertainment, talks to David Smith of Interactive Selection and Game Careers at GDC Europe in Cologne. Linda has been involved in gaming since her very first, photocopied D&D manual arrived in the mail several decades ago. Over the years, she made the transition from tabletop to online to media to industry… and now serves as the Director of Global Community Relations at Sony Online Entertainment. SOE maintains over a dozen online titles, including EverQuest, EverQuest II, Star Wars Galaxies, Free Realms, Clone Wars Adventures and DC Universe Online. Whether delivering lectures at conventions, hosting SOE Webcasts as “Brasse,” (her garrulous Dwarven alter ego) or working on SOE Community Team projects, Linda is constantly inspired by the passion of the people who create and play games. “In no other field of endeavor do we see such rapid evolution of society, technology and communication,” she explains, “The gaming world is one incredible, organic social experiment, and I can hardly wait to see what’s next!” Her advice to those thinking of applying for a job with Sony Online:

“I warmly encourage anyone who is interested to contact me directly. In a nutshell, what we are looking for is passion because we are a company of gamers who make games. So passion for the product is very important, keeping in mind you may switch from product to product every year, but the joy of making things whether you are coming to the company as an accountant, or a public relations representative, or joining the community team, or if you come to us directly as a programmer or a developer of any type, we are looking for passion, so that’s the most important thing.

When you write a covering letter when you apply for a job make sure its not a farm letter, we have to know who your are. You have one chance to convey yourself, and if you blow that you are going to be lost in the sea of resumes we get. Make sure the resume is up to date and detailed. If you are coming from an artistic background or sound engineering or anything like that, make a portfolio and post it online, or if you are a programmer include examples of your code, post it online and give us the links so that we can review the cases easy for the people who are looking through 150 resumes to make yours stand out.

Understand as well that if you really want to get your foot in the door, one of the best passes to Sony Online Entertainment is to join our Quality Assurance or Customer Service teams. You start out at a fairly low wage, but it gives you direct access to everyone in the company and if you prove yourself there I can guarantee you your manager in CS or QA will recommend you for position when they come up.” See the full clip here:

Share

Game Careers .BIZ – Video Games School, Jobs in Gaming.

Tags: , , , , , , , , , , ,

Seb Canniff, Development Director for Sony in London talks to Game Careers at Develop in Brighton

Posted in Video Game Programming on October 26th, 2011 by Admin

Seb Caniff, Development Director for the London Studios of Sony Computer Entertainment Europe, talks to David Smith of Game Careers and Interactive Selection at Develop in Brighton.  Seb manages and guides the production discipline in the studio, as well as developing and tracking the overall studio budgets, schedules and staffing plans. This covers projects such as SingStar, EyePet, EyeToy, Digital Comics, Playstation Move franchises, as well as a number of unannounced titles.

His career in games began at Argonaut Games Plc. where he produced the first two Harry Potter games and various other titles including I-Ninja. Seb joined London Studio early in 2005 to help with the completion of Gangs of London on PSP. He has since worked on the Getaway and EyeToy Franchises and now has a full-time, cross-studio role. In his 10+ years in games, he has produced more than 10 games, which have sold more than 10 million units in total.

Prior to doing the good, honest work of making games, Seb was involved in various entrepreneurial activities, from being a record producer/club promoter and DJ, to labouring on building sites. He studied Medicine in London and has a Psychology degree from Bristol University. He makes the most of his spare time with his wife and 4 children. His advice for people thinking of applying for a production job in a company like Sony:

“For production, your CV should be immaculate…if you can’t produce a clear and coherent, and well laid out CV you won’t get past that stage. In terms of a Producer, we would particularly look for someone with a desire to get things done, a completer finisher type person. Someone with a desire to drive efficiency and make things better. A good communicator…there was big study where they found 70% of a project’s success is down to the communication skills of the project manager, and only 30% is down to their ability to write a schedule or fill out excel spreadsheets etc. Communication is very important, so the interview is very important.” See the full clip here:

Share

Game Careers .BIZ – Video Games School, Jobs in Gaming.

Tags: , , , , , , , , ,

Apple’s Tech Talk World Tour, Twitter on iOS 5, and more in this week’s mobile news

Posted in IPhone App Programming on October 23rd, 2011 by Admin

Apple is planning the ‘Tech Talk World Tour‘ for iOS 5 developers. It will kick-off on November 2nd in Berlin.

If you dislike the ‘Newsstand’ app in iOS 5 (like me) Lifehacker has a trick to hide it.

The ‘Avengers’ movie due out next year has some scenes shot with an iPhone.

Verizon sells a whopping 2 million iPhones in the 3rd quarter of 2011.

Twitter integration in iOS 5 has tripled their sign-ups.


Mobile Orchard

Tags: , , , , , , , , , ,

Introducing the Microsoft “Roslyn” CTP

Posted in Visual Basic on October 22nd, 2011 by Admin

(Begin dramatic movie trailer music, slow PowerPoint slide show with cliché sound effects)

  • October 2006 –VB Architect-emeritus Paul Vick responds via his blog to question by some completely random VB customer named Anthony about bootstrapping the VB compiler (rewriting it in VB), admits no definite plans yet but says that “one thing that would be nice about a managed compiler would be opening up the services to other tools…”
  • April-May 2007 – Paul Vick begins to open up on his blog about forward looking internal plans to make a hostable/scriptable future version of Visual Basic using a managed component written in VB.
  • 2008-2009 – Other stuff happens
  • October 2010 – At PDC 10 Technical Fellow Anders Hejlsberg gives update on “Roslyn” project (formerly known as compiler-as-a-service)
  • May 2011 – In a VB Team blog post celebrating Visual Basic’s 20th year at Microsoft PM Anthony D. Green writes of great anticipation about VB’s future, including a complete compiler rewrite and a new set of managed APIs built on top of the new compiler
  • September 2011 – At BUILD Technical Fellow Anders Hejlsberg demos C# Interactive and Scripting built using the Roslyn APIs, anticipates eminent release of preview bits.
  • October 2011 – Microsoft releases the Roslyn CTP – <–YOU ARE HERE

OK, maybe I have a flair for the dramatic but that’s because today is such a dramatically exciting day. After years of foreshadowing, and mentioning, and updating on our part I’m thrilled to announce on behalf of the united Visual Basic & C# Languages Team the availability of the Microsoft “Roslyn” CTP. This early preview represents an incredible milestone for us in a years-long process of bootstrapping both languages and providing a rich set of APIs exposing a host of compiler analyses and services.

And, there’s more goodness to the Roslyn project than just what you can do with the new compilers alone. We’re also previewing a powerful set of Language Services APIs and extensibility points to allow 3rd parties to do amazing things inside Visual Studio using the compiler APIs like creating custom code issues and quick-fixes and even writing custom refactorings.

But wait, there’s more. If you download the CTP today we’ll throw in a preview of what we’re thinking about for an Interactive (REPL) window experience in VB and C#. The VB Interactive window isn’t quite baked yet for this CTP so we’re holding that goodness in reserve for a future release. But in the meantime you should play with the C# Interactive window anyway and let us know what you like, what you don’t like, and what you think might be different from C# that is important to you for the unique VB Interactive experience.

Next steps:

  • Where you can learn more and get it: http://msdn.com/roslyn
  • What you should do with it: Make code-smart tools, play with the Interactive window
  • Where you should send your feedback: Roslyn Forums for discussions, Connect for bugs, #RoslynCTP for Twitter shout-outs.
  • What you should know before sending feedback: That this is a technology preview and that it has known limitations. The API generally looks the way we think it should look but not all of either language is implemented at this time (see the Forums for a list of known limitations and unimplemented language features).

The CTP includes a wealth of documents and samples to get you started using Roslyn, but keep a look out on this blog (and the Roslyn homepage) for more posts exploring the Roslyn APIs – including a series of posts starting this month by yours truly.

 

Happy Experimenting!

 

Anthony D. Green
Program Manager
Visual Basic & C# Languages Team 


The Visual Basic Team

Tags: , ,

Dr Malte Behrmann, General Secretary of the European Game Developer Federation talks to Game Careers

Posted in Video Game Programming on October 21st, 2011 by Admin

Dr Malte Behrmann, General Secretary of the European Game Developer Association (EGDF) talks to David Smith of Game Careers and Interactive Selection at GDC Europe in Cologne. Malte is an attorney based in Berlin. After law studies in Bonn and Munich, he pursued Audiovisual Communication Management at Valenciennes, France. Malte has led legal & development affairs at Pix.Co, a Korean animation studio, and currently teaches international co-production and film funding law in Valenciennes. Besides his legal and university work, Malte lectures at Games Academy in Berlin, and in different institutions in France.

Malte co-founded the German National Association of Game Developers (GAME e.V.).  As general secretary of the European Game Developer Federation (EGDF), he works actively on game development issues at the European level.   The EGDF represents some 600 studios based in Austria, Denmark, Finland, France, Germany, Italy, Norway, Spain, and the United Kingdom, which together employ about 17,000 people. The European computer and video games industry, including distributors and students in game educations, encompasses almost 100,000 individuals. Malte is also the author of two books, “Kino & Spiele, Offentliche Forderung der Entwicklung von Computerspielen” (ISBN 3898214699) and “Filmfoderung im Zentral – und Bundesstaat.”

His advice for people looking to apply for a job in the games industry: “I think the games industry is becoming more and more mature. We saw more and more professionals, we need a lot of people. We need lots of people so don’t hesitate to come to the games industry. But if you are a gamer and want to work in the games industry just because you love games, that is not enough. You need also to have a professional background.” See the full clip here:

Share

Game Careers .BIZ – Video Games School, Jobs in Gaming.

Tags: , , , , , , , , ,

Hendrik Klindworth, Managing Director of InnoGames in Germany, talks to Game Careers

Posted in Video Game Programming on October 20th, 2011 by Admin

Hendrik Klindworth, Co-founder and Managing Director of InnoGames in Hamburg in Germany, talks to David Smith of Interactive Selection and Game Careers at GDC Europe. Hendrik began to programme when he was 14 years old and entered the browser game sphere in 2003, when he created the game Tribal Wars together with his brother Eike Klindworth and his school friend Michael Zillmer. Today, Tribal Wars is one of the most successful browser games, with 40 million registered users from nearly 200 countries. InnoGames was founded in 2007 as a consequence of this huge success. Hendrik studied IT with a focus on Information Systems and Software Engineering in Oldenburg, Germany and has remained a passionate player with Age of Empires 2 as his all-time favourite. His advice for those thinking of applying for a job at InnoGames:

“You should look at what we are doing right now for products, maybe play some of our products. Look at our website, what we think, what we do. If you think you fit the company, then you should apply and express why you want to work for InnoGames.” See the full clip here:

Share

Game Careers .BIZ – Video Games School, Jobs in Gaming.

Tags: , , , , , , , ,

Sam Martin, Head of Technology at middleware developer Geomerics, talks to Game Careers

Posted in Video Game Programming on October 19th, 2011 by Admin

Sam Martin, Head of Technology for middleware developer Geomerics in Cambridge in the UK talks to David Smith of Interactive Selection and Game Careers at GDC Europe. In his current role, Sam works on expanding and developing the Enlighten product suite, while considering new technologies and research suitable for use in the games and graphics industry.

In a previous relationship with computational geometry, he developed the navigation system behind Lionhead’s Black & White 2. There was also a fling with Lionhead’s early core tech team, and he doesn’t forget the good old times he had with Intrepid and Kuju London. His advice for those thinking of applying to a company like Geomerics:

“The simplest thing is to come and talk to us. If you are new to the industry, the singly best thing you can do is have some item, some project, something you can show to people that differentiates you from everybody else. So many job seekers will come out of university with nothing but their CV, and everybody is in the same position. But if you are a programmer you can write some code, and as hard as it may seem to be squeeze alongside finishing your degree. It doesn’t have to be very big and complicated, just something that’s well polished, something that says I can actually do this, I’m not that big a risk. And show enthusiasm, and the only way to show enthusiasm is to do something beyond your CV. We always look for people who show they are able to do that little but more.” See the full clip here:

Share

Game Careers .BIZ – Video Games School, Jobs in Gaming.

Tags: , , , , , , , ,