communityWir suchen ständig neue Tutorials und Artikel! Habt ihr selbst schonmal einen Artikel verfasst und seid bereit dieses Wissen mit der Community zu teilen? Oder würdet ihr gerne einmal über ein Thema schreiben das euch besonders auf dem Herzen liegt? Dann habt ihr nun die Gelegenheit eure Arbeit zu veröffentlichen und den Ruhm dafür zu ernten. Schreibt uns einfach eine Nachricht mit dem Betreff „Community Articles“ und helft mit das Angebot an guten Artikeln zu vergrößern. Als Autor werdet ihr für den internen Bereich freigeschaltet und könnt dort eurer literarischen Ader freien Lauf lassen.
News
C++20: Überblick zur Concurrency PDF Drucken E-Mail
Geschrieben von: StarShaper   
Sonntag, den 01. Dezember 2019 um 08:21 Uhr

WinzipSeit C++11 stellt sich C++ den Anforderungen der Multicore-Architekturen. Der 2011 veröffentlichte Standard definiert, wie sich ein C++ Programm bei mehreren Threads zu verhalten hat. Dabei setzen sich die C++11 Multithreading-Fähigkeiten aus zwei Komponenten zusammen. Das ist zum einen das definierte Speichermodell, das ist zum anderen die standardisierte Threading-Schnittstelle.

Mit C++17 wird es parallele Versionen fast aller Algorithmen der Standard Template Library geben. So kann einem Algorithmus die sogenannten execution policy mitgegeben werden. Die execution policy bestimmt, ob der Algorithmus sequentiell (std::seq), parallel (std::par) oder parallel und vektorisierend (std::par_unseq) ausgeführt wird. So wird die erste und zweite Variante des sort Algorithmus sequentiell, die dritte parallel und die vierte parallel vektorisierend ausgeführt. C++20 bietet ganz neue Multithreading Konzepte in C++ an. Diese zeichnen sich im wesentlichen dadurch aus, dass sie Multithreading einfacher und damit weniger fehleranfällig machen.

Die atomaren Smart Pointer std::shared_ptr und std::weak_ptr besitzen ein konzeptionelles Problem in Multithreading Programmen. Sie teilen ihren veränderlichen Zustand. Damit sind sie natürlich implizit der Gefahr von kritischen Wettläufen und damit von undefiniertem Programmverhalten ausgesetzt. Zwar sichern std::shared_ptr und std::weak_ptr zu, dass das Inkrementieren und Dekrementieren der Referenzzähler eine atomare Operation ist und dass der Destruktor der Ressource genau nur einmal aufgerufen wird, aber sie sichern nicht zu, dass die Zugriffe auf ihre Ressourcen atomar sind. Damit räumen die neuen atomaren Smart Pointer auf. Mit Tasks in der Form von Promisen und Futuren führte C++11 ein neues Multithreading Konzept in C++ ein. Trotz ihres großen Mehrwertes besitzen sie eine große Unzulänglichkeit. Futures in C++11 können nicht komponiert werden.

 
Komprimieren und Packen: Mehr Informationsgehalt bitte PDF Drucken E-Mail
Geschrieben von: StarShaper   
Donnerstag, den 02. Januar 2014 um 18:00 Uhr

WinzipZum Versenden per Email oder zum Speichern auf USB-Stick, Diskette oder im Internet: Wenn Dateien zu groß sind, hilft das Komprimieren oder “packen” der Dateien, um sie kleiner zu bekommen. Windows und Linux unterstützen standardmäßig das ZIP-Dateiformat, mit dem man Dateien sehr leicht in ein ZIP Archiv packen kann.

1988 traf sich die internationale Standardisierungsgruppe Moving Pictures Experts Group, kurz "MPEG", in Hannover, eigentlich mit dem Ziel, Bildsignale für die heute längst vergessene Video-CD zu verkleinern. Schon das Kürzel MP in MP3, das für bewegte Bilder, also Moving Pictures, steht, lässt erahnen, dass es ursprünglich gar nicht um Musik ging. Sehr bald schon setzte sich das MP3-Verfahren aber in der Musikbranche durch. Mit MP3 war es möglich Musikdaten drastisch zu komprimieren ohne die Audioqualität nennenswert zu senken. Das war ein entscheidender Vorteil, insbesondere zu Beginn der 1990er, als das Internet nur über geringe Bandbreiten verfügte. Heute ist das MP3-Format in vielen Hardware-Playern integriert und wird von nahezu allen Abspielgeräten unterstützt.

Die Datenkompression ist in der heutigen Flut von Informationen nicht mehr wegzudenken. In fast allen Disziplinen in denen Daten archiviert oder ausgetauscht werden müssen, kommen Kompressionsverfahren zum Einsatz. Hierbei wird zwischen verlustfreier und verlustbehafteter Kompression unterschieden. Kann nun durch eine Rückkodierung die ursprüngliche Mengevollständig wiederhergestellt werden, so bezeichnet man das Verfahren als verlustfrei. Gehen jedoch durch die Umformung Informationen verloren, so dass die ursprüngliche Datenmenge nicht mehr wiederhergestellt werden kann, so bezeichnet man diese Verfahren als verlustbehaftet.

Für die Datenkompression ist Entropie von hoher Bedeutung. Sie ist ein Maß für den mittleren Informationsgehalt einer Nachricht. Jede Datenkompression ist im Prinzip ein Verfahren, mit dem Daten so reorganisiert werden, dass ihr Informationsgehalt steigt.

Weiterlesen...
 
Microsoft gibt Spezifikation für C++ AMP frei PDF Drucken E-Mail
Dienstag, den 17. April 2012 um 10:00 Uhr

C++ AmpAuf der C++-Konferenz GoingNative 2012 gab Herb Sutter, Microsofts verantwortlicher Softwarearchitekt für native Programmiersprachen, in seiner Keynote "C++11, VC++11 and Beyond" bekannt, dass sein Arbeitgeber, wie zur Vorstellung der Bibliothek im Juni des letzten Jahres versprochen, die AMP-Spezifikation (Accelerated Massive Parallelism) als freie Implementierung veröffentlicht hat.

C++ Accelerated Massive Parallelism (C++ AMP) beschleunigt die Ausführung von C++-Code, indem die Vorteile von parallel arbeitender Hardware, wie beispielsweise der Grafikprozessor (englisch Graphics Processing Unit – GPU), genutzt werden. Entwickler können künftig jede Art von Rechnerressource im System ansprechen und Anweisungen auf CPUs, GPUs und diskreten Grafikprozessoren verteilen. Neu kompiliert nutzen Programme alle Rechnerressourcen im System für parallele Datenanweisungen aus.

C++ AMP gestattet es Programme mit mehrdimensionalen Datenalgorithmen zu erstellen, so dass die Ausführung auf heterogenen Hardwaresystemen durch die Parallelisierung beschleunigt wird. Das C++ AMP-Modell beinhaltet mehrdimensionale Vektoren, Methoden zur Speichertransferierung, Indizierung und eine Bibliothek für mathematische Operationen. Mit den C++ AMP Spracherweiterungen lässt sich kontrollieren, wie Daten von der CPU zur GPU und wieder zurück transferiert werden, so dass die Leistung gesteigert wird. Stufenweise soll AMP später auch auf virtuelle Maschinen auf anderen Rechnern und Cloud-Architekturen erweitert werden.

Microsoft beabsichtigt die Bibliothek als offene Spezifikation zur Verfügung zu stellen, und wird sie dem Spezifikationsorganisation ANSI zur Standardisierung in C++ vorschlagen. Microsofts Entwicklungsumgebung für C++-Entwickler Visual Studio soll AMP ab der nächsten Version (2012) unterstützen, kündigte Sutter an. Und für C# und .NET sind ebenfalls AMP-Erweiterungen vorgesehen. Damit folgt C++ AMP dem Trend zur parallelen Programmierung, wie CUDA, eine von Nvidia entwickelte Technik, die es Programmierern erlaubt, Programmteile zu entwickeln, die durch den Grafikprozessor (GPU) auf der Grafikkarte abgearbeitet werden.

Weiterlesen...
 
Künstliche neuronale Netze (KNN) PDF Drucken E-Mail
Samstag, den 23. Juli 2011 um 20:00 Uhr

databaseKünstliche neuronale Netze (KNN) sind der Arbeitsweise des Gehirns nachempfunden und haben gegenüber einer klassischen Computerarchitektur den Vorteil, auch unvollständige oder gestörte Eingaben verarbeiten zu können. Die von neuronalen Netzen ausgehende Faszination besteht darin, dass sie in der Lage sind, in einigen Fällen Probleme von hoher Komplexität mit einfachen Mitteln zu lösen. Das biologische Pendant ist die vereinfacht dargestellte Nervenzelle (man schätzt, dass im Gehirn etwa 100 Milliarden Neuronen bzw. Nervenzellen für die Informationsverarbeitung und –speicherung zuständig sind).

In Hinblick auf eine zu untersuchende Problemstellung ist es für neuronale Netze weder notwendig genauere Untersuchungen durchzuführen, noch ein formales Modell explizit darzustellen. Auch werden keine aufwendigen Algorithmen benötigt, es wird lediglich versucht beliebige Zusammenhänge zu approximieren. Allerdings besteht auch keine Garantie für den Lernerfolg und die Lösungen können unterschiedlich sein. Je nach Anzahl der Neuronen stellt das KNN fast ausschließlich Wechselwirkungen dar.

In unserem neuen Artikel mit dem Namen "Künstliche neuronale Netze in C#" wird die Arbeitsweise von künstlichen neuronalen Netzen beschrieben und mithilfe der theoretischen Grundlagen ein Dekodier-Perzeptron entwickelt. Das einlagige Perzeptron kann mithilfe des überwachten Lernens binären Zahlen ihren Dezimalwert zuordnen. Mithilfe des Backpropagation wird anschließend eine leistungsfähige Bibliothek für künstliche neuronale Netze in C# realisiert. Unter Nutzung der Windows Presentation Foundation (WPF) wird ein grafisches Programm zur optischen Zeicherkennung (OCR) programmiert. In Verbindung mit der entworfenen Bibliothek ist das Programm in der Lage sämtliche Schriftarten zu trainieren und zu erkennen. Sogar Handschriften können antrainiert und anschließend erkannt werden.

 
We're on the Road to D'ohwhere PDF Drucken E-Mail
Donnerstag, den 02. September 2010 um 16:34 Uhr

on-the-roadSeit unserer letzten Veröffentlichung sind einige Monate verstrichen. Doch wir waren nicht untätig und haben unsere Artikel in der Zwischenzeit auf Vordermann gebracht. Neben zahlreichen Korrekturen an den Artikeln selbst, wurden auch die zugehörigen Quellcode-Pakete erweitert.

Der Artikel Advanced Encryption Standard (AES) wurde an einigen Stellen überarbeitet. Der Code wurde neu programmiert und orientiert sich nun mehr an dem originalen Artikel. Mit dem bereitgestellten Konsolenprogramm lassen sich direkt Dateien und Daten mit dem selbst implementierten AES verschlüsseln.

Auch dem Paket über die TCP/IP Socket-Programmierung in C# wurden zusätzliche Codezeilen spendiert. So wurde unter anderem ein TcpProxy hinzugefügt, der als Vermittler auf der einen Seite Anfragen entgegennimmt, um dann über seine eigene Adresse eine Verbindung zur anderen Seite herstellt.

Natürlich haben wir es uns auch nicht nehmen lassen ein weiteres Tutorial zu veröffentlichen. Mit dem Client-Server-Modell demonstriert der Autor die Funktion von Netzwerkprotokollen, die auch für Chat-Server verwendet werden. Das vorgestellte Netzwerkprotokoll erlaubt es Daten zu komprimieren und zu verschlüsseln und es kann problemlos in eigenen .NET Anwendungen verwendet werden. Für die Zukunft hoffen wir auf viele weitere interessante Artikel von unseren freiwilligen Autoren. »Wir bleiben weiter auf Kurs!«

 
Multitasking at it's best PDF Drucken E-Mail
Samstag, den 12. Dezember 2009 um 02:00 Uhr

multitaskingMultitasking, also die Fähigkeit, mehrere Tätigkeiten zur gleichen Zeit oder abwechselnd in kurzen Zeitabschnitten durchzuführen, z.B. eine E-Mail zu verfassen und gleichzeitig einem Telefongespräch zuzuhören, ist vielen Menschen seit Jahren ein Begriff. Auch in der Softwareentwicklung gibt es das Multitasking.

Bei Software versteht man unter Multitasking die Nebenläufigkeit mehrerer Prozesse, während sich Multithreading auf die Nebenläufigkeit von Bearbeitungssträngen innerhalb eines Prozesses bezieht. Die meisten modernen Betriebssysteme nutzen Threads, um Code auszuführen. Windows basiert vollständig auf Threads, so dass der Programmierer sich früher oder später mit dem Thema auseinandersetzen muss.

Die Verwendung mehrerer Threads ist die effektivste Methode, um die Ansprechempfindlichkeit in einer Anwendung zu steigern und nahezu zeitgleich die notwendigen Daten zu verarbeiten. Die Fähigkeit mehrere Arbeiten zur gleichen Zeit auszuführen, ist heute eine Voraussetzung für moderne Spiele und Anwendungen. Mehrkern-Prozessoren stellen Ihnen die Hardware dafür zur Verfügung, so dass ihre Anwendung das Optimum an Leistung und Effizienz erzielen kann.

In dem Artikel Multithreading in C# erfahren Sie alles über den Umgang mit Threads, wie moderne Betriebssysteme arbeiten und welche Gefahren bei der Programmierung auf Sie lauern. Das .NET Framework hilft Ihnen bei der Entwicklung von Multithread-Programmen mit einer Fülle an Klassen und Bibliotheken.

 
Arbeiten mit Datenbanken in .NET PDF Drucken E-Mail
Samstag, den 12. September 2009 um 22:45 Uhr

databaseDatenbanksysteme sind heute ein zentraler Bestandteil fast jedes Software-Systems. Nahezu überall müssen Informationen digital verarbeitet und gespeichert werden. Damit stellen Datenbanksysteme einen kritischen Teil vieler Unternehmen und Behörden dar.

Ob es sich dabei um Datenbanken großer Online-Händler handelt, oder um die Datenbanken von Arbeitsämtern und Restaurants. Von der Verfügbarkeit, Vollständigkeit und Richtigkeit der Daten hängt die Aktionsfähigkeit eines Unternehmens ab.

In dem neuen Artikel Datenbankanwendungen mit Microsoft SQL Server Compact erfahren Sie alles über die Erstellung von datenzentrischen Anwendungen der nächsten Generation mit dem ADO.NET Entity-Framework und Microsoft SQL Server Compact. Microsoft Visual Studio bringt alle Datenprogrammierbarkeitstechnologien von Microsoft auf hochgradig produktive, leicht bedienbare Weise zusammen. Dazu gehören auch Microsoft IntelliSense und die eingebaute Unterstützung für das ADO.NET Entity-Framework sowie für LINQ. Mit LINQ to SQL schreiben Sie Datenbankanwendungen in Zukunft schneller als jemals zuvor, direkt in Ihrer Programmiersprache. Der Artikel demonstriert die neuen .NET-Technologien aus dem Hause Microsoft anhand einer praxisorientierten Beispielanwendung in C#.

 
Das Projekt »Battleship« PDF Drucken E-Mail
Sonntag, den 10. Mai 2009 um 00:00 Uhr

mvcSeit der Veröffentlichung des letzten Tutorials auf CodePlanet sind einige Monate vergangen und so war es an der Zeit für ein neues Tutorial. Heute ist es soweit, wir präsentieren das Projekt »Battleship«. Battleship ist ein Spiel, auch Schiffe versenken, Kreuzerkrieg oder Seeschlacht genannt. Das Besondere an dem Artikel Battleship ist, dass Sie von Beginn an in die Entwicklung des Spieles involviert werden.

Battleship ist nicht einfach nur ein anderes Schiffe versenken. Es ist in Java programmiert und beruht auf modernen Entwurfs- und Architekturmustern, wie dem Model-View-Controller-Konzept. Das Spiel kann in der Kommandozeile und über eine grafische Benutzeroberfläche (GUI) gespielt werden.

Neben drei verschiedenen Computergegnern stellt das Spiel auch eine ausgereifte Netzwerkbibliothek bereit, die ein einfaches aber leistungsfähiges Peer-To-Peer-Netz generiert. So können Spieler in dem Spiel untereinander chatten oder auch gegeneinander online spielen.

Die P2P-Bibliothek lässt sich problemlos mit eigenen Netzwerkprotokollen erweitern und in andere Anwendungen integrieren.

Absofort steht das Tutorial auf http://www.codeplanet.eu/tutorials/java/57-battleship.html zum Abruf bereit. Den Anhang mit dem Quelltext zum Projekt finden Sie in gewohnter Weise in der Download-Rubrik des Forums.

 
<< Start < Zurück 1 2 3 4 Weiter > Ende >>

Seite 1 von 4