Programmiersprache von Linux

Das Forum für den Linux-Pinguin - auch andere Unix-Derivate (*BSD, (Open)Solaris, Apple's Darwin / MacOS X, ...) sind hier willkommen!
Forumsregeln
Das Forum für den Linux-Pinguin - auch andere Unix-Derivate (*BSD, (Open)Solaris, Apple's Darwin / MacOS X, ...) sind hier willkommen!

Beitragvon Alien » So 08 Jan, 2006 01:34

superracer hat geschrieben:ich hab's mir jetzt nicht genau angeschaut, aber ich vermute mal, daß der game-code (in python) für die gesamte grafik usw. wohl nur library calls macht, und die libraries sind dann wohl doch in C geschrieben... je größer die datenmengen sind, desto kritischer wird die performance, und aufwändige grafiken bedeuten immer _viele_ daten...

Ich muss gestehen, dass ich auch nicht genau weiß, wie viel in Python geschrieben ist. Aber Stackless Python scheint eine sehr gut Perfmance zu haben.
der knackpunkt ist und bleibt die performance. in perl oder python bspw kann man sehr schnell sehr mächtige programme schreiben, allerdings sind die anforderungen an cpu und ram um ein vielfaches höher. wenn das ganze zeug dann skalieren soll, stößt man irgendwann an die grenzen der hardware. und dann gibt's nur zwei möglichkeiten: mehr oder bessere hardware muß her, oder das ding muß in einer anderen sprache, eben etwa C neu geschrieben werden, was dann zwar kein geld, aber zeit kostet.

Wenn man sehr performancelastige Dinge programmieren will/muss, ist das natürlich ein Grund. Es ist aber sehr oft so, dass Interpretersprachen in Sachen Geschwindigkeit sehr unterschätzt werden. Wenn man Linux installiert hat ist es durchaus interessant sich mal anzusehen, welche Programme nun in C/C++ und welche in anderen Sprachen programmiert wurden. Als ich auf freshmeat.net nach Perlprojekten gesucht habe, an welchen ich meine Perlkentnisse testen und erweitern kann, habe ich teilweise sehr gestaunt, weil ich immer dachte, dass dies und jenes in C programmiert sei. Ich lade jeden dazu ein, mal das freshmeat-Archiv zu durchstöbern.
aber das ist hier ja schon ein paar mal durchgekaut worden. wenn es aber um kleine programme geht, die in der perl-version 5 mb ram brauchen und 0.2 sekunden ausführungsdauern haben, während sie in der C-version 500 kb ram brauchen und 0.05 sekunden laufen, dann ist derjenige einfach nur dumm, der das in C schreibt. (oder masochist. oder er will vielleicht einfach nur C üben.)

Es gibt einige Leute, die bestimmte Programmiersprachen einfach gern haben. Assemblerliebhaber gibt es z.B. sehr viele (siehe MenuetOS oder Assembly-Messe (hieß glaub ich so)). Aber es gibt auch sehr viele Perlanhänger (siehe die vielen Perlspielerein auf wikipedia). Aber im Grunde geb ich dir da voll und ganz recht. Es kommt einfach drauf an, was man vor hat.
auch bash (oder andere unix shells), plus die dazugehörigen utils, ist in meinen augen eine richtige programmiersprache: man kann damit programme schreiben. (wer's nicht glaubt: es gibt sogar einen httpd geschrieben in bash. die performance ist allerdings unter aller sau :) )

Ich habe, muss ich gestehen, noch nie "eine Shell gelernt" und das obwoh fast nie X geöffnet habe (für gewöhnlichnur zum Surfen und Spielen). Ich verwende meist Perl, habe allerdings vor mich eventuell mal genauer mit der tcsh und der zsh zu befassen.

ein computer spricht in seiner muttersprache maschinensprache, also z.b. x86 bytecode. um den bytecode für menschen lesbar zu machen, gibt es assembler.

...und um sie unlesbar zu machen gibts brainfuck *duck*
Mit C ist man allerdings um einiges näher an der Hardware dran. Wobei man, wenn man das will, meist Assembler nimmt bzw. ein bisschen mischt *g*

C sehe ich als eine art frontend zu assembler. ein C-compiler spuckt üblicherweise auch keinen maschinencode aus, sondern assembler code, der dann dem assembler zum übersetzen in die maschinensprache gegeben wird. dazu gibt es in C eine reihe von eigenarten, die zumindest ansatzweises verständnis von assembler und/oder der darunterliegenden hardware voraussetzen. (beispiele: die "register" anweisung, sizeof(), das ganze drumherum mit pointern, noch schlimmer bei funktionspointern, ganz haarig wird's bei funktionen mit ner variablen anzahl an argumenten, ditto für longjmp() et al, sehr heikel sind "atomic" operationen, bei denen man bei multi-threading, aber auch bei signal handlers sehr aufpassen muß, usw usf...)

Da kennst du dich wohl besser aus. Ich dachte allerdings immer, dass der Compiler direkt in die Maschinensprache übersetzt, da ja Assembler nur statt Nullen und Einsen ein Text ist. Ich weiss, dass der Computer klarerweise Assembler nicht direkt versteht, aber für was denn dieser Zwischenschritt?
wer also ein "richtiger" C-programmieren sein will, muß auch zumindest eine ahnung von assembler haben.

Da bin ich voll und ganz deiner Meinung. Deswegen, hab ich ja auch in meinem ersten Post geschrieben, dass man dann auch Assembler braucht.
wenn wir einen schritt weiter gehen: in perl und in python gibt es ebenfalls eine reihe eigenarten, die zumindest ansatzweises verständnis von C voraussetzen. (immerhin sind die interpreter auch in C geschrieben.) beispiele sind reference counting bei objekten, die daraus resultierenden effekte aufs speichermanagement, typecasts und type juggling, signal handling, die eigenarten bestimmter systemnaher funktionsaufrufe usw...

Da bin ich nicht ganz deiner Meinung oder im Prinzip doch wieder?
Also ich hab mich zu allererst mit C und C++ versucht und war schwer überforder (ist aber auch schon sehr lange her). Dann hab ich lange Zeit allgemeines/"theretisches" übers Programmieren gelesen, immer mit langen Pausen dazwischen und bin schlussendlichch zu Perl gekommen. Die Sprache gilt als sehr schwer lesbar, allerdings hatte ich nie Probleme damit und habe (fast) immer alles verstanden. Wenn ich mir nun C-Code ansehe kommt mir alles sehr logisch vor und ich sehe, was er bewirkt und das auch bei systemnahen Codes (dem BSD-Kernel). Zwar kann ich selbst noch kein großes Programm schreiben, aber ich kann den Code lesen und kleine Bugs ausbessern oder Modifikationen vornehen. Auch wenn sich das in Grenzen hält, aber ich habe C nie gelernt und interpretersprachen verstehe ich großteils sehr gut und kann mit ein paar Referenzen größere Veränderungen vornhemen oder Programme schreiben.

wer also ein "richtiger" perl- oder python-programmieren sein will, muß auch zumindest eine ahnung von C haben.

Also ich habe den Weg umgekehrt beschritten *g*

wer das nicht hat, kann zwar natürlich trotzdem saubere und voll funktionsfähige perl- oder python-programme schreiben, auch in größerem umfang. allerdings wird er in bestimmten gebieten an seine grenzen stoßen, weil ihm einfach die kenntnisse über die interne funktionsweise der darunterliegenden sprache fehlen.
in solchen fällen greift der programmierer dann oft zu irgendwelchen schmutzigen hacks, um ein problem zu lösen... (selbiges gilt übrigens auch für C-programmierer und fehlende assembler-kenntnisse.)

So geht es mir in der Tat oft. Wenn ich ein Programm schreibe und den Code herzeige, dann werde ich oft darauf hingewiesen und damit lerne ich dann wohl die C-Ebene kennen. Vielleicht sollte man in den Schulen mal beginnen zuerst Assembler, dann C, dann ..., dann... (wie hießen die Sprachen noch gleich, die irgendetwas mit künstlicher Intelligenz zu tun haben und, wie "echte" Sprachen zu sein versuchen) zu lernen.
dann schau dir mal den bittorrent-code genauer an. du wirst _sehr_ viele codeschnippsel finden, die ihren ursprung in der C-welt haben, und die ein programmierer ohne C-kenntnisse unmöglich hätte schreiben können.

Ich hab mir zwar nicht den von bittorent, aber viele von Perlprogrammen angeguckt. Ich geb dir da recht, aber trotzdem man C verwendet ist das Programm in Python programmiert, da man sich damit vieles einfacher macht.
Es gibt auch Server und IIRC gab es mal ne Meldung, dass Perl sogar schon den Weg in den Linuxkernel gefunden hat.

vorsicht... in der distribution der kernel-sourcen sind zwar perl-scripte vorhanden, aber _im_ kernel selbst läuft kein perl. wäre auch gar nicht möglich.[/quote]
Nein, ich meine nicht die Konfigurationsanwendung u.ä.
Ich hab mal ein bisschen gegoogelt. Das Ding heißt ORbit und scheint von Redhat zu stammen (bin mir da aber nicht sicher), allerdings ist die verlinkte Seite nicht mehr vorhanden und ich war zufaul genauer zu suchen *gähn* Jedenfalls soll man so auch Treiber in Perl realisieren können. Wie das geht weiß ich selbst allerdings nicht.
Hier ein Artikel, den ich mal schnell rausgesucht habe:
http://www.linux-magazin.de/Artikel/aus ... eadme.html
unter "Linux Kernel ORB"
Klingt sehr interessant.
Alien
Neu im Board
Neu im Board
 
Beiträge: 17
Registriert: Mi 24 Aug, 2005 04:25

Beitragvon superracer » So 08 Jan, 2006 02:05

Alien hat geschrieben:Das Ding heißt ORbit und scheint von Redhat zu stammen (bin mir da aber nicht sicher), allerdings ist die verlinkte Seite nicht mehr vorhanden und ich war zufaul genauer zu suchen *gähn* Jedenfalls soll man so auch Treiber in Perl realisieren können. Wie das geht weiß ich selbst allerdings nicht.
Hier ein Artikel, den ich mal schnell rausgesucht habe:
http://www.linux-magazin.de/Artikel/aus ... eadme.html
unter "Linux Kernel ORB"

da hast du glaub ich was falsch verstanden. ORB/ORBit ist nur ein protokoll bzw. eine schnittstelle, und es ist da anscheinend dieses protokoll ins kernel implementiert worden. der kernel-teil ist natürlich in C, aber es können jetzt externe (userspace) programme über diese schnittstelle mit dem kernel kommunizieren, und diese programme können in jeder beliebigen sprache geschrieben sein, die ORB/ORBit unterstützen.
superracer
Board-User Level 3
Board-User Level 3
 
Beiträge: 1073
Registriert: So 04 Jul, 2004 11:18

Beitragvon Alien » So 08 Jan, 2006 13:40

Ok, hab nun den Artikel gefunden, den ich meinte:
http://www.symlink.ch/articles/00/12/11/1217230.shtml
Mit kORBit ist es z.B. möglich Treiber in Perl zu schreiben (...)

Klingt für mich eindeutig, aber es kann sich ja auch der Schreiber irren.
Alien
Neu im Board
Neu im Board
 
Beiträge: 17
Registriert: Mi 24 Aug, 2005 04:25

Beitragvon superracer » So 08 Jan, 2006 15:52

Alien hat geschrieben:
Mit kORBit ist es z.B. möglich Treiber in Perl zu schreiben (...)

jooo, aber der "treiber" läuft im userspace ab, in einem normalen perl- (oder w.a.i.-) interpreter, und nicht im kernel. er kommuniziert nur per orbit mit dem kernel, um so seine funktionalität zu bekommen. er hat auch keinen direkten zugriff auf kernel-interne datenstrukturen (wie ein "echter" treiber, also ein kernel-modul es hätte), sondern nur indirekten, eben über die orb-schnittstelle. und der kernel-teil ist definitiv in C. außerdem ist die entwicklung an korbit inzwischen schon eingestellt worden.
superracer
Board-User Level 3
Board-User Level 3
 
Beiträge: 1073
Registriert: So 04 Jul, 2004 11:18

Beitragvon dreamwalker » So 08 Jan, 2006 22:18

sp hat geschrieben:Kurz zu Webmin: In den letzten Versionen gab es *SEHR* viele kritische Sicherhtisluecken, die meistens in Root access fuer remote 'user' endeten.
Persoenlich wuerd ich von Webmin abraten. Wenn du ein System zur configuration von clustern benoetigst solltest du dir eventuell cfengine angucken.


was mich interessieren wuerde, wieso bleibt jemand der allen ernstes webmin installiert und vl. gar noch verwendet nicht bei windows? unix is da echt das falsche system..
10Mbit up/down mit OpenBSD 4.0/i386 Router/Firewall (Soekris net4801 board), 1 x HP ProCurve 1800 8G, 1 x Apple Airport Extreme Basestation

De Raadt says, "I don't know what his (Linus Torvalds) focus is at all anymore, but it isn't quality."
dreamwalker
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 33
Registriert: Mi 16 Feb, 2005 10:51

Beitragvon ulrich » Mo 09 Jan, 2006 13:15

ein hübscher artikel, der begründet, warum es sinn macht, das programmieren zuerst mal mit einer schweren sprache zu erlernen:
http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html
ulrich
Senior Board-Mitglied
Senior Board-Mitglied
 
Beiträge: 287
Registriert: Do 13 Nov, 2003 14:27

Beitragvon Alien » Mo 09 Jan, 2006 16:47

sp hat geschrieben:was mich interessieren wuerde, wieso bleibt jemand der allen ernstes webmin installiert und vl. gar noch verwendet nicht bei windows? unix is da echt das falsche system..

Ich verwende z.Z. kein Webmin und warum sollte ich, wenn ich es tun verwende würde, Windows verwenden? Weißt du überhaupt, was du redest und wo die Einsatzgebiete von Unix sind?

Ich hab genug Gründe Windows nicht zu verwenden...
Zeig mir bitte mal, wie du Windows auf ein Embedded Syste, (ala WRAP oder Soekris) installierst oder, wie du mit Windows anständiges SSI hinbekommst.

Glaubst du, dass weil ich Webmin installiere sich irgendetwas am OS ändert? Ich habe mir vor einer Woche Webmin das erste mal angesehen und zwar, weil ich sehen wollte, wie gut der DragonFly-Port funktioniert.

Nenn mir bitte einen anständigen Grund, warum jemand bei Windows bleiben soll, wenn er Webmin einsetzt!
oder erklär mir für was Unix das richtige System sein soll. Ich kenn nämlich kein Einsatzgebiet für das sich *nix nicht eignen würde.
Alien
Neu im Board
Neu im Board
 
Beiträge: 17
Registriert: Mi 24 Aug, 2005 04:25

Beitragvon Neptunus » Mo 09 Jan, 2006 17:05

Windows verbindet man mit Klickibunti, und Webmin verwendet man auch nicht gerade, in dem man im vim Config-Files editiert.
Neptunus
Board-User Level 1
Board-User Level 1
 
Beiträge: 691
Registriert: Do 26 Jun, 2003 16:43

Beitragvon lordpeng » Mo 09 Jan, 2006 17:08

>erklär mir für was Unix das richtige System sein soll
Tru64 rulz, weil nur wo compaq drauf steht ist auch compaq drin *SCNR*
lordpeng
Moderator
Moderator
 
Beiträge: 10183
Registriert: Mo 23 Jun, 2003 22:45

Beitragvon Alien » Mo 09 Jan, 2006 20:00

Neptunus hat geschrieben:Windows verbindet man mit Klickibunti, und Webmin verwendet man auch nicht gerade, in dem man im vim Config-Files editiert.

Ja, weil Mac OS X hat ja überhaupt kein Klixibuti...
Das ist auch ein Unix. Ein BSD um genau zu sein...
Du kannst aber unter Windows genau so gut die Registry und die Configs selbst editieren.
Webmin hatte ich mir eigentlich angesehen, weil ich für jemanden eine Yast-Alternative gesucht habe (bin wie gesagt das erste mal darauf gestoßen, als ich nach Perlprojekten gesucht habe).
Ich hab das manuelle editieren auch lieber, aber wenn ich wenn ich bei nem Freund bin oder sonstwo, wo ich eventuell ein Windows habe und gerade kein SSH-Client drauf ist, dann tu ich mir da leichter.

Ich denke nicht, dass Unix das geringste mit Klixibunti zu tun hat. Es ist eben ein OS bzw. bezeichnet man heute eher damit, wie ein OS aufgebaut ist (also, dass alles eine Datei ist u.ä.).
Alien
Neu im Board
Neu im Board
 
Beiträge: 17
Registriert: Mi 24 Aug, 2005 04:25

Beitragvon medice » Mo 09 Jan, 2006 22:40

ein google nach putty löst aber in der Regel das problem eines fehlenden SSH-client
Mfg
Medice

Wir in Bayern brauchen keine Opposition, weil wir sind schon Demokraten. (c) Gerhard Polt
medice
Advanced Power-User
Advanced Power-User
 
Beiträge: 3288
Registriert: Fr 13 Mai, 2005 10:32
Wohnort: Graz

Beitragvon lordpeng » Mo 09 Jan, 2006 22:48

>ein google nach putty löst aber in der Regel das problem eines fehlenden SSH-client
alternativ könnt man auch jta oder mindterm verwenden ...
lordpeng
Moderator
Moderator
 
Beiträge: 10183
Registriert: Mo 23 Jun, 2003 22:45

Beitragvon dreamwalker » Mi 11 Jan, 2006 08:46

es spricht nix gegen GUI unter unix
aber webmin ist eine absolut kranke abartige software (ausserdem auch kein GUI)

wenn ich nicht in der lage bein mein system zu konfigurieren, dann sollte ich es bleiben lassen
10Mbit up/down mit OpenBSD 4.0/i386 Router/Firewall (Soekris net4801 board), 1 x HP ProCurve 1800 8G, 1 x Apple Airport Extreme Basestation

De Raadt says, "I don't know what his (Linus Torvalds) focus is at all anymore, but it isn't quality."
dreamwalker
Junior Board-Mitglied
Junior Board-Mitglied
 
Beiträge: 33
Registriert: Mi 16 Feb, 2005 10:51

Beitragvon Alien » Sa 14 Jan, 2006 21:03

Toll das weiß ich jetzt. Habs nun auch prbiert - funktioniert nicht wirklich und hat sowieso zum größten Teil nur Linuxmodule.

Ich selbst verwende für gewöhnlich keine GUI. Ich werfe X sowieso nur an, wenn ich vor habe im Grafikmodus zu surfen oder wenn mich mein kleiner Bruder nervt und ET spielen will...
Alien
Neu im Board
Neu im Board
 
Beiträge: 17
Registriert: Mi 24 Aug, 2005 04:25

Vorherige

Zurück zu LINUX & UNIX-DERIVATE

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 109 Gäste

cron