Andere Programmiersprachen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Brafil
User
Beiträge: 40
Registriert: Montag 17. Dezember 2007, 17:51
Wohnort: Istanbul

Andere Programmiersprachen

Beitragvon Brafil » Freitag 21. Dezember 2007, 09:12

Ich gedenke eine andere progsprache dazu zu lernen (nur Python reicht nicht immer) Aber welche würde die beste sein? Meint ihr, Java wäre geeignet? Oder vielleicht auch die C-Familie? Perl? Falls jemand sich da auskennt, wäre es gut, aber alle vorschläge helfen.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: Andere Programmiersprachen

Beitragvon gerold » Freitag 21. Dezember 2007, 09:27

Brafil hat geschrieben:alle vorschläge helfen.

Hallo Brafil!

Die Frage ist, was die Programmiersprache können soll. Willst du Mikrocontroller wie z.B. den ATmega8 programmieren? Willst du hardwarenahe Treiber programmieren? Willst du interaktive Websites programmieren? Willst du komplexe Berechnungen durchführen?

Denn für alles Andere ist Python meist die beste Wahl. Und für komplexe Berechnungen haben wir PyRex und andere Erweiterungen zur Verfügung, mit denen man Module erstellt die von Python importiert werden können.

http://www.99-bottles-of-beer.net/

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Beitragvon Rebecca » Freitag 21. Dezember 2007, 09:37

Das kommt ein wenig darauf an, warum du eine zweite Programmiersprache lernen willst. Meine persoenliche Meinung:

Java habe ich noch nie gemocht, und seitdem ich Python kann, finde ich es einfach nur noch umstaendlich. Ich sehe auch nichts, was Java kann, was mir in Python fehlen wuerde. Einziges Argument fuer Java finde ich, dass es momentan furchtbar in ist und man deswegen oft nicht drumherum kommt.

Perl mag ich ebenfalls nicht. Ok, Perl kann ich fast gar nicht, der Code ist mir einfach schon zu unleserlich. Aber hier denke ich ebenfalls, dass Perl einem nicht mehr geben kann als Python, es sei denn, man steht auf kurzen, kryptischen Code.

C hat da schon einen ganz anderen Anwendungsbereich, es ist maschinennaeher und bringt viel mehr Geschwindigkeit, dadurch ergaenzt es sich mit Python sehr gut. Es laesst sich auch sehr gut mit Python verbinden (Python-Module in C schreiben oder Python in C einbinden). Das ist praktisch, wenn man mit Python doch mal Geschwindigkeitsprobleme bekommt oder maschinennah programmieren will (z.B. Hardware ansprechen). Hier hat man auch mal die Gelegenheit, ein wenig mehr die Grundlagen von Computern, Betriebssystemen und Programmiersprachen kennenzulernen, muss dafuer aber auch sehr viel mehr programmieren, um einfache Dinge zu erreichen.

Wenn du mal eine ganz andere Denkweise kennelernen willst, waere eine funktionale Programmiersprache interessant.
Offizielles Python-Tutorial (Deutsche Version)

Urheberrecht, Datenschutz, Informationsfreiheit: Piratenpartei
Brafil
User
Beiträge: 40
Registriert: Montag 17. Dezember 2007, 17:51
Wohnort: Istanbul

Beitragvon Brafil » Freitag 21. Dezember 2007, 09:39

Also das ärgert mich ein bißchen weil ich nicht weiß ob und wie man runtimes mit python erzeugt. Ich weiß, dass Python super ist. aber meine nächste wahl wäre PHP oder Java, für Applications oder websites (Natürlich in verbindung mit Python)
Python + Blender = Super

"Le Python mangera Tout"

The Python is gonna eat everything

(Except for Java, there are too many fans)
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Beitragvon skypa » Freitag 21. Dezember 2007, 09:44

Kann man denn auch C-Code assembliert in Python packen, wie es bei Perl der Fall is?
Bestes Beispiel Perl Exploits.
Oder muss man zwangsweise es in ein Modul packen?
Mir gefallen manche Syntax Sachen besser bei Perl als bei Python,
aber Python is widerum "ausgebauter".
Ich will z.b. ein Musikverwaltungsprogramm schreiben für nen Kollegen, der hatte riesige Datenmengen an Mucke, das ganze Pattern Matching mit dynamischen Suchen+Ersetzen Operationen is in Perl stilistischer als in Python, aber ne schicke GUI kriegt man anscheinend nur mit Python und den Module wie wxPython oder so hin.

So schauts aus... :roll:
BlackJack

Beitragvon BlackJack » Freitag 21. Dezember 2007, 09:58

@Brafil: Was meinst Du mit "runtimes erzeugen"?

Ansonsten bin ich auch der Meinung, dass C eine gute Wahl als ergänzende Sprache zu Python ist, wegen der Bindungsmöglichkeiten und weil's recht weit verbreitet ist.

Und wie Rebecca schon erwähnte etwas funktionales wenn man den Horizont erweitern möchte.

Perl, C#, Java bieten eigentlich nichts was man mit Python nicht auch machen könnte. Ausser statische Typisierung bei C# und Java, aber wer will das schon. Bzw. wenn man das will, finde ich "type inference" wie bei OCaml oder Haskell angenehmer. In Haskell würde ich aber keine grösseren Sachen programmieren wollen. Dafür ist mein Gehirn einfach nicht richtig verdrahtet. :-)

Wobei sich D, für eine statisch typisierte Sprache ohne "type inference" IMHO ganz gut "anfühlt". Da bleibt abzuwarten ob sie sich durchsetzt. Verdient hätte sie es. IMHO.

Bei dem Begriff "C-Familie" möchte ich noch anmerken, dass C, C++, und C# drei grundverschiedene, eigenständige Sprachen sind. Die Syntax ist sehr ähnlich, aber die Philosiphie und die idiomatische Verwendung unterscheiden sich stark.

@skypa: Mir ist kein Hack bekannt "nativen Binärcode" in Python-Quelltext ein zu betten. Wobei ich das jetzt auch nicht unbedingt als Nachteil sehe. Mit einem extra Modul oder einer "shared library" dürfte der Umgang jedenfalls einfacher sein, wenn man das ganze für verschiedene Plattformen übersetzt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Freitag 21. Dezember 2007, 10:29

Brafil hat geschrieben:ob und wie man runtimes mit python erzeugt
[...]
PHP oder Java, für Applications oder websites

Hallo Brafil!

Mit Runtimes -- meinst du damit ausführbare Programme? Mein bevorzugter Weg (nur unter Windows) ist der, dass ich mit *cx_freeze* alles was zur Ausführung des Programmes benötigt wird, in einen Ordner packe. Und diesen Ordner packe ich mit einem Installer, wie z.B. InnoSetup, in ein ausführbares Setupprogramm. Siehe: http://www.python-forum.de/topic-5726.html

Dieses Setup kann dann von den Kunden ausgeführt werden. Dieses kopiert die Dateien in einen Programmordner unterhalb des Ordners "C:\Programme*, erstellt einen Startmenüeintrag und kann auch Einstellungen in INI-Dateien oder der Registry vornehmen. So kann man das Programm auch wieder über die Systemsteuerung deinstallieren.

Alles in Allem ist der Aufwand nicht größer als bei meinen Visual Basic Programmen.

Was die Webanwendungen betrifft, bist du mit Python nicht schlecht beraten. PHP ist auf den Webservern viel häufiger vertreten, weil es sich so einfach installieren lässt. Aber mit Python hast du ein universelles Werkzeug in der Hand. Je größer deine Webanwendung wird, desto mehr wird es dich freuen, auf Python gesetzt zu haben.

Django, CherryPy, Werkzeug, Cheetah-Template -- um nur einige Hilfsmittel für die Webentwicklung zu nennen.

Jeder hat hier seine eigenen Vorlieben. Meine sind CherryPy und Cheetah. Was man hier http://halvar.at/python/cherrypy_cheetah/ ganz gut herauslesen kann. Einen kleinen Überblick bekommst du vielleicht hier: http://xivilization.net/pydocs/2.6/howt ... rvers.html
Das HowTo ist aber laut Autor noch nicht ganz fertig. Im Wiki findest du auch ein paar Seiten darüber: [wiki]Python im Web[/wiki]

Was die Entwicklung von GUI-Anwendungen betrifft: Da bist du bei Python komplett richtig. Mit wxPython erstellst du plattformübergreifende, gut aussehende GUI-Anwendungen, die sich mit cx_freeze für Windows gut in einen Ordner packen lassen. Für Linux brauchst du das nicht, da ich keine Distribution kenne, bei der Python nicht installiert ist. Und wxPython lässt sich meist mit einem kurzen Befehl installieren. Du kannst mit cx_freeze dein Programm aber auch für Linux packen. Damit bist du dann auch von der installierten Python- und wxPython-Version unabhängig.

mfg
Gerold
:-)

PS: Um einen Überblick über die Möglichkeiten von Python zu bekommen, sollte man sich einfach mal die eingebauten Module von Python http://docs.python.org/modindex.html durchsehen. Und was nicht eingebaut ist, gibt es über den Package Index: http://docs.python.org/modindex.html

.
Zuletzt geändert von gerold am Freitag 21. Dezember 2007, 10:50, insgesamt 3-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Freitag 21. Dezember 2007, 10:38

skypa hat geschrieben:Kann man denn auch C-Code assembliert in Python packen

Hallo Skypa!

Das nicht, aber eine C-Library ist ja nur eine Datei. Und diese Library kann im gleichen Ordner wie das Hauptprogramm liegen. Du kannst mit C oder einer anderen Sprache Libraries schreiben, die du in einem Python-Modul verwenden kannst. Mit *ctypes* kannst du z.B. direkt auf C-Libraries zugreifen. Auf Posix oder die Windows-API oder sogar direkt auf die libc.

Und mit PyRex http://www.cosc.canterbury.ac.nz/greg.e ... hon/Pyrex/ kannst du in einer Python-ähnlichen Sprache C-Libraries schreiben, die in Python-Modulen importiert werden können. Wenn du auf Performance stehst, dann würde ich mir das mal ansehen und ausprobieren.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
skypa
User
Beiträge: 97
Registriert: Freitag 5. Januar 2007, 03:13

Beitragvon skypa » Freitag 21. Dezember 2007, 10:48

Klingt gut, danke für die Info, ich schaus mir später mal an, wenn ich wieder zu Hause bin :roll:
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 21. Dezember 2007, 12:10

gerold hat geschrieben:Einen kleinen Überblick bekommst du vielleicht hier: http://xivilization.net/pydocs/2.6/howt ... rvers.html
Das HowTo ist aber laut Autor noch nicht ganz fertig.

Ganz recht und so sehr es mich auf freut, dass darauf verwiesen wird - bitte nicht darauf linken. Denn das sind nur meine lokal gebauten Sourcen. Wird aber hoffentlich bald hier landen.

Und nun ja, zu weiteren Sprachen neben Python nehme ich eine ganz ähnliche Stellung ein wie die anderen: es hängt eben ab, was du willst.

Wenn du eine andere Sichtweise auf Scripting haben willst, dann kannst du dir mal Ruby (die Sprache, nicht Rails das Framework) ansehen. Es verfolgt eine andere Philosophie als Python und geht daher andere Wege, aber es gibt Leute die mögen das.

Dann die "klassischen" Programmiersprachen: C wäre eine Wahl, wenn man performancekritische Sachen machen will oder mal gucken will wie es "eine Ebene tiefer" abläuft. Außerdem ist es sehr portabel. Für größere Sachen würde ich es jetzt aber nicht einsetzen.

C++, Java und C# sehe ich weniger positiv. Java ist sehr viel Boilerplate und für C# gibt es vergleichsweise wenige Implementierungen - wenn dann würde ich wohl Mono nutzen, aber das hängt leider meist hinterher.

Was recht nett ist, ist JavaScript. Für so kleine Sachen in Webseiten, oftmals mit Hilfe einer guten Library ist es eigentlich optimal.

Für persönliche Entwicklung würde ich eine funktionale Programiersprache vorschlagen. Scheme wäre eine Idee, OCaml ebenso - sind beides Hybriden, mit denen du sowohl funktional als auch imperativ schreiben kannst.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Beitragvon BlackVivi » Freitag 21. Dezember 2007, 14:20

BlackJack hat geschrieben:Wobei sich D, für eine statisch typisierte Sprache ohne "type inference" IMHO ganz gut "anfühlt". Da bleibt abzuwarten ob sie sich durchsetzt. Verdient hätte sie es. IMHO.
Das wollte ich nochmal unterschreiben --> D ist eine tolle Sprache. Sie ist recht Maschinennah, in mancher Hinsicht sogar schneller als C++*, sie besitzt eine sinnvolle Philosophie und ist sehr gut kombatibel mit C und C++. Ich kann es bei weitem nicht perfekt --> Aber ich lerne es gerne.

*Damit meine ich die Implementation von C im GCC im Gegensatz zur Digital Mars Implementierung von D.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Beitragvon gerold » Freitag 21. Dezember 2007, 15:06

Hallo!

Ergänzend zu diesem Beitrag http://www.python-forum.de/post-85540.html#85540 möchte ich auch noch auf GUI2Exe http://xoomer.alice.it/infinity77/main/GUI2Exe.html von Andrea Gavana hinweisen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs

Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
Leonidas
Administrator
Beiträge: 16023
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Beitragvon Leonidas » Freitag 21. Dezember 2007, 15:39

BlackVivi hat geschrieben:*Damit meine ich die Implementation von C im GCC im Gegensatz zur Digital Mars Implementierung von D.

Die aber nicht so portabel (Windows, vermutlich 32-Bit und Linux auf x86 ist keine große Auswahl) und nicht so frei ist. Insofern hat GDC da einige Vorteile.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

Beitragvon BlackVivi » Freitag 21. Dezember 2007, 17:57

Leonidas hat geschrieben:
BlackVivi hat geschrieben:*Damit meine ich die Implementation von C im GCC im Gegensatz zur Digital Mars Implementierung von D.

Die aber nicht so portabel (Windows, vermutlich 32-Bit und Linux auf x86 ist keine große Auswahl) und nicht so frei ist. Insofern hat GDC da einige Vorteile.
GDC wiederum hängt in einigen Teilen dem DMD hinterher, aber ich denke das einmal geschriebener Code von beidem übersetzt werden kann. Falls es nicht klappt, gibt's ja immernoch die Möglichkeit nachzuschauen, welche Funktion nicht implementiert ist.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

Beitragvon sma » Samstag 22. Dezember 2007, 22:10

Brafil, du sagst nicht, wofür du die neue Programmiersprache einsetzen willst. Daher gehe ich davon aus, du willst sie einfach lernen, um deinen Horizont zu erweitern.

An Java kommst du wahrscheinlich nicht vorbei, wenn du als Software-Entwickler im "Enterprise"-Umfeld arbeiten willst und dort Server-Anwendungen oder Web-Anwendungen bauen sollst. Technisch interessant ist diese Sprache aber eigentlich nicht. In einem "Windows Shop" ist es vielleicht alternativ C#, aber außer dass diese Sprache noch ein bisschen größer und damit auwendiger zu lernen ist, gibt es kaum Unterschiede.

Aus dem gleichen Grund - laaangweilig - würde ich auch von C(++), Pascal oder (Visual)Basic abraten. Alles die selbe Soße: Imperative Programmiersprachen aus den frühen 70er Jahren - manchmal garniert mit etwas automatischer Speicherverwaltung und begleitet von gewaltigen Klassen-Bibliotheken. Praktisch, doch fade, was interessante neue Konzepte angeht.

Da jeder hier seine Lieblingssprache (evtl. nach Python ;) nennt, möchte auch ich die Gelegenheit nutzen: Du willst Smalltalk lernen.

Smalltalk ist der Urvater der Objektorientierung. Der Begriff selbst wurde von Alan Kay, dem Erfinder der Sprache, erfunden. Simula aus den späten 60ern hatte zwar auch schon ähnliche Konzepte, doch haben dessen Väter nur ein angepasstes Algol bauen wollen und kein neues Programmierparadigma schaffen wollen. Somit ist Smalltalk neben Lisp (und Scheme) ein Meilenstein in der (immer noch kurzen) Geschichte der Informatik und Wert, gekannt zu werden. Außerdem macht die Sprache Spaß, sie ist natürlich dynamisch getypt, hat eine automatische Speicherverwaltung und ausdrucksstark bei sehr kleinem Sprachkern - Python ist daneben fett und schwerfällig.

Inklusive Python haben die meisten Sprachen Kays Idee der Objektorientierung nicht verstanden und/oder unvollständig umgesetzt. IMHO trifft Erlang noch am besten, was sich Kay überlegt hat: Unabhängige Objekte (Prozesse, Akteure), die ("turtels all the way down") immer wieder aus kleinen Objekten zusammengesetzt sind, kommunizieren dynamisch durch den Austausch von Nachrichten. Klassen, Vererbung, usw. kamen erst später als Implementationsdetail dazu, nicht jedoch als paradigmenstiftendes Konzept.

Leider sind die existierenden Smalltalk-Systeme grenzwertig ungewohnt (Squeak hat ein ausgesucht hässliches UI, VisualWorks wirkt alt - ist aber das schnellste und mächtigste Smalltalk-System, und Dolphin-Smalltalk (ein nettes kleines System speziell für Windows) ist vor kurzem gestorben, weitere Systeme trauen sich kaum aus ihrer Nische heraus) und der Einstieg ist nicht daher nicht einfach. James Robertson müht sich jedoch redlich, mit podcast und videoblog Tutorials einen Einstieg in VisualWorks zu bieten.

Ruby ist übrigens ein Smalltalk mit anderer Syntax - das Objektmodell bis hin zu vielen Methodennamen wurde übernommen (daher hängen jetzt viele ehemalige Smalltalker in der Ruby-Community ab, Martin Fowler etwa oder der Kerl, der RSpec gemacht hat). Objective-C, die Systemsprache von Mac OS/X, ist ebenfalls ein Smalltalk mit anderer Syntax. Brad Cox hatte 1986 behauptet, Smalltalk auch in C machen zu können und als einer der wenigen wirklich eine Sprache geschaffen, die Smalltalks "message passing" korrekt umgesetzt hat. Nix C-with-classes aka C++, was direkt von Simula erbt und Smalltalk nie als Vorbild hatte.

Wenn die Historie kein Grund ist, dann ist Seaside einer, sich mit Smalltalk zu beschäftigen. Dies ist ein Webrahmenwerk, welches auf continuations basiert - ziemlich cool. Scheme (genauer PLT-Scheme hat ebenfalls so ein Rahmenwerk, doch das scheint mir schlechter dokumentiert und damit weniger zugänglich). Seaside ist einfach anders als übliche Rahmenwerke und damit interessant. Avi Bryant, der Erfinder von Seaside, hat übrigens zuerst in Ruby versucht, die Idee umsetzten und ist dann zu Smalltalk gewechselt...

Oh, wenn's einfach um "mal anders" geht, wäre neben Haskell, das die meisten auch "anders" finden, noch ein Blick auf Factor empfehlenswert. Dies ist ein funktionales Forth, ebenfalls eine ungewöhnliche und interessante Sprache aus den 70ern. Factor ist jedoch moderner. Wenn dich mehr die Theorie hinter Factor interessiert, kann man sich auch Joy angucken.

Weiter oben wollte ich noch erwähnen, dass Objektorientierung als Problemlösungsansatz IMHO das beste Vorgehen ist und ansonsten (gemäßigte) funktionale Programmierung empfehlen. Habe aber kleine Lust, das alles nochmal umzuschreiben. Ist eh schon zu lang ;)

Will man jetzt noch für mehr als einen Prozessor programmieren (Stichwort "concurrent programming") dann ist Erlang die Sprache der Wahl. Das sei meine letzte Empfehlung.

Obwohl: Will man alles kombinieren, also Java, Smalltalk, Haskell, Erlang, funktionale und objektorientierte Programmierung, dann empfehle ich noch Scala, auch wenn mir die Sprache (konzeptbedingt durch das statischem Typsystem) zu viel Ballast mitschleppt und ich sie doch schwer zu beherrschen finde.

Stefan

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot], Mephisto