C ein Rückschritt in der Computerentwicklung?
-
audacia schrieb:
qcc schrieb:
Wenn C so schlecht wäre wie manche immer behaupten, wäre es mit Sicherheit kaum so weit verbreitet.
Qualität und Popularität korrelieren nicht notwendigerweise. Man denke an VB.
VB(6) hat seine Popularität ja auch gewonnen, lange bevor es C# o.ä. gab. Und damals war VB für viele (inkl. mir) eine gute Möglichkeit, in der Windows-Programmierung schnell Erfolge zu erzielen. Die Beliebtheit kann ich also ganz gut verstehen. Trotzdem kann ich eine Programmiersprache nicht ernstnehmen, die sowas wie die "Option Base" Anweisung erlaubt.
-
Basic war immer schon sehr beliebt. Anno Windows95 hatte quasi jeder Win95 Rechner auch eine QBasic "IDE" vorinstalliert (War bei irgendeiner DOS Version dabei). Ein grossteil dieser "DOS-Basic" Leute wird sich später mit VB beschäftigt haben.
-
In den 90ern war eine VB6-GUI mit in C++ realisierten COM-Objekten auch ein echter Bringer. Hat bereits eine schöne Tier-Trennung bewirkt, die GUI-Entwicklung ging rasch von der Hand, es gab gute Tools dafür und man konnte GUI-Effekte auch leicht erweitern. Durch die Realisierung des App-Layers in C++ mit COM als Schnittstelle hatte man trotzdem die volle Mächtigkeit der Sprache, Performance, und die Möglichkeit zur Architekturentwicklung, sowie getrennte Testbarkeit (da man die COM-Objekte auch mit Test-Wrappern füttern konnte). Und mußte sich nicht mit der MFC herumärgern.
Insofern ist C# sogar ein bißchen ein Rückschritt, da die Leute jetzt wieder Applikationslogik in die GUI frickeln können, da alles ein großer Kuchen ist. [Sieht man ja an Fragen - wie ruft ein Form ein Form ein Form auf?]
-
audacia schrieb:
qcc schrieb:
Wenn C so schlecht wäre wie manche immer behaupten, wäre es mit Sicherheit kaum so weit verbreitet.
Qualität und Popularität korrelieren nicht notwendigerweise. Man denke an VB.
Ohman ... wahre worte ...
-
Ich finde Vala sehr interessant. Bietet schöne Sprachfeatures, wie closures, foreach, usw. aber wird direkt nach C übersetzt. Damit kann sicher gut Treiber und sonstiges Systemnahes programmieren.
-
Sicher war VB trotz aller Sprachdefekte eine Innovation und hatte Existenzberechtigung. (Das sieht sogar Linus so.) Aber es gab fast immer bessere Alternativen. Dafür, daß Borland 1995 Delphi und 1997 C++Builder veröffentlicht hatte, Microsoft seit 1998 Visual Basic nicht mehr angerührt, 2000 .NET angekündigt und zu Anfang 2002 die erste Version sowie C# und VB.NET ausgeliefert hat, hat sich VB6 erstaunlich lange gehalten.
Marc++us schrieb:
In den 90ern war eine VB6-GUI mit in C++ realisierten COM-Objekten auch ein echter Bringer. Hat bereits eine schöne Tier-Trennung bewirkt
Das C++-Backend ist in der Theorie nett, aber in der Praxis meist ein Krampf (so eine Anwendungsschnittstelle durch den COM-Interface-Flaschenhals zu bekommen ist nicht immer schön), und derart common practice war es auch nicht. Wer fähige C++-Entwickler hatte, mag es so gemacht haben, aber der Pulk hat wenig Aufwand gescheut, um möglichst alles in VB zu schreiben.
Marc++us schrieb:
Insofern ist C# sogar ein bißchen ein Rückschritt, da die Leute jetzt wieder Applikationslogik in die GUI frickeln können, da alles ein großer Kuchen ist. [Sieht man ja an Fragen - wie ruft ein Form ein Form ein Form auf?]
Das ist alles ganz richtig, jedoch unterstellt dein Statement, daß der durchschnittliche C#- oder VB-DAU seine Anwendung ordentlich in Schichten aufteilen würde, wenn das Framework, so wie seinerzeit VB/C++, ihm diese Option nahegelegt bis sanft aufgedrängt hätte. Und das glaube ich nicht.
Der Mensch ist fett, faul und gefräßig, und der durchschnittliche VB-Frickler ist da keine Ausnahme. Wie war das noch mit der Umerziehung?
-
audacia schrieb:
und derart common practice war es auch nicht. Wer fähige C++-Entwickler hatte, mag es so gemacht haben, aber der Pulk hat wenig Aufwand gescheut, um möglichst alles in VB zu schreiben.
Das ist schon klar. Die Leute frickeln heute halt in C# auch alles wieder in einen Brei rein.
audacia schrieb:
Das ist alles ganz richtig, jedoch unterstellt dein Statement, daß der durchschnittliche C#- oder VB-DAU seine Anwendung ordentlich in Schichten aufteilen würde, wenn das Framework, so wie seinerzeit VB/C++, ihm diese Option nahegelegt bis sanft aufgedrängt hätte. Und das glaube ich nicht.
Der Mensch ist fett, faul und gefräßig, und der durchschnittliche VB-Frickler ist da keine Ausnahme. Wie war das noch mit der Umerziehung?
Naja, die Trennung C++/VB kam der Faulheit ja entgegen und bewirkte daher eine Umerziehung durch Layertrennung, weil es wirklich extrem bequem war in VB mal eine C++-COM-Anwendung einzubinden. Man konnte sich den Aufwand mit der MFC sparen (z.B. sowas wie unterschiedliche Icons in einem Kontrollelement, Horror), und in VB mal kurz bißchen GUI machen. Auch umgekehrt: MFC-Anwendung mit C++, und komplexe Controlelemente in VB und dann einfach einbinden in den MFC-Dialog.
Umerziehung ist möglich, wenn der neue Weg einfacher ist als der alte.
Du mußt die Faulheit der Leute dazu nutzen, daß der neue Betriebspunkt für sie einfacher ist und für Dich praktischer. Win-Win und so...
-
Ihr habt die Entwicklung der Programmiersprachen und der Compiler nicht miterlebt wie die alten Säcke der Programmierer, zu denen auch ich mich zähle. Wenn die Entwickler von C zunächst nur für sich selbst eine Vereinfachung der Assembler-Programmierung im Sinn hatten, so haben sie damit doch etwas hervorragendes geleistet. Findet sich heute überall woanders wieder. War also kein Rückschritt, sondern ein echter Fortschritt!
-
berniebutt schrieb:
Ihr habt die Entwicklung der Programmiersprachen und der Compiler nicht miterlebt wie die alten Säcke der Programmierer, zu denen auch ich mich zähle. Wenn die Entwickler von C zunächst nur für sich selbst eine Vereinfachung der Assembler-Programmierung im Sinn hatten, so haben sie damit doch etwas hervorragendes geleistet. Findet sich heute überall woanders wieder. War also kein Rückschritt, sondern ein echter Fortschritt!
Zum Zeitpunkt der Entwicklung von C gab es aber schon andere Hochsprachen. Ich weiß auch nicht was die beiden zur Entwicklung von C geführt hat, aber ich denke mal, die Abwesenheit von Hochsprachen wird es wohl nicht gewesen sein. Und der Rest von der Geschichte von C ist wohl ein selbstläufer. Irgendwie scheint es nie so zu sein, dass die Entwickler einen Einfluss auf die Popularität einer Sprache haben.
Nachtrag.
Wikipedia sagt
The origin of C is closely tied to the development of the Unix operating system, originally implemented in assembly language on a PDP-7 by Ritchie and Thompson, incorporating several ideas from colleagues. Eventually they decided to port the operating system to a PDP-11. B's lack of functionality to take advantage of some of the PDP-11's features, notably byte addressability, led to the development of an early version of the C programming language.
Also wars wohl so
Unix (in B geschrieben) ist cool. PDP-11 ist cool. Warum nicht Unix auf PDP-11 packen? Problem man kann mit B nicht alle Features der PDP-11 ausnutzen. Konklusion: Neue Programmiersprache C muss her.
-
mazal schrieb:
Zum Zeitpunkt der Entwicklung von C gab es aber schon andere Hochsprachen. Ich weiß auch nicht was die beiden zur Entwicklung von C geführt hat, aber ich denke mal, die Abwesenheit von Hochsprachen wird es wohl nicht gewesen sein. Und der Rest von der Geschichte von C ist wohl ein selbstläufer. Irgendwie scheint es nie so zu sein, dass die Entwickler einen Einfluss auf die Popularität einer Sprache haben.
K&R waren Systemprogrammierer. Deshalb bekamen B und C systemnahe Komponenten. Diese fehlten seinerzeit in den vorhandenen Hochsprachen. Der Sprachumfang von C war und blieb auf das wesentliche begrenzt. Alles weitere wurde auf Standardbibliotheken ausgelagert und über Header-Dateien bereitgestellt. Damit war dann auch die volle Funktionalität der vorhandenen Hochsprachen sichergestellt. Als es dann C nicht nur auf UNIX-Maschinen gab und sogar MS seine Windows-Schnittstelle (WinApi) in C machte, wurde C eben zum Selbstläufer. Vorher hantierte man - je nach Zielmaschine und Kundenwunsch - mit mehreren Programmiersprachen herum. Ich trauer ALGOL, FORTRAN, COBOL, PL1, BASIC, PASCAL, ... nicht mehr hinterher. WOW - und auch auf ASSEMBLER konnte man weitgehend verzichten. Das alles soll ein Rückschritt gewesen sein? Danke und vollen Respekt K&R und allen, die mehr daraus gemacht haben!