ubuntuusers.de

C oder Python lernen?

Status: Gelöst | Ubuntu-Version: Nicht spezifiziert
Antworten |

The_Graze

Anmeldungsdatum:
28. März 2008

Beiträge: 631

Hallo,

ich lerne gerade PHP und MySQL. Den PHP-Teil habe ich schon abgeschlossen und nun arbeite ich mich gerade durch MySQL durch.

Ich möchte aber auch richtige Anwendungen programmieren. Meint ihr es ist da sinnvoller erst Python oder C zu lernen?

Ich freue mich über eure Argumente und Empfehlungen.

Gruß,
Albrecht

Anyone

Avatar von Anyone

Anmeldungsdatum:
16. Oktober 2007

Beiträge: 102

Was meinst du denn mit einer 'richtigen' Anwendung?
Etwas zum klicken? für die Konsole?

Aus meiner Sicht hat es mir am meisten gebracht mich mit c++ zu beschäftigen, habe auch mal ein bischen in Pyhthon reingeschnuppert, aber war mir ein bischen zu konfus und dann hatte ich heimweh nach meinen geschweiften klammern { }.
Wenn du von php kommst, dann wird dir wahrscheinlich python eher verständlich sein, da c bzw c++ sehr stark typen gebunden ist. Daher du musst dir schon vorher klarmachen ob eine variable eine zahl, ein string oder sonstwas sein soll. Auch glaube ich, das man mit Python schnellere 'Erfolge' erzielen kann.

Am besten schaust du dir mal bei Wikipedia oder einer Suchmaschine deiner Wahl, die beiden sprachen an und kommst dann nochmal mit ein bischen konkreteren Fragen zurück.

The_Graze

(Themenstarter)

Anmeldungsdatum:
28. März 2008

Beiträge: 631

Danke für die Antwort.

Ich werde mich da nochmal ein bisschen umschauen und auch noch auf weitere Antworten warten.

Gruß,
Albrecht

Barabbas

Avatar von Barabbas

Anmeldungsdatum:
31. März 2007

Beiträge: 1651

Wohnort: Münster

python{'he':'ich habe auch schweifklammern'} 😊

Hi,

ich habe mich die letzten Wochen ein wenig in Python reingefuchst und es bisher nicht bereut. Einzig die strengen Regeln zur Einrückung stören bisweilen, da ich doch gerne mal besondere Codeblöcke exponieren... das kann man bei Python irgendwie vergessen.
Aber ansonsten ist es eine sehr schöne Sprache, schnell zu erlernen, einfache Syntax und mit einem riesen Paket an mitgelieferten Funktionen. Verschiedenste GUI- Bibliotheken werden auch unterstützt, so gibt es etwa Anbindungen für Tk (immer dabei!), Qt, GTK und diverse andere, von denen ich noch nie gehört habe.

Ich glaube, dass Python für die meisten Anwendungsfälle ausreicht... gerade für Einsteiger sehr geeignet.

lG

brb

P.S.
Python kennt übrigens *kein* switch case.... völlig panne 😉

The_Graze

(Themenstarter)

Anmeldungsdatum:
28. März 2008

Beiträge: 631

Das klingt interessant

Ist das hier schlimm? Was meinst du mit Codeblöcke "exponieren"?

Codeblöcke exponieren

Und wozu brauch man switch case? Was macht das? Ist das auch tragisch?

Und welche Programmiersprachen kennst du bisher? (Deine Programmierlaufbahn würd ich mal gern wissen\^^)

Gruß,
Albrecht

encbladexp Team-Icon

Ehemaliger
Avatar von encbladexp

Anmeldungsdatum:
16. Februar 2007

Beiträge: 17524

Barabbas hat geschrieben:

Einzig die strengen Regeln zur Einrückung stören bisweilen

Das ist einer der Vorteile von Python, man erzwingt ein zumindest einigermaßen brauchbares Code Layout, da man eben nicht so rumformatieren kann wie man will...

Wenn ich da an manchen Perl Code denke... 😕

Barabbas hat geschrieben:

Ich glaube, dass Python für die meisten Anwendungsfälle ausreicht...

Und man kann es wenn man nur will auch mit C/C++ erweitern...

Barabbas hat geschrieben:

Python kennt übrigens *kein* switch case....

Wer braucht schon switch 😈

mfg Betz Stefan

tux21b Team-Icon

Avatar von tux21b

Anmeldungsdatum:
15. August 2005

Beiträge: 1698

Wohnort: Linz.at

Du kannst aber alles mit elif's machen und da Dictionarys Basisdatentypen sind, kann man die auch perfekt für inline-switches verwenden 😉

Sid_Burn

Anmeldungsdatum:
23. Oktober 2004

Beiträge: 2159

Wenn ich da an manchen Perl Code denke...

Hmm, kann man den nur in Perl frei Formatieren?
Ansonsten hast du schon recht. In jeder anderen Sprache auser Python kann man das Code Layout so übersichtlich gestalten wie man möchte. 😉

Ansonsten erledigt "perltidy script" auch einiges...

http://perltidy.sourceforge.net/node005.html

lilith2k3

Avatar von lilith2k3

Anmeldungsdatum:
14. Dezember 2006

Beiträge: 2999

Wohnort: OS

Meint ihr es ist da sinnvoller erst Python oder C zu lernen?

Lern doch beides 😀

patlkli

Avatar von patlkli

Anmeldungsdatum:
20. April 2006

Beiträge: 646

Ich würd mal behaupten, dass C/C++ grundsätzlicher ist. Mit C sind eigentlich fast alle Treiber geschrieben etc. .

Beide Sprachen haben ihre Vor- und Nachteile und man kann nicht sagen, "Python ist besser!" oder "C/C++ ist besser!" .
Das kommt meistens auch auf den Anwendungsfall drauf an. Man kann mit beiden Sprachen "richtige Anwendungen" schreiben. Da sag ich nur: wxPython, PyGTK 😉

Nun denn, ich kann dir jetzt nicht sagen, mit welcher du meiner Meinung anfangen solltest, da ich beides gleichzeitig "gelernt" hab. 😀

Grüße,
patlkli

defcon

Avatar von defcon

Anmeldungsdatum:
6. April 2005

Beiträge: 451

Also wenn man Hardwarenah progrommieren will, wäre C eigentlich besser. Ansonsten kommts drauf an was man machen will.
Die Palette der verschiedenen Spachen ist ja ewiglang, und würde in einem Flameware wenn jeder sagt "c ist besser" "c++ ist besser" "python ist besser" etc.pp.

Letzendlich muss jeder selber rausfinden was er machen will, und was einem liegt.

Bauer

Anmeldungsdatum:
28. Juni 2006

Beiträge: 333

1. Nimm Python und lerne C++ erst dann, wenn dir Python nicht mehr ausreicht.

2. Switch-case: Darauf wurde bewusst verzichtet. Ob das sinnvoll ist oder nicht, sei dahingestellt

3. Einrückung:
Ja, Python gibt einem da rel. strikt vor, wie das ganze auszusehen hat. Ist mit allerdings lieber, als
ständig drauf zu achten, dass meine Klammern richtig eingerückt sind.

mw88

Anmeldungsdatum:
30. Januar 2008

Beiträge: 122

ich denke dass es schon sinnvoll ist c zu lernen.

Ich habe als erstes c, dann c++ und danach java gelernt (gelernt ist etwas übertrieben) und ich habe die grundsätze aus c bisher überall gebrauchen können. Ich würde aber nur ungerne in c entwickeln, ich beforzuge java oder wenns nicht anders geht c++.

Zu Python kann ich aber bisher auch fast nur positives sagen, bin grade beim reinfinden und finde das ganze System schon sehr durchdacht!

Lunar

Anmeldungsdatum:
17. März 2006

Beiträge: 5792

Bauer hat geschrieben:

2. Switch-case: Darauf wurde bewusst verzichtet. Ob das sinnvoll ist oder nicht, sei dahingestellt

def foo():
    # do something

def bar():
    # do something different

callbacks = {'foo': foo, 'bar': bar}

user_input = raw_input('Gimme something: ')
try:
    callbacks[user_input]()
except KeyError:
    print 'Invalid input'


Das wäre ein Python-Äquivalent zu Switch-Anweisungen anderer Sprachen. Je nach Situation kann man das auch anders lösen. Generell ist Switch in Python ziemlich überflüssig, weil es genau genommen nicht mehr als ein Dictionary ist, aus dem basierend auf einem Wert ein Code-Block zur Ausführung herausgesucht wird.

Switch ist in vielen anderen Sprachen nur deswegen verfügbar, weil sie entweder keine eingebauten Dictionary-Typen haben oder weil dort Funktionen bzw. Methoden keine first-class Objekte sind (wie z.B. in Java).

Ich habe lange Java und C# programmiert, die Switch-Anweisung dort so gut wie nie angewendet, und sie unter Python auch nie vermisst. switch ist eigentlich nie wirklich nötig.

@patlkli
Es gibt nicht "C/C++", es gibt nur C und C++ (eine völlig andere Sprache, die zu C auch nur teilweise kompatibel ist). Ob man rechtmäßig behaupten kann, dass Python besser als C++ ist, sei mal dahingestellt, besser als C ist es auf alle Fälle. C genügt den Anforderungen moderner Programmierung nicht mehr wirklich. C ist nur dann sinnvoll, wenn man keine andere Wahl hat.

@OP
Stellst du die Wahl zwischen C und Python, dann sage ich Python, denn C ist für viele heutige Aufgaben nicht mehr wirklich geeignet. Besonders die fehlende Objekt-Orientierung sowie der direkte Speicherzugriff ohne Komfortfunktionen machen sich bei größeren Anwendungen bemerkbar. Jeder, der schon einem GLib-Code gesehen hat, weiß, was ich meine 😉 C kann man immer noch lernen, wenn man es wirklich nötig braucht, z.B. um performance-kritischen Python-Code auszulagern oder tatsächlich ein Kernel-Treiber zu schreiben. Bis dahin kann man C getrost außen vorlassen.

Man braucht C auch nicht wirklich, um Grundlagen zu lernen. Zum einen ergeben sich aufgrund des Objektmodells moderner Hochsprachen völlig neue Möglichkeiten zur Ablaufsteuerung (Reflection, Ereignisse, etc.), die in C so nicht existieren, zum anderen bieten heutige Sprachen für viele Sprach-Statements wie Schleifen Laufzeitunterstützung. So kennt Python die __iter__ Methode, und Java die Iterable-Schnittstelle für erweiterte For-Schleifen, die ohne expliziten Zähler auskommen. Eine der Sünden in Python, die ihren Ursprung wohl in C Kenntnissen haben, ist nämlich sowas:

items = ['foo', 'bar', 'baz']
for i in range(len(items)):
    print items[i]


Dabei sind Listen in Python "iterable", können also in for-Schleifen direkt verwendet werden:

for item in items:
    print item


Vor diesem Hintergrund sehe ich keinen Grund, warum das Erlernen von C sinnvoll sein könnte.

cybox

Avatar von cybox

Anmeldungsdatum:
4. Februar 2007

Beiträge: 84

Wohnort: Cologne - Germany

Was ich dir an die Hand geben kann ist das hier :

http://www.galileocomputing.de/openbook/python/

und

http://www.galileocomputing.de/openbook/c_von_a_bis_z/

Vom Prinzip her programmiere ich gerne in Python, muss aber auch sagen ads gerade C mich in gewissen sachen durch aus weiter gebracht hat.

But it´s your choice 😀

Gruß

Antworten |