Wirkungsgrad von 100 m RG213U

C geht auch ohne make, und make geht auch fuer andere Programmiersprachen. Der Preprozessor ist auch kein Teil von C er macht nur Textverarbeitung auf dem Quellcode und wird auch fuer andere Sprachen benutzt.

Reply to
Carla Schneider
Loading thread data ...

Seit wann werden sonstige Kommandos eines Entwicklungssystems als Bestandteil des Compilers und als interne Programmiersprachen der Sprache C angesehen? C ist eine Touring-vollständige Programmiersprache 3GL. Alle weiteren oben aufgeführten Kommandos nicht.

Der C-Standard definiert die Sprache C. In der Sprache C ist das Preprocessing untrennbar enthalten. Es ist dem C-Standard vollkommen egal, WIE eine Implementation von C ausgestaltet ist. Sie muß an Berührungspunkten nur den Definitionen des C-Standards folgen.

Ich gebrauche Make, M4 und Autobloat für meine C-Projekte nicht. Der C-Standard beschreibt diese Kommandos nicht. Sie sind kein Bestandteil der Sprache C.

Reply to
Helmut Schellong

Am 21.09.23 um 12:12 schrieb Wolfgang Allinger:

K&R C war seinerzeit ein *TRAUM* gegenüber der für die Systemprogrammierung einzig verfügbaren Alternative, dem Assembler.

Seitdem wurde die Sprache kontinuierlich weiter entwickelt, und in aktuellen Versionen lässt sich sehr komfortabel gut lesbarer und sicherer Code schreiben.

Ich arbeite heute zwar überwiegend mit C++, aber auch zu C-Zeiten habe ich nie ein Programm von Hand compiliert.

Wenn mich meine Erinnerung nicht täuscht, "compiliert" FORTH lediglich in eine Art Zwischencode, welcher auf 99.9998% der verfügbaren Hardware anschließend interpretiert wird. Es gab zwar mal auf FORTH optimierte Hardware, aber das war eine Nische in der Nische in der Nische.

Der schlechte FORTH-Programmierer hat gar keine andere Wahl, als die Nacht durch zu arbeiten und IRGEND ETWAS abzuliefern, weil er sonst für seine Wahl einer obsoleten, obskuren Programmiersprache zu Recht vom Management geköpft wird. :-P SCNR

In jeder Programmiersprache lässt sich unleserlicher, unkommentierter Code schreiben. Was willst du hier beweisen?

Auf den ersten Blick: Liest aus Speicheradresse 0 einen Zeiger auf eine Funktion, welche dann aufgerufen wird. Klingt nach einer Knobelaufgabe aus dem Programmierkurs und nicht nach realem Code.

Obwohl, ein Anwendungsfall fällt mir ein: Die verwendete CPU hat dort ihren Reset-Vektor stehen und es soll so ein Soft-Reset ausgeführt werden.

Reply to
Hergen Lehmann

Am 21.09.2023 um 08:03 schrieb Marte Schwarz:

Es ist wahrscheinlich, daß es ungefähr 95% für C/C++ sind. Siehe auch [1]. Die Berechnungsbasis ist die VERBREITUNG, die Code-Basis. Also die o Anzahl verschiedener Quell-Codes in C/C++, die jeweils eine Exe generieren. o Anzahl verbreiteter Kompilationen (Exe) aus dem jeweiligen Quell-Code. o Anzahl KByte des jeweiligen Quell-Codes.

Mit den Gewichtungen 0,85 | 0,1 | 0,05. dateien.h gelten nicht. Es muß mindestens ein Funktionskörper in einer zählenden Datei enthalten sein.

[1] heute 11:51 : Unter den vielen unixoiden Betriebssystemen liegen in den Verzeichnissen /bin /sbin /usr/bin /usr/sbin /usr/local/bin die ausführbaren Dateien (Executables). Mindestens 99% davon sind compilierte binäre Exe, in C oder C++ geschrieben.

Der Kernel und alle Libraries sind ebenfalls in C/C++ und zu kleinen Teilen in Assembler. Hinzu kommen (FreeBSD) fast 40000 fertig compilierte Packages - alle in C/C++ geschrieben.

Windows ist seit langer Zeit in C/C++/C# geschrieben (früher in Pascal).

Binäre Exe bilden folglich die übergroße Mehrheit. Interpreter-Skripte sind selten, und fast immer sind sie Frontend- oder Service-Skripte.

PHP arbeitet weit überwiegend serverseitig und ist dazu in HTML unter gemischt. Die Webserver (z.B. Apache) sind - natürlich in C/C++ geschrieben. Qt und MySQL sind in C/C++ geschrieben. Weitere Datenbanken sind ebenfalls in C geschrieben.

Die verbreitete Code-Basis in C/C++ ist gigantisch groß. Im uC-Bereich (embedded) gibt es nahezu ausschließlich C/C++. Wobei der uC-Bereich größer ist, als alle anderen Bereiche.

Reply to
Helmut Schellong

Am 21.09.23 um 11:51 schrieb Helmut Schellong:

Hast du 'ne Ahnung. PHP ist nicht die einzige Interpretersprache.

Umgekehrt wird ein Schuh draus. Üblicherweise bastelt PHP auf dem Server die HTML-Seiten zusammen, die werden dann an den Client gesendet. Enthalten des öfteren allerdings auch noch JavaScript ...

Reply to
Hartmut Kraus

Ich habe meine Zweifel, daß hier der korrekte Kontext sicher erahnt werden kann. Es wird jedenfalls die Konstante 0 gecastet: (cast)0, zu einem (void(*)()) Funktions-Pointer. Außen herum befindet sich eine obsolete Aufrufsyntax (*fup)(). Heutzutage kann mittels fup(); aufgerufen werden.

# define NEsp0ARR(S,A) (sizeof(((S*)0)->A) / sizeof(*((S*)0)->A))

Vorstehend gibt es auch eine Konstante 0 in Verwendung. Der Name bedeutet: Anzahl Einträge struct pointer 0 Array

Es gibt in C von Beginn an das Schlüsselwort typedef, um solche komplexen Typen zu vermeiden.

Reply to
Helmut Schellong

Fiel mir erst später auf, gemeint waren "formale" Sprachen.

Was willst Du damit sagen?

Also doch ein Konglomerat von Sprachen ;-)

Sooo sensibel ist kein Standard, eher dessen Benutzer.

Hmm, wer berührt wen wo? Me2?

Dann fummelst Du also so alleine vor Dich hin?

Aber für die Herstellung portabler Programme sind sie unverzichtbar, sagt die FSF.

DoDi

Reply to
Hans-Peter Diettrich

Das kann nur jemand behaupten, der Delphi nicht kennt, und vielleicht auch sonst keine benutzerfreundlicheren Sprachen.

Auf einer pdp ging das ganz einfach im Kopf, keine Notwendigkeit zum Warten auf einen schnarchlangsamen C Compiler.

Der C/C++ Programmierer hat viele ruhige Nächte, in denen nur der Compiler für ihn arbeitet. SCNR2

Nun ja, etwas C-bashing muß ab und an mal sein ;-)

DoDi

Reply to
Hans-Peter Diettrich

Daß C kein Konglomerat aus den aufgeführten Kommandos ist.

Das Preprocessing ist keine Sprache! Sondern wie bei einem Zwei-Pass-Assembler der erste Pass (Durchlauf).

Ja, andere stören mich nur.

make, M4 und Autobloat sollen unverzichtbar sein, um portable Programme schreiben zu können. Wie soll das denn funktionieren? make, M4 und Autobloat schreiben selbsttätig einen portablen Inhalt der C-Dateien? Das schafft noch nicht einmal eine KI, auch nicht, wenn sie 100 Mio kostet.

Eine Methode für portables Programmieren ist, dem C-Standard strikt zu folgen.

Reply to
Helmut Schellong

Am 21.09.23 um 16:53 schrieb Hans-Peter Diettrich:

Ich war vor langer Zeit mal für die Wartung einer Delphi-Applikation zuständig. Das war hübsch fürs UI-Prototyping, aber eine Katastrophe, sobald man etwas näher an die Hardware heran musste.

Vor allem aber ist es hochgradig proprietär. Man ist auf Gedeih und Verderb einem einzelnen Lieferanten und dessen (Lizenz-)Kapriolen ausgeliefert. Wie oft hat die Produktfamilie jetzt schon Namen und Besitzer gewechselt? Und Zielplattformen jenseits des PC+Smartphone-Mainstream sind auch nicht.

Aber bitte mit Niveau. Dumme Sprüche sind langweilig.

Reply to
Hergen Lehmann

[...]

Ein größeres C-Projekt von mir - 50 Dateien, 1,2 MB - compiliert in 3,7s.

Reply to
Helmut Schellong

Hab das ; weggelassen, da IMHO nicht relevant

Einige uC haben an der Adresse 0000 einen Vector auf die Kaltstartroutine. Hab bei diesem Speibiel vergessen, was es für ein uC war.

Für mich sind i.a. alle uC gleich bzw. ähnlich, da ich mit FORTH arbeite(te)

Nur ein paar spezielle Register Zugriffe und hochfrequente IRSV schreibe ich ggf. in Assembler (um), nachdem ich sie vorher als HLL ':' Definitionen ausprobiert habe. :-def als Vorbild für CODE-def. Sehr schnell und einfach, da die funzende HLL-def ja die Struktur und Funktion vorgibt.

Du hast es recht gut getroffen. in Z80 Assembler: LD HL,0000h JMP (HL)

Also die SW Emulation eines HW PWR up

Saludos (an alle Vernünftigen, Rest sh. sig) Wolfgang

Reply to
Wolfgang Allinger

Beim zweiten Mal vielleicht, wenn nur noch geänderte Dateien neu übersetzt werden müssen.

DoDi

Reply to
Hans-Peter Diettrich

Es gibt noch FreePascal/Lazarus, damit lassen sich auch µC programmieren. Die Architektur ist unerreicht was Projekt-Management, turn-around Zeiten und Fehlersuche betrifft. Aber wer nur C kennt, der weiß nicht, was ihm in dieser Hinsicht alles entgeht.

DoDi

Reply to
Hans-Peter Diettrich

Ist FORTH eine Sprache in der das Newline diese Aufgabe uebernimmt ?

Und wie sieht dieser Aufruf in FORTH aus, nur so zum Vergleich ? Wenn ich mich recht erinnere ist das eine Sprache die so um 1990 herum populaer war.

Gemeint ist natuerlich dort die Adresse hineinschreiben die auf Adresse gespeichert ist.

Ist nicht genau das gleiche weil kein Funktionsaufruf, aber egal weil der Hardware-Reset den Stapel auf Null setzt.

Waere also etwas das in den Libraries zu diesem System drin sein sollte, z.B. als Funktion mit Namen "hw_reset".

Weil es das offenbar nicht war, musste sich der Programmierer so abhelfen.

Das ganze ist aber kein Beispiel dafuer das zeigt ob FORTH besser ist als C oder umgekehrt.

Reply to
Carla Schneider

Nein, ich verwende kein make-Kommando. Es werden immer alle Dateien neu übersetzt. Da das in wenigen Sekunden geht, schreibe ich auch kein MakeFile.

Reply to
Helmut Schellong

Am 22.09.2023 um 08:56 schrieb Helmut Schellong:

Ich hasse das C-Gestammel. Das ist keine lesbare Hochsprache noch Assembler.

Ich habe letztens mit Delphi-Pascal gearbeitet und alles zeitintensive in Assembler geschrieben.

Ich bin alergisch gegen C.

Grüße

Reply to
Leo Baumann

Am 22.09.2023 um 09:01 schrieb Leo Baumann:

Das merkt man deutlich. Deshalb stellst Du auch die Behauptung auf, C sei keine lesbare Hochsprache. Du bist der Einzige, den ich kenne, der Assembler besser findet. Damit stehst Du aber ziemlich allein auf weiter Flur.

Ich hatte bereits vor längerer Zeit mitgeteilt, daß ich etwa 20 Programmiersprachen mehr oder weniger gut beherrsche. C ist darunter diejenige Sprache, die mir am stärksten entgegen kommt. Gefolgt von PEARL und Ada. (Mit Ada habe ich noch nicht konkret gearbeitet.)

Reply to
Helmut Schellong

Am 22.09.2023 um 09:43 schrieb Helmut Schellong:

Ich habe das Optimum für mich gefunden. Programmoberfläche in Delphi-Pascal, Routinen in Assembler.

Wenn man in Übung ist, kann man Assembler herunterschreiben wie BASIC.

:)

Reply to
Leo Baumann

Die Programmiersprache C wird durch die ISO/IEC 9899 beschrieben. Und diese Beschreibung umfaßt auch den Präprozessor:

|5.1 Conceptual models | |5.1.1 Translation environment | |5.1.1.1 Program structure | |A C program need not all be translated at the same time. |The text of the program is kept in units called source files, |(or preprocessing files) in this document. A source file |together with all the headers and source files included via |the preprocessing directive #include is known as a |preprocessing translation unit. After preprocessing, a |preprocessing translation unit is called a translation unit. ...

.
Reply to
Stefan Ram

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.