Wie kommt es, das von vielen Pascal/Lazarus/Delphi oft als Anfängersprache bezeichnet wird? Tatsächlich hat sich Pascal genauso wie C und C++ seit damals weiterentwickelt. Liegt es daran, das viele, als es Borland damals mit Pascal für Windows vermasselt hatte, auf C umgestiegen sind, und gar nicht gemerkt haben, das der Fehler von Borland von anderen ausgemerzt wurde, dadurch das sich das Sterben von Borland so lange hingezogen hatte? Ich finde nach wie vor, das Lazarus/Deplhi/PAscal unschalgbar für die meisten Anwendungen ist. Und alltägliche Tools wie der Totalcommander, zeigen auch, das solche Tools den der C Fans in nichts nachstehen. Im Gegenteil, lassen sich PAscal Progamme einfachst kopieren, ohne irgendwelche Installationsroutine oder was auch immer. Immer wird darüber geredet, das C++ das auch könnte..nur ständig wenn ich ein in C++ geschriebenes Programm Installieren!! muss..müssen zusätzlich sogar oft Updates von der Microsoft Seite geladen werden! KOTZ! Bei einem PAscal Programm muss NIE irgendwas nachgeladenw erden. Und kleiner ist es meist noch dazu..selbst wenn das C Programm mal kleiner ist..wird das mehr als vermasselt, dadurch das etliche fette MS Updates erforferlich sind..spätestens mit diesen ist das C++ Programm um ein vielfaches größer. In C++ sehe ich eigentlich nur MS Visual C++ als vergleichbar, was das schnelle Erstellen von Programmen angeht Anbei mal eine Liste von Spielen die in Delphi/Lazarus Pascal programmiert wurden https://www.youtube.com/watch?v=aTyYM12YRew https://www.youtube.com/watch?v=-BIJbc-yUkY Wäre schön, wenn es sachlich bleiben könnte! Link zu Lazraus PAscal https://www.lazarus-ide.org/
:
Verschoben durch User
Max S. schrieb: > Wie kommt es, das von vielen Pascal/Lazarus/Delphi oft als > Anfängersprache bezeichnet wird? Ist das so? Ich habe Lazarus erst vor einem Jahr "entdeckt" und es ist jetzt meine Stadardprogrammiersprache für den PC unter Linux. Die Programme lassen sich 1:1 für Windows übersetzen.
Das mit dem "Nachinstallieren" scheint am Linken zu liegen: Während du in C alle Libryries dynamisch linken kannst (und somit Windows Librariex etc. bzw. bestimmter Frameworks verwendet werden) scheint Delphi alles statisch zu linken. Das geht natürlich auch in C/C++. Und natürlich ist es vorteilhaft, dass Delphi sein eigenes GUI Framework mitbringt und es nicht 1000 Deriviate von MFC bis QT gibt. Daher ist das unter Win und Linux compilierbar. Ich selbst bin am liebsten unter C/C++, STL und Templates sowie mit Pointern unterwegs. GUI, große Datenmengen schnell verarbeiten und konvertieren, graphisch ausgeben, Compile-tools entwickeln etc. :-) Auf dem µC dann mit C und Compiler Intrinsics.
:
Bearbeitet durch User
Max S. schrieb: > Wie kommt es, das von vielen Pascal/Lazarus/Delphi oft als > Anfängersprache bezeichnet wird? Weil Pascal vor dem Java-Hype gerne als solche verwendet wurde. > Im Gegenteil, lassen sich PAscal Progamme einfachst kopieren, ohne > irgendwelche Installationsroutine oder was auch immer. Das hat nichts mit der verwendeten Programmiersprache zu tun. > Immer wird darüber geredet, das C++ das auch könnte..nur ständig wenn > ich ein in C++ geschriebenes Programm Installieren!! muss..müssen > zusätzlich sogar oft Updates von der Microsoft Seite geladen werden! Weil der Entwickler Visual C++ mit dynamisch gelinkter Runtime-Library verwendet hat, die muss dann natürlich vorhanden sein. > Bei einem PAscal Programm muss NIE irgendwas nachgeladenw erden. Weil Du es statisch linkst oder nur auf dem System testest, wo die IDE mitsamt aller Runtime-Libraries installiert ist? > In C++ sehe ich eigentlich nur MS Visual C++ als vergleichbar, was das > schnelle Erstellen von Programmen angeht Geht es gerade um Programmiersprachen oder um "RAD"?
Es geht um Pascal im Allgemeinen, das schließt RAD etc mit ein...
Hmmm schrieb: > Weil Du es statisch linkst oder nur auf dem System testest, wo die IDE > mitsamt aller Runtime-Libraries installiert ist? Wie das genau geht weiß ich nicht, kann aber bestätigen dass eine mit Lazarus & Standardeinstellungen erstellte .exe auf jedem Windows System läuft.
>Wie das genau geht weiß ich nicht,
Das ist doch ein alter Hut. Seit es Delphi gibt, damals noch für Windows
3.11, wurden sämtliche Libraries, die man für Windows braucht, speziell
die Unit "Forms", immer komplett in die kompilierte *.exe eingebaut
(sofern man kein reines Konsolen-Programm gebaut hat). Deshalb braucht
man bei Delphi- und -Lazarus Programmen normalerweise nur die
*.exe-Datei und sonst nichts, was bei manchen C++-Programmierern
seinerzeit für ungläubiges Staunen gesorgt hat.
Als Nachteil war die *.exe natürlich sehr viel größer als vergleichbare
C++-Programme, weil da eben schon alle Funktionen drin sind, die man bei
C++-Programmen in externe DLLs ausgelagert hat oder noch separat dazu
installieren musste.
Max S. schrieb: > Wie kommt es, das von vielen Pascal/Lazarus/Delphi oft als > Anfängersprache bezeichnet wird? Weil Pascal von Niklaus Wirth genau für diesen Zweck, nämlich als Lehrsprache entwickelt wurde. Lehrsprache und Anfänger passt doch erstmal zusammen C mit seinen vielen Freiheiten lässt den gerade Anfänger mit seinen Compiler Fehlermeldungen oft im Regen stehen, wo Pascal auf Grund der Sprachkonstuktion für den Anfänger viel spezifischer sein kann.
eben,, es WAR dafür konzipiert..ist es aber schon ewig nicht mehr. Irgendwie hat sich das genauso festgesetzt, wie das Batterien immer ganz leer gemacht werden sollen, bevor man sie wieder auflädt...was auch schon seit 20 Jahren nicht mehr stimmt aber immer noch in den Köpfen der Menschen steckt aus den alten Nickel Cadmium Zeiten..
Da die ISO-Norm seit ein paar Jahrzehnten keine Neuerung erfahren hat (und Pascal wohl kaum eine perfekte Sprache ist), mutmaße ich, dass man heutzutage entweder auf altem Sprachniveau arbeitet, oder seinen Code von einer Implementation abhängig macht. Ist das richtig oder sehe ich das vollkommen falsch? Haben sich andere Sprachstandards etabliert?
Max S. schrieb: > Ich finde nach wie vor, das Lazarus/Deplhi/PAscal unschalgbar für die > meisten Anwendungen ist. Es geht auch oft garnicht um die Sprache an sich, sondern um das Verhalten von Embarcadero. Beispiel bei mir: ich habe schon Heimsoeth Turbo Pascal verwendet und kenne mich in Pascal schon ziemlich perfekt aus, und ich habe bis Delphi 7 alles ordnungsgemäss upgedatet - das Update von Delphi 7 auf 8 habe ich dann zwar bezahlt, war nicht wirklich billig, aber dann hat mir der Server von Embaracadero mitgeteilt, meine Software wäre schon woanders registriert, und hat mich ausgesperrt. Selbstverständlich habe ich keinen Cent zurückbekommen, Embarcadero sagt einfach, das ginge sie garnichts an, ich müsste halt einfach ganz neu kaufen. Wenn man die Politik betreibt, Altkunden als Altlast abzuschütteln, ist das Ergebnis natürlich ein schwindender Kundenstamm. Mir blieb ja auch nichts anderes übrig, als alte Programme weiter mit Delphi 7 zu pflegen und mit Delphi nichts neues mehr anzufangen. Ich bin da ganz sicher kein Einzelfall. Ursprünglich tat mir das leid, aber inzwischen ist mir klar dass es keinen Sinn hat ein totes Pferd nur aus Gewohnheit weiterzureiten. Damit erübrigt es sich auch über Vor- und Nachteile zu diskutieren. Delphi/RAD ist ja keine Billigversion, da ist die Zumutung, öfter mal neu kaufen zu müssen völlig unzumutbar. Georg
Zu meiner c/c++ Zeit war eher das Problem eine brauchbare bzw. funktionierende Entwicklungsumgebung zu finden die vor allem auch 3D-Grafik konnte. Man glaubt gar nicht was für Probleme es geben kann bis der Compiler läuft.
das ist auch so eine Saceh die ich bei den freien C Projekten nicht verstehe.. Lazarus nutzt Freepascal als Basis, nur merkt man davon nichts, da es voll integriert ist. Wieso bekommen die Leute es aus der C Fraktion nicht gebacken, eine komplett zusammengestellte Version auf die Beine zu stellen. Es ist der gleiche Zirkus wie bei Linux mit bescheuerten Argumenten wie..man soll ja die freie Wahl haben blaaaa Hätte man ja dennoch, auch wenn es einfach eine montierte und eine zerfledderte Version gäbe. Freepascal gibt es ja auch noch eigenständig , es gibt sogar bereits alternativen zu Lazarus..dennoch ist nicht alles zerstückelt..sondern man lädt es runter..installiert..startet..läuft...ALLES, bis auch die Hilfen..warum die das nicht integrieren verstehe ich nicht--- Aber bei C wirkt alles nur wie Gefrickel..als ob die verschiedenen Projekte nicht in der LAge sind miteinander zu arbeiten oder sich zu koordinieren oder was auch immer
Ich habe letztes Jahr mal versucht was in Lazarus zu machen, es hat nicht geklappt. Vielleicht gehe ich da als Lazarus Anfänger falsch ran, aber die GUI ist ein paar mal abgestürzt. Auch waren die Widgets jetzt nicht so dass ich sooo grosse Vorteil hätte (Graphen zur Darstellung von wissenschaftlichen Daten habe ich nicht gefunden) Es hat (leider) keinen so guten Eindruck gemacht.
abgestürzt?!?! Okayyyyy..ist bei mir noch nie passiert.. Vielleicht können die anderen was dazu sagen
hast Du das mal ins Lazarus Forum geschrieben? Normalerweise kümmert sich da immer jemand fix drum
Max S. schrieb: > Ich finde nach wie vor, das Lazarus/Deplhi/PAscal unschalgbar für die > meisten Anwendungen ist. Ich finde es ist ein verbuggter Müllhaufen. Freepascal geht vielleicht noch aber die ganzen schlecht rangeflanschten libs in Lazarus sind doch ein elendiges Gebastel. Ich habe damit mal ein paar GUIs versucht zu bauen, da kam nur instabiler Müll bei raus, fast so wie das Original Delphi von Borland, das war ja auch in einige Versionen völlig kaputt, da hatten die Lazarus irgendwie das Original an der flaschen Stelle zu exakt nachgebildet. Die barocke Sprachbasis nervt doch heute nur noch, in den 70ern war das vielleicht ein Fortschritt und als imperative Lehrsprache ideal aber sowas will ich nicht verwenden müssen um damit täglich zu entwickeln.
Stefan BT. schrieb: > Wieso bekommen die Leute es aus der C Fraktion nicht gebacken, eine > komplett zusammengestellte Version auf die Beine zu stellen. Codeblocks, Dev-C++
klingen beide auch nicht super :-( http://www.cplusplus.com/forum/windows/214068/ Probleme gibt es wohl bei allem egal ob C oder Pascal Compilern Aber egal, wir sind ja bei Pascal ;-)
dumdidum (nicht angemeldet) schrieb: > Ich habe letztes Jahr mal versucht was in Lazarus zu machen, es hat > nicht geklappt. bei mir dito vor ca. 3 Jahren, Lazarus ist zwar nicht abgestürzt, es hat aber irgendwas gefehlt, weiß schon gar nicht mehr was. Also schon mal nichts mit einfach kopieren und los gehts. Im Lazarusforum waren sie zwar deutlich netter als hier, aber außer alles löschen und neuinstallieren ist ihnen auch nichts eingefallen.
Walter schrieb: > Im Lazarusforum waren sie zwar deutlich netter als hier, aber außer > alles löschen und neuinstallieren ist ihnen auch nichts eingefallen. Was nützt nett wenns dann inkompetent ist. Dann lieber einen (echten) MaWin. Du wirst vieleicht angeschissen aber bekommt zu 95% eine gute Lösung/Hinweis
Der Andere schrieb: > Was nützt nett wenns dann inkompetent ist. Bisher hab ich auf alle Fragen im Lazarus / FPC Forum brauchbare Antworten bekommen, die zu einer Problemlösung führten. dumdidum (nicht angemeldet) schrieb: > Graphen zur Darstellung von > wissenschaftlichen Daten habe ich nicht gefunden TChart. Kannst Du direkt mit einbauen, genauso wie Datenbanken. Entweder ist das schon seeehr lange her oder Du hast nur mal kurz drübergeschaut. georg schrieb: > Mir blieb ja auch > nichts anderes übrig, als alte Programme weiter mit Delphi 7 zu pflegen > und mit Delphi nichts neues mehr anzufangen. Das kenn ich. Ich muss auch noch das alte StarOffice nehmen, was nicht mehr weiterentwickelt wird. Ich bin absolut nicht in der Lage, stattdessen OpenOffice oder gar LibreOffice zu nehmen. Es geht einfach nicht. Man, FreePascal, man. Das hat einen Delphi Importer und für ganz Harte kann man es wohl auch auf Delphi-Like umstellen. Random .. schrieb: > sowie mit > Pointern unterwegs Du musst jetzt sehr tapfer sein: copy_string(@text, @dispbuffer); Ja, FreePascal kann auch Pointer.
Max S. schrieb: > Wie kommt es, das von vielen Pascal/Lazarus/Delphi oft als > Anfängersprache bezeichnet wird? Ich sehe das ähnlich wie Wolfgang: Wolfgang schrieb: > Weil Pascal von Niklaus Wirth genau für diesen Zweck, nämlich als > Lehrsprache entwickelt wurde. > Lehrsprache und Anfänger passt doch erstmal zusammen Es gibt IMHO einen kleinen Unterschied zwischen einer Anfänger- und einer Lehrsprache: Eine Anfängersprache soll, egal wie, einen möglichst raschen Einstieg in die Programmierung ermöglichen. Ein Beispiel ist das klassische BASIC. Eine Lehrsprache soll Grundlagen der Programmierung vermitteln. Gründlichkeit, systematische Vorgehensweise und guter Programmierstil sind dabei wichtiger als der schnelle Erfolgserlebnis. Genau dafür wurde Pascal ursprünglich entwickelt. > Tatsächlich hat sich Pascal genauso wie C und C++ seit damals > weiterentwickelt. ... nur sehr viel langsamer. Obwohl Pascal 1 bis 2 Jahre vor C gestartet ist, waren die meisten Neuerungen in C bzw. C++ deutlich früher verfügbar als in Pascal bzw. Object Pascal. Als ich hobbymäßig und später im Studium Pascal lernte, waren die zur Verfügung stehenden Pascal-Dialekte noch voller Restriktionen, was ich zunächst einfach so hinnahm. Erst als mit C anfing, merkte ich, dass es auch anders geht. Damit war Pascal für mich erst einmal gestorben. Als ich dann das erste Mal mit Turbo-Pascal in Kontakt kam (es war eine Vorgabe in einem Entwicklungsauftrag), sah ich, dass darin die o.g. Restriktionen auf ein gesundes Maß reduziert waren. Zu diesem Zeitpunkt konnte ich C aber schon so gut, dass ich nach Abschluss des Projekts mich weiterhin C zuwandte. Als dann OOP groß in Mode kam, fing ich als logische Fortsetzung von C mit C++ an. Während C++ zu diesem Zeitpunkt schon einige Jahre gereift war, stand Turbo-Pascal mit seinen OOP-Erweiterungen noch ganz am Anfang. Zudem konnte ich C++ im Gegensatz zu Turbo-Pascal auch beruflich nutzen, so dass für Turbo-Pascal und seine Nachfolger bestenfalls noch der Hobbybereich blieb. Fürs Hobby, wo für mich einzig und alleine der Spaßfaktor zählt, gibt es unter den Unmenge von Programmiersprachen aber deutlich interessantere Alternativen.
Vka schrieb: > Wie das genau geht weiß ich nicht, kann aber bestätigen dass eine mit > Lazarus & Standardeinstellungen erstellte .exe auf jedem Windows System > läuft. Stimmt nicht ganz. Alles, was bei Lazarus an librarys nicht dabei ist und nachinstalliert wurde, muß auch am Zielrechner als Dll mitgeliefert werden. Wolfgang schrieb: > Weil Pascal von Niklaus Wirth genau für diesen Zweck, nämlich als > Lehrsprache entwickelt wurde. Das verwendete Objectpascal hat mit den ursprünglichen Pascal eigentlich nur noch wenig zu tun. georg schrieb: > Ursprünglich tat mir das leid, aber inzwischen ist mir klar dass es > keinen Sinn hat ein totes Pferd nur aus Gewohnheit weiterzureiten. Du kannst problemlos Lazarus statt Delphi verwenden. Das wird gut gepflegt und kostet auch nichts. dumdidum (nicht angemeldet) schrieb: > Es hat (leider) keinen so guten Eindruck gemacht. Abstürze und dergleichen habe ich nie gehabt. Weder bei der GUI noch mit dem Kompilat. Webfehler schrieb: > Ich habe damit mal ein paar GUIs versucht zu > bauen, da kam nur instabiler Müll bei raus, fast so wie das Original dto., kann ich nicht nachvollziehen. ich muß aber zugeben, daß ich unter Linux entwickle. Wie es unter Windows aussieht kann ich nicht sagen.
:
Bearbeitet durch User
Max S. schrieb: > Wie kommt es, das von vielen Pascal/Lazarus/Delphi oft als > Anfängersprache bezeichnet wird? Naja, weil es genau dafür konzipiert wurde -- quasi als eine Art anderes C, ohne dessen (durchaus mannigfaltigen) Stolpersteine. > Tatsächlich hat sich Pascal genauso wie C und C++ seit damals > weiterentwickelt. Klar. > Liegt es daran, das viele, als es Borland damals mit Pascal für Windows > vermasselt hatte, auf C umgestiegen sind, und gar nicht gemerkt haben, > das der Fehler von Borland von anderen ausgemerzt wurde, dadurch das > sich das Sterben von Borland so lange hingezogen hatte? Nein. > Ich finde nach wie vor, das Lazarus/Deplhi/PAscal unschalgbar für die > meisten Anwendungen ist. Für reine Anwendungsprogramme ist das schon ziemlich gut, aber im Bereich der Systemsoftwareentwicklung sieht das ein bisschen anders aus. Man kann systemnahe Software natürlich auch mit Pascal, Delphi oder Lazarus bauen, aber moderne Betriebssysteme sind nahezu alle in C-Dialekten geschrieben, und die passen nun einmal am Besten zu C und C++. > In C++ sehe ich eigentlich nur MS Visual C++ als vergleichbar, was das > schnelle Erstellen von Programmen angeht Für Prototyping und RAD haben die interpretierten Sprachen gewonnen, tut mir leid. MSVC und MSVC++ sind ganz nett, aber was die können, können Qt und andere moderne Frameworks auch, das ist schon lang nichts Besonderes mehr. Was Du meinst ist jedoch auch nicht die Technik, sondern nur deren IDE. Und um shiqqe GUIs zusammen klicken... das kann heute ja jeder.
Sheeva P. schrieb: > aber moderne Betriebssysteme sind nahezu alle in > C-Dialekten geschrieben, und die passen nun einmal am Besten zu C und > C++. Du weisst aber schon, dass der Computer kein C oder Pascal Code ausführt, sondern kompilierten Maschinencode? Natürlich kannst Du in Freepascal Deine GUI mit Qt5 bauen, welches in C geschrieben ist, und auch C-Libs einbinden. Und meinem ATmega ist es auch egal, ob das Programm in ASM, C oder Freepascal geschrieben ist. Nur mir nicht. Ich hab letztens eine komplexe Steuerung von C auf Pascal übertragen, inklusive I2C, Uart, LCDisplay, und es war ein Genuß.
Karl schrieb: > Sheeva P. schrieb: >> aber moderne Betriebssysteme sind nahezu alle in C-Dialekten > > Du weisst aber schon, dass der Computer kein C oder Pascal Code > ausführt, sondern kompilierten Maschinencode? Ach Gottchen. Du weißt natürlich auch, daß ich das weiß, oder? > Natürlich kannst Du in Freepascal Deine GUI mit Qt5 bauen, welches in C > geschrieben ist, und auch C-Libs einbinden. Selbstverständlich, das ist ja nur ein ABI. Aber daß es zwar möglich ist, aber mehr Aufwand ist, in C geschriebene ABIs in Freepascal zu verwenden, also das... das weißt Du doch sicher auch? http://wiki.freepascal.org/libc_unit > Und meinem ATmega ist es auch egal, ob das Programm in ASM, C oder > Freepascal geschrieben ist. Nur mir nicht. Ich hab letztens eine > komplexe Steuerung von C auf Pascal übertragen, inklusive I2C, Uart, > LCDisplay, und es war ein Genuß. Du bist wirklich ein lustiger Stalker... Aber Software zu schreiben, die auf einem Betriebssystem laufen soll, ist immer noch etwas anderes, als Software zu schreiben, die ein Betriebssystem ist. U get the idea.
und dennoch liefen die ersten Apple Betriebssysteme witzigerweise in Pascal :-) zu einer Zeit wo Pascal wirklich noch nicht so der Hit war. Richtig gut wurde Pascal ja ab V6 oder so
Max S. schrieb: > und dennoch liefen die ersten Apple Betriebssysteme witzigerweise in > Pascal :-) Ganz bestimmt nicht. Pascal ist vielleicht auf dem Apple durch das UCSD Pascal bekannt geworden. Die Idee dahinter, das auf p-Code laufen zu lassen fand ich damals genial. Edit: Gerade gesehen: Du hast Recht. Das hätte ich jetzt nicht gedacht, daß man mit Pascal ein BS geschrieben hatte.
:
Bearbeitet durch User
Max S. schrieb: > und dennoch liefen die ersten Apple Betriebssysteme witzigerweise in > Pascal :-) zu einer Zeit wo Pascal wirklich noch nicht so der Hit war. Das erste Betriebssystem von Apple war Apple DOS und komplett in Assembler geschrieben. Du beziehst dich auf das OS für den Apple Lisa, der aber wohl eher als Experiment angesehen ist, nahezu unverkäuflich war und schon nach einem Jahr durch seinen Nachfolger, den Macintosh abgelöst wurde. Dessen OS war wiederum komplett in Assembler geschrieben. Ich vermute stark, dass auch beim Lisa OS der Kernel, die Treiber, die Grafikprimitive für die Fensteroberfläche u.ä. weitgehend in Assembler implementiert wurden. Soll nicht dieses Jahr der Quellcode veröffentlicht werden? Da könnte man ja nachschauen.
was ja nichts daran ändert, das auch damals Pascal für inovative Projekte eingesetzt wurde. Das Lisa ein Flop wurde, hatte bekanntermaßen andere Gründe. Im Detail weiß ich es natürlich auch nicht, was genau alles in Pascal geschrieben wurde. Es ist aber so oder so ein gutes Gegenbeispiel, für die die meinen, Pascal taugte damals nichts. Apple Lisa https://www.youtube.com/watch?v=RW25-OuoFIk
:
Bearbeitet durch User
Max S. schrieb: > Wie kommt es, das von vielen Pascal/Lazarus/Delphi oft als > Anfängersprache bezeichnet wird? > Tatsächlich hat sich Pascal genauso wie C und C++ seit damals > weiterentwickelt. Nein, die Gründe liegen ganz woanders. Pascal ist eine Programmiersprache, die man auch als Nicht-Programmierer so einigermaßen lesen kann. Zumindest ergibt sich der Sinn bei biederer Schreibweise und nicht allzu komplexen Konstrukten auch dem Uneingeweihten. Bei C ist das völlig anders, da muß man zuerst ne Menge lernen, um einen C-Quelltext überhaupt lesen zu können. Das ist der Unterschied - und mir sind schon viele Programmierer untergekommen, die ganz erheblichen Wert darauf legten, daß man als Chef ihre Machwerke möglichst NICHT verstehen kann, weil sie sich dadurch für unabkömmlich hielten. Ich kann das verstehen, schließlich ist die Angst um den eigenen Arbeitsplatz schwerwiegender für den Einzelnen als die Lesbarkeit der Quellen. Und genau deshalb war C bei beruflichen Programmierern so beliebt. Was daraus geworden ist - Pufferüberläufe auf dem Stack als Viren-Einfallstore, vergeigte Pointer usw. - ist ja aus den letzten Jahrzehnten sattsam bekannt. Hier haben wir einen Interessenkonflikt, den man eigentlich nicht ausräumen kann. Vermeintliche Sicherung des eigenen Arbeitsplatzes auf der einen Seite, C als fast die einzige Programmiersprache auf der anderen Seite - wobei das Schlimme an C ist, daß C im Gegensatz zu Pascal erwiesenermaßen NICHT renovierungsfähig ist. Das Debakel um die Integer-Typen per Headerdatei anstelle der Renovierung der Compiler ist ein beredtes Beispiel dafür. Nun ist dieser Übelstand vielen C-Programmierern durchaus bewußt, weswegen immer mal wieder "neue" Sprachen erfunden werden, die aber alle aussehen wie durch den Fleischwolf gedrehtes C, weil sie im Grunde nur Pre-Compiler zu C hin sind. Abgesehen von alledem finde ich eine Monokultur sowohl in der HW als auch bei den Programmiersprachen einfach SCHLECHT. Da schert mich auch nicht, daß C-Programmierer, die von dem heutigen Pascal keine Ahnung haben und Delphi oder Lazarus (als IDE's) mit Pascal als Sprache verwechseln, sich herablassed über Pascal äußern. Auf dem PC ist sowohl Delphi als auch Lazarus schlichtweg unschlagbar, denn es bietet ein ordentliches GUI und eine mächtige Programmiersprache und es liefert ne standalone EXE, die ohne fette Runtime-Systeme wie QT oder .Net oder Java usw. auskommt. Die Ablehnung von Pascal ist also letztlich reine Borniertheit. W.S.
W.S. schrieb: > Pascal ist eine Programmiersprache, die man auch als Nicht-Programmierer > so einigermaßen lesen kann. Zumindest ergibt sich der Sinn bei biederer > Schreibweise und nicht allzu komplexen Konstrukten auch dem > Uneingeweihten. Na ja, beim verwendeten Object Pascal würde ich das nicht so unterschreiben. Das gilt vielleicht für die 1975er Pascal Urversion. Wenn man sich auf diese Sprachelemente beschränken würde, dann würde das programmieren damit keinen Spaß mehr machen. > Auf dem PC > ist sowohl Delphi als auch Lazarus schlichtweg unschlagbar, so sehe ich das auch.
W.S. schrieb: > und es liefert ne standalone EXE, die ohne fette Runtime-Systeme Wie schon mehrfach dargelegt, ist das auch mit C- bzw. C++-Compilern exakt genauso möglich. Das ist also kein Vorteil von Pascal.
Rufus Τ. F. schrieb: > Das ist also kein Vorteil von Pascal. Er spricht in diesem Zusammenhang von Delphi/Lazarus.
W.S. schrieb: > Pascal ist eine Programmiersprache, die man auch als Nicht-Programmierer > so einigermaßen lesen kann. Zumindest ergibt sich der Sinn bei biederer > Schreibweise und nicht allzu komplexen Konstrukten auch dem > Uneingeweihten. Bei C ist das völlig anders, da muß man zuerst ne Menge > lernen, um einen C-Quelltext überhaupt lesen zu können. > > Das ist der Unterschied - und mir sind schon viele Programmierer > untergekommen, die ganz erheblichen Wert darauf legten, daß man als Chef > ihre Machwerke möglichst NICHT verstehen kann, weil sie sich dadurch für > unabkömmlich hielten. Glaube ich nicht. > Ich kann das verstehen, schließlich ist die Angst um den eigenen > Arbeitsplatz schwerwiegender für den Einzelnen als die Lesbarkeit der > Quellen. Wirren Code kann man in jeder Sprache fabrizieren, dazu benötigt man kein C :-) Und da helfen auch "Begin" und "End" nicht weiter. > Und genau deshalb war C bei beruflichen Programmierern so beliebt. Nein, C war und ist vor allem beliebt, weil 1.) es dafür einfach mit riesigem Abstand den meisten Quellcode im Netz gibt 2.) man damit sehr kompakten Code schreiben kann - was aber natürlich immer zu Lasten der Lesbarkeit geht. Dort einen guten Kompromiss zu finden zeichnet einen guten Programmierer aus. Knifflige Stellen sollte man schön auseinanderziehen und sorgfältig Dokumentieren, Allerweltssachen kann man knackig und kompakt aufschreiben. 3.) C-Compiler für jede Plattform verfügbar sind: wenn es nur einen Compiler gibt, dann ist das mit ziemlicher Sicherheit ein C-Compiler > Was > daraus geworden ist - Pufferüberläufe auf dem Stack als > Viren-Einfallstore, vergeigte Pointer usw. - ist ja aus den letzten > Jahrzehnten sattsam bekannt. Klar, das ändert aber nichts an den obigen Punkten. > Abgesehen von alledem finde ich eine Monokultur sowohl in der HW als > auch bei den Programmiersprachen einfach SCHLECHT. Ja, das stimmt - wobei es schon viele Programmiersprachen gibt. Hier wird bspw. 90% der Arbeit (auch auf Mikrocontrollern) in Tcl/Tk erledigt. > Da schert mich auch nicht, daß C-Programmierer, die von dem heutigen > Pascal keine Ahnung haben und Delphi oder Lazarus (als IDE's) mit Pascal > als Sprache verwechseln, sich herablassed über Pascal äußern. Auf dem PC > ist sowohl Delphi als auch Lazarus schlichtweg unschlagbar, denn es > bietet ein ordentliches GUI und eine mächtige Programmiersprache und es > liefert ne standalone EXE, die ohne fette Runtime-Systeme wie QT oder > .Net oder Java usw. auskommt. Das kannst Du alles auch in C und bspw. auch in Tcl und vielen anderen Sprachen haben. > Die Ablehnung von Pascal ist also letztlich reine Borniertheit. Nein, das sind schon handfeste Gründe - die Angst um den Arbeitsplatz gehört sicher nicht dazu. Hier bei uns schon gar nicht ;-)
W.S. schrieb: > Pascal ist eine Programmiersprache, die man auch als Nicht-Programmierer > so einigermaßen lesen kann. Zumindest ergibt sich der Sinn bei biederer > Schreibweise und nicht allzu komplexen Konstrukten auch dem > Uneingeweihten. Bei C ist das völlig anders, da muß man zuerst ne Menge > lernen, um einen C-Quelltext überhaupt lesen zu können. Klar. Das war für mich einer der Gründe auf C zu wechseln: Man tippt sich die Finger wund. 1 Seite Pascal ~ 1 Zeile C. Übersichtlicher ist so eine Pascal-Litanei nicht.
:
Bearbeitet durch User
Joachim D. schrieb: > W.S. schrieb: >> Pascal ist eine Programmiersprache, die man auch als Nicht-Programmierer >> so einigermaßen lesen kann. Zumindest ergibt sich der Sinn bei biederer >> Schreibweise und nicht allzu komplexen Konstrukten auch dem >> Uneingeweihten. Bei C ist das völlig anders, da muß man zuerst ne Menge >> lernen, um einen C-Quelltext überhaupt lesen zu können. > > Klar. Das war für mich einer der Gründe auf C zu wechseln: Man > tippt sich die Finger wund. 1 Seite Pascal ~ 1 Zeile C. > Klar geht das Schreiben des Quelltextes in C schneller. Dafür muß man dann eben wesentlich mehr Zeit für die Fehlersuche aufwenden. Das ist dann Ökonomie. Deshalb: Pascal! Lieber in Ruhe einen Quelltext geschrieben, den man auch in 10 Jahren noch versteht als so eine durch den Wolf gedrehte Sonderzeichensammlung.
Mein aktuelles Programm besteht aus >22000 Zeile C-Code, relativ kompakt geschrieben. In Pascal wären das endlose Tapeten.
Na dann mal: wer von euch Lazarus Fans benutzt das professionell?
Ich frage mich warum das jetzt in einen Streit Pascal-C ausartet. Ich arbeite mit beidem: Desktop Anwendung mit GUI -> Pascal uC oder Treiber ect. -> C
ich arbeite zumindest bei µC beruflich mit Pascal. Ich verstehe Deine Frage auch nicht...eine Menge nutzen Pascal beruflich. Es gibt etliche kommerzielle Programme die in Delphi geschrieben sind..also muss es auch genug geben die das beruflich nutzen-oder?!
dumdidum (nicht angemeldet) schrieb: > Na dann mal: wer von euch Lazarus Fans benutzt das professionell? Ohne das Wort „Fan“ zu gebrauchen. Ich benutze Pascal beruflich sowohl auf der PC Seite (Delphi) und auf der Mikrocontrollerseite (mikroPascal PRO).
Entwickele als Freiberufler unter anderem für eine Firma kleine GUI Tools (Berechnungstools, HMIs zur Kommunikation mit Hardware, ...). Sind alle in Lazarus entwickelt. Kann ich prima unter Linux entwickeln und final für deren Windowsumgebung kompilieren. Bin sehr zufrieden. Hatte vor vielen Jahren mit Turbo Pascal angefangen als C-Compiler für PCs noch sehr teuer waren und so eine Affinität bleibt erhalten. Und ja, muss die Programme für die Hardware auch in C schreiben - fällt mir aber auch deutlich schwerer. Gerhard
Karl schrieb: > Natürlich kannst Du in Freepascal Deine GUI mit Qt5 bauen, welches in C > geschrieben ist, und auch C-Libs einbinden. Die Möglichkeit C-Bibliotheken einzubinden haben glücklicherweise viele Programmiersprachen. Das hilft dir nur bei Bibliotheken wie Qt, die in C++ geschrieben sind, alleine nicht viel.
Chris D. schrieb: > man damit sehr kompakten Code schreiben kann - was aber natürlich immer > zu Lasten der Lesbarkeit geht. Begin und end und co stellen eine überflüssige Grundlast da, die die Lesbarkeit herabsetzen, sobald man nicht mehr blutiger Anfänger ist. Bei kleinen abgeschlossen Projekten mit ein paar tausend Zeilen mag das egal sein. Es hat einen Grund, warum Punkt und Komma in Sätzen klein sind, analog zu klammern in C. Und vor einer Überschrift steht nicht Überschrift.
Joe G. schrieb: > Ich benutze Pascal beruflich sowohl auf der PC Seite (Delphi) Delphi waer mir halt zu teuer und die Frage isr wie lange da noch neue Versionen verfuegbar sein werden. DasDelphi professionell einsetzbar ist, ist klar. Ich wollte nur wissen ob lazarus so weit ist.
Achim S. schrieb: > Begin und end und co stellen eine überflüssige Grundlast > da, die die Lesbarkeit herabsetzen, sobald man nicht mehr > blutiger Anfänger ist. [...] > Es hat einen Grund, warum Punkt und Komma in Sätzen klein > sind, analog zu klammern in C. Kurioserweise stimmt das. Lange Zeit war ich auch der Meinung, dass es die Überbetonung der Sonderzeichen ist, die C so unlesbar macht -- bis mir zwei Gegenargumente aufgefallen sind: 1. Die Satzstruktur in natürlichen Sprachen wird, wie Achim korrekt feststellte, ebenfalls durch Sonderzeichen (Interpunktion) und nicht durch Schlüsselworte codiert. 2. Zu den verbreitetsten "Sonderzeichen-Codes" gehört (neben den Verkehrszeichen) sicherlich die Notenschrift in der Musik. Abgesehen von kleinen Kindern, die sich die Tonnamen auf die Klaviertasten schreiben, kenne ich wirklich niemanden, der sich ernsthaft eine "Klartext-Beschreibung" statt der Notenschrift wünscht. (Tabulaturen sind für mich noch kein Klartext.) Dass C Scheisse ist, kann somit nicht primär an den Sonderzeichen liegen :)
Andreas B. schrieb: > Ich frage mich warum das jetzt in einen Streit Pascal-C ausartet. Freitag? Achim S. schrieb: > Begin und end und co stellen eine überflüssige Grundlast da, die die > Lesbarkeit herabsetzen, sobald man nicht mehr blutiger Anfänger ist. Wenn es für Dich ein Problem ist statt {} begin end zu schreiben dann hast Du wirklich ein Problem. Achim S. schrieb: > Bei > kleinen abgeschlossen Projekten mit ein paar tausend Zeilen mag das > egal sein. Wenn Du bei Enterprise Applications noch über {} oder begin end nachdenkst, dann hat Deine Firma ein Problem. /regards
:
Bearbeitet durch User
dumdidum (nicht angemeldet) schrieb: > Na dann mal: wer von euch Lazarus Fans benutzt das professionell? Ich benutze es beruflich, Zwei dutzend GUI-Tools für Produktions- oder Prüfvorrichtungen die wir intern benutzen (teils für Linux, teils für Windows) und Firmware-Updater die wir rausgeben sind mit Lazarus erstellt. Der Grund ist einfach: es existiert auf diesem Planeten einfach kein zweites Tool mit allen(!) diesen Features: cross Platform, GUI, nativ und ohne Runtime Libs, exzellenter GUI-Designer, exzellente IDE. Und daß Object Pascal-Code länger oder mehr zu schreiben wäre als vergleichbares C++ ist übrigens ausgemachter Bullshit. Die beiden Sprachen geben sich im Bezug auf Codeumfang nichts da beide ziemlich gleich mächtig im Sprachumfang sind und die Hälfte der Schreibarbeit macht sowieso die IDE (Methoden oder Interfaces implementieren, Eventmethoden generieren, zu jedem begin/end hinschreiben, etc. muss keiner von Hand machen). Und begin hab ich auf ner deutschen Tastatur schneller hingeschrieben als mir bei der geschweiften Klammer die Finger zu verrenken.
:
Bearbeitet durch User
Andreas H. schrieb: > Achim S. schrieb: >> Begin und end und co stellen eine überflüssige Grundlast >> da, die die Lesbarkeit herabsetzen, sobald man nicht mehr >> blutiger Anfänger ist. > > Wenn es für Dich ein Problem ist statt {} begin end zu > schreiben dann hast Du wirklich ein Problem. Versuche doch statt der reflexhaften Herabsetzung des Diskussionspartners ausnahmsweise mal eine sachliche Entgegnung Doppelpunkt Wenn Interpunktion in Form von Schlüsselworten Klammerauf statt Sonderzeichen Klammerzu wahrnehmungspsychologisch günstig wäre Bindestrich warum verwenden natürliche Sprachen dann doch Sonderzeichen dafür Fragezeichen Es ist nicht primär ein Problem des Fettruck Schreibens Fettdruckaus Komma sondern des Fettdruck Lesens Fettdruckaus Punkt Das ist viel schwerwiegender Komma weil jeder Text Bindestrich und Quelltexte sind auch Texte Bindestrich öfter gelesen als geschrieben wird Punkt > Achim S. schrieb: >> Bei kleinen abgeschlossen Projekten mit ein paar >> tausend Zeilen mag das egal sein. > > Wenn Du bei Enterprise Applications noch über {} oder > begin end nachdenkst, dann hat Deine Firma ein Problem. Nein: Da generell zu wenig über {} oder begin end nachgedacht wird, haben alle Branchen ein Problem, die Computer einsetzen. Die Fehlentscheidungen von heute sind die Geschäftsgrundlage von morgen :)
Dass in Windows immer diese runtimes installiert sein müssen vor jedem Starten eines selber gemachten Programms ist auch etwas seltsam.
Joachim D. schrieb: > Mein aktuelles Programm besteht aus >22000 Zeile C-Code, > relativ kompakt geschrieben. In Pascal wären das endlose > Tapeten. Unsinn, man kann auch in ObjectPascal sehr "kompakten" Quelltext schreiben. Allerdings: Nur Masochisten und Idioten tun sich das an... Mit "kompakt" meinen C'ler nämlich typischerweise: unleserlich für jeden anderen und nur mit Mühe leserlich für einen selber. Jedenfalls wenn man länger als zwei Monate nicht in den Quelltext reingeschaut hat. Deswegen ist dieser "kompakte" Code in der professionellen Softwareentwicklung auch in C absolut verpönt, zumal wenn die Software in Teamarbeit entsteht...
Andreas H. schrieb: > Wenn es für Dich ein Problem ist statt {} begin end zu schreiben dann > hast Du wirklich ein Problem. Das Problem ist weniger das Schreiben als das Lesen. Jeder Editor kann { durch begin ersetzen und } durch end. Aber beim Lesen soviel Ballast vorgesetzt zu bekommen, ist einfach nur nervig. Aber wer's ballastreich mag, kann es auch in C so schreiben. Am Anfang ein
1 | #define begin {
|
2 | #define end }
|
und der Compiler versteht es auch.
Jobst Q. schrieb: > Andreas H. schrieb: >> Wenn es für Dich ein Problem ist statt {} begin end zu >> schreiben dann hast Du wirklich ein Problem. > > Das Problem ist weniger das Schreiben als das Lesen. Jeder > Editor kann { durch begin ersetzen und } durch end. Aber > beim Lesen soviel Ballast vorgesetzt zu bekommen, ist > einfach nur nervig. Naja, es ist nervig, weil es codierungstechnisch schlecht ist. Sehr viele Codes und Übertragungssysteme kennen neben den Nutzdatensymbolen noch irgendwelche Steuercodes, die primär den Decoder steuern sollen und den Nutzdatenstrom strukturieren. In der natürlichen Sprache ist das die Interpunktion. Kein normaler Mensch will eine Interpunktion mittels Schlüsselworten. Das war mMn eine der wenigen echten Fehlentscheidungen von Wirth.
Zenbtrales Problem von Pascal war und ist, daß der Standard vollkommen unbrauchbar war und sich daher jede Implementation was Eigenes zurechtgefrickelt hat - was dann aber zu keiner anderen Implementierung kompatibel war. Das ist heute immer noch so, und mit Freepascal sitzt man dann auf einer Insel fest. Mit C ist das nicht so, weil es brauchbare Standards gibt und die implementiert werden. Zudem hat man dadurch auch mit Legacy-Code keine Probleme, weil man jedem C-Compiler sagen kann, nach welchem Standard er denn compilieren soll, was bei Pascal mangels brauchbarer Standards prinzipbedingt nie geht. Dann die Sprache selber, die zu Lehrzwecken mit ihrem sehr strikten Typensystem zwar gut war, in der Praxis aber genau dadurch oft genug im Weg herumstand. Das ging soweit, daß Arrays gleichen Grundtyps, aber verschiedener Länge inkompatibel waren, weswegen Strings verschämt in einem Headerfile als Array immer derselben Länge definiert waren. Das Ärgernis mit begin/end, was wesentlich schlechter lesbar ist als die Klammern in C (sioehe Possetjels Posting oben), ist natürlich auch da, aber IMO nicht so kampfentscheidend. Annehmbarer C-Code ist besser lesbar als Pascal, und was die C-Obfuskationskünstler verbrechen, wäre auch in Pascal nicht lesbar. Ach ja, im originalen Pascal gab es kein break/continue. Das führte dazu, daß Pascal-Programmierer sich irgendwelche Hilfsflags definiert haben, die im Schleifenkopf auch noch abgeprüft wurden. Erstens kostete das Performance, zweitens war es schlechter lesbar. Man merkt einfach, daß Pascal am grünen Tisch von einem Theoretiker entworfen wurde, während C von Anfang an den Dogfood-Test bestehen mußte. ("Eat your own dogfood" = der Entwickler muß seine eigene Kreation selber benutzen) Ich kann übrigens beide Sprachen gut vergleichen, weil ich mit Turbo-Pascal ein paar Jahre programmieren gelernt habe und danach auf C umgestiegen bin. Das war wie Radfahren lernen und dann die Stützräder abnehmen: man fliegt ein paarmal hin, aber wenn man den Bogen erstmal raushat, will man keine Stützräder mehr zurückhaben.
Possetitjel schrieb: > Kein normaler Mensch will eine Interpunktion mittels > Schlüsselworten. Wenn du das wirklich glaubst, bist du definitiv ein Idiot. Schließlich kennt auch C eine Menge Schlüsselwörter, aber offenbar zu wenige, was dazu geführt hat, das manche völlig idiotisch mit völlig unterschiedlicher Bedeutung mehrfach verwendet wurden, man denke nur an "static" oder "void"... Was aber noch viel wichtiger ist: der Zweck einer Programmiersprache ist deren Benutzung durch Menschen und für die ist es nunmal viel einfacher zu lesen: while irgendwas [... sehr viel Scheiß ...] end while in C sieht das dann typisch sehr oft so aus: while (irgendwas) { [... sehr viel Scheiß ...] } //end while Mal ganz abgesehen von den völlig nutzlosen Klammern um das Conditional: der Kommentar allein spricht Bände über den Nutzen einer ausschweifenden Syntax (OK: hier nicht Pascal, sondern VB.NET)... Und: im Gegensatz zu dem Kommentar in C, brauche ich das "end while" in VB.net nicht selber hinschreiben, das nimmt mir die Code Completion mit zwei Tastenanschlägen ab... So und nun rechne einfach mal selber die Tastenanschläge für diesen Strukturrahmen zusammen: Wenn du nicht völlig blöd bist, wirst du erkennen: VB.net ist effizienter als C. Zumindest beim Schreiben des Codes, beim Lesen sowieso. Nur in der Ausführungsgeschwindigkeit ist C im Vorteil, allerdings: je nach Umständen irgendwas zwischen kaum merklich bis hin zu sehr deutlich. Naja, bei ObjectPascal ist's natürlich auch nicht ganz so schick. Statt der "}"-Pyramide mit Kommentaren, was da eigentlich zu Ende ist von C, hat man bei OP halt die Pyramide von "end", auch mit Kommentaren, was da eigentlich jeweils zu Ende ist...
Max S. schrieb: > Wie kommt es, das von vielen Pascal/Lazarus/Delphi oft als > Anfängersprache bezeichnet wird? Von wem bitte?
Bla schrieb: > Dass in Windows immer diese runtimes installiert sein müssen vor jedem > Starten eines selber gemachten Programms ist auch etwas seltsam. Wie oft denn noch? Nein, das muss bei C- oder C++-Programmen nicht so gemacht werden. Es kann so gemacht werden. Bei den .Net-Sprachen sieht das anders aus, die kommen ohne ihre Laufzeitumgebung nicht aus, aber um die geht es hier ja auch nicht. c-hater schrieb: > Mal ganz abgesehen von den völlig nutzlosen Klammern um das Conditional Daß Du keine Ahnung von C hast, hast Du ja bereits mehrfach bewiesen, warum machst Du das jetzt schon wieder? Nehmen wir mal folgendes Beispiel:
1 | while (t = --i) |
2 | x = j++; |
Nach Deiner genialen Interpretation müsste das also auch so geschrieben werden können:
1 | while t = --i |
2 | x = j++; |
Und da der Zeilenumbruch nur optischer Zucker ist, also auch so:
1 | while t = --i x = j++; |
Hey, das ist ... Vorschlag zur Güte: Lass' Dich einfach über Dinge aus, von denen Du Ahnung hast. Da gibt es ja ein paar, wo Du das erfreulicherweise auch unter Beweis gestellt hast. Aber die C-Syntax? Nein.
Keiner N. schrieb: > Jetzt bin ich mal gespannt. Wie lautet denn die mehrfache Verwendung? Wenn du das noch nichtmal gerafft hast, kannst du definitiv kein C. Weil: schon bei recht kleinen Programmen stößt man fast unweigerlich auf diesen grenzdebilen Turbo-Schwachsinn. Siehe "void*" vs. "void functionname(void)". Dreimal "void", jeweils in einer völlig anderen Bedeutung. Sowohl semantisch als auch physisch... Ich überlasse es dir selber, in deinen weiteren Bemühungen, deine präferierte Programmiersprache auch tatsächlich irgendwann mal zu erlernen, auch dieses Geheimnis zu lüften...
Rufus Τ. F. schrieb: > Nehmen wir mal folgendes Beispiel: > >
1 | > while (t = --i) |
2 | > x = j++; |
3 | >
|
Das ist böse. Geht garnicht. Heute werden die curly braces (die du hier weggelassen hast) in der Praxis praktisch zwingend gefordert. Nötig sind sie bei allem, was mehr als ein Einzeiler ist, ja sowieso. Zwingend gefordert werden sie nur noch nicht von vom aktuellen (aber immer noch eher historischen) C-Standard. Aber das wird sicher kommen. Für jeden, der logisch denken kann und die Entwicklung des Sprachstandards verfolgt, liegt das völlig klar auf der Hand... > Vorschlag zur Güte: Lass' Dich einfach über Dinge aus, von denen Du > Ahnung hast. Da gibt es ja ein paar, wo Du das erfreulicherweise auch > unter Beweis gestellt hast. Aber die C-Syntax? Nein. Doch. Du vergißt immer wieder, dass ich ein guten Teil meines Einkommens mit Code in C verdiene. Ich kann C (so gut man das halt können kann). Mit Sicherheit kann ich C besser als 90% aller Leute, die in C programmieren. Und eben weil ich diesen Scheiß kann, weiß ich auch um die massiven Schwächen dieser Altlast der Evolution der Software-Entwicklung...
Rufus Τ. F. schrieb: > Nehmen wir mal folgendes Beispiel: > while (t = --i) > x = j++; Naja, aus meiner Sicht entbehrt es nicht einer gewissen Willkür, dass das ausgerechnet RUNDE Klammern sind. Wenn Blöcke in geschweifte Klammern eingeschlossen werden -- warum dann nicht auch die Schleifenbedingung? Und in der Tat sieht es in mindestens einer Programmier- sprache (Name ist dem Autor bekannt) genau so aus:
1 | while { ... } { |
2 | ... |
3 | } |
Das hat überdies den Charme, dass der Weg zu MISRA-kombatiblem Code nicht mehr sehr weit ist... :)
Possetitjel schrieb: > Blöcke in geschweifte Klammern eingeschlossen werden -- > warum dann nicht auch die Schleifenbedingung? Weil eines "Block" und das Andere "Bedingung" ist - schön zu unterscheiden :-)
c-hater schrieb: > Zwingend gefordert werden sie nur noch nicht von vom aktuellen (aber > immer noch eher historischen) C-Standard. Welcher C++-Standard fordert das denn Deiner Ansicht nach? > Aber das wird sicher kommen. Für jeden, der logisch denken kann und die > Entwicklung des Sprachstandards verfolgt, liegt das völlig klar auf der > Hand... Für Leute, die so von Ahnung in Sachen C nur so durchtränkt sind wie Du. -- Nein, natürlich will ich das von mir erwähnte Konstrukt nicht als nachahmenswert oder besonders toll darstellen, aber es ist perfekt legales C, perfekt legales C++ und im übrigen auch perfekt legales Java (bis auf die Einschränkung, daß "t" ein bool sein müsste). Possetitjel schrieb: > Naja, aus meiner Sicht entbehrt es nicht einer gewissen Willkür, dass > das ausgerechnet RUNDE Klammern sind. Weil das eben kein Block ist, sondern ein Ausdruck.
Leider ist das Beispiel mit dem fehelnden Standard auch ein immer wieder wiederholter Fehler. Der Standsrd für Pascal ist Delphi...warum da nie zur Kenntnis genommen wird verstehe auch nicht. Evtl braucht der typisch Deutsche immer DIN normen und Regeln? damit etwas als Standard verstanden wird
Rufus Τ. F. schrieb: > Possetitjel schrieb: >> Naja, aus meiner Sicht entbehrt es nicht einer gewissen >> Willkür, dass das ausgerechnet RUNDE Klammern sind. > > Weil das eben kein Block ist, sondern ein Ausdruck. Ach. Und Ausdrücke werden in C generell in runde Klammern eingeschlossen?
Ich kann Eure Argumentiererei nicht wirklich nachvollziehen. Die Leute können doch ruhig in der Sprache ihrer Wahl programmieren die ihnen liegt. Wenn der AG auf etwas anderes besteht dann hat derjenige eben Pech gehabt und müßte sich anpassen wenn er dort bestehen will. Diejenigen die nicht mit der Zeit gehen wollen machen eben Platz für diejenigen die Mit der Zeit gehen.
:
Bearbeitet durch User
Possetitjel schrieb: > Und Ausdrücke werden in C generell in runde Klammern eingeschlossen? Im Zusammenhang mit while oder if ist das so üblich. Auch der Dreifach-Ausdruck von for wird in runden Klammern geschrieben. Überrascht Dich das jetzt? Jedenfalls kann weder bei if, while, for oder auch einem Funktionsaufruf ein Block angegeben werden.
Dieter F. schrieb: > Possetitjel schrieb: >> Blöcke in geschweifte Klammern eingeschlossen werden -- >> warum dann nicht auch die Schleifenbedingung? > > Weil eines "Block" und das Andere "Bedingung" ist - > schön zu unterscheiden :-) Nein. Völlig willkürlich. Ich kann in der Festlegung keinerlei wohlbegründeten sachlichen Sinn erkennen. Der Compiler muss sowieso wissen, dass das "while" zwei Argumente braucht, nämlich eine Bedingung und einen Anweisungsblock. Warum festgelegt wurde, dass das eine mit runden Klammern einzuschließen ist, das andere aber (manchmal) mit geschweiften, ist für mich logisch nicht nachvollziehbar. Es geht mir nicht darum, DASS das so festgelegt wurde. Es geht mir darum, dass ich in der Festlegung keinen logischen Sinn sehe.
Rufus Τ. F. schrieb: > Possetitjel schrieb: >> Und Ausdrücke werden in C generell in runde Klammern >> eingeschlossen? > > Im Zusammenhang mit while oder if ist das so üblich. > Auch der Dreifach-Ausdruck von for wird in runden > Klammern geschrieben. Ja -- und welchen Zweck hat diese Üblichkeit? Außer dem natürlich, syntaktisch korrekten C-Code zu produzieren... :) > Überrascht Dich das jetzt? Nein. C strotzt vor Inkonsistenzen, da kommt es auf eine mehr oder weniger nicht an. > Jedenfalls kann weder bei if, while, for oder auch > einem Funktionsaufruf ein Block angegeben werden. Ich weiss. Und meine Frage ist: WARUM nicht? Ich frage nicht nach dem historischen Grund "Weil K&R das vor dreihundert Jahren so festgelegt haben", sondern nach einem auch heute noch gültigen LOGISCHEN Grund. WARUM ist es für den Compiler und/oder für den Programmierer wichtig, an dieser Stelle syntaktisch zwischen Ausdrücken und Anweisungsblöcken zu unterscheiden? In Tcl ist das nämlich nicht erforderlich, also folgere ich daraus, dass es sich um eine der zahllosen willkürlichen Eigenarten von C handelt.
Possetitjel schrieb: > Lange Zeit war ich auch der Meinung, dass es die Überbetonung > der Sonderzeichen ist, die C so unlesbar macht -- bis mir > zwei Gegenargumente aufgefallen sind: > > 1. Die Satzstruktur in natürlichen Sprachen wird, wie Achim > korrekt feststellte, ebenfalls durch Sonderzeichen > (Interpunktion) und nicht durch Schlüsselworte codiert. > > 2. Zu den verbreitetsten "Sonderzeichen-Codes" gehört (neben > den Verkehrszeichen) sicherlich die Notenschrift in der > Musik. Weitere Beispiele: 3. Mathematik: Schon Grundschüler lernen die Symbole +, −, · und :. Hier hat selbst Wirth eingesehen, dass a := b + c (Pascal) wohl irgendwie leichter zu erfassen ist als add b to c giving a (Cobol) 4. Kartenspiel: Selbst nach fünf Bier weiß ein Skatspieler, dass er besser kein Pik-Spiel ansagen sollte, wenn er auf keiner seiner Karten ein ♠ sieht. 5. Verkehrsschilder: Wie sähe wohl die Unfallstatistik aus, wenn man alle ⛛ an Kreuzungen durch Tafeln mit der Aufschrift "Hier müssen Sie dem Querverkehr Vorrang gewähren!" ersetzen würde? Symbole benutzte der Mensch schon lange bevor er Buchstaben zu Wörtern zusammengesetzt hat. Mittelfeld-Regisseur schrieb: > Klar geht das Schreiben des Quelltextes in C schneller. Dafür muß man > dann eben wesentlich mehr Zeit für die Fehlersuche aufwenden. Das ist > dann Ökonomie. > > Deshalb: Pascal! Du kannst auch beides gleichzeitig haben und sogar noch mehr: Im Vergleich zu C nur einen Bruchteil der Quelltextgröße und im Vergleich zu Pascal eine um ein Vielfaches höhere Fehlerdetektion bereits zur Compilezeit. Ich möchte jetzt aber nicht noch weitere Programmiersprachen in die Diskussion kippen, sonst wird's bald zu unübersichtlich :)
Possetitjel schrieb: > In Tcl ist das nämlich nicht erforderlich, also folgere > ich daraus, dass es sich um eine der zahllosen willkürlichen > Eigenarten von C handelt. Naja, es ist halt "historisch gewachsen". Wie so vieles andere an Code auch. Überraschend sind eigentlich nur Leute, die eine Quasi-Religion daraus machen, anstatt die Sache abstrakt zu sehen und nach wissenschaftlichen Gesichtspunkten zu bewerten. In aller Regel sind das eben Leute, die nur eine Sprache wirklich können und eigentlich auch garnix anderes lernen wollen. Also selbstbeschränkte Idioten. Ganz sicher ist das nach meiner Erfahrung so im Falle der typischen C-Fetischisten. Die können doch tatsächlich mehr Aufwand in eine (oft nur theoretische) Portabilität stecken als in die Lösung des Problems... Der Erfolg ist dann Code, der theoretisch für jedes Zielsystem übersetzbar ist, praktisch aber auf keinem wirklich läuft. Zumindest auf keinem wirklich gut...
Possetitjel schrieb: > WARUM ist es für den Compiler und/oder für den Programmierer > wichtig, an dieser Stelle syntaktisch zwischen Ausdrücken > und Anweisungsblöcken zu unterscheiden? Ich verstehe zwar den Fundamentalismus dieser Diskussion nicht, aber welche syntaktischen Elemente man verwendet, um die Abgrenzung der Bedingung vom Rest des Codes zu kennzeichnen, ist keine Frage zwingender Logik, sondern schlicht eine des persönlichen Geschmacks desjenigen, der die Sprache definiert. Ob das also if (a == b) oder if {a == b} oder if a = b then heisst, lässt sich nicht streng logisch begründen, so lange es sich dabei um reservierte Tokens handelt. Ebensogut hätte man es if a == b ) definieren können, denn die öffnende Klammer ist eigentlich nur syntaktischer Zucker. Etwas komplizierter wird es bei Sprachen, die keine reservierten Schlüsselwörter kennen. Bei denen also if if = then then legalen Code darstellt (PL/I). Erst recht, wenn man dann auch noch Blanks lustig reinstreuen kann (klassisches Fortran). Dann muss man sich um die Syntax deutlich mehr Gedanken machen, um die Sprache leidlich eindeutig zu kriegen. Die Sache ändert sich ein wenig, wenn man nicht auf der formalen Syntax rumreitet, sondern den Parser in der Implementierung betrachtet. In dem Fall kann man den gleichen Parser-Code für ( ... ) als Teil einer Ausdrucks und als Bedingung von "if" verwenden.
:
Bearbeitet durch User
Possetitjel schrieb: > das > andere aber (manchmal) mit geschweiften, Nö, das ist eindeutig. Wenn nur ein "Befehl/Anweisung" nach einem Ausdruck, dann sind keine geschweiften Klammern erforderlich. Wenn mehrere "Befehle/Anweisungen" nach einem Ausdruck, dann sind geschweifte Klammern erfoderlich. Ist für mich eindeutig, obwohl ich aus anderen "Ecken" (Cobol, PL/1, und ABAP) komme. Merkwürdig für mich ist nur die Praxis, die geschweifte öffnende Klammer direkt nach dem "Ausdruck" zu schreiben - das ist für mich unleserlich (daher pinne ich das alles um). Ich habe anfangs auch erhebliche Probleme mit der "Klammerei" gehabt und deswegen auf dem MC mit Assembler angefangen - aber mittlerweile komme ich damit gut klar und ziehe C dem Assembler (i.d.R.) vor.
c-hater schrieb: > > while irgendwas > [... sehr viel Scheiß ...] > end while > > in C sieht das dann typisch sehr oft so aus: > > while (irgendwas) > { > [... sehr viel Scheiß ...] > } //end while > > Mal ganz abgesehen von den völlig nutzlosen Klammern um das > Conditional: der Kommentar allein spricht Bände über den Nutzen einer > ausschweifenden Syntax (OK: hier nicht Pascal, sondern VB.NET)... Das ist ja echt grandios. "}" braucht gleich 2 Worte und noch besser ist das "{" oder "begin". Das ist (c-hater-style) total kompakt im unsichtbaren "NewLine" versteckt. Das nen ich mal eine ausgereifte Syntax.
c-hater schrieb: > hat man bei OP halt die Pyramide von "end", auch mit Kommentaren, was da > eigentlich jeweils zu Ende ist... Ich weiß nicht was ihr so treibt aber ich rücke vernünftig ein (bzw. die IDE macht das fast von selbst) und da sehe ich sofort welches end zu welchem begin gehört.
c-hater schrieb: > while irgendwas > [... sehr viel Scheiß ...] > end while > > in C sieht das dann typisch sehr oft so aus: > > while (irgendwas) > { > [... sehr viel Scheiß ...] > } //end while > > Mal ganz abgesehen von den völlig nutzlosen Klammern um das > Conditional: der Kommentar allein spricht Bände über den Nutzen einer > ausschweifenden Syntax (OK: hier nicht Pascal, sondern VB.NET)... Na ja, die eckigen Klammern um "den Scheiß" gibt es in beiden Varianten nicht. Die geschweiften Klammern sind für mich (mittlerweile) praktischer, wie ein "end while" (wobei ein entsprechende Kommentar bei einer ordentlichen IDE sowieso überflüssig ist). Wenn ich mit einem Klick "den Scheiß" ausblenden kann, ist die Logik für mich ausreichend übersichtlich.
Dieter F. schrieb: > ein "end while" Was ist ein "end while", in welcher Sprache gibts denn das? Basic?
Bernd K. schrieb: > Was ist ein "end while", in welcher Sprache gibts denn das? Basic? Frag das bitte C-hater
Yalu X. schrieb: > Symbole benutzte der Mensch schon lange bevor er Buchstaben zu Wörtern > zusammengesetzt hat. Wirth hatte auch Maschinen im Auge, die üblicherweise mit einem 6-Bit Zeichensatz arbeiteten. Der erste Pascal-Compiler lief auf einer solchen. Man kann aber nur Symbole verwenden, die es auch gibt. C geht von 7-Bit ASCII Code im amerikanischen Original aus. Weniger geht nicht. Die früher gerne verwendete Codierung deutscher Umlaute in 7-Bit Code macht aus C einfach nur gequirlte Scheisse: if ( aÄiÜ != 0 ) ä printf("?Ön"); ü Genau deshalb gibts die Trigraphs, aber so arg viel schöner sieht es damit auch nicht aus: if ( a??(i??) != 0 ) ??< printf("???/n"); ??> (Keine Gewähr für Fehlerfreiheit ;-)
Bernd K. schrieb: > Dieter F. schrieb: >> ein "end while" > > Was ist ein "end while", in welcher Sprache gibts denn das? Basic? Der c-hater findet, daß die schräge Syntax von VB.net gut erklärt, warum Pascal besser als C ist. So war er halt schon immer ;-)
A. K. schrieb: > Yalu X. schrieb: >> Symbole benutzte der Mensch schon lange bevor er Buchstaben zu Wörtern >> zusammengesetzt hat. > > Wirth hatte auch Maschinen im Auge, die üblicherweise mit einem 6-Bit > Zeichensatz arbeiteten. Der erste Pascal-Compiler lief auf einer > solchen. > > Man kann aber nur Symbole verwenden, die es auch gibt. C geht von 7-Bit > ASCII Code im amerikanischen Original aus. Weniger geht nicht. Die > früher gerne verwendete Codierung deutscher Umlaute in 7-Bit Code macht > aus C einfach nur gequirlte Scheisse: > if ( aÄiÜ != 0 ) ä printf("?Ön"); ü > Genau deshalb gibts die Trigraphs, aber so arg viel schöner sieht es > damit auch nicht aus: > if ( a??(i??) != 0 ) ??< printf("???/n"); ??> > (Keine Gewähr für Fehlerfreiheit ;-) Also sind begin/end der früher mal herrschenden IT-Steinzeit geschuldet und es besteht heute keine Notwendigkeit mehr für diese, oder? BTW, Trigraphs wurden (sehr zum Ärger der EBCDIC(/Lochkarten-)Fraktion) gerade aus dem C++-Standard gekickt.
c-hater schrieb: > while irgendwas > [... sehr viel Scheiß ...] > end while Neben der Lesbarkeit hat das noch einen anderen Charme. Gegenüber einfachem begin..end oder {..} erlaubt es dem Compiler, bei verhedderter Klammerung freundlich darauf hinzuweisen, dass ein "end if" nicht zu "while" passt. IDEs waren nicht immer so schlau wie heute.
:
Bearbeitet durch User
A. K. schrieb: > Klammernzählerei konnte ziemlich nervend sein. Wenn man vernünftig einrückt nicht - wie bei jeder anderen Programmiersprache auch.
Bernd K. schrieb: > Ich weiß nicht was ihr so treibt aber ich rücke vernünftig ein (bzw. die > IDE macht das fast von selbst) und da sehe ich sofort welches end zu > welchem begin gehört. Sprich: du schreibst nur sehr trivialen Code... [.. sehr viel Scheiß...] meint nämlich: sehr viel Scheiß. D.h.: sehr viele Zeilen. Wenn du bei deiner verschissenen schliessenden Klammer bist, siehst du die öffnende nicht mehr, d.h.: das Highlighting von Klammerpaaren, was natürlich jeder moderene Editor beherrscht, nützt dir soviel wie garnix...
Dieter F. schrieb: > Wenn man vernünftig einrückt nicht - wie bei jeder anderen > Programmiersprache auch. Ich gratuliere deinem Adlerauge, dem auch bei miserablem Font der Unterschied zwischen einem vertippten ) und dem gemeinten } sofort auffällt. Ohne Hilfe einer entsprechenden IDE, wohlgemerkt. ;-)
Dieter F. schrieb: > Wenn ich mit einem Klick "den Scheiß" ausblenden kann, ist die Logik für > mich ausreichend übersichtlich. Das ist ein schönes Beispiel, wozu Redundanz im Quelltext wirklich nützlich ist. Dein schönes Code-Folding fällt nämlich bei C-Quelltexten ganz schnell auf die Schnauze. Eben wegen der fehlenden Redundanz. Ein kleiner Fehler im Body (ein vergessenes Semikolon am Ende einer Zeile genügt) und die ganze Herrlichkeit bricht in sich zusammen...
Carl D. schrieb: > Also sind begin/end der früher mal herrschenden IT-Steinzeit geschuldet > und es besteht heute keine Notwendigkeit mehr für diese, oder? Korrekt. Eigentlich sollte man den APL Zeichensatz verwenden. Da gibts überhaupt keine Schlüsselworte, die gesamte Sprache verwendet nur Symbole. Könnte ich mich schnell dran gewöhnen. ;-)
Carl D. schrieb: > Das ist ja echt grandios. > "}" braucht gleich 2 Worte und noch besser ist das > "{" oder "begin". Das ist (c-hater-style) total kompakt im unsichtbaren > "NewLine" versteckt. Versteckt? Nö. Wie schon gesagt: Programmiersprachen sollen von Menschen benutzt werden. Ein oder zwei unsichtbare Bytes machen den Compiler (genauer: den Parser) nicht wesentlich langsamer und auch den Quelltext nicht wesentlich fetter. Mehr noch: in jedem normalen C-Code finden sich diese Zeilenumbrüche ebenfalls, eben weil es so für Menschen einfach besser lesbar ist. Wo bleibt also der Vorteil der Tatsache, dass man sie theoretisch auch weglassen könnte? Das hat vor gefühlten 100 Jahren vielleicht mal eine Rolle gespielt, heute ist es einfach nur noch idiotisch...
Bernd K. schrieb: > Dieter F. schrieb: >> ein "end while" > > Was ist ein "end while", in welcher Sprache gibts denn das? Basic? Wer zumindest lesen kann, ist bei solchen Diskussionen ganz klar massiv im Vorteil. Sprich: ich habe die Programmiersprache in dem von dir zitierten Posting explizit benannt...
c-hater schrieb: > Dieter F. schrieb: > >> Wenn ich mit einem Klick "den Scheiß" ausblenden kann, ist die Logik für >> mich ausreichend übersichtlich. > > Das ist ein schönes Beispiel, wozu Redundanz im Quelltext wirklich > nützlich ist. Dein schönes Code-Folding fällt nämlich bei C-Quelltexten > ganz schnell auf die Schnauze. Eben wegen der fehlenden Redundanz. Ein > kleiner Fehler im Body (ein vergessenes Semikolon am Ende einer Zeile > genügt) und die ganze Herrlichkeit bricht in sich zusammen... Komisch daß das doch so "schlechte" Eclipse das in C und dem "Syntax-Clone" Java hinbekommt. Irgendwas müssen die richtig machen!?! Aber letztlich ist dieser Sprachen-Streit eh nur eine Frage des persönlichen Geschmacks. Warum sich aber die Einen durch gefühlte Nichtbeachtung der Anderen zurückgesetzt fühlen (siehe Thread-Titel), muß man nicht wirklich verstehen wollen.
Dieter F. schrieb: > Dieter F. schrieb: >> Frag das bitte C-hater > > In VBA scheinbar ... Noch einer, der nichtmal Lesen kann, aber mit den Erwachsenen diskutieren will...
c-hater schrieb: > Eben wegen der fehlenden Redundanz. Ein > kleiner Fehler im Body (ein vergessenes Semikolon am Ende einer Zeile > genügt) und die ganze Herrlichkeit bricht in sich zusammen... Anfänger haben oft Probleme mit schließenden Klammern. Nach einiger Zeit geht das dann weg, ich kann mich nicht erinnern wann ich das letzte mal eine Klammer "vergessen" und nicht binnen 5 Sekunden wieder gefunden habe. Und ich schreibe beruflich den ganzen Tag lang hochkomplexen und umfangreichen "Scheiß". In C und in Object Pascal und auch in Python. Dieses ganze Anfang und Ende des Blockes nicht mehr finden oder Klammer verlieren ist ein konstruiertes Schwachsinnsargument von Leuten die keine Praxis haben. Sowas passiert in der Praxis nicht. Genauso wie die Leute die immerzu behaupten in Python würden über Nacht die Heinzelmännchen die Einrückungen kaputt machen und deshalb sei das Scheiße. Kein Problem in der Praxis, keine Heinzelmännchen, niemand verrutscht was oder klaut heimlich die Klammern. Dieser ganze Themenkomplex ist vollkommen an den Haaren herbeigezogen. Wenn man vernünftig einrückt und alle Einrückungen bei jeder Änderung immer sofort und ordentlich mitpflegt behält man zu jedem Zeitpunkt den Überblick.
c-hater schrieb: > Carl D. schrieb: > >> Das ist ja echt grandios. >> "}" braucht gleich 2 Worte und noch besser ist das >> "{" oder "begin". Das ist (c-hater-style) total kompakt im unsichtbaren >> "NewLine" versteckt. . > Versteckt? Nö. Wie schon gesagt: Programmiersprachen sollen von Menschen > benutzt werden. Ein oder zwei unsichtbare Bytes machen den Compiler > (genauer: den Parser) nicht wesentlich langsamer und auch den Quelltext > nicht wesentlich fetter. Mehr noch: in jedem normalen C-Code finden sich > diese Zeilenumbrüche ebenfalls, eben weil es so für Menschen einfach > besser lesbar ist. Wo bleibt also der Vorteil der Tatsache, dass man > sie theoretisch auch weglassen könnte? > > Das hat vor gefühlten 100 Jahren vielleicht mal eine Rolle gespielt, > heute ist es einfach nur noch idiotisch... Daß sie (die Zeilenumbrüche) in deinem VB.net-Beispiel aber den Part des "begin" übernehmen, hast sicher verstanden, oder?
Possetitjel schrieb: > 1. Die Satzstruktur in natürlichen Sprachen wird, wie Achim > korrekt feststellte, ebenfalls durch Sonderzeichen > (Interpunktion) und nicht durch Schlüsselworte codiert. Satzzeichen dienen dazu, jene Elemente zu codieren, die in der gesprochenen Sprache durch Betonung und Pausen ausgedrückt werden (oder Vokale, wie in Arabisch und Hebräisch). Sobald man darüber hinaus geht, verwenden auch menschliche Sprachen Worte in syntaktischer Rolle. Pascals "if .. then" ist direkt der englischen Sprache nachgebildet, die genau wie Deutsch mit "wenn .. dann" auch Worte zur Strukturierung verwendet.
A. K. schrieb: > Neben der Lesbarkeit hat das noch einen anderen Charme. Gegenüber > einfachem begin..end oder {..} erlaubt es dem Compiler, bei verhedderter > Klammerung freundlich darauf hinzuweisen, dass ein "end if" nicht zu > "while" passt. > > IDEs waren nicht immer so schlau wie heute. Du hast noch nicht die ganze Konsequenz der Existenz von Redundanz im Quelltext verstanden. IDEs sind heute schlau, ja. Aber sie fallen schnell auf die Schnauze, wenn syntaktische Fehler im Code sind. Sie fallen aber umso weniger schnell auf die Schnauze, je mehr syntaktische Redundanz der Code enthält. Gleichzeitig können sie umso bessere und treffsichere Codevervollständigung bieten, je mehr Redundanz der Quelltext enthält. Mein Gott, jeder, dem ich das erst erklären muss, disqualifiziert sich als Programmierer eigentlich selber. Er ist nachweislich unfähig, hinreichend abstrakt-logisch zu denken. Oder halt (aus meiner Sicht viel schlimmer) aus ideologischen Gründen unwillig dazu...
c-hater schrieb: > Du hast noch nicht die ganze Konsequenz der Existenz von Redundanz im > Quelltext verstanden. IDEs sind heute schlau, ja. Aber sie fallen > schnell auf die Schnauze, wenn syntaktische Fehler im Code sind. Sie > fallen aber umso weniger schnell auf die Schnauze, je mehr syntaktische > Redundanz der Code enthält. Und irgendwie werde ich den Verdacht nicht los, dass du mein Geschreibsel nicht ganz verstanden hast. Ich habe nämlich vorhin fast das gleiche ausgedrückt, nämlich im Zusammenhang mit "end if". ;-) > Mein Gott, jeder, dem ich das erst erklären muss, disqualifiziert sich > als Programmierer eigentlich selber. Er ist nachweislich unfähig, > hinreichend abstrakt-logisch zu denken. Oder halt (aus meiner Sicht viel > schlimmer) aus ideologischen Gründen unwillig dazu... Ich kann jedenfalls sicher konstatieren, dass du dich mit dieser Ausdrucksweise selbst disqualifiziert. Da kommt es dann auch nicht mehr darauf an, ob am Inhalt was dran ist oder nicht, der Beitrag ist unabhängig davon unter aller Sau.
Carl D. schrieb: > Daß sie (die Zeilenumbrüche) in deinem VB.net-Beispiel aber den Part des > "begin" übernehmen, hast sicher verstanden, oder? Natürlich. Was aber ändert das an meiner Bewertung von C?
c-hater schrieb: > Carl D. schrieb: > >> Daß sie (die Zeilenumbrüche) in deinem VB.net-Beispiel aber den Part des >> "begin" übernehmen, hast sicher verstanden, oder? > > Natürlich. Ich dachte dazu müßte man "abstrakt-logisch" denken können.
c-hater schrieb: > Wenn du bei deiner verschissenen schliessenden Klammer > bist, siehst du die öffnende nicht mehr 1) wenn ich eine Klammer aufmache, schreibe ich die schließende SOFORT dahinter. Egal ob geschweift oder rund. Dadurch vergesse ich niemals, eine Klammer zu schließen. Manche Editoren können das auch automatisch. 2) wer bei der schließenden Klammer ein "// end while" setzt, weil die Schleife so lang ist, daß man den Anfang schon wieder vergessen hat, sollte sich mal grundsätzliche Gedanken über seinen Codingstil machen. Wenn schon die Schleife so lang ist, will ich gar nicht erst wissen, wieviel tausend Zeilen die ganze Funktion dann erst haben wird.
A. K. schrieb: > Ich kann jedenfalls sicher konstatieren, dass du dich mit dieser > Ausdrucksweise selbst disqualifiziert Inwiefern? Nur weil dir der Inhalt nicht passt?
c-hater schrieb: > Inwiefern? Nur weil dir der Inhalt nicht passt? Ulkige Entwicklung der Diskussion. Du hast offenbar in aller Aufregung nicht gemerkt, dass ich inhaltlich im Grunde auf deiner Seite bin. Nur nicht so dogmatisch und nicht so aggressiv. ;-) Dass ich mich in C auf mehreren Ebenen recht gut auskenne, impliziert nicht, dass ich davon begeistert wäre. Ich nutze es nur, als Werkzeug, mehr nicht.
:
Bearbeitet durch User
Possetitjel schrieb: > LOGISCHEN Grund. Einfacher lesbar oder verständlicher wäre ja auch ein Grund, nur schwieriger zu entscheiden. Wie bände beispielsweise das Komma?
1 | while *x++, y++; |
Und selbst wenn es ohne Klammer sauberer ist, ... Der Mehraufwand beim lesen bleibt relativ gering.
Nop schrieb: > 2) wer bei der schließenden Klammer ein "// end while" setzt, weil die > Schleife so lang ist, daß man den Anfang schon wieder vergessen hat, > sollte sich mal grundsätzliche Gedanken über seinen Codingstil machen. Da gebe ich dir 100%ig Recht. Nur ist die Realität halt eine andere. Schaue dir einfach mal die öffentlich verfügbaren C-Quelltexte an... Wenn du auch nur halbintelligent bist, kannst du sogar Dienste wie Google das für dich erledigen lassen...
c-hater schrieb: > Nur ist die Realität halt eine andere. > Schaue dir einfach mal die öffentlich verfügbaren C-Quelltexte an... Klar gibt's viel Spaghetti, aber derselbe Stil in Pascal wäre auch nicht übersichtlicher. Ich weiß das, weil ich mit Pascal programmieren gelernt habe und daher weiß, wie schlecht Pascal-Code aussehen kann. :-) Zudem sollte sowas bei professionellem Code im Review auffallen. Es gibt Tools wie SourceMonitor, womit man solche Metriken kostenlos und schnell erstellen kann. Wenn eine Firma das nicht nutzt und auch keine Codereviews macht, sollte sie sich nicht nur Gedanken um den Codingstil ihrer Mitarbeiter machen, sondern noch grundsätzlicher über ihre Entwicklungsprozesse, die Folgekosten technischer Schulden und so weiter.
A. K. schrieb: > Dass ich mich in C auf mehreren Ebenen recht gut auskenne, impliziert > nicht, dass ich davon begeistert wäre. Ich nutze es nur, als Werkzeug, > mehr nicht. Also zumindest dieses Statement könnte auch ich sofort völlig bedenkenlos unterschreiben. Macht uns das schon irgendwie zu Kumpels oder sowas? Ich denke: nein. Weil: wenn du C kannst und die Schwächen von C erkannt hast und nichts dagegen tust, dass sich diese Seuche weiter verbreitet, dann bist du nur ein Opportunist. Ich kann diese Haltung verstehen, irgendwie bin ich ja auch so ein Opportunist (wenn ich mich selber auch eher wegen der eigenen geistigen Gesundheit lieber als "Pragmatiker" bezeichne), der Unterschied ist jedenfalls: ich nehme zumindest in begrenztem Umfang den Kampf gegen die Windmühlen auf (obwohl ich mir natürlich klar ist, dass ich ihn nicht gewinnen kann)...
Diese ganzen Diskussionen ändern nicht ein Iota an den betroffen Programmiersprachen und führt zu absolut nichts. Die wichtigen Programmiersprachen sind an deren Standards gebunden und das alleine zählt, ob gut oder schlecht. Leute mit Erfahrungen können mit den Stärken und Schwächen jener Sprachen umgehen und auch meist damit leben. Perfektion gibt es nicht. Die Probleme aller dieser Sprachen sind hinreichend bekannt und die Berufs Entwickler können und müssen damit leben und damit ihr Geld verdienen. Das umreißt so ziemlich die praktische Situation. Man wählt besser das Übel das man schon kennt. Es wäre besser guten lesbaren Code zu schreiben der auch nach langer Zeit kontextial verständlich ist als sich an subtiler Semantik zu stören. Ich persönlich bin froh, daß ich heutzutage Zugang zu leistungsfähigen Werkzeugen habe, mit den ich meist alle meine Probleme mehr oder weniger zweckmäßig lösen kann. Diese ganzen Streitereien haben in meinen Augen letztlich doch nur überwiegend abstrakten akademischen Charakter für mich. Auch wenn ich mir mit solchen Sprüchen viele Minuspunkte einsammeln werde, finde ich, ist eine gewisse Perspektive nützlich und angesagt. Schönen Abend noch, Gerhard
c-hater schrieb: > Weil: wenn du C kannst und die Schwächen von C erkannt hast und nichts > dagegen tust, dass sich diese Seuche weiter verbreitet, Ach herrje. Religiöses Sendungsbewusstsein geht mir völlig ab. c-hater schrieb: > Oder halt (aus meiner Sicht viel > schlimmer) aus ideologischen Gründen unwillig dazu... c-hater schrieb: > dann bist du nur ein Opportunist. So wirds wohl sein. Ein ideologisch verblendeter Opportunist. ;-)
A. K. schrieb: > c-hater schrieb: >> Weil: wenn du C kannst und die Schwächen von C erkannt >> hast und nichts dagegen tust, dass sich diese Seuche >> weiter verbreitet, > > Ach herrje. Religiöses Sendungsbewusstsein geht mir völlig > ab. Tja... es ist wie immer: Der eine hat das Sendungsbewusstsein, und der andere bewirkt tatsächlich etwas. (Meine Bewunderung und mein Dank sind Dir jedenfalls sicher.)
Dieter F. schrieb: > Possetitjel schrieb: >> das andere aber (manchmal) mit geschweiften, > > Nö, das ist eindeutig. Ich weiss das. Trotzdem rangiert das bei mir unter "syntaktischer Zucker" -- Freiheit, die die Welt nicht braucht. > Merkwürdig für mich ist nur die Praxis, die geschweifte > öffnende Klammer direkt nach dem "Ausdruck" zu schreiben - > das ist für mich unleserlich (daher pinne ich das alles um). Da kannst Du mal sehen :) Ich finde diese Schreibweise nicht nur nicht merkwürdig, sondern sogar völlig natürlich, weil das in Tcl (aus Gründen, die hier zu weit führen würden) syntaktisch so sein muss. Ich bin es also nicht anders gewohnt. Und das Schöne an dieser Schreibweise ist: Sie ist m.W. MISRA-konform. Sie hat den Vorteil, dass kein Fehler in der Blockstruktur entsteht, wenn man nachträglich feststellt, dass statt der einzelnen Anweisung doch zwei Anweisungen notwendig sind -- die jetzt notwendigen Blockklammern steht nämlich schon da und können im Zuge der Ergänzung nicht mehr vergessen werden. > Ich habe anfangs auch erhebliche Probleme mit der "Klammerei" > gehabt [...] Och... das würde ich so nicht sagen. Die Klammerei folgt ja den Prinzipien der strukturierten Programmierung, und die sind, soweit ich das beurteilen kann, in den meisten Sprachen ähnlich implementiert. Ich habe damit keine besonderen Probleme. Ich bin nur weitgehend davon abgekommen, die ganzen Ausnahme- regelungen ("...hier muss kein Semikolon stehen...", "...in diesem Fall können die geschweiften Klammern entfallen...") in Anspruch zu nehmen. Ein Block kommt in geschweifte Klammern und gut.
A. K. schrieb: > Possetitjel schrieb: >> WARUM ist es für den Compiler und/oder für den Programmierer >> wichtig, an dieser Stelle syntaktisch zwischen Ausdrücken >> und Anweisungsblöcken zu unterscheiden? > > Ich verstehe zwar den Fundamentalismus dieser Diskussion nicht, ??? > aber welche syntaktischen Elemente man verwendet, um die > Abgrenzung der Bedingung vom Rest des Codes zu kennzeichnen, > ist keine Frage zwingender Logik, sondern schlicht eine des > persönlichen Geschmacks desjenigen, der die Sprache definiert. Auch -- aber nicht nur. In einer idealen Welt würde derjenige, der die Sprache definiert, auch etwas über Codierungstheorie, natürliche Sprachen und menschliche Wahrnehmung wissen -- und das auch beherzigen. Über eine Sprache, die die irrtümliche Verwendung von "=" statt "==" nicht zuverlässig automatisch erkennen kann, sollte man eigentlich nicht ernsthaft diskutieren müssen. > Die Sache ändert sich ein wenig, wenn man nicht auf der formalen > Syntax rumreitet, sondern den Parser in der Implementierung > betrachtet. In dem Fall kann man den gleichen Parser-Code für > ( ... ) als Teil einer Ausdrucks und als Bedingung von "if" > verwenden. Okay... das beantwortet wenigstens einen Teil meiner Frage. Danke.
Possetitjel schrieb: > Och... das würde ich so nicht sagen. Die Klammerei folgt ja > den Prinzipien der strukturierten Programmierung, und die sind, > soweit ich das beurteilen kann, in den meisten Sprachen ähnlich > implementiert. Ich habe damit keine besonderen Probleme. Algol hat recht viele Sprachen inspiriert. Allerdings finde ich Klammerung mit begin / { ... end / } nur aus mathematisch abstrakter Sicht elegant. Die anweisungsspezifische Klammerung if ... else endif / end if scheint mir letztlich praktischer. Auch deshalb, weil sich nicht überlegen muss, ob Block oder nicht, ob in der gleichen Zeile oder nicht, ... Dazu kommt die oben erwähnte Redundanz und implizite Kommentierung. Wobei "end if" gegenüber "endif" den Vorzug besitzt, mit deutlich weniger Schlüsselworten auszukommen.
:
Bearbeitet durch User
Bernd K. schrieb: > Dieses ganze Anfang und Ende des Blockes nicht mehr > finden oder Klammer verlieren ist ein konstruiertes > Schwachsinnsargument Hmm. Es gibt den Spruch "Man sollte von seinen Mitmenschen nicht immer das Schlechteste annehmen." In diesem Sinne: Du solltest vom c-hater vielleicht nicht gerade das Schlechteste -- nämlich die Umgangsformen eines tollwütigen Hundes -- annehmen. > von Leuten die keine Praxis haben. Ach so. Gelegenheitsprogrammierer sind Luschen, die die Finger vom Programmieren lassen sollen, nicht wahr?! > Sowas passiert in der Praxis nicht. Dumm nur, dass ich neulich stundenlang nach einem Fehler in der Blockstruktur gesucht habe. Nach meiner Erfahrung macht man diese Fehler nicht beim Neuschreiben von Code, sondern beim Refaktorisieren, d.h. beim Ändern. Dort hat man ja das Problem, dass die Einrückung eben zeitweise NICHT stimmt, weil man gerade am Code herumändert.
Hallo, > In einer idealen Welt würde derjenige, der die Sprache definiert, > auch etwas über Codierungstheorie, natürliche Sprachen und > menschliche Wahrnehmung wissen -- und das auch beherzigen. Ich könnte mir vorstellen, das bei der Entwicklung von C vor rund 50 Jahren die Realisierung des Compilers auf den damals verfügbaren Rechnern wichtiger war als Codierungstheorie und Wissen über natürliche Sprachen und menschliche Wahrnehmung. C ist eben eine pragmatische Programmiersprache. rhf
:
Bearbeitet durch User
Possetitjel schrieb: >> Ich verstehe zwar den Fundamentalismus dieser Diskussion nicht, > > ??? Diskussionstil. Für mich sind Programmiersprachen Werkzeuge, die ich nach Bedarf verwende. Keine Elemente harter ideologischer Auseinandersetzung. > In einer idealen Welt würde derjenige, der die Sprache definiert, > auch etwas über Codierungstheorie, natürliche Sprachen und > menschliche Wahrnehmung wissen -- und das auch beherzigen. Ich bin mir nicht so sicher, ob du da bei Dennis Ritchie richtig bist. Ausserdem braucht man eigentlich für alles den idealen Menschen und muss dann leider doch immer mit den realen Menschen auskommen. So wurden Assignops ursprünglich als =+ statt += geschrieben. Das war indes keine wirklich brilliante Idee und wurde rechtzeitig korrigiert. Anderes steckte schon zu tief drin, als man das drüber stolperte. Typnamen wie Schlüsselworte zweiter Klasse zu verwenden wird zum Problem wenn man sie per typedef selber definieren kann. Da typedef erst Jahre später hinzu kam, war das Kind schon im Brunnen und Parser sehen dementsprechend seltsam aus. Stroustrup hat dann in C++ auf diesem Unfug seelenruhig noch einen draufgesetzt. Über die Syntax der Datentypen decke ich lieber den Mantel des Schweigens. Ich habe noch keinen Anfänger erlebt, der die auf Anhieb verstanden hätte.
Roland F. schrieb: > C ist eben eine pragmatische Programmiersprache. In den 60ern gab es Compiler mit einem Dutzend Passes, auf damaligen Mainframes. C entstand auf Minicomputern, weil die leichter verfügbar waren, und sollte da draufpassen ohne schon für "Hello World" stundenlang rumzuackern.
:
Bearbeitet durch User
Hallo, > C entstand auf Minicomputern, weil die leichter verfügbar > waren, und sollte da draufpassen ohne schon für "Hello World" > stundenlang rumzuackern. Genau so ist (war) es. Leider wird das beim beliebten C-Bashing gerne übersehen. rhf
Roland F. schrieb: >> In einer idealen Welt würde derjenige, der die Sprache >> definiert, auch etwas über Codierungstheorie, natürliche >> Sprachen und menschliche Wahrnehmung wissen -- und das >> auch beherzigen. > > Ich könnte mir vorstellen, das bei der Entwicklung von C > vor rund 50 Jahren die Realisierung des Compilers auf > den damals verfügbaren Rechnern wichtiger war als > Codierungstheorie und Wissen über natürliche Sprachen > und menschliche Wahrnehmung. Du sagst es: DAMALS war das wichtiger. Wer HEUTE C lernt und lehrt, muss sich aber an dem orientieren, was heute wichtig ist. Ich kann zwar die Sprache nicht ändern -- aber den Umgang mit ihr.
Roland F. schrieb: > Leider wird das beim beliebten C-Bashing gerne > übersehen. Darum geht es (mir) überhaupt gar nicht. Ich weiss nicht, warum alle Welt so tut, als habe man die Freundin beleidigt, wenn man eine Kritik an der Lieblings-Programmiersprache des Gegenüber äußert. Tatsache ist, dass C unter völlig anderen Bedingungen entstanden ist, als es heute verwendet wird. Darauf geht aber kein mir bekanntes Buch (und auch keine mir bekannte Online-Quelle) ausführlich ein; jeder lehrt C so, als ob man anno Tobak einem absoluten Computer- volltrottel das Programmieren erklären müsste. Ritchie und Co. müssen damals ziemlich viel richtig gemacht haben, wenn C bis heute die Bedeutung hat, die es eben hat -- aber es muss auch erlaubt sein, alles daraufhin abzuklopfen, inwieweit das heute noch relevant ist. Und vieles ist eben nicht mehr relevant; das muss man wissen, um es zu vermeiden, so gut es eben geht.
Possetitjel schrieb: >> Merkwürdig für mich ist nur die Praxis, die geschweifte >> öffnende Klammer direkt nach dem "Ausdruck" zu schreiben - >> das ist für mich unleserlich (daher pinne ich das alles um). > > Da kannst Du mal sehen :) > > Ich finde diese Schreibweise nicht nur nicht merkwürdig, > sondern sogar völlig natürlich, weil das in Tcl (aus Gründen, > die hier zu weit führen würden) syntaktisch so sein muss. > Ich bin es also nicht anders gewohnt. > > Und das Schöne an dieser Schreibweise ist: Sie ist m.W. > MISRA-konform. Da hast Du recht. MISRA macht expliziert keine Stylevorgaben (Ch. 3.2). Possetitjel schrieb: > Ich bin nur weitgehend davon abgekommen, die ganzen Ausnahme- > regelungen ("...hier muss kein Semikolon stehen...", "...in > diesem Fall können die geschweiften Klammern entfallen...") > in Anspruch zu nehmen. Ein Block kommt in geschweifte Klammern > und gut. Wird von MISRA Rule 14.8 auch so gefordert. (Die Angaben beziehen sich auf den 2004er Standard. Den 2012 hab ich nicht hier. Hat sich mWn aber nicht geändert ;) /regards
Possetitjel schrieb: >>> Bei kleinen abgeschlossen Projekten mit ein paar >>> tausend Zeilen mag das egal sein. >> >> Wenn Du bei Enterprise Applications noch über {} oder >> begin end nachdenkst, dann hat Deine Firma ein Problem. > > Nein: Da generell zu wenig über {} oder begin end nachgedacht > wird, haben alle Branchen ein Problem, die Computer einsetzen. Mir ist weder ein C-Programmierer bekannt, der mit {} ein Problem hat, noch ein Pascal Programmierer, der Probleme mit Begin/End hat. Nachgedacht wird da eher darüber dass, zumindest bei größeren Programmsystemen, die Specs meist nicht so eindeutig sind, dass mehrere Teams Codemodule entwickeln können die am Ende auch in allen Fällen sauber miteinander funktionieren. Da fallen nämlich nachher (richtig) hohe Kosten, wenn nicht Schlimmeres, an. Und nicht irgendwelche "Befindlichkeiten" einzelner Diven. /regards
:
Bearbeitet durch User
c-hater schrieb: > Siehe "void*" vs. "void functionname(void)". Dreimal "void", jeweils in > einer völlig anderen Bedeutung. Sowohl semantisch als auch physisch... Also, ein Zeiger, der auf nichts bestimmtes Zeigt, eine Funktion, die nichts zurück gibt und nichts als Parameter übernimmt. Ja, das sind drei völlig verschiedene Sachen :) . Das Hauptproblem ist hierbie enfach die Übersetzung von "void" ins deutsche.
Moment mal, beim durchlesen vom Tread fällt mir gerade auf, dass "C-Hater" eigentlich ein VisualBasic "programmierer" ist. (kicher) Mal davon abgesehen, dass dieser Troll es mal wieder geschafft hat einen Thread zu kapern und in eine schwachsinnige Diskussion über C zu verwandeln :(. Ich fasse mal zusammen: Troll, persönlich Beleidigend, sehr agressiver Tonfall. -> können die Mods da bitte das nächste mal besser aufpassen?
Die mods hätten schon viel früher eingreifen bzw lenken müssen...sobald das gespräch in die falsche richtung abdriftete
Um mal auf die Ausgangsfrage zu kommen: Pascal erscheint so unbeliebt, weil jeder diesbezügliche Thread innerhalb weniger Beiträge von den C-Freaks gekapert wird, die sich dann nur noch über Klammerung und Pointer auslassen. qed
Karl schrieb: > Pascal erscheint so unbeliebt, weil jeder diesbezügliche Thread > innerhalb weniger Beiträge von den C-Freaks gekapert wird, die sich dann > nur noch über Klammerung und Pointer auslassen. qed Andersherum wird ein Schuh draus: Pascal erscheint so unbeliebt, weil praktisch sofort ein Priester oder Missionar vom Range eines "c-hater" erscheint, der lang und ausführlich darlegt, daß er von C keine Ahnung hat, es aber nicht schafft, auch nur einen einzigen Vorteil von Pascal zu beschreiben. Wer A loben will, in dem er nur B herunterputzt, macht irgendwas falsch. So, und zum Abschluss erklärt jetzt bitte noch jemand aus der Pascal-Fraktion, wie man in Pascal eine eigene Funktion/Prozedur wie writeln schreiben kann ... d.h. eine Funktion/Prozedur, der man beliebig viele Argumente übergeben kann.
Karl schrieb: > innerhalb weniger Beiträge von den > C-Freaks gekapert wird ...oder von solchen schrägen Vögeln, die "HASSER" im Namen haben!
Possetitjel schrieb: > Ach so. > Gelegenheitsprogrammierer sind Luschen, die die Finger > vom Programmieren lassen sollen, nicht wahr?! Nein, die sollen einfach weiter machen, mit der Zeit kommt die Übung und die Erfahrung ganz von selbst.
Possetitjel schrieb: > Nach meiner Erfahrung macht man diese Fehler nicht beim > Neuschreiben von Code, sondern beim Refaktorisieren, > d.h. beim Ändern. Dort hat man ja das Problem, dass die > Einrückung eben zeitweise NICHT stimmt, weil man gerade > am Code herumändert. Erstens: schreib die öffnende Klammer oder das begin ans Ende der Zeile, dann kannst Du das schonmal nicht versehentlich weglöschen und die nächste Zeile wird automatisch eingerückt. Zweitens: Benutz eine IDE die einen auch bei Copy/Paste mit den Einrückungen unterstützt. Fertig. > Dort hat man ja das Problem, dass die > Einrückung eben zeitweise NICHT stimmt Die Einrückung hat gefälligst IMMER zu stimmen, spätestens 2 Sekunden nachdem was eingefügt wurde, noch bevor man irgendwas anderes macht! Ich kenne diese Sorte von "Programmierern" die sich einen Dreck um die Einrückungen scheren, da kann ich keine 2 Minuten daneben stehen und deren hilflosem Herumgewürge beim Editieren zuschauen ohne Hautausschlag zu bekommen! Ich hatte schon 2 von denen hier. Man beachte die Vergangenheitsform!
:
Bearbeitet durch User
Rufus Τ. F. schrieb: > So, und zum Abschluss erklärt jetzt bitte noch jemand aus der > Pascal-Fraktion, wie man in Pascal eine eigene Funktion/Prozedur wie > writeln schreiben kann ... d.h. eine Funktion/Prozedur, der man > beliebig viele Argumente übergeben kann. Sowas ähnliches geht mit "Array of const": Gugst du https://www.freepascal.org/docs-html/ref/refsu69.html Ja, es ist nicht Bestandteil vom "Standard" Pascal. Aber Delphi und FreePascal können das...
Rufus Τ. F. schrieb: > auch nur einen einzigen Vorteil von Pascal > zu beschreiben. Der richtige Vorteil meiner Meinung nach (und das ist in der Sprache so angelegt) sind die unglaublich kurzen Kompilierungszeiten. Ich habe das so verstanden, dass die Sprache single-pass Kompilierungen erlaubt.
Unabhängig davon finde ich immer das verlangen bestimmter beispiele kindisch und albern. Ganz offenbar wie auch im ersten post als beispiel..kann man in pascal gebau alles was wichtig ist tun wie in c auch. Wenn interessiert es wenn etwas spezielles nicht geht?!? Sorry aber diese konstrierten probleme sind bescheuert
Nop schrieb: > wer bei der schließenden Klammer ein "// end while" setzt, weil die > Schleife so lang ist, daß man den Anfang schon wieder vergessen hat, > sollte sich mal grundsätzliche Gedanken über seinen Codingstil machen. > Wenn schon die Schleife so lang ist, will ich gar nicht erst wissen, > wieviel tausend Zeilen die ganze Funktion dann erst haben wird. "} // end while" würde ich eh nicht schreiben, denn end sagt ja nichts anderes als das }. Allerdings finde ich } // while(Bedingung){ schon sehr praktisch für den Überblick, wenn Blockanfang und Blockende nicht mehr im selben Blickfeld sind, oder mehrere Blöcke (if, else, for,...) miteinander verschachtelt sind. Ich bevorzuge auch kurze Funktionen, wenn es möglich ist. Aber es gibt auch Aufgaben wie das Erstellen von komplexen Dateien, die sich nicht beliebig in andere Funktionen aufteilen lassen. Funktionen mit ellenlangen Parameterlisten, in denen dann die lokalen Variablen übertragen werden, scheinen mir sowohl in Punkto Überblick als auch Fehleranfälligkeit ein größeres Übel als lange Listen von Anweisungen zu sein.
Karl schrieb: > Ganz offenbar wie auch im ersten post als beispiel..kann man in pascal > gebau alles was wichtig ist tun wie in c auch. Wenn interessiert es > wenn etwas spezielles nicht geht?!? Sorry aber diese konstrierten > probleme sind bescheuert Funktionen mit variabler Anzahl von Argumenten ist mit Sicherheit nichts irgendetwas "spezielles". Das wird in vielen Sprachen ausgiebig genutzt, vor allem bei einer Ausgabe (printf).
dumdidum (nicht angemeldet) schrieb: > Der richtige Vorteil meiner Meinung nach (und das ist in der Sprache so > angelegt) sind die unglaublich kurzen Kompilierungszeiten. Ich habe das > so verstanden, dass die Sprache single-pass Kompilierungen erlaubt. Verglichen mit was? Ist bei C nicht anders. Wobei Passes früher auch eine Frage der Kapazität der Maschine waren, nicht nur der Sprache selbst. Wenn ein Compiler trotz Overlays nicht in 64kB passte, wurden eben 2 Passes daraus. Ein Compiler wird umso schneller, desto weniger Arbeit er sich macht. Man kann C wie Pascal Statement für Statement übersetzen. Statement-übergreifende Optimierung darf man dann aber nicht erwarten. Compiler wie GCC und LLVM sind auf hochoptimierten Code konzipiert. Compiler speziell für Mikrocontroller implementieren das nicht in gleichem Umfang.
dumdidum (nicht angemeldet) schrieb: > Der richtige Vorteil meiner Meinung nach (und das ist in der Sprache so > angelegt) sind die unglaublich kurzen Kompilierungszeiten. Ich habe das > so verstanden, dass die Sprache single-pass Kompilierungen erlaubt. Das kommt von der fast kontextfreien Grammatik. Als Nebeneffekt ist sie nicht nur für Maschinen sondern auch für Menschen unglaublich leicht zu parsen und zu verstehen, daher die gute Lesbarkeit von Pascal-Code im Vergleich zu C++ oder auch C. Der zweite Vorteil ist die relativ hohe Typsicherheit, vor allem im Vergleich zu C. Der dritte Vorteil ist das die Typen hinter dem Bezeichner stehen und nicht davor, auch das erhöht die Lesbarkeit enorm. Das ist meiner Meinung nach die größte und häßlichste Warze die C und alle davon abgeleiteten Sprachen haben. Das mag bei simplen Typen noch nicht so ins Gewicht fallen aber spätestens wenn man Zeiger auf Zeiger hat oder Zeiger auf Funktionen oder dergleichen wird es in der Prefixnotation von C sehr schnell zu einem unglaublich verkrampften Konoten den man spiralförmig(!) von innen nach außen lesen muss. In Pascal schreibt und liest man es einfach von links nach rechts, dort gibt es nichts was man spiralförmig lesen müsste. Moderne Sprachen die sich nicht primär den C-Programmierern und ihren spiralförmig verdrehten und verknoteten Hirnen anbiedern müssen greifen die natürliche links-nach-rechts-Schreibweise zum Glück wieder auf, diese Grammatik hat enorme Vorteile beim Lesen und auch wenn man die Sprache mit optionaler automatischer Typinferenz ausstatten will.
Beitrag #5471575 wurde von einem Moderator gelöscht.
dumdidum (nicht angemeldet) schrieb: > Der richtige Vorteil meiner Meinung nach (und das ist in der Sprache so > angelegt) sind die unglaublich kurzen Kompilierungszeiten Ich habe noch Programmieren gelernt (von Algol aufwärts), als ein Compiler auch mal eine Stunde brauchte oder gleich über Nacht. Bei den heutigen Rechenleistungen spielt das aber keine Rolle mehr, es ist mir ziemlich wurscht, ob ein Programm in 0,1 oder 1 sec compiliert wird. Der normale Programmierer muss ja auch eher selten ein komplettes Windows übersetzen. Georg
TriHexagon schrieb: > Funktionen mit variabler Anzahl von Argumenten ist mit Sicherheit nichts > irgendetwas "spezielles". Weder Pascal noch C kannten die erste Zeit Sprachkonzepte, mit denen sich das in der Sprache selbst implementieren lässt. In C wurde das aber von Anfang an über eine Library abgewickelt, die wusste, wie der Compiler mit Argumenten umgeht (varargs.h). Was auch ausreichte, da C bei Funktionensdeklarationen keine Parameterdeklaration kannte. Das kam erst mit C89 und damit kam dann ein syntaktisches Element, um solche Funktionen zu kennzeichnen. In Pascal gab es keine Möglichkeit, Funktionen mit variabler Anzahl von Argumenten in der Sprache zu formulieren. Weder war es möglich, Funktionen so zu deklarieren, noch liess der strengere Umgang mit Datentypen Hacks wie varargs.h zu. Über heutige Pascal-Varianten habe ich diesbezüglicg keinen Überblick. Wirth verzichtet in seinen späteren Sprachen auch bei sprachimmanenten Funktionen auf eine variable Anzahl Parameter. Damit entfällt das Problem, aber die Formulierung von Textausgabe wird umständlicher. Im Zeitalter von GUIs ist das freilich weniger störend als bei Konsolprogrammen.
:
Bearbeitet durch User
A. K. schrieb: > Verglichen mit was? Ist bei C nicht anders dann halt das modul system und nicht die ewig langen .h Dateien. Zumindest bei mir ist der Eindruck, dass das schneller compiliert (und im Vergleich mit GUI in C++ sehr viel schneller)
Java kompiliert übrigens noch viel schneller als C. Kommt Pascal da dran?
A. K. schrieb: > In C wurde das aber von Anfang an über eine Library abgewickelt, die > wusste, wie der Compiler mit Argumenten umgeht (varargs.h). Eine *.h-Datei ist keine Library, auch wenn die Freunde der Arduino-Fraktion sich alle Mühe geben, das so zu nennen.
dumdidum (nicht angemeldet) schrieb: > dann halt das modul system und nicht die ewig langen .h Dateien. > Zumindest bei mir ist der Eindruck, dass das schneller compiliert (und > im Vergleich mit GUI in C++ sehr viel schneller) Ich bezog mich hauptsächlich auf die implizite Annahme, dass der Unterschied in einem sprachbedingten Zwang zu mehreren Passes läge. Dem ist aber nicht so, auch C lässt sich sequenziell in einem Vorgang übersetzen. Die Problematik langer tief verschachtelter Includes hat die Compilerbauer allerdings durchaus beschäftigt. Wobei das in C noch relativ harmlos ist, verglichen mit C++. Die Konsequenz waren vorkompilierte Includes, in denen ein Teil der Arbeit schon getan war. Die Modularisierung ist in C nicht in der Sprache angelegt, sondern wird voll und ganz dem Programmierer überlassen. Das hat Konsequenzen, die schon früh die Programmierer plagten, besonders bei Projekten mit mehreren Programmierern. Auch Pascal ging eine Modularisierung anfangs völlig ab. Das war dem Charakter der Lehrsprache geschuldet, in der grosse Projekte nicht vorkommen. Spätere davon abgeleitete Sprachen besitzen hingegen Sprachelemente für saubere Moularisierung. Das hat klare Vorteile.
:
Bearbeitet durch User
Rufus Τ. F. schrieb: > Eine *.h-Datei ist keine Library, auch wenn die Freunde der > Arduino-Fraktion sich alle Mühe geben, das so zu nennen. Ok, ich gehöre nicht zu jenen, die bei jeder Gelegenheit über Arduino-User spotten. Macht mich das schon zu einem Freund dieser Szene, über den man folgerichtig spotten sollte? ;-) Aus Sicht der binutils und der einzelnen Files ist ein Include-File keine Library. Aus Sicht von Sprachkonzepten - und da sind wir hier - bilden eine Library und das zugehörige Include-File jedoch eine konzeptionelle Einheit. Es ist dann irrelevant, ob der Code einer Library-Funktion wie getc() einem *.a File steckt (wie fgetc), oder im Include-File selbst.
:
Bearbeitet durch User
Rufus Τ. F. schrieb: > So, und zum Abschluss erklärt jetzt bitte noch jemand aus der > Pascal-Fraktion, wie man in Pascal eine eigene Funktion/Prozedur wie > writeln schreiben kann ... d.h. eine Funktion/Prozedur, der man > beliebig viele Argumente übergeben kann. Das ist mir zu unspeziefisch. Moechtest du: 1) beliebig viele Argumente desselben Typs, oder 2) beliebig viele Argumente unterschiedlichen Typs? Mit Pascal kann ich zwar nicht dienen, aber als konkretes Beispiel mit Rust (ja, ich kann auch C, C++, Python): Der Fall 1) ist recht trivial. Fall 2) aber nicht, denn: Es gibt keine variadischen Funktionen in Rust. Fertig. Das geht nur mit Makros. Aber welche Erkenntnis ziehen wir nun daraus? Ist Rust (oder jede andere Sprache die das nicht hat) deswegen schlecht? Bestimmt nicht. Rust macht, verglichen mit C und C++, vieles richtig und ist mMn sogar das bessere C/C++. Oder C/C++ mit Tuersteher (Compiler) der dir bei jedem noch so kleinen Fehler auf die Finger schlaegt und mit einem Error abbricht. Nicht wie C, wo man mit ganz viel Glueck vielleicht eine Warnung bekommt, wenn man denn die richtigen Warnungen eingeschaltet hat... Nicht falsch verstehen: Ich mag C und C++. Aber die Sprachen haben halt ihre Kanten, die man nicht ausgemertzt bekommt, weil man ja unbedingt abwaertskompatible bleiben will. Natuerlich, auch diesen Gedanken kann ich verstehen, wenn ich mir Python anschaue, wo es das 2.x und das 3.x Lager gibt (scheint ja aber nicht nur ein Pythonproblem zu sein). Und schon sind doch sehr viele Projekte auf eine Pythonversion festgenagelt, weil die Module nicht portiert werden, weil der Maintainer keine Lust drauf hat. Und schon hat man Code um den sich keiner mehr kuemmern will... Wenn ich sehe, das Firmen bei neuen Projekten immernoch Python 2.7 einsetzten (dessen Support schon 2015 enden sollte, aber bis 2020 verlaengert wurde (nur Bugfixes(!)),... naja, nicht meine Baustelle. Doch so schoen C und C++ auch sind (oder auch nicht), es sind keine Sprachen mit denen ich neue Projekte anfangen wuerde. Es gibt sehr gute und vor allem sicherere Sprachen als alternative zu diesen Dinosauriern der Computersteinzeit, z.B. Rust. Warum ich Rust einwerfe? Nur um mal eine andere und neue Sprache zu nennen. Rust hat eben nicht die Altlasten von anno dazumal. Im Gegenteil: Es ist alles sehr durchdacht, inkl. der Toolchain.
Kaj G. schrieb: > Warum ich Rust einwerfe? Nur um mal eine andere und neue > Sprache zu nennen. Rust hat eben nicht die Altlasten von anno > dazumal. Im Gegenteil: Es ist alles sehr durchdacht, inkl. > der Toolchain. Auch Googles Go und Walter Brights D sieht man an, aus Fehlern gelernt zu haben. PS: Von Walter Bright stammt der erste native C++ Compiler.
:
Bearbeitet durch User
Kaj G. schrieb: > Das ist mir zu unspeziefisch. Moechtest du: > 1) beliebig viele Argumente desselben Typs, oder > 2) beliebig viele Argumente unterschiedlichen Typs? Nun, sieh Dir writeln an. Das erlaubt beliebig viele Argumente unterschiedlichen Typs.
Die Frage war, ob es möglich ist, eine Funktion mit variabler Anzahl Argumente mit offiziellen Sprachmitteln selbst zu definieren. In klassischem Pascal geniesst writeln eine Sonderbehandlung durch den Compiler. Der erkennt sie als spezielle Funktion und löst sie in eine Folge einzelner Lib-Aufrufe für die einzelnen Argumente auf (wahrscheinlich). Im klassischen Pascal lässt sich dieses Prinzip nicht auf eigene Funktionen anwenden, das geht nur mit diesen speziellen vom Sprachstandard definierten Funktionen.
:
Bearbeitet durch User
Die Antwort auf die Titelfrage ist ganz einfach: Die Trolls, die gegen Pascal hetzen, haben noch nie (richtig) mit Pascal codiert. => Was der Bauer nicht kennt, isst er nicht!
so einfach schrieb: > Die Trolls, die gegen Pascal hetzen, haben noch nie (richtig) mit Pascal > codiert. Ich würde es eher so formulieren: Sie haben mal vor >10 Jahren mit Turbo Pascal oder UCSD Pascal gearbeitet.
Andreas B. schrieb: > vor >10 Jahren mit Turbo > Pascal eher vor > 25 Jahren Aber so alt sind die gar nicht. Sie labern nur Frasen nach. Ist leider häufig hier in diesem Forum.
so einfach schrieb: > Die Antwort auf die Titelfrage ist ganz einfach: > > Die Trolls, die gegen Pascal hetzen, haben noch nie (richtig) mit Pascal > codiert. Naja, wenn es eine Supersprache wäre, die viele Probleme in der industriellen Softwareentwicklung lösen würde, dann hätte sie sich auch langfristig etwas besser durchgesetzt. Firmen geben doch nicht gerne das 3-8 (oder welcher Faktor auch immer) aus, aus ideologischen Gründen. (Einige schon, aber die Konkurenz sollte dann einen Vorteil haben). Die Frage wäre also was hat C (oder jede andere, erfolgreiche Sprache) was Pascal nicht hat und relevant in der Industrie ist. (Die Antwort ist nicht 'goto' :-) )
Andreas B. schrieb: > Ich würde es eher so formulieren: Sie haben mal vor >10 Jahren mit Turbo > Pascal oder UCSD Pascal gearbeitet. Ob es wohl jemanden gibts, der vor gut 10 Jahren noch UCSD Pascal verwendete? Dessen bessere Tage waren vor fast 40 Jahren. ;-)
Possetitjel schrieb: >> von Leuten die keine Praxis haben. > > Ach so. > Gelegenheitsprogrammierer sind Luschen, die die Finger > vom Programmieren lassen sollen, nicht wahr?! Na na! (räusper) Diesem Satz möchte ich doch gleich zu BEGIN mit aller END schiedenheit streng widersprechen.
1 | if (Blutdruck > 150) |
2 | {
|
3 | void coolDown(); |
4 | |
5 | goto LAZARUS; |
6 | }
|
;-)
Rufus Τ. F. schrieb: > So, und zum Abschluss erklärt jetzt bitte noch jemand aus der > Pascal-Fraktion, wie man in Pascal eine eigene Funktion/Prozedur wie > writeln schreiben kann ... d.h. eine Funktion/Prozedur, der man > beliebig viele Argumente übergeben kann. Ich verstehe das Problem nicht, es ist doch nicht verboten einer Funktion oder Prozedur eine Liste als Parameter zu übergeben?
A. K. schrieb: > > Ob es wohl jemanden gibts, der vor gut 10 Jahren noch UCSD Pascal > verwendete? Dessen bessere Tage waren vor fast 40 Jahren. ;-) Doch, ich. ;-) Ich habe auch nur >10 Jahre (>!) geschrieben weil ich Pascal lange nicht mehr verwendet habe und vor einem Jahr in Form von Lazarus wiederentdeckte. Daher kann ich zur zeitlichen Entwicklung von Pascal nicht viel sagen. Außer daß es momentan auf einen Stand ist, wo man prima mit arbeiten kann. Und das gilt im übrigen genauso für C. Die Vorteile von Lazarus/Pascal sehe ich halt in der einfachen Erstellung einer anspruchsvollen GUI und der Platformunabhängigkiet.
Programmieren ist was für Leute mit zu viel Zeit. Ich geh jetzt in den Biergarten, Wetter passt. Prost..
Guido B. schrieb: > Ich verstehe das Problem nicht, es ist doch nicht verboten einer > Funktion oder Prozedur eine Liste als Parameter zu übergeben? Machst Du das beim Aufruf von writeln auch? Wenn nein, warum nicht?
Andreas B. schrieb: > Die Vorteile von Lazarus/Pascal sehe ich halt in der einfachen > Erstellung einer anspruchsvollen GUI und der Platformunabhängigkiet. Da hier im Forum nicht selten anstatt einem purem "entweder C oder Pascal" ein (mehr oder weniger) sowohl C als auch Pascal (und umgekehrt) zu lesen ist, drängt sich mir folgende Frage auf: Hat schon mal jemand versucht genau diese Vorteile
1 | Pascal/Lazarus IDE: rel. bequem zur GUI kommen, da alles in einer IDE für Win, Linux etc. |
2 | |
3 | C: mehr Freiheiten im Code, kompakter, verbreiteter (Compilerauswahl, massig Beispielcode) |
mit C-Code Modulen zu kombinieren? Ich meine dabei rein praktisch und nicht nur Prinzip bedingt.
Da sehe ich, ehrlich gesagt, nicht die Notwendigkeit. Nenn mal ein praktisches Beispiel.
Andreas B. schrieb: > Da sehe ich, ehrlich gesagt, nicht die Notwendigkeit. > Nenn mal ein praktisches Beispiel. Praktisches Beispiel hab ich jetzt nicht parat. Mein Gedanke war halt, es ist nicht so einfach unter C zu einem GUI-Programm zu kommen, dass auch andere Plattformen einschließt. Für reine Windows Programme geht das gut über die Win32-API (dazu genügt schon Pelles C IDE). Bequemer geht es durch ausweichen auf C#/.NET, bedient aber dann auch nur Windows. Ab dann kommen, um zur GUI zu gelangen, die Krücken über Skriptsprachen ins Spiel oder eben gleich QT, welches sich aber C++ bedient (also zusätzlicher Komplexität, zusätzlichen z.T. beträchtlichem Lernaufwand). Darin liegt doch gerade der Charme für viele gleich alles in einer einzigen IDE mit Lazarus oder Kommerz-Delphi erschlagen zu können. Nur halt mit dem für C-Fans an "kurz Stil Syntax" gewöhnten (deftigen) Nachteil, sich der Wirth'schen Begin/End (und anderen) Gegebenheiten antun zu müssen, was wahrscheinlich eher dazu führt, sich dem aufgeblähten QT-Tanker auszuliefern.
dumdidum (nicht angemeldet) schrieb: > Naja, wenn es eine Supersprache wäre, die viele Probleme in der > industriellen Softwareentwicklung lösen würde, dann hätte sie sich auch > langfristig etwas besser durchgesetzt. Pascal wird in der Softwareentwicklung eingesetzt, vor allem wenn es um sicherheitskritische Anwendungen geht. Du weisst nur nichts davon, weil das nicht die Software ist, die dann bei Github steht oder über die sich die C-Freaks im Forum streiten, wie msn den Code noch unleserlicher hinbekommt.
Karl schrieb: > Pascal wird in der Softwareentwicklung eingesetzt, vor allem wenn es > um sicherheitskritische Anwendungen geht. Mit welchem Compiler?
Gelegenheitsprogrammierer schrieb: > Darin liegt doch gerade der Charme für viele gleich alles in einer > einzigen IDE mit Lazarus oder Kommerz-Delphi erschlagen zu können. Ich sehe es eher getrennt: Wenn ich low Level programmiere, also uC oder sonstiges (Treiber oder Terminalanwendung) dann wähle ich C. Brauche ich SW mit einer GUI, dann Lazarus/Pascal. Dein Problem sehe ich nur, wenn man beides gleichzeitig braucht. Daher die Frage nach einem Beispiel. Wenn man sich natürlich auf eine Programmiersprache beschränkt, ja dann hat man ein Problem.
Gelegenheitsprogrammierer schrieb: > Praktisches Beispiel hab ich jetzt nicht parat. Mein Gedanke war halt, > es ist nicht so einfach unter C zu einem GUI-Programm zu kommen, Was nutzt denn Lazarus unter der Haube? sind alle Libs die in C oder C++ geschrieben wurden. Warum soll ich da nicht gleich das Original nehmen sondern dieses Lazarus mit zusätzlichem draufgeklatschtem weiteren Layer der mehr Probleme macht? > dass > auch andere Plattformen einschließt. Für reine Windows Programme geht > das gut über die Win32-API (dazu genügt schon Pelles C IDE). Bequemer > geht es durch ausweichen auf C#/.NET, bedient aber dann auch nur > Windows. > Ab dann kommen, um zur GUI zu gelangen, die Krücken über > Skriptsprachen ins Spiel oder eben gleich QT, welches sich aber C++ > bedient (also zusätzlicher Komplexität, zusätzlichen z.T. > beträchtlichem Lernaufwand). Lazurus ist dann genauso eine Krücke, Binding zur entsprechenden lib. Wo ist jetzt der Unterschied? Bei Lazarus hat man nen weiteren buggy Layer über eine gängige GUI-Lib drübergeklatscht. Solange das funktioniert ok, meinen Versuchen nach tut es das aber nicht, die Anbindung ist völlig verbuggt. Wenn ich die jeweiligen Originale nutze habe ich weniger Ärger weil die Entwickler das eben mit der jeweiligen Sprache testen in der die Lib entwickelt wurde, in der Pascalecke scheint mir Testen und Qualität bei den Entwicklern sowieso noch nie ein grossen Stellenwert gehabt zu haben, das geht schon mit dem Werkzeug los. Für simple Berechnungstools die hier dauernd preisend genannt werden - mit drei Buttons und ner handvoll Eingabefeldern - funktioniert das vielleicht ohne abzustürzen. Für 'richtige' Programme ist der Krempel viel zu zusammengeschustert. Gibts ne neue Version der darunterliegenden Lib fliesst die nicht sofort in Lazarus ein und ob das ausgibieg getestet wird wage ich zubezweifeln, wenn ich mir die Sourcen dazu anschauen, das läuft alles irgenwie, der Delphifan ist begeistert, sobald man drei Buttons zusammenklicken kann und das durchcompiliert und nicht gleich abstürzt. Lazarus ist ein Hobbyprojekt, so einen Müllhaufen nutzt keiner ernsthaft für grössere Projekte wo man viel Geld reinsteckt. Wie gross ist den die Entwicklerzahl die daran arbeiten wie oft kommen neue Releases, wie schnell werden bugs gefixed,... da stinkt es doch an allen Ecken und Enden gegen die Konkurrenz ab. Delphi und alles was sich daran orientiert ist ein totes Pferd da setzt keiner drauf der noch bei Verstand ist. Irgendwelche Einzelkämpfer die ne Nische damit besetzen sind kein Argument, die findet man in jedem Bereich. Es gibt ja nicht mal nennenswerte OpenSourceprojekte die in Lazarus fabriziert wurden. Alles was da bisher vor mir hatte ähnlich instabiler Schrott. Diesen einen Dateimanger z.B. der damit verbrochen wurde, sieht auch noch grauenhaft aus gerade das sollte doch dann wenigstens mit dem GUI-Zusammenklicktool sauber hinzubekommen sein? Der Delphiclon verspricht viel, hält aber wenig.
Webfehler schrieb: > Bei Lazarus hat man nen weiteren buggy Layer über eine gängige GUI-Lib > drübergeklatscht. Dummschwatz. Meine Programme laufen alle stabil und haben einiges mehr als 3 Buttons.
Webfehler schrieb: > [ jede Menge blinder Hass ] > Der Delphiclon verspricht viel, hält aber wenig. An dieser Bemerkung allein sieht man schon, daß du nicht die Spur einer Ahnung hast.
Dr. Sommer schrieb: > Java kompiliert übrigens noch viel schneller als C. Kommt Pascal da > dran? Java läßt auch das ganze Backend weg. Das darf dann, vernüftige VM vorausgesetzt, jedesmal der JiT-Compiler erledigen.
Andreas B. schrieb: > Dein Problem sehe ich nur, wenn man beides gleichzeitig braucht. Daher > die Frage nach einem Beispiel. Nimm einfach Windows - das ist ganz sicher nicht in Pascal geschrieben, alle tausende API-Funktionen sind in und für C definiert. Und das gilt für die meisten Libraries die man benutzt, z.B. für den Zugriff auf Datenbanken. Windows.h hat mal jemand bei Borland oder Lazarus als Fleissarbeit umgeschrieben in Windows.pas, aber das ist keineswegs vollständig, und wenn was fehlt, muss man halt selbst die Funktionsdefinition anpassen. Das setzt zwingend voraus, dass man ausser Pascal auch C beherrscht. Andreas B. schrieb: > Wenn man sich natürlich auf eine Programmiersprache beschränkt, ja dann > hat man ein Problem. Ausser für ganz einfache Embedded Progrämmchen ist das garnicht möglich. Georg
so einfach schrieb: > Die Antwort auf die Titelfrage ist ganz einfach: > > Die Trolls, die gegen Pascal hetzen, haben noch nie (richtig) mit Pascal > codiert. > > => Was der Bauer nicht kennt, isst er nicht! Manche von denen haben sogar schon auf CP/M Turbopascal-Programme geschrieben, denn TP konnte man irgendwie beschaffen, C-Compiler nicht mal gegen Geld. Nur gab es dann irgendwann auch mehr, und sie haben neues dazugelernt. Sie haben, um bei der Original-Ausdrucksweise zu bleiben, beides gefressen und haben dann ihren Geschmack entscheiden lassen.
Wenn Du auf die Lazarus Seite gehst..steht da.. Written in Pascal for Pascal Unter der Haube von Lazarus ist also Pascal
Andreas B. schrieb: > Ich sehe es eher getrennt: Wenn ich low Level programmiere, also uC oder > sonstiges (Treiber oder Terminalanwendung) dann wähle ich C. Brauche ich > SW mit einer GUI, dann Lazarus/Pascal. Warum? Der Witz ist doch, dass ich die gleiche nRF24 Lib sowohl auf dem uC, der die Sensoren ausliest als auch auf dem Raspi verwenden kann, der die Messwerte empfängt, in der Datenbank ablegt und für die Webseite aufbereitet. Oder dass ich die gleiche Lib mit der Definition der Uart Commands auf dem steuernden PC und auf dem zu steuernden uC habe. Besser gehts doch gar nicht. Ich kann mit Pascal Avr Embedded, Raspi Daemon, Raspi CGI oder FastCGI, Raspi GUI und PC GUI erschlagen.
begin Keine anderes Programmierwerkzeug ruft bei der bloßen Erwähnung seines Namens so viele und so eifrige Widersacher auf den Plan wie Object Pascal und Lazarus. Als ob sie sich irgendwie bedroht fühlen würden von der bloßen Existenz eines so mächtigen Tools. Wenn der Kollege mit Lazarus in zwei Stunden aus dem Handgelenk heraus was vollkommen fehlerfreies und auch noch anständig aussehendes abliefern kann wofür sie sich mit anderen Tools 2 Tage herumgequält hätten ist die Bedrohung (die der eigenen Anschauungen und Vorurteile zumindest) womöglich beängstigend real. Ich interpretiere dieses panische Geschrei das hier immer ausbricht wenn jemand "Lazarus" sagt als höchste Auszeichnung für dieses Tool. Es bestätigt auf lustige Weise was mir (im Gegensatz zu vielen anderen die nun im Nachteil sind und dort feststecken) schon seit 20 Jahren klar war. Und was mich angeht: ich nutze die Macht und lach mir ins Fäustchen. end.
Bernd K. schrieb: > > Ich interpretiere dieses panische Geschrei das hier immer ausbricht wenn > jemand "Lazarus" sagt als höchste Auszeichnung für dieses Tool. Es > bestätigt auf lustige Weise was mir (im Gegensatz zu vielen anderen die > nun im Nachteil sind und dort feststecken) schon seit 20 Jahren klar > war. Manchmal hört man auch einfach nur das eigene Echo. Ich fühle mich nicht vom "biblischen Totegräber" belästigt, den kann man auch einfach nicht benutzen, sondern eher von seinen "Fans", die solche Threads wie diesen hier lostreten und sich dann über Antworten beschweren.
Carl D. schrieb: > Ich fühle mich nicht vom "biblischen Totegräber" belästigt Lazarus ist tot wenn was besseres vorbeikommt. Noch ist nichts am Horizont.
georg schrieb: > aber das ist keineswegs > vollständig, und wenn was fehlt, muss man halt selbst die > Funktionsdefinition anpassen. Zum Beispiel? Ich kann unter Win GUI mit WinApi, Datenbank, Grafik, Uart, Filesystem, Timer, Netzwerk... Mir ist noch nichts untergekommen, was nicht unterstützt wurde. Was nicht heisst, dass es das nicht gibt, dann habe ich es noch nicht gebraucht. Aber mir scheint, Du hast da so ein TP von vor 25 Jahren unter Win3.11 im Kopf.
Bernd K. schrieb: > Carl D. schrieb: >> Ich fühle mich nicht vom "biblischen Totegräber" belästigt > > Lazarus ist tot wenn was besseres vorbeikommt. Noch ist nichts am > Horizont. Man sollte einfach bei der Vergabe von Projektnamen mögliche Assoziationen berücksichtigen. "armer, kranker Mann" oder "der den Herrn von den Toten aufgeweckt hat" könnten unerwünschte Kommentare auf sich ziehen. Und wenn alles tot wäre, wenn jeweils was besseres vorbeikommt, dann gäbe es von jedem nur ein Exemplar. Schein nicht real zu sein.
:
Bearbeitet durch User
Bernd K. schrieb: > der bloßen Existenz eines so mächtigen Tools. Wenn der Kollege mit > Lazarus in zwei Stunden aus dem Handgelenk heraus was vollkommen > fehlerfreies und auch noch anständig aussehendes abliefern kann wofür > sie sich mit anderen Tools 2 Tage herumgequält hätten ist die Bedrohung > (die der eigenen Anschauungen und Vorurteile zumindest) womöglich > beängstigend real. Da ist sie wieder die drei Button-Anwendung mit ner handvoll Eingabefeldern die uns überzeugen soll. Ich bin schwer beeindruckt, ein Programm das in 2h Stunden zusammengestöpselt wurde und die Haare schön hat, äh die GUI schön ist, das wird sicher wahnsinnig komplex sein und Leute überzeugen die an Projekten arbeiten wo mehrere Mannjahre und n*100k€ drinnstecken. Um nen Prototypen zusammenklicken vielleicht, aber selbst dafür brauche ich heute nicht mehr einen Delphiclon, den bringt schon jede GUI-lib mit oder ist gleich in der gängigen IDE integriert. Als Einzelkämpfer kann man auf so einen schlechten Libwrapper mit angeschimmelter Sprache setzen, im professionell Berufsalltag spielt es keine Rolle, weil man da mit mehreren Mann zusammenarbeiten muss da ist die Sprache, Frameworks meist vorgegeben und das sind dann etablierte Technologien nicht so ein geclonter Dinosaurier dem aus allen Ecken schon der Verwesungsgeruch rausdampft. Überhaupt das Personal, finde mal Leute die mit Lazarus Grossprojekte durchgezogen haben, das scheitert ja schon daran, ein unlösbares Henne-Ei-Problem, das man selbst wenn man es lösen könnte immer noch nicht haben will. Nur weil der Delphi/Pascal-Dino noch irgendwie zuckt und Geräusche von sich gibt bedeutet das nicht dass Dinosaurierer heute noch leben und allgegenwärtig sind. Das ist ein Zombie den man endlich pfählen sollte und dann ab damit in ein Loch und viel Erde drüber. Leider taucht er mit den Jahren immer wieder in Foren in Form von Diskussionen als Widergänger auf, ist einfach nicht totzukriegen diese Gammeltechnologie. Am 28.6. hat ein Max S. wieder die Gruft aufgemacht....
Carl D. schrieb: > Man sollte einfach bei der Vergabe von Projektnamen mögliche > Assoziationen berücksichtigen. Du meinst, eine IDE "Finsternis" zu nennen wäre keine so gute Idee?
Webfehler schrieb: > [viel Mist] Man, Dir muss ja ganz schön der Arsch auf Grundeis gehen, bei dem was Du hier so absonderst. Was haben SIE Dir ins Essen getan, dass Du hier so abgehst...
Karl schrieb: > Man, Dir muss ja ganz schön der Arsch auf Grundeis gehen, bei dem was Du > hier so absonderst. Was haben SIE Dir ins Essen getan, dass Du hier so > abgehst... Der Realitycheck für Lazarusjünger ist halt schmerzhaft.
Bernd K. schrieb: > Lazarus ist tot wenn was besseres vorbeikommt. Noch ist nichts am > Horizont. C# hätte so ein "Delphi (Lazarus) - Killer" werden können, da C# eine einfache Erstellung von GUI-Programmen erlaubt, ähnlich wie Lazarus und mit Anders Hejlsberg Architekt von C# ist ja auch die Nähe zu Delphi-Pascal quasi inhärent gegeben. Dumm nur, dass sie eben auf verwalteten IL-Code setzten (warum eigentlich??? 1)), ohne dass es eine Möglichkeit gibt C# auch ganz normal ohne diesen Wasserkopf einzusetzen. C# hätte ansonsten das bessere Delphi werden können für Leute die die geschwätzige Pascal Syntax nicht so recht mögen. 1) Möglicherweise weil MS die Visual BASIC Liebhaber nicht verlieren wollte? Oder weil sie den .NET Unterbau schlicht selber benötigten? Oder weil sie JAVA "kopieren" wollten?
Webfehler schrieb: > geclonter Dinosaurier dem aus allen Ecken > schon der Verwesungsgeruch rausdampft Das ist schon aus dem Grund Blödsinn, weil es eben kein Clon ist. Und was du hier riechst, der "Verwesungsgeruch", das ist der Müll aus deinem Mund, den du über deinen Lieblingsfeind ausschüttest. Muß dir ganz schön Panik einjagen, daß du so dermaßen viel Hass hier auskotzt...
Liebe Güte, das ist ja schlimmer als eine Politikdiskussion!
Hallo,
will mich da mal einmischen.
Webfehler
> Überhaupt das Personal, finde mal
Leute die mit Lazarus Grossprojekte durchgezogen haben, das scheitert ja
schon daran, ein unlösbares Henne-Ei-Problem, das man selbst wenn man es
lösen könnte immer noch nicht haben will.
Ich kenne zwar Lazarus nicht so genau, aber Du würdest dich wundern in
wieviel Großbanken Delphi-Anwendungen laufen und es ein KO-Kriterium
ist, wenn Du in der Banken Scene ein Programm entwickeln willst das
nicht auf Delphi bzw. Objekt-Pascal basiert.
Heute werden noch sehr, sehr viele große und komplexe Programme in
Delphi bzw. Objekt-Pascal entwickelt.
Das ist die eigentliche Zielgruppe von EMBACADERO.
Ciao
A. K. schrieb: > Liebe Güte, das ist ja schlimmer als ... Na ja, bloß weil einer vom Leder zieht ist die gesamte Diskussion nicht gleich so.
Bernd K. schrieb: > Lazarus ist tot wenn was besseres vorbeikommt. Noch ist nichts am > Horizont. Bist du sicher, dass du das Bessere als solches erkennen würdest, wenn es am Horizont auftaucht? Die Frage ist ernst gemeint, denn zumindest mir persönlich geht es so, dass ich so etwas immer erst dann erkenne, wenn es schon Millionen vor mir getan haben. Da frage ich mich dann, wie wohl diese Millionen erkannt haben, dass da etwas Besseres im Anmarsch ist, und wieviel noch Besseres wieder in der Versenkung verschwindet, weil zu wenig Leute darauf aufmerksam werden.
Bernd K. schrieb: > Noch ist nichts am Horizont Wie wär's mit Xojo? Auch super portabel, mit einer intuitiven Anfängerfreundlichen Sprache. Damit kommt man sich sehr schnell ans Ergebnis.
Karl schrieb: > Carl D. schrieb: >> Man sollte einfach bei der Vergabe von Projektnamen mögliche >> Assoziationen berücksichtigen. > > Du meinst, eine IDE "Finsternis" zu nennen wäre keine so gute Idee? Als Gegenpol zum Reich der Sonne ist "Sonnenfinsternis" besser als "Kranker Mann" für etwas, was sein Erfinder nach 5 Jahren mit eine Nachfolger ersetzen zu müssen befand.
Yalu X. schrieb: > Bist du sicher, dass du das Bessere als solches erkennen würdest, wenn > es am Horizont auftaucht? Das Problem fängt schon mit der Definition von "besser" an. Betrachtet man nur die Sprache an sich, oder die gesamte Infrastruktur? Als mir C über den Weg lief (K&R C), fand ich es von der Sprache her keine Erleuchtung, im Vergleich zum mir bereits bekannten Pascal. Aber im Gegensatz zu Pascal fiel uns ein als Ansatz brauchbarer 68000 C-Compiler vor die Füsse, den wir in Eigenarbeit auf ein Selbstbausystem mit Selbstbaubetriebssystem schoben. Und obendrein war noch eine Fundgrube von C Quellcode aus dem Unix-Arsenal verfügbar. Man muss ja nicht alle Räder neu erfinden. War das besser? Nicht im Sinne von Sprachästhetik, sehr wohl aber aus der Praxis heraus. Später verschob sich der Schwerpunkt von der 32-Bit 68000 zum 16-Bit PC (DOS: Lattice C, und 16-Bit Linux für 286). Vom ästhetischen Standpunkt aus war das ein Rückschritt, aber es war da und war leistungsfähiger. > Die Frage ist ernst gemeint, denn zumindest mir persönlich geht es so, > dass ich so etwas immer erst dann erkenne, wenn es schon Millionen vor > mir getan haben. Als C++ auftauchte und in Form des Zortech Compilers verfügbar wurde, dem ersten nativen C++ Compiler, war ich sofort dabei. Wobei das ähnlich ablief. Die Mächtigkeit war mir offenkundig, aber bereits beim ersten Lesen vom Stroustrup standen mir einige Haare zu Berge - zu syntaktischen Strukturen hatte ich mittlerweile etwas Erfahrung gesammelt. Aber es war da, war leistungsfähiger als der Rest, also habe ich es genutzt. Ich habe mir auch diverse andere Sprachen angesehen. Darunter auch Smalltalk, aber was will man mit einer Sprache anfangen, bei der ein fertiges Programm eine Art eingefrorener Memory-Dump aus der Entwicklungsumgebung war, ein "Hello World" in Richtung Megabytes ging. Schlicht unpraktisch. Und so zieht sich dieser Widerspruch zwischen opportunistischer Praxis und ästhetischer Theorie mittlerweile durch 4 Jahrzehnte. Mit APL fing ich nicht an, weil es gut war, sondern weil es in der Schule verfügbar war (und das mir später ein paar Mäuse in Ferienjobs einbrachte), und C finde ich bei Mikrocontrollern nicht wirklich gut, aber praktikabel. Bei Prozessoren wars ja ähnlich. 68000 war zwar "schöner", 386 aber schneller und billiger. Als ich dann in den 80ern zu etwas Papier von einer der ersten ARM-Generationen kam, fiel mir auf, wie man mit viel einfacheren Strukturen die gleiche Leistungsfähigkeit erreichen kann (RISC vs CISC). Beim PC blieb ich trotzdem. Andererseits: Ada kreuzte als nicht handhabbarer Moloch am Horizont auf. Die ersten Compiler galten gegenüber C Compilern als wahre Schlachtschiffe. Chancenlos, zumal das Pentagon als treibende Kraft auch nicht eben lockte. Mittlerweile habe ich den Eindruck, dass das vielleicht der bessere Ansatz im Mikrocontroller-Bereich wäre - immerhin wurde Ada gezielt für embedded Systems entwickelt. Aber der Zug ist nun abgefahren. Die Arbeit, die ich reinstecken müsste, um mit einer bestenfalls halbgaren Entwicklungsumgebung etwas zu machen, kann ich dann auch in die Fehler der Programmierung in C/C++ stecken. Da bin ich zu wenig Ideologe.
:
Bearbeitet durch User
Also hier läuft FPC wunderbar und in Kombination mit GDB macht das richtig Spaß. Sogar sehr alter Code von Turbo Pascal 3.1 lief ohne Anpassungen unter einem neuen Windows das leider keine 16 Bits mehr unterstützt. Für Linux mussten halt die / in \ umgewandelt werden oder anders herum ...
A. K. schrieb: > Yalu X. schrieb: >> Bist du sicher, dass du das Bessere als solches erkennen würdest, wenn >> es am Horizont auftaucht? > > Das Problem fängt schon mit der Definition von "besser" an. Betrachtet > man nur die Sprache an sich, oder die gesamte Infrastruktur? Bezogen auf die Aussage von Bernd Bernd K. schrieb: > Lazarus ist tot wenn was besseres vorbeikommt. Noch ist nichts am > Horizont. und meine Rückfrage definiere ich "das Bessere" als das, weswegen man das bisher Genutzte (bei Bernd wäre das Lazarus und Free Pascal) links liegen lässt, aus welchen Gründen auch immer. Es ist natürlich klar, dass nach dieser Definition jeder etwas anderes als "das Bessere" empfindet. Aber auch dieses persönliche Bessere ist IMHO sehr schwer zu finden, selbst wenn es irgendwo vielleicht schon existiert. Zudem ist die Bewertung mit einem nicht unerheblichen Arbeitsaufwand verbunden, was vermutlich mit einer der Gründe ist, warum sich Programmiersprachen so lange halten, auch wenn sie eigentlich schon überholt sind.
Yalu X. schrieb: > Bezogen auf die Aussage von Bernd > > Bernd K. schrieb: >> Lazarus ist tot wenn was besseres vorbeikommt. Noch ist nichts am >> Horizont. > > und meine Rückfrage definiere ich "das Bessere" als das, weswegen man > das bisher Genutzte (bei Bernd wäre das Lazarus und Free Pascal) links > liegen lässt, aus welchen Gründen auch immer. Das bezieht sich wohl auf die Entwicklung des GUI, ich suche da schon lange nach einem auch nur vergleichbarem Ersatz für Lazarus, habe aber bisher keinen gefunden (ja, ok, Delphi war besser).
Yalu X. schrieb: > Aber auch dieses persönliche Bessere ist IMHO sehr schwer zu finden, > selbst wenn es irgendwo vielleicht schon existiert. Zudem ist die Ob es wirklich besser ist, weiss man oft erst hinterher. > Bewertung mit einem nicht unerheblichen Arbeitsaufwand verbunden, was > vermutlich mit einer der Gründe ist, warum sich Programmiersprachen so > lange halten, auch wenn sie eigentlich schon überholt sind. Natürlich. Es hat etwas von "better the devil you know".
georg schrieb: > Nimm einfach Windows - das ist ganz sicher nicht in Pascal geschrieben, > alle tausende API-Funktionen sind in und für C definiert. ok, das wäre jetzt ein Beispiel wo man GUI und Lowlevelprogrammierung zusammen hat. Aber wer programmiert hier BS? Ich schätze mal <5%. Ich bin immer noch fasziniert darüber wieviele Leute sich hier negativ über Lazarus/Pascal auslassen, die es offensichtlich noch nie in der Hand hatten, geschweige denn damit mal gearbeitet hätten. Und Turbo Pascal lasse ich da nicht gelten. Irgendwie scheint das doch Beißreflexe auszulösen. Was die bemängelten Instabilitäten betrifft: Kann an alten Versionen liegen oder auch an Windows. Keine Ahnung. Die Version 1.6.2 läuft unter Linux jedenfalls absolut stabil. Das betrifft sowohl die IDE als auch die damit erstellte SW. Webfehler schrieb: > Der Realitycheck für Lazarusjünger ist halt schmerzhaft. Und was ist jetzt die Realität? Daß es Pascal Hasser gibt, die noch nie Object Pascal gesehen haben? Stört mich ehrlich gesagt, relativ wenig. Du kannst programmieren mit was Du willst. Meinentwegen auch mit Logo.
hehe.. nach den Meinungen hier im Forum programmieren hier eher 98% Prozent Betriebssysteme :) Deshalb sagte ich ja, ich finde diese Konstruierten Problemstellungen immer witzig. Es werden so lange Beispiele gesucht, für die Pascal nicht gehen könnte ..bis einer jubelnd aufschreit..das er JETZT den eindeutigen Grund kennt haahah Insgesamt scheint es aber so zu sein, das sehr wohl noch eine Menge in Pascal programmieren nur die C Leute lauter schreien und natürlich es auch ein paar mehr von ihnen gibt..Viele sich aber durch die Massenmeinung irren ließen und eher deshalb mit C angefangen haben. Den nach wie vor, kann ich für die Win/LInux Porgrammierung keinen sinnvollen Grund sehen, warum man sich das antun sollte für 98& der Benutzer kommt man einfach mit Lazarus erheblich schneller ans Ziel.# Andere Spprachen wie Go sehe ich weniger als Alternative, da diese nicht oder nicht venünftig auch µC verfügbar ist.' Und ich selber finde es natürlich auch gut, wenn man sowohl am PC als auch am µc die gleiche Sprache nutzen kann, wobei ich durchaus auch C im µc Bereich verstehen und nachvollziehen kann. Im µc Bereich ist C sicher genauso unproblematisch wie Pascal, evtl bietet C hier sogar Vorteile?! aber im PC Bereich kann ich es halt nicht nachvollziehen.wieso man sich das antun sollte
Max S. schrieb: > Im µc Bereich ist C sicher genauso unproblematisch wie Pascal, evtl > bietet C hier sogar Vorteile?! Also für uC Programmierung ist Pascal meiner Meinung nach weniger geeignet. Das mag bei den 32bit Controllern anders sein, aber für 8-bit Controller braucht Pascal zu viel Ressorcen. Da habe ich es außerdem auch ganz gern hardwarenah und kontrolliere jedes Bit. Es muß ja nicht gerade Assember sein (Ausnahme: Tiny10). Ich glaube auch nicht daß Pascalcompiler an die Codeeffizienz von C-compilern drankommen. Ich sehe es ganz pragmatisch: Jedes Werkzeug für seinen geeigneten Zweck. Im übrigen habe ich jahrelang professionell mit VB programmiert: Feuer frei!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.