Hilfreiche Ratschläge

Softwareentwicklung für Einsteiger

Pin
Send
Share
Send
Send


Ich möchte einige Tipps für diejenigen erhalten, die ein guter Entwickler von eingebetteter Software werden oder ihre Arbeit in diesem Bereich verbessern möchten.

Was muss ich über Hardware und Software wissen?

Welche Bücher werden am meisten empfohlen? Bloggen

Wie kann ich mich von einem aufstrebenden Amateur zu einem exzellenten Profi entwickeln?

Bisher waren alle Antworten gut, aber ich werde zwei Cent hinzufügen.

Hier ist eine Wiederholung einiger der Tipps und einige zusätzliche Tipps:

  • Lernen Sie C: die wichtigste Hardware-Sprache, die noch portabel ist (zu wenig). Lernen Sie es nicht nur, sondern werden Sie ein Experte in all seinen Funktionen, wie z. B. Flüchtigkeit und warum es wichtig ist, Gerätetreiber zu schreiben.
  • Beginnen Sie mit einem guten Entwicklungskit wie Arduino, aber erkunden Sie, wie bereits erwähnt, andere Architekturen, sobald Sie es spüren. Glücklicherweise gibt es mehrere Arduino-kompatible Boards, die mit anderen Prozessoren gebaut wurden, sodass Sie dasselbe Design auf einem anderen UC neu schreiben können, um Ihr gesamtes Design nicht zu beeinträchtigen und etwas Neues zu fühlen.
  • Während der Trainingsphase können Sie das Rad für Gerätetreiber oder andere Codefragmente neu erfinden. Fügen Sie dort nicht einfach den Treibercode eines anderen Benutzers hinzu. Es ist sinnvoll, das Rad beim Lernen neu zu erfinden.
  • Fordern Sie sich heraus, Ihren Code in Bezug auf Geschwindigkeit und Speichernutzung effizienter umzuschreiben.
  • Bekanntschaft mit verschiedenen Architekturstilen eingebetteter Systeme. Beginnen Sie mit der grundlegenden Interrupt- / Hintergrundschleifenverarbeitung, wechseln Sie zu Hintergrund-Schedulern und dann zu Echtzeit-Betriebssystemen.
  • Holen Sie sich eine gute Versionskontrolle! Ich selbst bevorzuge Mercurial.
  • Abonnieren Sie sogar mehrere kostenlose Websites zur Quellcodeverwaltung, z. B. Sourceforge.net oder Bitbucket.org, um Ihr Projekt zu hosten, selbst wenn Sie nur daran arbeiten. Sie speichern Ihren Code, sodass Sie sich keine Sorgen machen müssen, dass Ihre Festplatte versehentlich abstürzt und alles zerstört! Die Verwendung von verteiltem VCS ist sehr praktisch, da Sie die Änderungen auf Ihrer Festplatte überprüfen und dann auf die Host-Site hochladen können, wenn Sie bereit sind.
  • Lernen Sie Ihre Werkzeuge für jeden Chip, an dem Sie arbeiten! Es ist sehr wichtig zu wissen, wie der Compiler eine Assembly erstellt. Sie müssen verstehen, wie effizient der Code ist, da Sie möglicherweise die Assembly neu schreiben müssen. Es ist auch wichtig zu wissen, wie die Linker-Datei verwendet und die Ausgabe der Speicherkarte interpretiert wird! Wie sonst finden Sie heraus, ob genau die Routine, die Sie gerade geschrieben haben, zu viel ROM / Flash verursacht!
  • Lerne neue Methoden und experimentiere mit ihnen in deinen Projekten!
  • Nehmen Sie beim Debuggen nichts an. Probieren Sie es aus!
  • Erfahren Sie, wie Sie zum Schutz vor Fehlern und zum Testen von Annahmen programmieren (z. B. mithilfe von assert).
  • Integrieren Sie nach Möglichkeit Debugging-Informationen in Ihren Code, um z. B. den Speicherverbrauch anzuzeigen oder den Code mithilfe von Timern zu profilieren, oder verwenden Sie die freien Pins auf der Benutzersteuerung, um die Interrupt-Verzögerung im O-Bereich zu schalten und zu messen.

Hier sind ein paar Bücher:

  • Pragmatische Programmierer Andrew Hunt und David Thomas - mehr oder weniger notwendige Lektüre für jede praktische Softwareentwicklung
  • Praktisches Arduino
  • Embedded-Programmierung Michael Barr
  • Embedded Systems Bausteine ​​von Jean Labrosse
  • Der Echtzeit-MicroC OS II-Kern von Jean Labrosse, eine hervorragende Einführung in RTOS im Allgemeinen mit seinem Betriebssystem.
  • David Simon Firmware Tutorial - Eine gute Einführung in die Firmware

Softwareentwicklung und Analogie

Zum einen gibt es Programmierbeispiele auch im Alltag. Das Universum ist ziemlich vorhersehbar: Tag und Nacht, Jahreszeiten, Sonnenaufgang und Sonnenuntergang. Menschen durchlaufen Phasen wie das Treffen eines neuen Tages, den Besuch einer Schule, einer Universität oder der Arbeit. Wir erhalten Anweisungen von Vorgesetzten und Lehrern. Es gibt auch Rezepte, nach denen Sie ein Gericht kochen können.

Zweitens funktioniert der darin eingebaute Code jedes Mal, wenn wir Geräte verwenden, bereits im Hintergrund. Das Verschieben des Cursors von einem Teil des Bildschirms zu einem anderen scheint eine einfache Aufgabe zu sein, aber tatsächlich sind viele Codezeilen für diesen Prozess verantwortlich. Wenn Sie in Google Text & Tabellen nur Buchstaben eingeben, wird der Code im Hintergrund ausgeführt. Dies sind normale alltägliche Prozesse, die für alle IT-Geräte gelten.

Computerprogramme sind auch Code. Es ist jedoch besser, das Wort "Codes" nicht zu verwenden: Es ist unprofessionell.

Programmiersprachen lernen

Um mit Maschinen zu kommunizieren, die binär sprechen, lernen wir Sprachen, die so nah wie möglich an unseren eigenen sind, nämlich Programmiersprachen. Sie sind klar strukturiert und müssen sorgfältig studiert werden.

Es gibt hohe und niedrige Werte. Hohe Programmiersprachen sind von der Maschinensprache weiter entfernt als niedrige Programmiersprachen. Dieses "Nächste" wird üblicherweise genannt Abstraktion.

Ein Computer braucht ein Verständnis unserer menschlichen Sprache. Dazu benötigen Sie einen Übersetzer.

Definition von Übersetzern

Quellcode bezieht sich auf Code, der in der ausgewählten Programmiersprache geschrieben wurde. Die Übersetzer sind für die Konvertierung des Quellcodes in verantwortlich Maschinensprache (Diese Einsen und Nullen). Wir können auf Binärdateien verweisen, wie zum Beispiel auf Objektcode, ein Programm oder den heute gebräuchlichen Begriff - eine Anwendung.

Übersetzer können sein:

  • Dolmetscher
  • Compiler
  • Hybriden von Dolmetschern und Compilern,
  • Assembler.

Dolmetscher

Damit die Softwareentwicklung erfolgreich ist, müssen Sie verstehen, dass Sprachen interpretiert werden können. In diesem Fall verarbeitet der Übersetzer den Quellcode zeilenweise und startet im fertigen Programm (Anwendung) auch jede Zeile. Dies bedeutet, dass der interpretierte Quellcode solange ausgeführt wird, bis ein Fehler auftritt. Dann hört der Interpreter auf, solche Fehler zu melden.

Python ist ein gutes Beispiel für eine interpretierte Programmiersprache.

Compiler

Compiler arbeiten anders. Sie konvertieren den Quellcode vollständig durch Kompilieren in Binär. Dann wird Binärcode ausgeführt. Wenn in der Originalversion Fehler aufgetreten sind, werden diese beim Kompilieren erkannt und markiert. Dies unterbricht den Prozess der Erzeugung von Binärcode.

Die Dolmetscher arbeiten zeilenweise und führen eine Zeile aus, bevor sie zur nächsten übergehen. Der Compiler übersetzt alle Programmzeilen in eine Datei (binär) und führt sie vollständig aus.

Erinnern Sie sich an die Definition eines Computerprogramms? Dies ist eine Folge von Anweisungen für einen Computer. Das Ausführen eines Programms wird normalerweise als Prozess bezeichnet. Diese Software verwendet bestimmte Ressourcen in einem Computersystem oder einem anderen Gerät. Zu den Ressourcen gehören Arbeitsspeicher, Speicherplatz und das Dateisystem.

Wir verwenden das Wort "run", wenn wir ein Computerprogramm ausführen. Die zum Starten benötigte Zeit wird aufgerufen Ausführungszeit des Programms.

In der Regel werden Produkte berücksichtigt, die als Anwendungen bezeichnet werden. Wir ordnen Programme auch den Plattformen oder Umgebungen zu, in denen sie ausgeführt werden oder für die sie vorgesehen sind. Es gibt Webanwendungen, die in Browsern ausgeführt werden, mobile Software, die auf Smartphones ausgeführt wird, sowie Desktop-Anwendungen wie Evernote.

Der interpretierte Quellcode wird aus der kompilierten Quelldatei ausgeführt - in eine Binärdatei konvertiert. Dann wird diese Datei ausgeführt. Kompilierter Code kann zur Laufzeit auch nach erfolgreicher Kompilierung fehlschlagen.

Hybride Übersetzer

Ein Hybridübersetzer ist eine Kombination aus einem Interpreter und einem Compiler. Eine beliebte hybride Programmiersprache ist Java.

Java-Software-Entwicklung ist bequem. Der Quellcode wird zuerst in ein Zwischenformat kompiliert, das als bekannt ist Bytecode. Anschließend wird Bytecode mithilfe einer virtuellen Maschine interpretiert und ausgeführt. Auf diese Weise können Hybridübersetzer Bytecode in verschiedenen Betriebssystemen ausführen und so plattformübergreifend arbeiten.

Häufig gestellte Fragen

Dies ist die Frage, die Anfänger normalerweise stellen: "Mit welcher Sprache soll ich anfangen?"

Es gibt Hunderte von PLs. Sie sind nach Beliebtheit, Community, langfristiger Unterstützung, Pädagogik und Nutzung geordnet. Sie können auch nach technischen Parametern ausgewertet werden. Zum Beispiel, ob sie funktional, imperativ, statisch, stark oder schwach typisiert sind.

Einige Programmiersprachen sind ausschließlich für Bildungszwecke und nicht für den geschäftlichen Gebrauch bestimmt. Ein gutes Beispiel ist YaP für Kinder. Es gibt auch leistungsstarke Sprachen, die einfach einzurichten und zu lernen sind. Python - einer von ihnen. Normalerweise wird es Anfängern empfohlen.

Wenn Sie an einer detaillierteren Untersuchung des Problems interessiert sind, finden Sie hier einige gute Studien.

Wenn Sie eine neue Sprache lernen möchten, benötigen Sie Sprachübersetzer. Dies ist ein Programm, das auf einem Computersystem installiert und konfiguriert ist.

Es wird empfohlen, die Befehlszeile (CLI) zu beherrschen. Stellen Sie sich das Terminal als Alternative zu einer grafischen Benutzeroberfläche vor. Wenn Sie mit einem Computer über die GUI arbeiten, sind Sie auf visuelle Darstellungen von Verzeichnissen und allem, was Sie tun, angewiesen. Bei Verwendung der CLI interagieren Sie jedoch direkt mit dem Computer, indem Sie das Terminal und spezielle Befehle verwenden.

Pin
Send
Share
Send
Send