Schlagwort-Archive: C

Passend zu den letzten Einträgen

Ich schrieb, daß ich mich auf einen neuen Trip begebe, ich möchte anfangen F# intensiver zu benutzen. Ich hole noch ein bisschen aus, um meinen Hintergrund zu verstehen. Ich bin a) nicht mehr der Jüngste und b) ca 30 Jahre Programmierer +/- 10 Jahre. Die 10 Jahre kommen von meinen “leichten” Kontakten zur Programmierung. Weil es beim Bund für Wehrpflichtige die Möglichkeit gab, Kurse zu belegen, habe ich bei einem dBase Kurs mitgemacht. OS: CPM und dBase II Bildschirm vielleicht 80 x 24 Zeichen, ich weiß es nicht mehr. Eines meiner ältesten Bücher aus der Zeit ist vom Franzis Verlag, Titel Die beiden Datenbanksysteme dbase II und III, Datum im Buch 1986.
Das ergibt 2022 – 1986 = 36 Jahre, tja und in der Schule habe ich auf einem TI irgendwas mit Basic angefangen. Somit ja das mit der Zeit kommt hin. Dann kam der erste PC in ‘s Haus. Ein Atari ST , RAM 1024 MB , Platte 20 MB!, sauteuer aber cool. Da ein wenig in die Programmierung reingeschnuppert, aber nie was auf die Reihe bekommen. Dann kam das Studium an der Uni Karlsruhe und der erste Kurs war Modula-2. Ich habe bisher nichts öfter wiederholt als diesen Kurs. Ich bin, was programmieren angeht, kein schneller Lerner, aber hartnäckig nehme ich an. Der Kurs war irgendwann geschafft und dann kam C und keine Ahnung, von da an lief es, was programmieren angeht besser. Absurd, wenn man daran denke wie viele lesbarer Modula-2 Code ist als C (wenn man es nicht gewohnt ist). Trotzdem scheint es für mich leichter gewesen zu sein Den Kurs habe ich sofort bestanden. Dann kam Eiffel und darin habe ich angefangen ernsthaft Software zu schreiben. Es gibt noch ein paar Paket dort draußen in denen ich meine Finger reinsteckte siehe: https://fam-dominicus.de/tiki/tiki-index.php?page=FriedrichsTiki . Vielleicht sollte ich die Quellen mal irgendwan zugänglich machen.

Dann gründete ich die Q-Software Solutions und die Idee war ursprünglich eine Nachfolgersprache für Eiffel zu entwickeln Q. Die Idee damals: strikte Trennung CQS. Der Teil mit Status sollte OO mässig aufgebaut sein, der Rest funktional. Naja wir hatten etwas was prinzipiell funktioniert aber es war ein totaler wirtschaftlicher Reinfall, es wurde nie fertig und verschlang wirklich viel Geld ….

Hier noch ein bisschen Code der damals lief …


https://fam-dominicus.de/tiki/tiki-index.php?page=FriedrichsTiki
class Argv_test -- Main

creation
   make
      local
         i : Integer;
         args: Arguments;
      do
         args := new Arguments.make;
         out := new Standard_output;
         i := 1;
         loop
         until i > args.argument_count
            out.print_string("argument ");
            out.print_integer(i);
            out.print_string("= ");
            out.print_mutable_string(args.argument(i));
            out.print_newline;
            i := i + 1;
         endloop
         out.print_string("program name = ");
         out.print_mutable_string(args.program_name);
         out.print_newline;
      end;

public


   out: Standard_output;


endclass

Es compilierte nach C und deswegen habe ich mich mit Jacob Navia zusammengetan.( https://lcc-win32.services.net/. Die Zusammenarbeit war lang und erfreulich. Und nun gebe ich ein wenig an, wir waren unter den Ersten, die diesen Compiler auf 64-bit portierten, damals für eine Firma, die das benutzen wollte, um SQL Queries für ihre Datenbank zu kompilieren. Es gab auch eine Firma, die ein 5-GL Sprache anbot, die nach C kompilierte, das C war lcc-win32. Ich glaube die Schnittstelle nach C von Q war eine der einfachsten, die es damals gab und vielleicht heute noch gibt:

Da kam also einiges an Erfahrung mit C dazu. Es ist heute immer noch eine PS, die ich schätze. Aber PS haben einen “leicht” addiktiven Effekt und ja, die Idee von Q ist immer noch präsent. Über die Zeit habe ich mir dann immer mehr PS angeschaut, manche angeeignet, einige relativ umfassend, andere so la la und manche eher schlecht als recht.
Ich zähle einfach nur auf (ohne zu sagen wie gut oder schlecht ich damit zurecht komme) , C, Eiffel, Turbo Pascal, Perl, Tcl/Tk, Ruby, Python, Common Lisp, Scheme, Smalltalk, D, Java, C#, Emacs Lisp, Erlang, Racket, IO, Self, Dylan, Ocaml, div. Assembler, VBA, WLanguage, C##

Man sieht, eher auf der OO Seite, wie ich aber vor zwei Tagen schrieb ist mir Java und C# irgendwo zu “verbose”, ich muß zuviel schreiben und lesen um zum Kern zu kommen, deshalb denke ich werde ich mit F# auf .NET gut fahren. Wie geschrieben, ich denke, man sollte alle Hilfe beim Programmieren benutzen, derer man habhaft werden kann. Es gibt aber ein paar Sprachen, in denen ich mir zutraue, etwas hinzubekommen, die ich aber nicht mag und ganz oben sind da C++ und Perl. Die sind IMHO zu kompliziert, aber ich kann weit daneben liegen.
Ich warte derzeit eine Software seit mehr als 10 Jahren, eine MS-Access Lösung. Sie funktioniert, ist aber ein Ärgernis, was Wartung und Weiterentwicklung angeht. Ich arbeite daran, aber …

Also wohin und was tun. Ich denke nach dem Abwägen der Möglichkeiten und der eigenen Vorlieben und Können sollte ich mit F# durchaus zurande kommen. Auf der anderen Seite sehe ich dann Videos wie:


Was mich einfach abschreckt und das sieht für mich nach kompliziert aus, ohne einen Gegenwert. Ich denke, ich möchte keine manuelle Speicherwaltung und ich möchte mich nicht mit Referenzen und Eigentum von Objekten auseinandersetzen. Ich möchte eine einfach lesbare Lösung und Sprache und F# könnte es sein. Ich denke auch die Trennung von OO und FP dürfte in F# funktionieren und wenn’s nicht klappt, kann ich immer noch C# Klassen benutzen 😉

Quite interesting

That so many seem to dislike C. Yes it has its shortcomings, but it’s one of the simpler languages overall, and it deserves the name “portable Assembler”. C runs everywhere, and C has built everything we are using today. Every wider used Operating System was mostly written in C. It starts with every Unix under the sun. It’s the foundation of Windows. There may be OSes out there not written in C, but I probably know just one Genera. C allows you to manipulate bits, and that’s as low as it can get.

Nearly any Database is written in C, be it the old ones, be it the new ones. There’s some kind of C compiler on every OS. It’s the lingua franca of the IT-Industry as we know it.

Let’s wait and see if if finds a descendant, there are candidates for that, one can doubt it will bet C++.

Whatever language you use, I strongly suggest you learn C too. I doubt you will never get in touch with it, and be it just to wrap some C-API for your programming language you’re currently using.

I agree

It’s stupid not to use some software, because in what it is written. Of course I have my favourites, and special dislikes. But that is not what I see as a user. If the software does what it should – it’s fine.

What try to avoid is of course using a programming language for programming if I do not like it.
And I have a special distaste of C++ and Perl. Partly Tcl ( I simply do not like the set x val) Of course it is stupid. Strange enough I find C a wonderful language.
Now I’m currently learning Java and I’m quite sure I will use it for further programm development. I want to learn and use other languages but many are terrible for application development. You want a decent debugger and decent toolbos. This is not a given for quite a few languages I like.

E.g I’d like to use Pharo Smalltalk more intensivly, but they break code way too often. As a application developer I hate that, and for that I have to like VBA, because it simply works since at least two decades. Code you once wrote, still works. Every language which breaks code too often is very much a no-go for me. What I need is help with building GUI and Reports. If that’s not there I an’t use it….

Warum ich C so mag

Es geht an die Programmierer. Ich bin ein wirklich äonenalter Linux Benutzer, wer kennt noch die großen Floppy Discs? und die kleineren “gigantischen” mit 720 kb Speicherkapazität? ;-). Seit Suse 0.x whatever benutze ich Linux, man kann schon sagen, ich war ziemlich am Anfang mit dabei. Zu Unix bekam ich Kontakt in der Uni, damals mit Xenix und SCO Unix. Und wir hatten damals Rechner wo ein Eiffel-Compiler lief mit 4 oder so Benutzern, das waren noch “begrenzte” Ressourcen und Eiffel eine der Sprachen mit autom. Gargabe Collection.

Wie auch immer zwischen drin hatte ich mich mal für X-Windows Programmierung erwärmt und damals war das “tolle Kind” Motif. Wirklich lange her. Heute browse ich durch alte Quellen und finde die Quellen für das Buch: https://www.oreilly.com/openbook/motif/vol6a/Vol6a.pdf

Und da denk ich mir, probiere es doch mal. Klappt natürlich erst mal nicht, aber Motif-libraries auf den Rechner, make und die Programme werden erstellt und laufen.

Wegen solcher Dinge liebe ich irgendwo C. Es ist eine wirklich einfache Sprache und es gibt nichts, was man an Sicherheit so kennt. (Zugiff auf Felder!) Aber unsere gesamte IT-Infrastruktur wäre ohne C nicht wie sie heute ist. C verändert sich wirklich kaum mehr und das seit mehr als 40 Jahren. Das ist eine der Konstanten in der Programmierwelt.

Man kann C zügig lernen, es aber zu können, wird wohl kaum je jemand zu 100 % von sich behaupten… Es sind wahrscheinlich die meistgetesteten Compiler auf dieser Erde und wie man sehen kann, selbst Quellcode von vor 30 Jahren kann man heute noch ohne Aufwand zum Laufen bekommen.

Versuchen Sie das mal mit einem Uralt Java Programm, einem Python Programm oder irgendeiner anderen Programmiersprache außer vielleicht Fortran, vielleicht Common Lisp, vielleicht MIT-Scheme und anderen “Exoten”.

Ein Gegenbeispiel: Meine Diplomarbeit habe ich in Eiffel geschrieben, glauben Sie ja nicht, ich könnte das Programm heute ohne Änderungen zum Laufen bringen, das können Sie “vergessen”. Ich wollte mir aus Jux-und Dollerei mal die Quellen vornehmen und für heute lauffähig machen, aber wirklich weit gekommen bin ich noch nicht. Ich denke 1-2 Wochen Arbeit müsste ich schon rein stecken

Und da kommen die Quellen von O’Reilly daher (so um die 30 Jahre alt) , ich installiere die Bibliotheken und tippe dann nur “make” und dass compiliert und läuft. Quellen die, an die 30 Jahre, alt sind!

So was kann mich tatsächlich begeistern. Es gilt natürlich nicht für alle C Programme. So werden sie sich schwarz ärgern wenn Sie noch GTK1 Kram haben sollten…, man kann es noch mit den alten libraries hinbekommen aber es einfach so auf GTK2 oder gar 3 umzustellen – vergessen Sie es.

Man kann in C extrem langlebig programmieren. Das können im ganzen Programmiersprachen-Urwald nur die wenigsten. Es muß alles immer “toller” besser sein aber wehe es soll “bleiben”. Wenn Sie wirklich was für die Nachwelt programmieren wollten, dann müssen Sie C beachten.

Auch beruflich für mich interessant

Für mich interessant zu lesen: http://floooh.github.io/2018/06/02/one-year-of-c.html

C habe ich schon eine ganze Menge geschrieben, C++ nur testweise verwendet. Ich bin relativ einseitig gegen mir bekannte 2 Programmiersprachen eingestellt. 1) C++ und 2) Perl.

Heute schreibe ich meine Software in so Sachen wie VBA und W-Language. Es hat alles seine Vor/Nachteile. Intensiv benutzt habe ich dbase, Modula-2, Pascal, Eiffel, Ruby, Emacs Lisp, Common Lisp, Smalltalk. Zurecht finden tue ich mich leidlich in bestimmt 10 – 15 anderen Programmiersprachen. (Python, Tcl/Tk/ , Scheme, Shells, C#, Java, JavaScript, D, Dylan, Sather, Haskell, Ocaml, Erlang, Prolog) (kennt wahrscheinlich keiner mehr) Ich denke in allen Prozedural / OO orientierten Sprachen fände ich mich passabel schnell zurecht)

Womit ich keine Erfahrungen habe sind Sprachen wie APL, J+ (heißt es glaub ich) .

Schwierig zu sagen was ich heute am liebsten benutzte. Ich bin inzwischen ein ziemlicher Verfechter von Programmiersprachen, die sich Abwärtskompatibel zeigen. Ich finde es gibt (fast) nichts Schlimmeres als wenn man ein funktionierendes Programm umschreiben muß, weil sich die zugrundeliegende Programmiersprache ändert. Auch Bibliotheken wie GTK nerven mich wenn, man denn meint alles auf den Kopf stellen zu müssen. Daher bin ich heute ganz klar ein Fan von
– C
– Common Lisp
– Smalltalk

Diese Sprachen sind stabil und gerade C ist m.E. einfach unverzichtbar. Jede der oben genannten Sprachen bietet eine mehr oder minder leicht zu bedienende Schnittstelle nach C. Wenn Englisch die wichtigste Handelssprache ist, hat diese Stellung in der Programmierwelt sicherlich C inne.

Kurz egal, was man sonst lernt und benutzt. C sollte man unbedingt auch können – YMMV klar….

Woho another entry on the same day as before

Well it seems things ar quite interesting to me. I’m a long time Linux and Windows user, and a not so long time Mac OS X user(unfortuntatly the bloody thieves at Byron Bay ended my first excurse into that land).

There are a few good things about all of them and sometimes they simply suck all. I just had on extremly negative experience a few weeks or so ago. I found out that some software misbehaved (well in the end it turned out that it was me who got it wrong). I try not too get too angry because it hardly pays of. But this experience was unique to some extend.

I have spend days after days on administration any kind of system, (but mostly my Linux boxes) and did not bother. I just saw it as a “matter of fact”. Things may be broken, but most of the time one can fix them. But this time I was just in the mood to “use the software” and this is what I probably are not doing regularly. But because I just wanted to get my stuff done. I was extremly upset that it didn’t work. If others have the same goal, getting their things done than I’m not suprised about reactions like throwing out the monitor through some windows, takin a hammer and smash the f… think into pieces.

However as programmer I’m probably a bit more “used” to figure out things, and if I wear my programmer hat I have other addresses of my hatred. There is one thing that drives me crazy than, lacking backward-compatibility. Unfortunatly I have more than enough experiences with breaking APIs and maybe that’s a reason I still am using C very much. I just remember one are where this has turned out badly. That’s with the break of backwards-compatability from glib-1.2 to glib-2.xx. I can’t blame C for it but the glib-developers. And what do I have to read now they are planning for breaking code again with version 3.0. I doubt that many really have appreciated the need to rewrite their glib-2 based code from 1.2.x, And that’s now just around 8 years or so ago. Do we really have to be enforced to rewrite our code every 8 years?

Unfortunatly this lack of backward-compatability get normal more and more. I wonder if all the programmers run out of projects?

Another big disapointement was developing for Vista. Vista seems to be one of the most developer unfriendly systems currently available. If a file is lacking you just get a 0x0002 (IIRC) but not the slighest idea on what may be missing. For that you need third-party tools…

The requirements for running Vista are that high that, it needs a very decent machine to cope with it properly. Is that really the advance, getting less done in more and more cyles?

After my excursion into Vista land I got back to Windows Server 2003 64-bit and am quite happy with it.

Now for 10 years I settled more or less to the following setup:
– Debian as my main system (I wanted to switch to FreeBSD, but there’s a bit that’s not running there I really need (VmWare)
– virtual machines driven by vmware

For my kind of work this simply seems one of the best solutions. Linux does all my daily tasks (mainly in form of XEmacs, but also gcc, OpenOffice, all the many text tools and many scripting languages). Since 1998 my Data have survied around 3-4 updates and 3 new machines. And they still are all accessible to me. Even code I wrote during all this years simply can run today. I do not care much about viruses, because not many are known on Linux.

What especially has turned out be be useful are the virtual machines. the wonderful thing about them is you just make a snapshot or copy and if you mess up you just go back to a know good state and you do not have to reinstall anything else.

I guess overall one has to conclude that the Registry is a real weakness in Windows, if that’s broken you can forget your windows. Linux is not ideal but but the different text files hardly can be broken that much and restoring them is so easy in comparison.

Howerver I know of quite lot of people beeing very happy with their Windows XP systems also. So I guess it’s not that bad if it comes to registry corruption…