- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 10 von 35

Thema: Ohne "C" bräuchten wir keine Debugger

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Fleißiges Mitglied Avatar von derNeue
    Registriert seit
    01.01.2011
    Ort
    Bierstadt Radeberg
    Alter
    39
    Beiträge
    101
    Zitat Zitat von Siro Beitrag anzeigen

    Problem: Präzedenztabelle, warum hat C eine andere als Delphi ???
    Biegeradien von Gurken wurden genormt, Rangfolge von Operatoren nicht Traurig aber wahr.
    nun, hier fragt man sich, was war denn eher da, C ist nunmal deutlich älter als Delphi, und auch der Vorgänger von Delphi, Pascal ist nicht so alt wie C. Außerdem ist C noch eine Hochsprache, die trotzdem noch recht hardwarenah ist, deswegen wird sie ja auch gern bei µC eingesetzt, da dort die Resourcen begrenzt sind. Auch Treiber werden teilweise in C programmiert.
    Ich finde, man kann verschiedene Programmiersprachen schlecht miteinander vergleichen, weil hinter jeder Sprache eine andere Idee steht. C wurde von den beiden Amerikanern erfunden, weil es keine vernünftige höhere Sprache als Assembler gab, und sie es leid waren, immer wiederkehrende Befehlsreihenfolgen einzutippen. Auch Arithmetik ist in Assembler ja eine mittlere Katastrophe. Dafür wurde C entwickelt, und das kam immerhin 1972 das erste mal auf den Markt und war auch nur für die paar wenigen gedacht, die überhaupt schon regelmäßig mit Computern zu tun hatten. Delphi entstand aus Pascal und da lag sicher auch der Komfort mit im Vordergrund, somit musst du dir nicht immer Gedanken über Variablen machen, ob sie nun Vorzeichenbehaftet sind, oder nicht, Fleißkomma, oder nicht, usw. Bei C muss man da selbst überlegen, und jeder µC Programierer ist sehr glücklich darüber, das man auch "einfache" Datentypen wie int hat, weil wenn alles Fließkommazahlen wären, würde der Controller beizeiten Amok laufen, weil er es einfach nicht mehr verarbeiten kann.

    Was ich jetzt nicht ganz verstehe, warum du in deiner Firma unbedingt C nehmen sollst. Ich habe jetzt beruflich gar nix mit Programmieren zu tun, bei mir auch alles nur Hobby, aber ich denke, das bei der Leistung, die heute Rechner haben es nicht mehr nötig ist, in C zu programmieren, weil es eben auch andere Hochsprachen gibt, mit besserem Komfort, und man auch nicht mehr so extrem Resourcensparend programmieren muss. Klar sollte man trotzdem darauf achten, das es nicht unendlich Rechenleistung gibt, weil nix ist schlimmer, als wenn ein Programm den ganzen Rechner langsam macht, und ewig braucht, bis es gestartet ist, aber ich denke, das es auch in anderen Hochsprachen außer C möglich ist, solche Programme zu schreiben.

    MfG Dennis
    Ich studiere die Wirkung der Sonnenstrahlen auf das Liebesleben der Pflastersteine

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    04.08.2011
    Ort
    Hannover
    Beiträge
    164
    Zitat Zitat von derNeue Beitrag anzeigen
    ...
    Was ich jetzt nicht ganz verstehe, warum du in deiner Firma unbedingt C nehmen sollst. Ich habe jetzt beruflich gar nix mit Programmieren zu tun, bei mir auch alles nur Hobby, aber ich denke, das bei der Leistung, die heute Rechner haben es nicht mehr nötig ist, in C zu programmieren, weil es eben auch andere Hochsprachen gibt, mit besserem Komfort, und man auch nicht mehr so extrem Resourcensparend programmieren muss. Klar sollte man trotzdem darauf achten, das es nicht unendlich Rechenleistung gibt, weil nix ist schlimmer, als wenn ein Programm den ganzen Rechner langsam macht, und ewig braucht, bis es gestartet ist, aber ich denke, das es auch in anderen Hochsprachen außer C möglich ist, solche Programme zu schreiben.
    ...
    Sowas hat meist "historische Gründe". I.A.gibt es schon Programme, Bibliotheken, ... die in C (oder auch anderen Sprachen - FORTRAN und COBOL sind auch immer noch verbreitet) geschrieben sind. Diese ganzen Sachen auf etwas anderes zu heben kostet Geld und Zeit. Wenn man das nicht gleichzeitig mit wesentlichen Neuerungen verkaufen kann, dann bleibt das eben aus.

    viele Grüße
    Andreas (der seit Jahren kein Problem mit C hat )
    #define true ('/'/'/')
    #define false ('-'-'-')

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied Avatar von derNeue
    Registriert seit
    01.01.2011
    Ort
    Bierstadt Radeberg
    Alter
    39
    Beiträge
    101
    Zitat Zitat von danimath Beitrag anzeigen
    Sowas hat meist "historische Gründe". I.A.gibt es schon Programme, Bibliotheken, ... die in C (oder auch anderen Sprachen - FORTRAN und COBOL sind auch immer noch verbreitet) geschrieben sind. Diese ganzen Sachen auf etwas anderes zu heben kostet Geld und Zeit. Wenn man das nicht gleichzeitig mit wesentlichen Neuerungen verkaufen kann, dann bleibt das eben aus.

    viele Grüße
    Andreas (der seit Jahren kein Problem mit C hat )
    Mh, das klingt natürlich logisch, und das wusste ich nicht, bin eben bloß ein kleiner Hobbyprogrammierer, der gerade die ersten Schritte in C hinter sich hat


    MfG Dennis
    Ich studiere die Wirkung der Sonnenstrahlen auf das Liebesleben der Pflastersteine

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Also ich glaube (also bin ich) man hat sich irgendwann mal auf den Blödsinn von K&R eingelassen.
    daß dies eine Fehlentscheidung war, hat man erst viel zu spät bemerkt und nun muss das natürlich gerechtfertigt werden.
    Also wird Gott und die Welt behaupten, das "C" gut ist.
    Ich wüste jetzt nicht annähernd, was es in Pascal nicht gab oder gibt was man in C angeblich Hardwarenäher hätte programmieren können.
    Ebenso in PLM80, das war auch eine "frühe" Sprache, die ich absolut super fand.
    Ich weis aber vieles, was ohne Umwege in Pascal funktioniert, was man dem "C" erstmal mühsam beibringen muss.
    Ich will ja auch garnicht darüber entscheiden welche Hochsprache nun gut oder schlecht ist, aber C liegt bei mir jenseits jeder Vernunft.
    Das ist jetzt aber kein Angriff, sondern meine völlig private Meinung.
    Wie schon gesagt, es ist ja nicht alles schlecht in "C". Man hätte meiner Meinung nach frühzeitig einige Änderungen vollziehen müssen,
    das wurde irgendwie versäumt und nun muss man sich halt mit den teilweisen merkwürdigen Gegebenheiten rumschlagen.

    ich hasse zum Beispiel solche Aussagen:
    Normalerweise, vermutlich, meistens. Abhängig von... Je nachdem...
    Das ist für mich Chaos Programmierung.
    Und ich find es sehr Schade, daß leider kaum etwas genormt wurde.
    Hätte man nicht mal sagen können ein Byte hat generell 8 Bit ein Word hat 16 Bit, ein int hat immer ein Vorzeichen und hat 16 Bit
    Ein Bool (TRUE) ist alles was nicht 0 ist. Das wär doch eindeutig gewesen, und andere Sprachen haben diese Festlegung.
    Aber nicht nur "C" schafft diese Verwirrungen:
    Ein Word in Pascal war immer 16 Bit,
    nachdem ich mich mit den Cortex M3 Controllern vergnüge ist ein Word plötzlich 32 Bit. Das führt unweigerlich zu Verwirrungen.
    Hätte man doch Doubleword lassen können. Also nicht nur "C" ist nicht eindeutig.


    warum muss ich beispielsweise
    if (irgenwas == etwas)
    in Klammern setzen und warum muss die Abfrage "besonders" gleich sein, also doppelt ==
    Oder eine einfache Abfrage
    if (blabla)
    warum muss ich "blabla" im Klammern setzen ?
    Mathematisch völliger Blödsinn. Einen einzelnen Ausdruck in Klammern zu setzen.
    Das macht den Code (meiner Meinung nach) nur unnötig unübersichtlich.

    warum muss ich was "casten" wenn ich mit 2 gleichen Datentypen arbeite ?

    x = ~y;

    geht nur wenn x und y ein "int" sind, sonst werd ich angemeckert.
    wenn beide ein unsigned short sind, hat der Compiler Probleme ????

    Egal wie, man muss halt die "Eigenheiten" der Sprache erlernen. Und das anscheinend immer wieder neu.
    Da ist schon sehr Schade. Aber sonst bräuchten wir das Forum hier ja auch nicht
    Ich wünsche allen einen Bugfreien Start in die neue Woche.
    Siro

  5. #5
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Ich bin ja nun nicht der C Guru, will aber doch auf ein paar deiner Punkte eingehen.

    Zitat Zitat von Siro Beitrag anzeigen
    Also ich glaube (also bin ich) man hat sich irgendwann mal auf den Blödsinn von K&R eingelassen.
    daß dies eine Fehlentscheidung war, hat man erst viel zu spät bemerkt und nun muss das natürlich gerechtfertigt werden
    Ich habe in meiner C "Lehrzeit" (schon ne Weile her) noch einen Menge mehr, als das klasische Buch von Kernighan, Ritchie und Co. gelesen. Unter anderem aus "The Elements of Programming Style" von Kernighan und Plauger habe ich viel gelernt.

    Wie schon gesagt, es ist ja nicht alles schlecht in "C". Man hätte meiner Meinung nach frühzeitig einige Änderungen vollziehen müssen,
    das wurde irgendwie versäumt und nun muss man sich halt mit den teilweisen merkwürdigen Gegebenheiten rumschlagen.
    Lies mal mehr über die Syntax und Semantik von C (oder auch Programmiersprachen generell), dann wirst du erkennen, daß man manches nicht so einfach "machen" kann, ohne Mehrdeutigkeiten oder andere Probleme zu erzeugen. Eine Programmiersprache muß ähnlich gesehen werden, wie ein mathematisches System.

    ich hasse zum Beispiel solche Aussagen:
    Normalerweise, vermutlich, meistens. Abhängig von... Je nachdem...
    Das kommt daher, daß der Auskunftgeber es halt nicht besser weiß. Frag jemand, der sich wirklich auskennt.

    Hätte man nicht mal sagen können ein Byte hat generell 8 Bit ein Word hat 16 Bit, ein int hat immer ein Vorzeichen und hat 16 Bit
    Ist ja fast so. Ein char hat immer 8 Bit. Signed oder unsigned spielt keine wirkliche Rolle, eigentlich wird damit nicht gerechnet. Was macht auch 'a' * '@` für einen Sinn? Und daß '0' gleich 0x30 ist, gilt auch nur für ASCII und nicht für EBCDIC. K&R-C funktioniert auch mit EBCDIC.

    Und ein int hat 16 Bit (mindestens). Solage du im Zahlenraum von +- 32000 bleibst, spielt es doch keine Rolle, ob dein int in Wirklichkeit größer ist. Das mußt du nicht wissen.

    Ein Bool (TRUE) ist alles was nicht 0 ist
    Das ist so. Ich weiß nicht, wie du auf etwas anderes kommst.

    if (irgenwas == etwas)
    in Klammern setzen und warum muss die Abfrage "besonders" gleich sein, also doppelt ==
    Wegen der Eindeutigkeit. Der Ausdruck hinter dem if kann ganz schön länglich werden und auch noch eine menge weitere Klammern enthalten.

    Code:
    if ( ( a == 3 || b = 5)  && open(file))
    In jeder Sprache gibt es den Unterschied zwischen Zuweisung "=" und Vergleich "==". Es sind ja auch fundamental unterschiedliche Sachen. War da in Pascal nicht was mit ":="?

    Oder eine einfache Abfrage
    if (blabla)
    Für den Compiler ist es egal, daß du die Abfrage einfach nennst.
    Mathematisch völliger Blödsinn. Einen einzelnen Ausdruck in Klammern zu setzen.
    Woran soll der Compiler, oder der Mensch, der den Code verstehen will erkennen, das der Ausdruck zuende ist, und die Anweisung, die er bei true ausführen soll anfängt?

    x = ~y;

    geht nur wenn x und y ein "int" sind, sonst werd ich angemeckert.
    wenn beide ein unsigned short sind, hat der Compiler Probleme ????
    Ich kann das jetzt nicht nachvollziehen. Bitweise Operationen haben aber immer so ihre Probleme. Währen für den Bitoperator das oberste Bit eins wie die anderen ist, bedeutet es für Zahlen das Vorzeichen.

    Das wirkliche Problem ist, das es in den meissten Sprachen zuwenig Datentypen gibt. Bitweise Operationen machen auf Zahlen im mathematischen Kontext keinen Sinn. Was soll soetwas bedeuten

    Code:
    X = ((3 * 5)/17) | (5 + 13)
    Dies läßt sich hier sicher ausrechnen, aber ..

    So ein Statusregister in einem µc passt möglicherweise ganz gut in den Speicherplatz eines Integers, hat aber mit einem int eigentlich nichts zu tun. Und es kann ganz tricky sein, irgendein Bit mit einer mathematischen Operation zu setzen, aber eigentlich ist so was nicht C, sonder Assembler in Verkleidung.

    So weit erstmal

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  6. #6
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Zitat Zitat von Klebwax Beitrag anzeigen
    Ein char hat immer 8 Bit.
    Nein. Es hat mindestens 8 Bit.
    MfG
    Stefan

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von sternst Beitrag anzeigen
    Nein. Es hat mindestens 8 Bit.
    Da gehen die Meinungen auseinander. Was auf jedenfall klar ist: sizeof(char) ist 1 und nicht >= 1. Die 1 heißt 1 Byte. Und ein Byte ist die kleinste im Speicher addressierbare (nicht unbedingt ladbare) Einheit. Und mal abgesehen von einigen Exoten mit 9 Bit pro Byte und einigen DSPs mit 16 oder 24 Bit als kleinste adressierbare Einheit kann man davon ausgehen, daß ein char 8 Bit hat. Daß ein Text in Unicode mehr als ein char pro Textzeichen braucht ist schon klar.

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    02.06.2011
    Beiträge
    158
    "Also ich glaube (also bin ich) man hat sich irgendwann mal auf den Blödsinn von K&R eingelassen."

    Naja, 'irgendwann' war zu einer Zeit, als es nichts besseres gab. In C konnte man schon den Unix-Kernel effizient programmieren, als Pascal noch eine umstaendliche, langsame Lehrsprache war - indiskutabel fuer die Implementierung eines Betriebssystems (P-code virtuell interpretiert? wtf? Da steht die Maschine).
    Fehlentscheidung war das sicher keine. Standardisiert war C auch vor Pascal, wenn ich mich nicht irre. Dass sich Implementierungen nicht an den Standard halten, damit hatte auch Pascal (genauso wie fast jede Sprache) zu kaempfen.

    "Egal wie, man muss halt die "Eigenheiten" der Sprache erlernen. Und das anscheinend immer wieder neu.
    Da ist schon sehr Schade."

    Wenn es nicht so waere, hiesse das ja, dass alle Sprachen gleich sind. DAS waere schade.
    Schlimm ist es nur, wenn man gezwungen ist, eine Sprache zu verwenden, die fuer eine konkrete Aufgabe nicht geeignet ist..
    Programmiersprachen sind Werkzeuge, je unterschiedlicher die sind, umso eher wird man was Brauchbares finden.
    Klar kann man einen Nagel auch mit einem Loetkolben einschlagen, aber dann darf man nicht ueber den Loetkolben meckern.
    Geändert von Calis007 (14.03.2012 um 09:35 Uhr)

  9. #9
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    C war in der Anfangszeit ein extrem einfacher und kleiner Compiler, imho eine Assembler-Codier Hilfe, die plattformunabhängigen Source-Code ermöglichte. Setzte nur eine Architektur mit Stack voraus, also zu der Zeit alles ausser den Mainframes wie IBM.
    Merkt man deutlich, wenn man Assembler in C umschreiben will oder umgekehrt, das geht wie geschmiert.
    Ansonsten: C is C is C.
    Klagen fallen in die Kategorie "Das Leben ist ungerecht".
    Als Amateur hat man eine mächtige Waffe: man kann es bleiben lassen.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

Ähnliche Themen

  1. Antworten: 13
    Letzter Beitrag: 27.01.2009, 12:50
  2. Schnelle Ansteuerung für 4 Servos ohne "Servo"-Bef
    Von Willa im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 02.10.2008, 19:36
  3. CAN Problem, empfange keine "valid messages"
    Von T.J. im Forum PIC Controller
    Antworten: 0
    Letzter Beitrag: 09.12.2007, 13:58
  4. Doppelseitige Platine "durchlöten" ohne Nieten
    Von franzlst im Forum Elektronik
    Antworten: 12
    Letzter Beitrag: 28.09.2007, 17:52
  5. Antworten: 10
    Letzter Beitrag: 22.03.2007, 13:03

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Solar Speicher und Akkus Tests