oreissig schrieb: arch läuft nur ab i686, d.h. das wird nix auf deinen Rechnern
Arch ist für i686+ CPUs compiliert, klar. Aber wir befinden uns hier in der Opensource Welt. Nichts hält dich davon ab deine CFLAGS auf was kleineres zu setzen und makeworld durchlaufen zu lassen. Und schon hat man Arch für i486 oder whatever.
DOS ist übrigens garnicht mal so sehr verbreitet in Kassensystemen. Die Programme mögen zwar wie welche die unter DOS laufen aussehen, aber in Wirklichkeit laufen sie unter OS/2(oh ja, ziemlich verbreitet), Linux oder irgendner Eigenentwicklung. Je nach Hersteller und Herstellungsjahr.
Trotz allem läuft auch heute noch DOS auf vielen Systemen, was einfach daran liegt das Kassensysteme im Allgemeinen lange halten. Die Teile wurden mal gekauft, da hingestellt und machen bis heute was sie tun sollen. Fällt doch mal eine Maschine aus wird nochmal so ein altes Gerät beschafft, weil die Systeme in der Regel sehr stark ineinander verzahnt und, wie sollte es auch anders sein, inkompatibel zueinander sind.
Ich halte es für sehr gewagt für ein kaum benutztes Betriebssystem zu programmieren. ANSI-C hin oder her, am Ende ist man doch plattformabhängig und schreibt sich irgendwelchen Abstraktionskram um dann überall zu laufen.
Es bringt alles nichts wenn man irgendwelche Wrapper benutzt damit man einmal ne GUI schreibt, die dann auf QT, GTK und Windows-Zeugs übersetzt wird und am Ende das Programm auf allen Plattformen gleich scheiße Aussieht. Das wurde mal u.a. bei Firefox probiert, und es war einfach elendig. Es war keine Gnome Anwendung, es war keine Mac Anwendung, es war keine Microsoft Windows Anwendung. Es war irgendwas dazwischen. Es bediente sich zwar auf jedem System gleich, aber auf jedem System anders als der ganze Rest. Das ist auch noch heute teilweise so.
Meiner Meinung nach ist der beste Weg um Plattformunabhängigkeit zu erreichen die Kernfunktionalität in ne Library zu packen(welche dann auch auf jedem System compiliert), und dann für jedes System einzeln ein Frontend zu schreiben. Ein gutes Beispiel dafür sind alle Browser die aus Gecko, der Engine von Firefox, entstanden sind. Es gibt Epiphany für Gnome, Camino für Mac, K-Meleon für Microsoft Windows, und noch 500 andere. Ein anderes Beispiel wäre Pidgin. Da liegt die ganze Funktionalität in libpurple. Davon ausgehend gibt es Pidgin für quasi alles, Adium für Mac, Finch für die Konsole, ...
Ich denke dieser Strategie gehört die Zukunft. Die Oberfläche war nur ein Beispiel, aber gleichzeitig ein sehr gravierendes. Zumindest für mich ist es sehr wichtig das mein gesamtes System einheitlich aussieht. Ich kann zwar mit gtk-qt-engine Gimp QT benutzen lassen, es bedient sich aber trotzdem komplett anders als meine ganzen KDE Anwendungen.
Ich persönlich würde dir zu einem Linux System raten. Solaris is nett und hat ZFS(Killerfeature!), aber kaum benutzt und frisst Ressourcen ohne Ende. FreeBSD ist klasse, hat auch ZFS und besonders das Handbuch von FreeBSD(ja, es ist _das_ Handbuch) hat mir sehr gefallen. Auch an der Tatsache das alles aus einem Guss ist kann man Gefallen finden. Aber mir gefällt die Lizenz nicht(Glaubensfrage) und ich finds ein bisschen umständlich zu bedienen. Ob die anderen BSDs was für dich sind musst du selbst schauen, da hab ich nicht so die Erfahrung.
Mac OSX ist nett. Hat viel bling-bling und bei jungen Leuten toll zum Angeben. Abgesehen davon hat es relativ viele Features, voll über GUI bedienbar und genießt kommerzielle Unterstützung. Aber unfrei(wobei der Kern, Darwin, unter BSD Lizenz steht) und Arschteuer.
Minix benutzt nen Microkernel(manche mögens, manche nicht. Ich finds schwachsinnig=>ebenfalls Glaubensfrage), scheitert aber daran das es noch viel weniger benutzt wird als Solaris. Da fehlts schon an sowas wie Treibern.
DOS ist aus meiner Sicht völliger Schwachsinn. Veraltetes Systemdesign, kein Speicherschutz, blah blah.
Bei Linux Systemen bist du ziemlich flexibel. Ich denke auch das alles nicht aus einem Guss kommt ein Vorteil ist(auch Glaubensfrage, ich mag nich flamen). Ich selbst benutze Arch Linux seit langer Zeit, und halte das Design des Systems für ziemlich geil. Das beste aus Debian, Gentoo und (Free)BSD unter einem Hut. Arch Linux ist aber für den durchschnittlichen Microsoft Windows Klicker auf Anhieb
unbedienbar. Und das meine ich auch so. Du wirst höchstwahrscheinlich beim Setup schon scheitern, und wenn da nicht dann nach dem ersten Boot. Bei Arch Linux ist es wichtig zu verstehen wie es funktioniert. Es reicht nicht zu wissen "Aha, wenn ich diese lange Zeile eingebe passiert das was ich will." Du
musst wissen warum es das macht was du willst, sonst wirst du beim nächsten Problem scheitern.
Wenn du bereit bist dir viel Zeit zu nehmen und zu verstehen wie das System funktioniert, dann willst du Arch Linux. Alternativen zu Arch Linux wären z.B. Gentoo, Debian oder FreeBSD. Belohnt wirst du mit einem sehr flexiblen System, welches dir nicht im Weg rumsteht.
Falls das nicht der Fall ist, nimm ne 08/15 klickbunt Distribution wie Ubuntu, openSUSE oder Fedora. Aber auch da wirst du dich ein wenig mit deinem System auseinander setzen müssen, wie bei Mac OSX und Microsoft Windows auch.
Doch das ganze ist nur die halbe Miete. Jetzt hast du vielleicht ein System das du benutzen willst, aber C gelernt hast du immernoch nicht. C per Definition ist erstmal nur der Syntax + libc. Das ist auf allen Systemen mehr oder minder gleich. Es ist unwichtig ob du das nun auf Linux, BSD, Solaris, Minix, Mac OSX oder Microsoft Windows machst. C lernen kannst du auch ohne Computer. Allerdings willst du ja auch was Sinnvolles machen, und da gehts los. Bei freien Betriebssystemen wie Linux, BSD, OpenSolaris oder Minix hast du den unschätzbaren Vorteil das auch der größte Teil der restlichen Software welche darauf läuft frei ist. Du kannst daraus lernen oder sie modifizieren. Ich mache beides regelmäßig. Irgendne Software hat nen Bug? Kein Problem! Source runtergeladen, gefixt, patch geschickt, und die Welt ist um einen Bug ärmer. Das ist ein
riesen Vorteil gegenüber allen unfreien Systemen. Und das kannst nicht nur du, sondern die ganze restliche Welt auch. Oder wie funktioniert eigentlich X genau? Wie sieht ne gute Implementierung von Jabber aus? Kann man sich alles ansehen. Ein anderer Vorteil ist das du deine Software idr. auch unter eine freie Lizenz stellen wirst(meist GPL oder sowas, jenachdem was üblich ist und welche Libraries du verwendet hast). Jeder kann über deinen Quellcode rübergucken. Jeder kann von dir lernen. Jeder kann deine Software verbessern. Und das wird ziemlich sicher passieren.
Ein "Nachteil" ist das du deine Software auch idr. unter eine freie Lizenz stellen musst, und das heisst: Quellcode raus. Falls du zu den Leuten gehörst die sagen "Aber aber aber...das ist MEIN Quellcode! Den kriegt ihr nicht!1!", lass es.
Bei unfreien Systemen bist du als Programmierer gelinde gesagt in den Arsch gekniffen. Du hast irgendwelche ominösen Librarys die irgendwas tun. Sehr oft haben die auch Bugs. Diese Bugs sind in vielen Fällen bekannt, werden aber absichtlich nicht gefixt weil andere Programmierer vor dir schon auf diesen Bug gestoßen sind und einen Weg gefunden haben drumherum zu Arbeiten(der sog. Workaround). Würde man den Bug fixen würden die Anwendungen nicht mehr funktionieren, sie verlassen sich darauf dass der Bug existiert. Und so geht das die ganze Zeit. Die Dokumentationen sind idr. mittelmäßig bis miserabel(jaja, es gibt Ausnahmen). Je älter das System ist, destso schlimmer wird das Problem. Der "Vorteil" aber ist dass du deine Software verkaufen kannst. Du kannst damit tatsächlich Geld verdienen. Aber für deinen Lebensunterhalt wirds höchstwahrscheinlich nicht reichen. Auch bei freien Systemen kannst du deine Software verkaufen, aber da muss es schon was richtig tolles sein damits sich überhaupt mal jemand anguckt.
Ich würde dir raten erst unter einem freien System zu lernen, und dann später wenn du das denn unbedingt willst ein unfreies dazu lernen.
Man beachte dass das nur meine subjektive Meinung ist. Andere Leute werden dir was anderes sagen. Am Ende kommts darauf an selbst nachzudenken.