Zum sechsten Mal hat IEEE Spectrum seine alljährliche Übersicht der am meisten genutzten Programmiersprachen vorgestellt. Dabei wurden neben einem Allgemeinen separate Rankings für Web-, Desktop-, Mobile- und Embedded-Anwendungen präsentiert. Während Python und C weiter dominieren, stellt ein anderer C-Ableger den größten Verlierer der Rangliste dar.
Windows 10 feiert 5. Geburtstag: Am 29. Juli 2015 erschien die aktuelle Iteration des weltweit verbreitetsten Betriebssystems. Nach Aussage von Microsoft soll es „das letzte Windows“ sein: Das Betriebssystem wird als Service stetig mit Updates aktualisiert und erneuert. Anlass für einen Rückblick auf die nun bald 35-jährige Geschichte der Betriebssystemsfamilie.
Mit OpenVX 1.3 ist nun eine starke Bildverarbeitungs-API für das Raspberry Pi verfügbar. Die quelloffene, lizenzgebührenfreie API der Khronos-Gruppe sorgt für wesentlich bessere Grafikeigenschaften des Einplatinenrechners.
Diese Programmiersprache ist älter als die Diskette, aber aus vielen betriebswirtschaftlichen Anwendungen immer noch nicht wegzudenken: COBOL wird dieser Tage 60 Jahre alt. Das hohe Alter der Sprache bringt heutzutage viele Probleme mit sich – gerade was Modernisierung und Digitale Transformation betrifft.
Einem von Siemens beauftragten Softwareentwickler drohen zehn Jahre Haft: Der Programmierer hatte Logikbomben in seinen Auftragscode eingebaut, so dass das Unternehmen ihn regelmäßig neu beauftragen musste. Der Vorfall wirft Fragen über Stellen- und Finanzwert von Code auf.
Zwei Abstürze in nur fünf Monaten – welche Lehren lassen sich aus den verunglückten Boeing 737 MAX ziehen? Ein Interview mit Henning Butz, Systemtechniker und Experte für Systems-Engineering in der Avionik.
Zwei Abstürze in nur fünf Monaten, 346 Tote – das ist die tragische Bilanz, die derzeit dafür sorgt, dass mit der Boeing 737 MAX eines der modernsten Flugzeuge weltweit nicht starten darf. Eine Software zur Verbesserung der Flugsteuerung soll Schuld tragen. Wie kann so etwas heute noch passieren?
Auch 50 Jahre nach der ersten Fachkonferenz zum Thema Software Engineering ist der Bereich der Softwareentwicklung weiter im Wandel. Im Interview spricht Professor Jochen Ludewig über die Herausforderungen des Gebiets – von den 1960er Jahren bis heute.
In den 1960ern beginnen Computer, die Wirtschaft zu erobern. Doch die Softwareentwicklung steckt noch in den Kinderschuhen und verschlingt oft mehr Geld als die zugehörige Hardware. Eine NATO-Tagung in Garmisch-Partenkirchen sucht einen Ausweg: Die Computerlandschaft braucht Software-Engineering!
Vor 18 Jahren schickte Microsoft sein ursprüngliches Betriebssystem MS-DOS offiziell in den Ruhestand. Nun stellt das Softwareunternehmen zwei frühe Versionen des OS auf GitHub zur Verfügung: Der Quellcode zu den MS-DOS Releases 1.25 und 2.0 steht dort unter Open-Source-Lizenz bereit.
„Free Unix!“: Mit diesem Aufruf rief der Hacker und Programmierer Richard Stallman am 27. 09. 1983 zur Entwicklung eines quelloffenen Betriebssystems auf. OS, Kernel, Compiler – der Quellcode der gesamten Software sollte offen einsehbar sein – und vor allem: frei!
Mit Projekt Brainwave bietet Microsoft eine FPGA-basierte Echtzeit-KI-Plattform in der Azure Cloud, mittels der Berechnungen mit möglichst geringer Latenzzeit durchführbar sein sollen. Was war ausschlaggebend für die Hardware-Wahl, und welche KI-Strategie verfolgt Microsoft? Ein Interview mit Doug Burger, Entwickler im Brainwave-Team.
Moderne Hardwarebeschleuniger haben den praktikablen Einsatz von Künstlicher Intelligenz in IT und Industrie in greifbare Nähe gerückt. Doch welche Technologie eignet sich hierfür besser: GPUs, DSPs, programmierbare FPGAs oder eigene, dedizierte Prozessoren? ELEKTRONIKPRAXIS hat Hardwarehersteller und Embedded-Experten zu diesem Thema befragt.
Intel gibt weiter Vollgas auf dem eingeschlagenen Kurs in Sachen maschinelles Lernen und Künstliche Intelligenz. Mit CognitiveScale, AEye und Element AI investiert der Chiphersteller in drei weitere Unternehmen, die sich speziell auf die KI-Entwicklung verlegt haben.
Microsoft hat für seine Cloudplattform Azure IoT die Demo eines Raspberry Pi Simulators veröffentlicht. Anwender können hierin JavaScript-Code zur Ansteuerung simulierter Add-Ons wie einer LED oder Sensoren über den Single Board Computer testen.
Gehackte IoT-Geräte als Zwangsarbeiter beim Bitcoin-Mining: Das 2016 erstmals bekannt gewordene Botnetz Mirai, dass vorwiegend IoT-Geräte attackiert, hat hinzugelernt. Entsprechende Elektronik wie Router oder IP-Kameras, die infiziert und Teile des Botnetz wurden, wird nun auch herangezogen, um Währung für fremde Hacker zu generieren.
Eine Woche nach dem gescheiterten Versuch, den Marslander Schiaparelli sicher auf dem Mars abzusetzen, suchen ESA und Roskosmos weiter nach den möglichen Ursachen. Nun scheint ein Schuldiger gefunden: Ein Softwarefehler könnte für den Absturz des Landegeräts verantwortlich sein.
Einige der größten Techgiganten rücken für die Entwicklung künstlicher Intelligenz näher zusammen: In der gemeinnützigen Organisation "Partnership on AI" wollen fünf der namhaftesten IT-Unternehmen ihre Kräfte bündeln und Forschungsdaten austauschen. Einer der größten Akteure auf dem Gebiet hält sich aber aus der Allianz heraus.
Über die Jahre etabliert sich Windows XP als beliebtes Betriebssystem. Die Entwicklung des folgenden 6. Kernels verläuft dagegen äußerst wechselhaft. Was bedeutet das für Windows 10? Letzter Teil der Windows-Retrospektive.
Während Millionen Anwender die DOS-basierte Windows 9x-Reihe nutzen, baut Microsoft parallel das alte OS/2-Projekt zu einer parallelen Windows-Familie aus – auch abseits der Intel-Prozessoren. Erst Jahre später werden beide Linien in der bislang populärsten Version vereint. Teil 3 der Windows-Retrospektive.
Mit Windows 95 verschmolz Microsoft MS-DOS und Windows zu einem Betriebssystem - und löste eine kleine PC-Revolution aus. Teil 2 der Windows-Retrospektive widmet sich dem Durchbruch von Windows als meist genutztes OS – bis hin zum ersten Flop der Familie.
Am Anfang was es 'nur' eine GUI: Als die erste kommerziell erhältliche Version von Microsoft Windows am 20. November 1985 erstmals in den freien Handel gelangte, trug diese kurioserweise die Versionsnummer 1.01. Bis dahin hatte die Software bereits einen eher holprigen Weg hinter sich.
Der Umstieg von Single- auf Multicore-basierte Designs in Embedded Systemen verspricht neue Chancen, bringt aber auch Herausforderungen und Probleme. Die Experten der Podiumsdiskussion auf dem ESE Kongreess 2015 sind sich in einem Punkt einig: Multicore steht erst am Anfang - und erfordert neue Herangehensweisen.
Die gemeinnützige Organisation Code.org hat ein interaktives Tutorial entwickelt, das Schülern spielerisch den Einstieg in JavaScript-Programmierung erleichtern soll – mit Hilfe von Figuren aus dem aktuellen Star-Wars-Film.
Ein eingebettetes System (englisch embedded system) ist ein binärwertiges digitales System (auch Computersystem genannt), das in ein umgebendes technisches System eingebettet ist und mit diesem in Wechselwirkung steht. Dabei übernimmt der Rechner meist Überwachungs-, Steuerungs- oder Regelungsfunktionen, ist oft aber auch für eine Form der Daten- bzw. Signalverarbeitung zuständig.
MQTT ist derzeit eines der populärsten Kommunikationsprotokolle für IoT-Anwendungen. Jede Kommunikation findet über einen zentralen Verteiler, den so genannten MQTT Message Broker, statt. Dieser Beitrag stellt die erste quelloffene MQTT-Broker-Implementierung für den WiFi-fähigen Controller ESP8266 vor.
Die Einführung der Standards C++11/14/17 hat C++ merklich modernisiert. Nebst Sprachfeatures wie smart-pointers, move semantics und varaidic templates gibt es auch noch eine ganze Menge an kleineren Erweiterungen, die oftmals unter dem Radar fliegen. Aber gerade diese Features können helfen, C++ Code merklich zu vereinfachen und wartbarer zu machen.
Unter Echtzeit versteht man die Anforderung an ein Rechensystem, innerhalb einer kürzesten definierten Zeitspanne korrekt zu reagieren. Weitere wichtige Konzepte sind "harte" und "weiche" Echtzeit sowie Ereignissteuerung und Zeitsteuerung.
Ohne Datentypen funktioniert in C nichts. Elemente wie Arrays und Zeiger bzw Pointer oder Strukturen zählen zu den wichtigsten Bausteinen der Programmiersprache. Zum Abschluss der syntaktischen Elemente von C wollen wir daher auf diese Dateitypen näher eingehen - und auch den Präprozessor zur Code-Vorverarbeitung kurz erklären.
MQTT hat sich in den letzten Jahren zum Standardprotokoll für die IoT- bzw. M2M-Kommunikation von Geräten und Applikationen entwickelt. Doch was hat es mit dem Protokoll auf sich und wie setzt man es ein?
Echtzeitbetriebssysteme arbeitem unter knallharten Bedingungen: Begrenzte Ressourcen, untypische Schnittstellen, strikte Anforderungen an die Bereitstellung von Tasks. Diese Einführung erklärt die wesentlichen Konzepte des Herzstücks vieler Embedded-Systeme.
In C und C++ kann es sehr komfortabel sein, Speicherblöcke nach Bedarf zu allokieren und wieder freizugeben. Der Umgang mit einem dynamischen Speicher kann jedoch problematisch und ineffizient sein. Bei Desktop-Anwendungen mit ihrem frei verfügbaren Speicher können diese Probleme ignoriert werden. Für Embedded-Anwendungen – meist Echtzeitapplikationen – ist das aber keine Option.
Für das Raspberry Pi sind zahlreiche Betriebssysteme vorhanden, die jedoch Echtzeitanforderungen in der Regel nur unzureichend erfüllen. Mit dem PREEMPT_RT Patch können Sie auf dem Einplatinenrechner dagegen Echtzeiteigenschaften erreichen.
Aufwandsschätzung ist immer dann einfach, wenn man etwas schon mal getan hat. Was aber wenn alles neu ist? Was, wenn die Information über das Projekt nur dürftig ist? Der Beitrag zeigt verschiedene Schätzmethoden auf, bekannte und weniger bekannte, zusammen mit weichen Faktoren, die man beachten sollte.
Yocto hat sich auf dem Embedded-Markt weitgehend als Standardlösung etabliert, wenn es um die Distribution von Linux in Form von Board-Support-Packages (BSPs) geht. Doch was hat es damit genau auf sich und was gibt es zu beachten, wenn man Yocto für seine Embedded-Linux-Lösung einsetzen möchte? Eine kleine Übersicht.
Software, die auf Embedded Systemen zum Einsatz kommt, wird in der Regel nicht auf diesen entwickelt. Trotzdem muss sie zuverlässig geprüft und von Fehlern befreit werden. In Linux ist hierfür bereits ein nützliches Tool integriert: Der GNU Universal Debugger (GDB).
Canonical hat einen Ubuntu 20.10 Build mit optimierten Raspberry Pi-Images für Desktop und Server speziell für Lernende, Erfinder, Lehrkräfte und Unternehmern herausgegeben. Ebenfalls enthalten sind Micro Clouds, eine neue Klasse von Infrastruktur für On-Demand-Computing am Edge.
Die Erwartungen an Softwareentwickler sind in den letzten Jahren rasant gestiegen: Immer schneller müssen sie qualitativ hochwertige, fehlerfreie Lösungen entwickeln und auf dem hart umkämpften Markt bereitstellen. DevOps-Praktiken können ihnen bei der Bewältigung dieser Herkules-Aufgabe helfen. Doch die unternehmensweite Implementierung dieser Prozesse in hybride IT-Umgebungen stellt IT-Experten vor zahlreiche Herausforderungen.
Mit Linux können Systeme mit harten Echtzeit-Anforderungen einfach umgesetzt werden. Doch welcher Ansatz ist der richtige? Und welche Latenzzeiten können damit erreicht werden?
2017 wurde Mentor Graphics von Siemens übernommen, nun geht der Name endgültig im neuen Dachkonzern auf: Ab dem 1. Januar 2021 firmiert das Unternehmen nun als Siemens EDA. Die Schwerpunkte des Electronic Design Automation Zweiges sollen fortan vornehmlich auf der Verifikation Digitaler Zwillinge und Validierungstechnologien liegen.
Zahlreiche Unternehmen steigen inzwischen für die Embedded-Firmware-Entwicklung von C auf C++ um. Mit C++ lässt sich Firmware entwickeln, die sicherer und expressiver ist. Doch einige Features können sich als zweischneidiges Schwert entpuppen.
Continuous Integration und automatisierte Tests sind erprobte Mittel, um die Qualität von in C oder C++ geschriebenem Code zu fördern. Gerade den automatisierten Unit-Tests kommt große Bedeutung zu, garantieren sie doch als Basis der Testpyramide auch die Basis der Qualität. Ein Beispiel aus der Entwicklerpraxis.
Wenn Linux in einem Embedded System eingesetzt werden muss, sind die Ressourcen deutlich beschränkter als in einem Desktop- oder Server-System. Worauf kommt es im Embedded Linux hinsichtlich Kernel, Bootloader oder Root-Filesystem genau an?
Wie geht man beim Programmieren im C am geschicktesten vor, um stabilen, leicht testbaren und vor allem sicheren Code zu erhalten? Hier sind 10 grundsätzliche Codierungsregeln, die sich Entwickler auf dem Weg zu sicherer Software verinnerlichen sollten.