Hallo Besucher, der Thread wurde 8,9k mal aufgerufen und enthält 137 Antworten

letzter Beitrag von 1570 am

Arduino-Programmierung: Bin ich oder der Erfinder der Programmiersprache zu blöd?

  • Den Python Hype verstehe ich nicht. Ich habe damit auch eine Zeit lang was gemacht, aber es gibt da Dinge, die mich einfach nerven. Für Programmieranfänger gibt es so viele bessere Sprachen. Ich würde ja immer dazu raten, einfaches C zu lernen. Daraus kann man dann für andere Sprachen sehr viel ableiten.

    Meine letzte Programmiersprache, wo die Formatierung quasi Teil der Syntax (oder der Grammatik) war, war tatsächlich Basic 2 auf dem Commodore.

    Und jetzt kommt Python daher und meckert rum, weil ich Schleifen nicht eingerückt habe. Das war alles was es gebraucht hat, um diese Sprache zu meiden. Sowas geht gerade mal überhaupt nicht. Naja und auch sonst ist Pyhton mit der fehlenden Typisierung eben eher eine Scriptsprache wie Basic. Für Linux-Anhänger, die schnell mal was scripten wollen, sicher ganz hilfreich.


    Aber C ist jetzt auch nicht so der Bringer, vor allem für Programmieranfänger. Die Sprache ist einfach aus der Zeit gefallen. Wer will sich denn heute noch mit Zeigern rumärgern? Dann die fehlenden Strings. Und vor allem nicht objektorientiert. Das ist schon mal eine Sackgasse. Weil heute ist programmiertechnisch alles objektorientiert, also sollte man möglichst früh damit anfangen.


    Mein Spruch von damals: C ist der manifestierte Pufferüberlauf.


    Ich empfehle Javascript oder Java. Oder C# unter Windows. Mit einem guten Buch ist das auch für Anfänger kein Problem. Und da kommen richtige Programme raus, die man unter Windows oder Linux oder im Webbrowser laufen lassen kann. Also mit GUI.


    Was bekommt man, wenn man in C programmiert?

  • Naja und auch sonst ist Pyhton mit der fehlenden Typisierung eben eher eine Scriptsprache wie Basic. Für Linux-Anhänger, die schnell mal was scripten wollen, sicher ganz hilfreich.

    Dem stimme ich aus meiner Sicht zu!


    Aber C ist jetzt auch nicht so der Bringer, vor allem für Programmieranfänger. Die Sprache ist einfach aus der Zeit gefallen. Wer will sich denn heute noch mit Zeigern rumärgern?

    Hier sehe ich das etwas anders! Ich weiß es zu schätzen mich damit auseinander gesetzt zu haben, weil man mit der Grundlage, die man sich mit einer Programmiersprache wie C aneignen kann, eine Menge Basiswissen hat, sich in andere Programmiersprachen reinzudenken oder zumindest schon Hintergrundwissen hat, was bestimmte Bibliotheken, Methoden usw. machen.

    Ich finde nach wie vor, dass C und C++ ( wenn es zur Objektorientierung geht ) sehr gute Sprachen sind, das Programmieren wirklich zu verstehen.


    Klar gibt es für jede Plattform und Anwendungsszenarien geeignetere Programmier-/Scriptsprachen, aber zu wirklichen Lernen von Programmierung finde ich C immer noch sehr gut!

  • Was bekommt man, wenn man in C programmiert?

    KnowHow

    Know-how, das man bei keiner modernen Sprache mehr anbringen kann. Zeigerarithmetik, Character-Buffer statt Strings. Damit beschäftigt man sich 80% der Zeit. Und dann denkt man, man hat was gelernt und wird plötzlich mit einer objektorientieren Sprache konfrontiert.


    Ich habe viele Jahre C programmiert (von 1985 bis ca. 1995). Das hat meinen Einstieg in die objektorientierte Programmierung damals unnötig verzögert. Da muss man schon aufpassen, dass man nicht abgehängt wird. Und Anfänger setzt man auf ein totes Gleis.


    C++ hat ja jetzt Smart-Pointers. Die machen ja quasi auch Garbage-Collection. Ja, ich find Java auch besser. Aber gelegentlich hat C++ halt auch seine Vorteile.

    Es wurde explizit C genannt. Das hat mit C++ so gut wie nichts zu tun. C++ ist eine völlig andere Sprache, die lediglich auf C aufsetzt.

  • Aber cool was Du da codest - hat das nen größeren Zweck, oder nur so?

    Hey mit Deinen Kentnissen hätten wir Dich daaamals™ in der "Group" gebrauchen können :thumbup:

    Ja, das wird ein "Trink-Erinnerungstimer" für mein Radtourenprojekt.

    Hehe - sehr geil :D:thumbup:



    Und wehe, jemand sagt "Geht doch heutzutage auch mit ner Sportuhr"!

    Das ist Generation Smartphone, Konsum, China-Käufer, Fertgkonsumiererei!

    Sowas ist unsportlich! ;)

    :D



    Welche Kentnisse? Aktuell habe ich ja das Problem, es eben NICHT coden zu können. *Lach*

    Aber das wird noch - wenn ich mal Zeit habe. *NochmehrLach*

    Na hat doch jetzt hier ganz gut mit etwas Support geklappt *g*


    Heute kam der "echte" Arduino samt Piezo an. Der Fortschritt (oder hiess es "der Wahnsinn"?) lässt sich nicht aufhalten! :)

    *g*

  • Ich habe viele Jahre C programmiert (von 1985 bis ca. 1995). Das hat meinen Einstieg in die objektorientierte Programmierung damals unnötig verzögert. Da muss man schon aufpassen, dass man nicht abgehängt wird. Und Anfänger setzt man auf ein totes Gleis.

    Ich arbeite seit 22 Jahren in einer Branche, in der C aus verschiedenen Gründen die Sprache der Wahl ist. Objektorientierung findet primär im Kopf des Programmierers statt und auch wenn in C keine Eigenschaften eingebaut sind, die das direkt unterstützen, ist es kein Problem, die Konzepte dahinter auch in C umzusetzen. Das machen wir auch schon immer so, so dass ich den späteren Einstieg in eine objektorientierte Sprache als ganz unproblematisch wahrgenommen habe.


    Natürlich kann man in C auch anders programmieren (und das hat man ja auch gemacht, bevor die Idee mit den Objekten sich durchgesetzt hat). Kann man aber in Java natürlich auch, wenn man es drauf anlegt ;).


    Das soll jetzt aber kein generelles Plädoyer für C sein, in der Tat merkt man doch, dass es eine mittlerweile betagte Sprache ist. Für kleine Kommandozeilentools nehme ich es aber trotzdem gerne her.

  • Das soll jetzt aber kein generelles Plädoyer für C sein, in der Tat merkt man doch, dass es eine mittlerweile betagte Sprache ist. Für kleine Kommandozeilentools nehme ich es aber trotzdem gerne her.

    Nicht nur dafür... Die meisten OS sind im Kern mit C umgesetzt ( häufig mit Assembler kombiniert ), weil es hardwarenah und an den Stellen schnell ist.

  • Objektorientierung findet primär im Kopf des Programmierers statt und auch wenn in C keine Eigenschaften eingebaut sind, die das direkt unterstützen, ist es kein Problem, die Konzepte dahinter auch in C umzusetzen.

    Genau, das geht auch in Assembler. :) Der Unterschied ist eben nur, dass der this/self-Pointer nicht implizit ist, und man eben mehr Disziplin braucht, um Objektorientierung brauchbar umzusetzen.

  • Nee nee, "Programmierer" aka Anwendungsentwicklung gibt es als normales Ausbildungsfach, und im Informatikstudium an einer Universität weiter oben im Spektrum wird programmieren können vorausgesetzt und optionale Zusatzkurse angeboten, wenn da Aufholbedarf besteht.


    Die Ausbildung "Fachinformatiker Anwendungsentwicklung" gibt es in der Tat schon seit 1997, also 25 Jahre. Im Gegensatz zu Studenten lernen die richtig was. Im Informatikstudium muss man nämlich nicht programmieren können, um durchzukommen. Zumindest seit dem Bachelor-/Master-Geschisse.

    Programmieren können muss an sich schon, aber nur als Hilfsmittel. Das Informatikstudium produziert eben keine Programmierer, sondern Informatiker. Und die lernen auch was, aber vorrangig andere Dinge. Das war auch schon beim Diplom so. :)


    Aber es ist wirklich ein Irrglaube, dass ein studierter Informatiker sich immer mit Computern auskennen würde oder programmieren könnte.

    Sag ich doch?

  • Naja und auch sonst ist Pyhton mit der fehlenden Typisierung eben eher eine Scriptsprache wie Basic.

    Typing gibt's eigentlich schon länger in Python:

    https://docs.python.org/3/library/typing.html

    Inkl. ziemlich ausführlicher Tool-Unterstützung. Es funktioniert anders als z.B. in Java, ist aber letztendlich aus Anwendersicht genauso mächtig.

  • Naja und auch sonst ist Pyhton mit der fehlenden Typisierung eben eher eine Scriptsprache wie Basic.

    Typing gibt's eigentlich schon länger in Python:

    https://docs.python.org/3/library/typing.html

    Inkl. ziemlich ausführlicher Tool-Unterstützung. Es funktioniert anders als z.B. in Java, ist aber letztendlich aus Anwendersicht genauso mächtig.

    Type hints. Weil man gemerkt hat, dass das mit den dynamischen Typen doch nicht so prickelnd ist.

  • Mir fehlte "Goto" und "Return", damit war's dann eigentlich ganz einfach. :)

    Mit ein wenig Umstrukturierung geht es auch komplett ohne. Eine Funktion sollte im Normalfall genau einen Austrittspunkt haben (return mittenmang muss nicht sein), und goto ist im Normalfall böse und kann in diesem Fall durch eine (do-)while-Schleife ersetzt werden.

  • Aber was an C++ nun besser sein soll als an C64-BASIC leuchtet mir nicht ein.

    Ich würde als Vergleich Notepad und einen wirklich komplexen Text-Editor heranziehen. Das eine funktioniert aus dem Stand einfach, aber man kann halt nicht so viel damit machen, bzw. kann man schon, aber es wird vieles nicht so unterstützt, wie man das gerne hätte. Das andere ist unglaublich komplex und erschlägt Anfänger mit dem schieren Funktionsumfang. Man kann damit extrem viel gut machen, aber man muss es mühsam lernen.

  • Man will wirklich, wirklich Prozeduren mit Parametern, lokalen Variablen und Rückgabewerten haben. In BASIC V2 bekommt man so wie's ist ja nichtmal die Funktionalität eines Sets hin (Liste von Werten inkl. Funktion, die einem sagt, ob Wert X in der Liste ist), ohne dass man den Code dafür für jedes Set neu schreiben muss (weil der Code jeweils "hart" für das jeweilige Array geschrieben werden muss). Das ist schon übel.

    Und Sachen wie die Datentypen Byte/Word will man auch haben (inkl. Shift-Operationen etc.), weil der Code sonst sehr ineffizient wird, speziell auf 8 Bit.