Schlagwort-Archiv: C#

Interessant

Kein Interesse daran auf FB.

Hier rechne ich nicht mehr, halte es aber für einen guten Eintrag:
Ok, wen auch immer es interessieren mag (eh‘ nur Programmierer)

Ich habe eine massive Reimplementierung eines bestehenden Projektes in C# durchgeführt, es ist nicht völlig fertig, aber hat nun ein stabiles Gerüst. Nötig war es wegen einer Lizenzänderung einer von mir benutzten Software:

Das hier erklärt alles: https://windev.com/neo/new

Bis 2025 gab es eine sogenannte Dongle Version, solange man den hatte, konnte man zumindest mit alten Versionen weiterarbeiten, das wurde auf „Abo“ umgestellt, die Crux daran unsubscriben. Sie können selbst alte Quellen nicht mehr übersetzen. Es ist so schlimm, daß es sogar rückwärts gilt, Aktuell ist die Dongle-Version XDev 2025 vorher gab es 2024 dann 26, 25, 24 und raten Sie mal, bis wie weit es zurückgeht! Genau Version 23. Ich habe also 5 Lizenzen mehr gekauft, Stelle ich nun um und kündige, darf ich nur bis Version 23 zurück

Dagegen war Unity noch ein Weisenknabe.

Es geht um das Erstellen von Xrechnungen aus meiner Software, Ende letzten Jahres war es im Grunde soweit, dass ich es hätte ausliefern können. Aber was passiert, wenn nun mein Dongle kaputtgeht? Bis 10 / 2025, hieß die Antwort – Pech gehabt. Du muß auf Abo umstellen. Entwickelt habe ich mit Windev 2025 und damit bin ich 5 Jahre hinter 23 !

Meine Erfahrungen vor 2025 in C# waren marginal. Ich kann da Zeug lesen und weitgehend verstehen, aber nichts darin ist geschrieben. Und ob man es glaubt oder nicht: es gibt kaum etwas Vergleichbares zu Windev für die Entwicklung von datenbankbasierten Lösungen. Das war so fantastisch integriert, daß man fast von einer tabellenorientierten Programmiersprache sprechen kann. Einfache APIs (klar mit Fehlern) aber ein eigenes DB system sei es Dateibasiert (Stichwort Access) oder Server/Client-Tools zut Entwicklung, Testen, GUI, wirklich gutes Zeug.

Native Windows, Web und Mobile Geräte.

Was gibt es an Alternativen? nur xojo, FileMaker, Delphi und mit Riesenabstrichen dbase:

Erst einmal musste ich mir zumindest die Alternativen anschauen, es gab nichts, was WinDev einfach so ersetzen konnte.

Was brauche ich?

GUI Kram. Test Kram, RC Kram, Reports, gutes XML handling

gute Debugger

All das ist für viele PS immer noch extrem dünn gesät. Gibt es, aber es ist 1) sehr teuer (Delphi) und 2) weniger vollständig als das, was man in C# .NET und / oder Java bekommen kann.

Also lief es auf C# oder Java hinaus. Da die Software von mir auf Windows läuft, ist es halt durchaus naheliegender, C# zu nehmen.

Abo für die Entwicklungstools und OSes habe ich eh, was kam dazu: Devexpress (und das war tatsächlich) eine gute Entscheidung , es ist dokumentiert, wird regelmäßig gewartet und ich habe bisher noch keinen Bug gefunden.

Also wurde es C# + DevExpress + einiges an NuGet-Paketen.

Und eine Erfahrung über ein Jahr mit der Entwicklung mit einer AI. Ich habe immer mal wieder meinen Ärger oder Lob hier abgelassen:

Und damit komme ich für mich zum Ende. Für mich hat sich AI in einem Bereich als sehr hilfreich erwiesen. Das Ding knallt 100 Zeilen Code in kaum einer Zeit aus. Ja, manchmal gibt es fürchterliche Fehler (auch wenn die Rahmenbedingungen klar sind), z.B. nichts am Code ändern, aber Aussehen an MS Access anpassen …

Die Ideen für das Entwerfen sind nicht so gut. Das Ding springt auf jeden Zug auf und dann verrennt man sich leicht. Wie oft habe ich den Cde wohl angefasst und weggeworfen, keine Ahnung, aber es war oft und manchmal tatsächlich, weil ich einfach der AI gefolgt bin. Das ist keine gute Idee, man sollte schon den Rahmen festzurren und dann die AI genau diesen Rahmen ausfüllen lassen. Da war die AI wirklich besser als ich. Ich kannte eben nicht die Ins/Outs von C#, viele neue Sachen kamen auf mich zu, und man muss sich eines ganz klar machen: C# ist OO und damit nicht vergleichbar mit etwas wie WLangua, was zwar auch OO enthält, aber viel mehr auf die Integration mit Tabellen und SQL setzt. Ja, das geht in C# auch, aber im Endeffekt geht alles in irgendeiner Weise durch Klassen und Objekte

Mein Tipp: Sich erst mal mit der AI über den Rahmen auseinandersetzen. Wenn das steht, kann die AI schneller Code generieren als ich. Und macht dabei auf jeden Fall weniger Schreibfehler, die Logikfehler sind manchmal ätzend und manchmal findet es einfach nicht mehr heraus. Dann muß an es eben selbst vorschlagen.

Ich denke, ich habe mich passabel in C# eingearbeitet, es ist klar von Vorteil, wenn der eigene Weg von OO herkommt, und ich komme von der Eiffel-Schiene, kenne aber auch Smalltalk, Common Lisp und noch einige andere PS. Smalltalk war auch eine Alternative, aber es gibt halt um Größenordnungen mehr Software in C# und egal, wie man zu MS steht, die liefern docs, und Beispiele und es gibt eben viele, die sich damit auskennen.

Wer von Ihnen kennt Smalltalk?

Also hier mein Vorschlage

– Rahmen erstellen

– ruhig mal in’s Grüne hinein programmieren

– jederzeit bereit sein, auch viel Code wegzwerfen

– wenn es dann stabil geworden ist

– AI in diesem Rahmen Code schreiben lassen.

Für mich ergab das – bisher – die besten Ergebnisse. Heute war z.B. so ein Tag. Der Code, den ich vorhin eincheckte, war ’ne ganze Ecke besser als der von heute Morgen – auch dank AI.

Ich hoffe, zumindest einige finden es interessant.

Ich möchte gerne ein paar Stäbe brechen

Für in meinen Augen wunderbare Programmiersprachen, die leider kaum bekannt und benutzt werden. Libraries machen den Nutzen von allen Sprachen aus. Egal, wie schön eine Sprache ist, ohne Libraries ist sie leider nutzlos. Hier also ein paar Vorschläge
1) Common Lisp. Eine der derzeit am stärksten unterschätzten Sprache in den 80-er Jahren des letzten Jahrtausends gab es ganze Betriebssysteme, die in eine Lisp Dialekt geschrieben wurde. Das Emacs Lisp begleitet uns nun seit mehr als 30 Jahren, ein Ende ist nicht absehbar. Schemes gibt es sehr viele und auch noch ein paar andere weniger bekannte Lisps. Wenn Sie Glück und Können haben, bekommen die dieses BS auf Linux zum Laufen

https://archives.loomcom.com/genera/genera-install.html

Downloads / Homepages: https://www.sbcl.org/ http://www.lispworks.com, http://www.franz.com, https://franz.com/
2) Smalltalk. Eine der ersten Durch- und Durch Sprachen auf der Basis von Objekten. Heute immer noch unerreicht. Leider fast vollkommen vergessen im Lichte von Nachfolgern wie Python, C#, Java, JavaScript, C++. Smalltalk teilt mit Common Lisp die Eigenschaft, eine programmierbare Programmiersprache zu sein. Es gibt wenige andere Sprachen, mit denen man die Sprache selber so erweitern kann. So kann man z.B. neue Schleifenarten ohne Probleme zu diesen Sprachen hinzufügen.

Downloads: https://pharo.org/, https://squeak.org/, https://www.instantiations.com/,
https://www.gnu.org/software/smalltalk/

Die „Schwäche“ der beiden Sprachen aus Sicht von vielen sind fehlende statische Typen. Interessanterweise teilen sie das mit Python, was derzeit aber eine der am meistgebrauchten Programmiersprachen ist

3) Io . Ich bezweifele, daß es mehr als 1000 aktive Benutzer gibt. Die Einfachheit dieser Sprache ist besser als bei Smalltalk. Hier können Sie es sich anschauen: https://iolanguage.org/
Mehr gibt es nicht. Hier eine Idee wie es aussehen kann:

 cc := method(System getEnvironmentVariable("CC") ifNilEval(return "cc"))
    cxx := method(System getEnvironmentVariable("CXX") ifNilEval(return "g++"))
    ccOutFlag := "-o "
    linkdll := cc
    linkDirPathFlag := "-L"
    linkLibFlag := "-l"
    linkLibSuffix := ""
    linkOutFlag := "-o "
    linkLibSuffix := ""
    ar := method(System getEnvironmentVariable("AR") ifNilEval(return "ar"))
    arFlags := "rcu "
    ranlib := method(System getEnvironmentVariable("RANLIB") ifNilEval(return "ranlib"))


includes = includes appendSeq(headerSearchPaths) map(v, "-I" .. v)

 iocFiles := sourceFiles select(f, f name beginsWithSeq("Io") and(f name endsWithSeq(".c")) and(f name containsSeq("Init") not) and(f name containsSeq("_") not))

Es ist sehr im Smalltalk Sinn gehalten. Object message ist der Weg. Es gibt keine speziellen Klassen. Alles kann eine Klasse sein, aber alles ist ein Objekt. M.E. ist die Implementierung eine der besten (im Sinne von lesbarsten) , die ich bisher fand.

Vielleicht stelle ich auch noch ein paar andere Sprachen vor, die mich auf die eine oder andere Weise beeindruckten….