C++ nach C# Portierungen

Portierungen sind eine schöne Sache wenn man sich die Zeit vertreiben möchte ;) Bei der Portionierungen von C/C++ nach C# wird dabei immer wieder Dinge sehen die Schema F betreffen wie z.B. bestimmte Datentypen:

unsigned int -> uint
unsigned -> uint
unsigned char -> byte
std:string -> string
size_t -> Int64

Andere sehr beliebte Sachen sind Kollektionen wie Listen oder die Vektorklasse. Aus Dingen wie:

std::vector Things;
std::list Things();

wird dann meist immer ein:

List<Thing> Things;

Die Map:

std::map<unsigned short, unsigned> nodes;

wird dabei durch ein Dictionary ersetzt:

Dictonary<unsigned short, unsigned> nodes;

Immer wieder schön sind die Typedefs wie z.B.

typedef std::vector<Account> Accounts;

welche bei mir dann auch in eine Liste umgewandelt werden, an den Stellen an denen sie benutzt werden:

List<Account> Accounts;

Beim portieren von Klassen werden Header und C Datei in eine gemeinsame Datei geworfen und die Doppelungen entfernt. Aus den Klassenfunktionen aller:

void Thing::MakeFoo(int value)

wird dabei ein:

void MakeFoo(int value)

Bei While Schleifen wird aus einem:

while (message.getUnreadLength())

ein

while (message.getUnreadLength()!=0)

Aus einem Vergleich:

if(!receiver)

wird ein

if (receiver!=null)

Iteratoren sind auch immer wieder schöne Sachen. Aus

for (ChatChannels::const_iterator i = mChatChannels.begin(), i_end = mChatChannels.end());

wird ein:

foreach(ChatChannel channel in mChatChannels)

Sicherlich gibt es auch noch andere Schema F Konstrukte, dies sind allerdings die bei mir am häufigsten vorkommenden.

Weitere Informationen gibt es unter:
http://stackoverflow.com/questions/3659044/comparison-of-c-stl-collections-and-c-sharp-collections
http://stackoverflow.com/questions/6274878/what-is-c-time-t-equivalent-for-c-sharp

Quellcodeumwandlung

Manchmal ist man als Entwickler genötigt, Quellcode von einer Sprache in eine andere zu übersetzen. Ich wollte gestern einen Visual Basic.NET Quelltext in sein C# Pendant übersetzen. Da der Quelltext doch etwas länger war und ich mir nicht unnötig viel Arbeit machen wollte suchte ich einen automatisiert Methode um das ganze zu machen. Gestoßen bin ich dabei auf den Snippet Converter von Sharpdevelop. Er ist in der Lage C# zu VB.NET, VB.NET zu C#, C# zu Boo und VB.NET zu Boo umzuwandeln.

Sehr hilfreich dieses Tool. Zu finden ist das ganze unter http://codeconverter.sharpdevelop.net/SnippetConverter.aspx.

Status des GSoC Projektes „Speech Recognition in Openmoko“

In dem Google Summer of Code Projekt „Speech Recognition in Openmoko“ geht es um die Entwicklung einer Anwendung zur Spracherkennung. Geplant ist das diese Anwendung erst vom User trainiert werden muss und anschließen das macht was der User ihm sagt :)

Es geht dabei nicht um eine ausgewachsene Spracherkennung sondern um eine simple Erkennung welche, ein gesprochenes Wort erkennen soll und mit einem Wörterbuch, in welchen 5 bis 10 Wörter stehen, vergleicht und feststellt welches Wort gemeint ist. Dazu soll das Hidden Markov Modell implementiert werden.

Zur Zeit testet der Autor die Hidden Markov Implementation. Seine nächsten Schritte bestehen nun darin den Quelltext auf die Openmoko Plattform zu portieren und das ganze auf einem echten Freerunner zu testen.

Weitere Informationen gibt es unter:
https://svn.projects.openmoko.org/svnroot/speech/
http://code.google.com/soc/2008/openmoko/appinfo.html?csaid=B631058E670ECFAC
http://saurabh1403.wordpress.com/