Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß??

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 331
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon (Windows wenn notwendig), Lazarus 3.0 FPC 3.3.1

Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß??

Beitrag von Niesi »

Dieses Thema ist sehr interessant und flammt immer wieder in verschieden Threads hier im Forum auf - ich schlage vor, wir machen dazu eine eigenes Thema auf, denn sonst stören wir immer wieder das eigentliche Thema.

Die Diskussion, ob Pascal zeitgemäß ist oder nicht, kann sehr interessant sein und auch beim Finden der "richtigen" Programmiersprache unterstützen. Ich hoffe, das ist auch in Eurem Sinne ...

Um hier auch gleich mal meine Meinung los zu werden: Ja.

Die Programmierung mit Lazarus ist zeitgemäß, mir ist nichts besseres bekannt. Ich selbst habe mit Basic begonnen, bin dann auf Turbo Pascal gekommen und bis Delphi 2009 immer dabei geblieben, wobei ich zwischendurch auch mit Fortran Bekanntschaft machte. Weil die Zukunft von Delphi aber unsicher schien und ich armer Tropf nichts von Lazarus und Free-Pascal mitbekommen hatte, versuchte ich mich in Visual Basic, in Java und in C. Das war alles nichts (für mich). Und dann: entdeckte ich Lazarus 1.6. Seither bin ich wieder begeistert am Programmieren.

Denn die Sprache ist übersichtlich, ich kann praktisch alle Programme erstellen, die denkbar sind und dank ObjectPascal bin ich beim Programmieren auch auf der Höhe der Zeit. Besonders wertvoll sind auch die sehr reichlich vorhandenen Bibliotheken, welche mit Lazarus mitkommen, mit denen sich schon sehr viel lösen lässt - und auch die Gestaltung der Programmoberfläche ist extrem einfach.

Zusätzlich sind Lazarus und Free-Pascal sehr ausgereifte Opensource-Projekte, so dass ich nicht so viel mit Schwächen in der Entwicklungsumgebung zu kämpfen habe. Klar gibt es immer wieder neue Programmiersprachen - aber ganz ehrlich: die werden doch lediglich so gehypt, weil sich damit die Schreibenden in den Redaktionen selbst die Existenz sichern und weil sie selbst nichts fertig bekommen in der Programmierung. Sonst würden die doch merken, dass große Projekte ausgereifte Programmierwerkzeuge brauchen, die da z. B. Pascal, Fortran und C (auch C++) sind. Mit so neuen Sachen lässt sich sicher gut spielen, aber richtig arbeiten?
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von MacWomble »

Ob eine Sprache zeitgemäß ist, hängt m.E. von verschiedenen Faktoren ab. Die für mich wichtigsten:

1. Ist die Syntax verständlich?
2. Lassen sich die aktuell definierten Programmierrichtlinien einfach erfüllen?
3. Ist die Sprache bekannt (verbreitet)? (Wenn auch nicht Lazarus, ObjektPascal ist es auf jeden Fall)
4. Wird die Sprache gepflegt/gewartet bzw. weiter entwickelt?
5. Wird OOP unterstützt?
6. Werden leistungsfähige und aktuelle Datenbanken unterstützt (mögl. nativ)?
7. Kann ich mich auch nach längerer Zeit im Quellcode oder auch in fremden Quellcodes zurecht finden?
8. Unterstützt die Sprache alle meine Anforderungen (ggf. durch Zusatzpakete)?
9. Sind die Lizenzen frei gegeben bzw. bezahlbar?
10. Lassen sich auch große Projekte übersichtlich erstellen?
11. Lässt sich der Quellcode kompilieren?
12. Habe ich den kompletten Quellcode? (wenn auch nur aus Sicherheitsgründen)
13. Kann ich plattformunabhängige (sowohl Architektur als auch Betriebssystem) Programme erstellen?
14. Gibt es eine aktive Community?
15. Gibt es qualifizierte Hilfestellungen bei Fragen/Problemen?

Sicher sind dies bei weitem nicht alle Punkte und auch nicht alle hier aufgeführten Punkte sind für jeden gleich wichtig.
Die obige Reihenfolge stellt für mich keine Gewichtung dar, da alle diese Punkte für meine Projekte erfüllt sein müssen!

Ich habe früher mit HP-Businessbasic, Cobol, Turbo-Pascal, Visual-Studio (C++, VisualBasic), Delphi und einigen weiteren zahlreiche, vor allem gewerbliche Projekte durchgeführt.
Meines Erachtens bietet mir aber Lazarus alles, was benötigt ist und es gibt die Restriktionen der anderen Sprachen nicht.
Meine Antwort deswegen:
Ein klares JA ! Lazarus ist absolut zeitgemäß!
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Benutzeravatar
six1
Beiträge: 782
Registriert: Do 1. Jul 2010, 19:01

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von six1 »

Wurde schon Vieles genannt...

Aber ganz klares Ja, weil "wir" uns hier herumtreiben und austauschen.
So lange es eine aktive Community gibt, ist "pascal" auch zeitgemäß und wird angewendet.
Neben aller Theorie habe ich in der Praxis alle Problemstellungen damit lösen können, sei es mit Delphi2 bis Delphi XE oder danach Lazarus gewesen.
Nachdem für Delphi einfach heftige Preise für die Lizenzen aufgerufen wurde, habe ich einige meiner Projekte unter Lazarus komplett neu aufgesetzt.
Die IDE von Lazarus ist stabiler als meine letzten Delphi Versionen. Die Programme meiner Meinung nach schneller in der Ausführung.

Wenn man im Umfang größere Projekte im Portfolio hat, wechselt man so und so nicht ständig seine Werkzeuge, nur weil gerade etwas "hipp" ist; also ich zumindest nicht.
Gruß, Michael

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von sstvmaster »

Ich kann nur so viel dazu sagen, ich habe vor ca. 3 Jahren überhaupt angefangen mit Programmieren (bin jetzt 41).
Ich hatte vorher noch nie mit Programmieren zu tun. Ich bin gelernter Radio und Fernsehtechniker.

Ein Freund von mir brauchte ein Programm womit er seinen Satellitenanlage relative komfortabel steuern kann.
Ich habe mir Visual Studio, PureBasic und Delphi angeschaut, Visual Studio und Delphi waren mir persöhnlich zu groß
und überladen. PureBasic hat mich der Preis gestört, es sollte ja nur ein kleines Tool werden.

Dann bin ich auf Lazarus gestossen 1.6, die IDE war, für mich, einfach zu Bedienen, die Pascal Syntax einfach.
Ich sehe zwar bei einigen Sachen immer noch nicht durch, bzw. verstehen ich es nicht. Aber ich denke das muss ich auch nicht.
Was ich noch sagen muss wenn man ObjPascal einmal grundlegend verstanden hat, kommt man mit "learnig by dooing" und mit
Hilfe des Forum's und der in Lazarus mitgelieferten Beispiele schon sehr gut zu recht.

Aus meiner laienhaften Sichtweise würde ich schon sagen das Lazarus + FPC zeitgemäß ist.

LG Maik
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von Warf »

Ein grund warum Free-Pascal nicht zeitgemäß ist, bzw. ich mag nicht modern lieber, da nicht Zeitgemäß so negativ klingt, als wäre es heutzutage nicht benutzbar, ist das du in FreePascal dich immernoch selbst um die Speicherfreigabe kümmern musst. Es hat sich rausgestellt das wenn der Entwickler selbst damit beauftragt wird es zu fehlern kommt. Moderne sprachen haben entweder ein Ownership konzept eingebaut (Rust, C++) oder einen Grabage Collector (Java, C#) oder Referenzzählung (Swift, C++), und haben damit das speicherzugriffsproblem komplett aus der welt geschafft.

Auf der anderen seite hat man Pascal, das zwar immer mal wieder neue sachen hinzufügt, aber nie die grundsätzlichen paradigmen ändert. Daher würde ich sagen pascal ist eben nicht modern.

Genauso ist nicht modern sein aber auch ne Designentscheidung. Java führt keine "modernen features" wie operator overloading ein (was wir sogar schon in pascal haben), weil zum einen zu viele komplexe features letzendlich in code enden den nur noch experten lesen können (C++ phänomen), und java anwendungen laufen gut und gerne mal 5-10 jahre oder länger, und man möchte das die entwickler einer Java 5 software später relativ problemlos auf java 11 umsteigen kann. Ähnlich sehe ich das bei Pascal. FreePascal ist für TurboPascal einsteiger immernoch sehr simple, und das ist eine große Qualität, die man bei einer modernisierten sprache wie Swift bei der sich mit einem Major versionsupdate auch sehr oft kompatibilität bricht, einfach nicht haben kann

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 331
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon (Windows wenn notwendig), Lazarus 3.0 FPC 3.3.1

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von Niesi »

Warf hat geschrieben:Ein grund warum Free-Pascal nicht zeitgemäß ist, bzw. ich mag nicht modern lieber, da nicht Zeitgemäß so negativ klingt, als wäre es heutzutage nicht benutzbar, ist das du in FreePascal dich immernoch selbst um die Speicherfreigabe kümmern musst. Es hat sich rausgestellt das wenn der Entwickler selbst damit beauftragt wird es zu fehlern kommt. Moderne sprachen haben entweder ein Ownership konzept eingebaut (Rust, C++) oder einen Grabage Collector (Java, C#) oder Referenzzählung (Swift, C++), und haben damit das speicherzugriffsproblem komplett aus der welt geschafft.

Auf der anderen seite hat man Pascal, das zwar immer mal wieder neue sachen hinzufügt, aber nie die grundsätzlichen paradigmen ändert. Daher würde ich sagen pascal ist eben nicht modern.

Genauso ist nicht modern sein aber auch ne Designentscheidung. Java führt keine "modernen features" wie operator overloading ein (was wir sogar schon in pascal haben), weil zum einen zu viele komplexe features letzendlich in code enden den nur noch experten lesen können (C++ phänomen), und java anwendungen laufen gut und gerne mal 5-10 jahre oder länger, und man möchte das die entwickler einer Java 5 software später relativ problemlos auf java 11 umsteigen kann. Ähnlich sehe ich das bei Pascal. FreePascal ist für TurboPascal einsteiger immernoch sehr simple, und das ist eine große Qualität, die man bei einer modernisierten sprache wie Swift bei der sich mit einem Major versionsupdate auch sehr oft kompatibilität bricht, einfach nicht haben kann


Also, wenn Du an der Speicherfreigabe festmachst, ob eine Programmiersprache "modern" ist oder nicht, dann sehe ich das ohne jede Bösartigkeit als "Jammern auf sehr hohem Niveau" an. Ich bin mir nicht sicher, ob der Speicher in anderen Programmiersprachen IMMER "von selbst" freigegeben wird, in ObjectPascal jedenfalls ist die Speicherfreigabe per Quellcode nur für die Objekte notwendig, die während der Laufzeit selbst kreiert und keinem Owner zugewiesen werden. Ansonsten kümmern sich nämlich Owner und Anwendung selbst um die Speicherfreigabe. Ein "AnObject.Free" mehr im Quelltext als alles bestimmenden Maßstab für modern oder nicht ist zu kurz gegriffen, finde ich.
Denn: das mit den nie geänderten Paradigmen stimmt nun wirklich nicht. Pascal war ursprünglich eine imperative, prozuderale Programmiersprache, mit der Einführung von ObjectPascal änderte sich dieses Paradigma also. Und im Moment gibt es noch nichts besseres, auch wenn wir uns das alle wünschen (also das bessere, nicht das andere).

Viel wichtiger finde ich die Aufzählung von McWomble:

McWomble hat geschrieben:1. Ist die Syntax verständlich?
2. Lassen sich die aktuell definierten Programmierrichtlinien einfach erfüllen?
3. Ist die Sprache bekannt (verbreitet)? (Wenn auch nicht Lazarus, ObjektPascal ist es auf jeden Fall)
4. Wird die Sprache gepflegt/gewartet bzw. weiter entwickelt?
5. Wird OOP unterstützt?
6. Werden leistungsfähige und aktuelle Datenbanken unterstützt (mögl. nativ)?
7. Kann ich mich auch nach längerer Zeit im Quellcode oder auch in fremden Quellcodes zurecht finden?
8. Unterstützt die Sprache alle meine Anforderungen (ggf. durch Zusatzpakete)?
9. Sind die Lizenzen frei gegeben bzw. bezahlbar?
10. Lassen sich auch große Projekte übersichtlich erstellen?
11. Lässt sich der Quellcode kompilieren?
12. Habe ich den kompletten Quellcode? (wenn auch nur aus Sicherheitsgründen)
13. Kann ich plattformunabhängige (sowohl Architektur als auch Betriebssystem) Programme erstellen?
14. Gibt es eine aktive Community?
15. Gibt es qualifizierte Hilfestellungen bei Fragen/Problemen?


Das sind im Wesentlichen genau die Punkte, auf die es doch ankommt.

Im Prinzip sind Lazarus und Free-Pascal trotz ihres hohen Alters sogar "supermodern": Sie sind OpenSource, sie werden von einer sachkundigen, engagierten "Gemeinde" weiterentwickelt und liegen in brandaktuellen Versionen vor.
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von Warf »

Niesi hat geschrieben:Also, wenn Du an der Speicherfreigabe festmachst, ob eine Programmiersprache "modern" ist oder nicht, dann sehe ich das ohne jede Bösartigkeit als "Jammern auf sehr hohem Niveau" an. Ich bin mir nicht sicher, ob der Speicher in anderen Programmiersprachen IMMER "von selbst" freigegeben wird, in ObjectPascal jedenfalls ist die Speicherfreigabe per Quellcode nur für die Objekte notwendig, die während der Laufzeit selbst kreiert und keinem Owner zugewiesen werden. Ansonsten kümmern sich nämlich Owner und Anwendung selbst um die Speicherfreigabe. Ein "AnObject.Free" mehr im Quelltext als alles bestimmenden Maßstab für modern oder nicht ist zu kurz gegriffen, finde ich.
Denn: das mit den nie geänderten Paradigmen stimmt nun wirklich nicht. Pascal war ursprünglich eine imperative, prozuderale Programmiersprache, mit der Einführung von ObjectPascal änderte sich dieses Paradigma also. Und im Moment gibt es noch nichts besseres, auch wenn wir uns das alle wünschen (also das bessere, nicht das andere).


Ich mache es nicht an speicherfreigabe fest, es ist nur was bei dem man es sehr gut beobachten kann. Wenn man heute eine sprache neu designen würde, würde niemand auf die Idee kommen dem Nutzer die Speicherverwaltung manuell aufzudrücken (zumindest default). Über die jahre hat sich rausgestellt, Programmierer sind zu dumm um ihren eigenen Speicher aufzuräumen, daher gehen neue Programmiersprachen das problem an indem sie andere Konzepte implementieren. Genau das ist mMn. was eine Sprache modern macht, die Integration von neuen features um Probleme zu lösen, selbst wenn diese Features komplett gegen die bisherige common Practice laufen, oder mit dem unterliegenden assembly nicht simple repräsentiert werden können. Und pascal macht genau das nicht, FPC 3.0.4 aus 2019 ist immernoch im grunde fast identisch zu delphi 7 von den sprachfeatures her. An den paradigmen hat sich nie was geändert. Und speichermanagement ist das kriterium an dem man des relativ einfach sehen kann, den manuelles speichermanagement, außerhalb von Betriebsystem Kerneln und Programmen die maximale performanz brauchen (bei denen man eh C verwendet) ist schlicht weg eine beschissene idee.

Und es geht nicht darum das man ein Free haben muss, sondern wo man ein free haben muss. Innerhalb einer funktion oder einer Klasse ist das einfach, aber beispiel, du hast ne anwendung mit 3 klassen, die sich gegenseitig pointer zuschieben. Klasse 1 erstellt die memory. Alle 3 benutzen den speicher. Wer gibt ihn frei? Wenn die klassen verschiedene lebenszeiten haben können, wird das zu nem echten problem. Free'st du zu früh, gibts nen speicherzugriffsfehler, wenn du aber zu lang wartest kanns sein das alle klassen tot sind und du ein memory leak hast. Und es hat sich einfach rausgestellt, selbst die besten entwickler, wenn das projekt kompliziert genug wird, bauen speicherfehler ein. Darum ist eine moderne sprache eine sprache die das verhindert.

Ein anderes beispiel sind Null/nil Pointer. Hoare hat die erfindung von NULL pointern als seinen Billion dollar mistake bezeichnet. Sprachen wie Swift umgehen den über Optionals (statt nullpointer) und Java und C++ haben eine Optional klasse eingeführt um null pointer zu umgehen. Historisch hat sich rausgestellt das war ne ganz dumme idee, daher versuchen moderne sprachen diese probleme zu umgehen. Die idee ist, wenn du versuchst den wert zuzugreifen musst du eine alternative angeben in case das ist null. Du kannst variablen aber auch so definieren das sie erst gar nicht 0 werden dürfen. Damit haben diese modernen sprachen das Null Pointer problem komplett gelöst, Pascal nicht, daher ist pascal nicht modern. Ich hoffe diese argumentation macht Sinn.

Natürlich kann jeder unter modern oder zeitgemäß was anderes verstehen. Z.B.
MacWomble hat geschrieben:Ob eine Sprache zeitgemäß ist, hängt m.E. von verschiedenen Faktoren ab. Die für mich wichtigsten:

1. Ist die Syntax verständlich?
2. Lassen sich die aktuell definierten Programmierrichtlinien einfach erfüllen?
3. Ist die Sprache bekannt (verbreitet)? (Wenn auch nicht Lazarus, ObjektPascal ist es auf jeden Fall)
4. Wird die Sprache gepflegt/gewartet bzw. weiter entwickelt?
5. Wird OOP unterstützt?
6. Werden leistungsfähige und aktuelle Datenbanken unterstützt (mögl. nativ)?
7. Kann ich mich auch nach längerer Zeit im Quellcode oder auch in fremden Quellcodes zurecht finden?
8. Unterstützt die Sprache alle meine Anforderungen (ggf. durch Zusatzpakete)?
9. Sind die Lizenzen frei gegeben bzw. bezahlbar?
10. Lassen sich auch große Projekte übersichtlich erstellen?
11. Lässt sich der Quellcode kompilieren?
12. Habe ich den kompletten Quellcode? (wenn auch nur aus Sicherheitsgründen)
13. Kann ich plattformunabhängige (sowohl Architektur als auch Betriebssystem) Programme erstellen?
14. Gibt es eine aktive Community?
15. Gibt es qualifizierte Hilfestellungen bei Fragen/Problemen?

Sind meiner meinung nach keine kriterien nach denen eine Sprache modern ist, das sind kriterien ob eine sprache produktiv benutzbar ist. Nach den kriterien ist selbst Smalltalk modern, und wenn man das OOP rausnimmt aus der liste würde das auch für COBOL und FORTRAN gelten. Und diese sprachen sind das parade beispiel von Outdateten sprachen in jedem Softwaretechnik seminar

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von MacWomble »

Modern ist, was die Anforderungen und Bedürfnisse nach dem neusten Stand der Technik erfüllt (Duden) - und das tut Lazarus - eben auch durch die Erfüllung der meisten der von mir aufgelisteten Punkte (Da diese nach dem neusten Stand der Technik zu erfüllen sind).

Aber die Frage war ohnehin, ob Lazarus zeitgemäß ist, was nicht unbedingt dem Begriff "modern" entspricht.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von Warf »

Modern ist, was die Anforderungen und Bedürfnisse nach dem neusten Stand der Technik erfüllt (Duden) - und das tut Lazarus - eben auch durch die Erfüllung der meisten der von mir aufgelisteten Punkte (Da diese nach dem neusten Stand der Technik zu erfüllen sind).


Grad der Duden hat 3 verschiedene definitionen, z.B.:
der herrschenden bzw. neuesten Mode (1a, 2) entsprechend

passt deutlich eher zu dem was ich geschrieben hab. Grade für ein so abstraktes wort wie modern kann jeder was anderes drunter vorstellen. Aber selbst nach der zweiten definition, also ob es zeitgemäß ist, ändert sich mein argument nicht
Zeitgemäß/Stand der Technik ist es keine Speicherzugriffsfehler mehr zu haben. In pascal hat man relativ schnell speicherzugriffsfehler, also ist Pascal nicht zeitgemäß. Bzw. es ist nicht mehr Zeitgemäß sich selbst um den Speicher zu kümmern, in Pascal muss man das machen also ist pascal nicht mehr zeitgemäß

Pascal macht viele sachen bei denen wir rausgefunden haben das sie scheiße sind (memory management, null pointer, als die beiden die ich schon erwähnt hab), ohne anstalten was daran zu verändern. Das ist weder modern noch zeitgemäß.

Und wie gesagt, du kannst gerne nach deinen kriterien gehen, für mich machen die aber gar keinen sinn, weil jede sprache die aktiv weiter entwickelt wird draunter fallen würde. Und an sprachen wie Fortran oder COBOL ist absolut nichts modern und oder zeitgemäß

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von MacWomble »

Warf hat geschrieben:Zeitgemäß/Stand der Technik ist es keine Speicherzugriffsfehler mehr zu haben. In pascal hat man relativ schnell speicherzugriffsfehler, also ist Pascal nicht zeitgemäß.


Wenn man Fehler in das Programm baut, ist demnach Pascal schuld? :roll:

Wenn es nach dir gehen würde, könnte man überhaupt keine Programmierfehler (nichts anderes ist die vergessene Resourcenfreigabe) mehr machen und Debugging wäre überflüssig. - Wäre ich allerdings auch dafür! 8)

Speicherfreigabe hat genau dann zu erfolgen, wenn ich es sage. Woher sollte das Programm sonst wissen, ob ich den Speicherbereich noch mal ansprechen möchte? :shock:

Zeitgemäß ist es Programme ohne Fehler zu entwickeln? Das ist nicht zeitgemäß sondern ein Wunsch, mit dem wir uns alle noch lange befassen werden! :D

Stellt sich mir die Frage:
Welche Programmiersprache lässt denn keine Speicherzugriffsverletzungen zu?
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von Warf »

Wenn man Fehler in das Programm baut, ist demnach Pascal schuld?


Nein, aber die Sprache kann verhindern das man Fehler macht, oder es bestärken. In Pascal musst du deinen speicher selbst aufräumen. Es hat sich rausgestellt das ist eine quelle für fehler, und Speicherzugriffsfehler werden geschehen. Selbst der beste programmierer wird in einem Projekt das Komplex genug ist speicherzugriffsfehler machen. Das hat man in den letzten Jahrzehnten einfach festgestellt. Selbst so gut getestete Programme wie die GNU Core utils haben z.T. immernoch speicherzugriffsfehler. Die Reaktion der Programmiersprachen entwickler war daraufhin die entwicklung neuer Paradigmen die das verhinden. Diese paradigmen wurden in den meisten programmiersprachen dann integriert, und damit ist es der aktuelle stand der technik.
Modern ist, was die Anforderungen und Bedürfnisse nach dem neusten Stand der Technik erfüllt (Duden)

Nach deiner eigenen aussage wäre Pascal also, weil es nicht den neusten stand der technik erfüllt, nicht modern. Angenommen das man als Anforderung hat ein korrektes programm zu schreiben. Wenn deine Anforderung ist möglichst viel kontrolle über die unterliegende Maschine zu haben widerum wäre Pascal super modern

MacWomble
Lazarusforum e. V.
Beiträge: 999
Registriert: Do 17. Apr 2008, 01:59
OS, Lazarus, FPC: Mint 21.1 Cinnamon / FPC 3.2.2/Lazarus 2.2.4
CPU-Target: Intel i7-10750 64Bit
Wohnort: Freiburg

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von MacWomble »

Warf hat geschrieben:In Pascal musst du deinen speicher selbst aufräumen


Welche Programmiersprache macht das? Ich habe wirklich keine gefunden, wo man keine Speicherverletzungen erzeugen kann.
Oder meinst du Basic? Da musst du dich um (fast) nichts kümmern ... aber Speicherverletzungen funktionieren dort auch.

Du behauptest einfach, weil Pascal dem Programmierer das Denken nicht abnimmt, ist es nicht modern? :shock:

Wäre ja schon schön, wenn man einfach sagen könnte: 'Adressverwaltung' und die Entwicklungsumgebung macht das dann alleine. Aber wovon lebe ich dann? :P :oops:

Aber jetzt wieder im Ernst: Wenn Paradigmen verhindern, dass Fehler gemacht werden, so bedeutet dies in der Regel auch Einschränkung des Entwicklers. Bestimmte Sachen sind dann einfach nicht möglich. Das ist nicht 'modern' sondern eine Behinderung!

Für dich wäre wahrscheinlich das folgende 'modern':
https://www.pro-linux.de/artikel/2/1972 ... honic.html
Zuletzt geändert von MacWomble am So 19. Mai 2019, 19:17, insgesamt 1-mal geändert.
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.

AndreasMR
Beiträge: 98
Registriert: Di 4. Aug 2015, 15:29
OS, Lazarus, FPC: Linux, Raspbian, Windows
CPU-Target: 64/32 Bit

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von AndreasMR »

Hallo zusammen,

von mir ein ganz klares Ja zu Lazarus/FreePascal.

Wenn mich jemand fragt, mit welcher Programmiersprache man sich beschäftigen soll, dann sage ich immer:
"Besorge Dir Quellcode in verschiedenen Programmiersprachen, die das gleiche Problem lösen (z.B. von Rosetta). Das Problem sollte vom Schwierigkeitsgrad nicht sonderlich komplex sein - aber auch nicht vollkommen banal. Aber so, dass es vollumfänglich verstanden wird.
Die Programmiersprache, in der jemand die Problemlösung anhand des Quellcodes versteht, wird auch die Programmiersprache sein, in der man sich selber wird ausdrücken können".

Ein Quellcode muss lesbar sein - und das auch ein halbes Jahr nach der Erstellung, ohne dass großartige Kommentare den Quellcode erläutern müssen (ja, ich halte Code-Kommentare für sinnvoll und hilfreich).

Mittlerweile bin ich in fortgeschrittenem Alter. Programmiersprachen habe ich etliche kommen und gehen sehen. Einige haben einen unberechtigten Hype erfahren und wurden gepusht ohne Ende. Letztlich haben einige Entwickler solche Programmiersprachen gelernt. Aber Begeisterung sieht anders aus.

Ich habe mich wenig von irgendwelchen Mainstream-Sprachen "blenden" lassen- und mich recht intensiv mit weniger bekannten vergleichsweise einfachen - aber sehr leistungsfähigen - Programmiersprachen beschäftigt.

Pascal war nach Basic die erste Programmiersprache, die mich total begeistert hat. C und verwandte Programmiersprachen haben das nie geschafft.

Lazarus ist ein Entwicklungssystem, das mit den kostenintensiven professionellen Entwicklungssystemen mithalten kann. Und sich vor keiner Entwicklungsumgebung zu verstecken braucht.

Lazarus/FreePascal zählt für mich zu den wenigen Systemen, in denen man RAD [Rapid Application Development] für etliche Betriebssysteme betreiben kann. Während bei Entwicklungsprojekten in anderen Programmiersprachen noch über Konzepte diskutiert wird, steht die GUI samt grundlegender Funktionalität nach Stunden / Tagen (je nach Komplexität der Anwendung). Bei C besteht beispielsweise die Gefahr, irgendwo konzeptuell falsch abgebogen zu sein und später mächtig viel Aufwand investiert werden muss, um zu flicken und zurecht zu biegen.

Mein Eindruck ist der, dass man bei Lazarus/FreePascal wesentlich schneller zu einem Erfolgserlebnis gelangt als bei vielen anderen Programmiersprachen. Und mit deutlich weniger Programmier-Skills zu akzeptablen Ergebnissen gelangt. Mit den gleichen Skills stürzt ein in C geschriebenes Programm immer noch ab. Um wie viel besser mag ein Programmierer mit überragenden Programmierskills in Lazarus / FreePascal Anwendungen entwickeln?

Ich bewege mich seit > 30 Jahren programmiermäßig im Dreieck Pascal - Icon/Unicon (als Auswahl vergleichsweise unbekannter Programmiersprachen) - Assembler.


Beste Grüße

Andreas
Ubuntu 14.04 LTS / Raspbian / Windows: Lazarus ab 0.9 bis 3.0

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von Warf »

MacWomble hat geschrieben:Welche Programmiersprache macht das? Ich habe wirklich keine gefunden, wo man keine Speicherverletzungen erzeugen kann.
Oder meinst du Basic? Da musst du dich um (fast) nichts kümmern ... aber Speicherverletzungen funktionieren dort auch.


Mit speicherzugriffsverletzung meine ich invalid pointer, Null pointer errors und memory leaks. Und wenn du in C++ mit std::unique_ptr, std::shared_ptr und std::weak_ptr und std::optional arbeitest, sind diese fehler ausgeschlossen. Klar kannst du das auch nicht benutzen, aber du hast zumindest die Option. Rust enforced ähnliche mechanismen und macht z.B. memory leaks einfach unmöglich.

MacWomble hat geschrieben:Du behauptest einfach, weil Pascal dem Programmierer das Denken nicht abnimmt, ist es nicht modern? :shock:


Du verstehst meinen punkt wirklich nicht oder. Speicherzugriffsfehler sind Fehler die durch gutes Sprachdesign vermeidbar sind ohne beschränkung der ausdrucksfähigkeit der sprache, welche in der realität nicht nur häufig vorkommen, sonder mit die meisten fehler sind die in der Programmierung vorkommen. Ohne daten würde ich jetzt behaupten das Speicherzugriffsfehler + Null Pointer Fehler + Memory leaks die große mehrheit aller fehler in der Programmierung (also ich würde schätzen > 60% der fehler in C programmen gehen auf die kosten von memory management) ausmachen.
Ich arbeite im bereich Software testing, und kann dir sagen, Speicherzugriffsfehler sind das mit abstand größte problem das wir finden. Und es ist komplett vermeidbar!

MacWomble hat geschrieben:Wäre ja schon schön, wenn man einfach sagen könnte: 'Adressverwaltung' und die Entwicklungsumgebung macht das dann alleine. Aber wovon lebe ich dann? :P :oops:

Wenn diese Technologie exsistieren würde, würde ich sie auch modern nennen, bzw. IDE's die diese technologie nicht benutzen (wenn sie frei verfügbar wäre) würde ich als unmodern bezeichnen.

MacWomble hat geschrieben:Aber jetzt wieder im Ernst: Wenn Paradigmen verhindern, dass Fehler gemacht werden, so bedeutet dies in der Regel auch Einschränkung des Entwicklers. Bestimmte Sachen sind dann einfach nicht möglich. Das ist nicht 'modern' sondern eine Behinderung!


Es ist immer eine abwägung. Manuelle speicherverwaltung bringt dir in 99% der fälle keinen Vorteil gegenüber referenzzählung. Außer du hast ein system bei dem ein paar instructions mehr, sowie 4 byte pro pointer mehr ein echtes problem darstellen. Aber selbst auf nem Raspi ist das kein problem mehr, und Pascals haupt zielgruppe sind Desktopanwendungen für moderne Rechner. Im gegensatz dazu sind speicherzugriffsfehler mit die meist vorkommenden und auch z.T. sehr schwerwiegende fehler, die man komplett umgehen kann.

Und eine einschränkung des entwicklers ist so lange gerechtfertigt wenn es zu besserem code führt. Pascal erlaubt es z.B. nur variablem am anfang einer funktion zu definieren. Im vergleich zu C fallen damit interne Scopes weg. Das ist eine einschränkung des Entwicklers, aber ich würde dennoch sagen das das gar nicht mal so schlecht ist.

Wenn du wirklich nicht eingeschränkt werden willst von der sprache, müsstest du jedes programm auch in Lisp schreiben

Und es kann ja wie in C++ sein, wo man diese modernen features hat, sie aber nicht benutzen muss. Dennoch würde ich eine sprache die solche features hat als moderner bezeichnen als eine ohne diese features. Einfach weil der stand der technik ist, diese features mindestens bereit zu stellen.

PS: normalerweise werden diese features entwickelt weil sie die Produktivität erhöhen, es ist ein langwiriger prozess mit vielen testern bis ein feature in die sprache kommt, wenn es tatsächlich eine Behinderung wäre, würde es den prozess nicht überleben. Diese features sind also mindestens genauso produktiv wie die sprache ohne diese features.
Zuletzt geändert von Warf am So 19. Mai 2019, 19:52, insgesamt 2-mal geändert.

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Ist die Programmierung mit Lazarus Free-Pascal zeitgemäß

Beitrag von Timm Thaler »

Für mich zählt dazu: Unterstützung moderner Architekturen.

Von PureBasic bin ich weitgehend weg, weil das zwar den ziemlich toten Amiga kann, aber keinen Raspberry. Sprich ARM-Architektur wird nicht unterstützt.

FreePascal kann einige Embedded Systeme wie den AVR, aber leider keinen ESP.

Aus der C / C++ Ecke kommt dann sofort: Nimm halt C(++), das kann alles. Stimmt leider.

Antworten