Forum: PC-Programmierung Programmierung für Linux und Windows


von Paul H. (powl)


Lesenswert?

Hi!

Nachdem mein letzter Thread in einem langen Glaubenskrieg ausartete und 
mir keiner die richtige Programmiersprache für meine Zwecke ans Herz 
legen konnte habe ich mich nun unglücklicherweise dazu entschieden auf 
Linux umzusteigen, da mir die Oberfläche und die Möglichkeiten einfach 
10 mal besser gefallen. Jedoch weiß ich noch nicht ob ich das gleich tue 
oder erstmal beide OS' parallel verwende.

Ich habe nun mit einem meiner Meinung nach recht schlecht strukturierten 
Buch ein wenig C# gelernt und fühle mich vom Sprachkonzept erstmal 
erschlagen, aber das wird mir bei C++ ja auch blühen.

Mit Mono kann man ja nun C#.NET auch unter Linux verwenden. Allerdings 
frage ich mich, ob das dann noch so hübsch aussieht wenn ich da mit 
Windows Forms rumprogrammiere und ob ich die funktionen von Linux auch 
ausnutzen kann. Für Windows Systemprogrammierung gibt es da ja klassen, 
wie siehts für Linux aus?

Wäre es sinnvoller auf C++ umzusteigen und sich vom .NET kram 
abzuwenden? Es muss nicht sein dass ich ein Programm 
plattformübergreifend schreibe, ich kompiliere es auch gerne zweimal und 
schreibe es für jedes System ein wenig um.

Das sind meine Anforderungen an die Programmierung nochmal:
- Bin nur Gelegenheitsprogrammierer
- Programme für Linux (Ubuntu) und Windows XP schreiben
- Zugriff auf die serielle Schnittstelle
- Schöne GUIs erstellen, auch mit Trayleiste usw. (und was es bei linux 
so gibt)
- Ein bisschen Grafikprogrammierung um Statistiken usw. darstellen zu
können

Der PC ist quasi nur ein Massenspeicher und Ein-/Ausgabegerät mit 
hübschem GUI für meine µC-Anwendungen.

Was mach ich nun? Weiter mit C# oder doch was anderes?

lg PoWl

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Wenn Du mit einem kommerziellen Produkt leben kannst, sieh Dir mal 
RealBasic an. Das kann Applikationen für Windows, Linux und sogar Mac OS 
X erzeugen.

Ansonsten wäre C++ und ein plattformübergreifend verfügbares GUI-Toolkit 
zu empfehlen, Qt und wxWidgets kämen da beispielsweise in Frage.

Das beliebte "Terminal"programm hTerm von Tobi ist mit wxWidgets 
geschrieben worden und sollte sich daher auch auf Mac OS X und Linux 
portieren lassen (das müsste, in Ermangelung allgemein zugänglicher 
Sourcen allerdings Tobi selbst machen).

von Gerard C. (gerardchoinka)


Lesenswert?

Paul Hamacher wrote:
> Hi!
>
> Nachdem mein letzter Thread in einem langen Glaubenskrieg ausartete und
> mir keiner die richtige Programmiersprache für meine Zwecke ans Herz
> legen konnte habe ich mich nun unglücklicherweise dazu entschieden auf
> Linux umzusteigen, da mir die Oberfläche und die Möglichkeiten einfach
> 10 mal besser gefallen. Jedoch weiß ich noch nicht ob ich das gleich tue
> oder erstmal beide OS' parallel verwende.



> Ich habe nun mit einem meiner Meinung nach recht schlecht strukturierten
> Buch ein wenig C# gelernt und fühle mich vom Sprachkonzept erstmal
> erschlagen, aber das wird mir bei C++ ja auch blühen.

C++ würde ich lernen wenn du Zeit und Motivation hast, ansonsten ist es 
eine wiklich mächtige Spache, so richtig zum rumfreaken

ahja aber du wirst sowieso mehr als eine spache lernen, für jedes 
Projekt eine eigene ;D


> Mit Mono kann man ja nun C#.NET auch unter Linux verwenden. Allerdings
> frage ich mich, ob das dann noch so hübsch aussieht wenn ich da mit
> Windows Forms rumprogrammiere und ob ich die funktionen von Linux auch
> ausnutzen kann. Für Windows Systemprogrammierung gibt es da ja klassen,
> wie siehts für Linux aus?

es gibt einmal die ganzen POSIX funktionen, dann würdes du dich aber an 
(L|U)nix OSs binden (Linux, Unix, Solaris, BSD, Mac OS X, Windows mit 
Cygwin)

mit Qt gibt es auch klassen für linux/windows


> Wäre es sinnvoller auf C++ umzusteigen und sich vom .NET kram
> abzuwenden? Es muss nicht sein dass ich ein Programm
> plattformübergreifend schreibe, ich kompiliere es auch gerne zweimal und
> schreibe es für jedes System ein wenig um.



> Das sind meine Anforderungen an die Programmierung nochmal:
> - Bin nur Gelegenheitsprogrammierer
> - Programme für Linux (Ubuntu) und Windows XP schreiben
> - Zugriff auf die serielle Schnittstelle
> - Schöne GUIs erstellen, auch mit Trayleiste usw. (und was es bei linux
> so gibt)
> - Ein bisschen Grafikprogrammierung um Statistiken usw. darstellen zu
> können

Python

(glaube mir ich kenne die alternativen wie C++, C, Java zu genüge)


> Der PC ist quasi nur ein Massenspeicher und Ein-/Ausgabegerät mit
> hübschem GUI für meine µC-Anwendungen.
>
> Was mach ich nun? Weiter mit C# oder doch was anderes?



Ich denke keine Sprache wird leichtverdaulich, wenn du gleich mit 
GUI-Programmierung anfängst.
wenn du nur graphen zeichnen willst, könntes du dir gnuplot anschauen
einfach eine gnuplot datei von deinen programm schreiben lassen und dann 
gnuplot damit starten
läst sich leichter entwickeln da man die zwischenprodukte leichter 
einsehen kann.

von Paul H. (powl)


Lesenswert?

Nunja danke für die Antworten erstmal! Also wie gesagt, wenn C# die 
gleichen Möglichkeiten für Windows wie auch mit Mono für Linux bietet, 
bin ich bereit mich da weiter reinzuhängen. Ansonsten würde ich gerne 
umsteigen auf etwas, das für mich auch zukunftssicher ist.

Von Phyton hab ich schon gehört und dass es recht einfach sei. Ist das 
eine interpretierte Sprache? Wenn die für meine Anwendungszwecke 
ausreicht und ich damit schöne Programme für Linux und Windows 
programmieren kann, wäre das eine echte Aternative (auch wenn mir die 
Syntax nicht gefällt und ich gerne meine Programme auch weitergeben 
würde und daher nicht erwarten kann, dass sich jemand für ein läppisches 
Programm einen Interpreter auf seinen PC installiert.

Nur Graphen möchte ich natürlich nicht zeichnen, das war nur ein 
Beispiel. Im Großen und Ganzen möchte ich eben verschiedene Anwendungen 
für die Kommunikation mit meinem Elektronikzeugs schreiben, deshalb wie 
gesagt nur Gelegenheitsprogrammierer bleiben und keine riesenhaften 
Softwares schreiben.

lg PoWl

von Daniel S. (theoretiker)


Lesenswert?

Die Wahrscheinlichkeit, dass Python schon vorinstalliert ist,
ist gar nicht so klein wie Du denkst.
Die Syntax ist wohl Ansichtssache .. aber mir gefällt sie.
Python ist nicht deswegen "einfach" weil es eingeschränkt
ist, sondern weil die komplexen Sachen einfach gemacht werden.
Zum Beispiel Umgang mit Listen, Tuples, Dictionary.

Natürlich nicht für uC Anwendungen ;)
Aber für alles bis vielleicht zur der Grenze wo
zig tausend Objekte pro Sekunde erzeugt/vernichtet werden müssen.
Für eine Anwendung von Komplexität einer Datenbank wäre
es wohl zu langsam.

von Olli R. (omr) Benutzerseite


Lesenswert?

Unter Linux, speziell Ubuntu (Gnome), wuerde ich das GTK-Toolkit (C) mit 
der IDE Anjuta nehmen.

von Paul H. (powl)


Lesenswert?

Direkt in C wollte ich nach Möglichkeit nicht programmieren, da die 
Stringverarbeitung da recht aufwändig ist und ich nicht die Möglichkeit 
habe OOP zu programmieren, wenn ich das will. Auch die Arbeit mit 
grafischen Oberflächen ist afaik eher kompliziert. Wie gesagt, ich 
möchte Applikationen erstellen, die ich für Windows und Linux 
kompilieren kann, wobei jeweils nur kleine Änderungen nötig sind (z.B. 
unterschiedliche Ansteuerung der seriellen Schnittstelle, 
unterschiedliche Möglichkeiten zur GUI Programmierung)

von Olli R. (omr) Benutzerseite


Lesenswert?

Das schreit dann foermlich nach Python. Die leistet alles, was du in 
deinen Anforderungen beschreibst. Auch plotten kann man damit leicht 
(Pyplot, Gnuplot, etc.).

Z.B. nehmen wir hier Python, um ueber den Parallelport mit unseren 
FGPA-Datenloggern zu kommunizieren, oder zu interaktiven steuerung von 
Atmegas ueber den seriellen Port.

Mit dem GTK-Toolkit kann man auch objektorientiert programmieren, dafuer 
gibt es einen C++-Wrapper: gtkmm (http://www.gtkmm.org/)

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Ich würde eine JVM-basierte Sprache empfehlen, z.B. Java oder JRuby. Da 
hast du eine Menge Bibliotheken zur Verfügung, und deine Programme 
laufen überall wo es eine JVM gibt ohne große Anpassungen.

von tom (Gast)


Lesenswert?

Hallo Paul,

Versuche es doch mal mit QT.

Es ist mit den Strings wirklich einfach.
Da kannst du Strings einfach addieren!
Auch der Designer ist genial.
QT ist auch Plattformübergreifend also Windows/Linux kein Problem.


Grüsse,
Tom

von Nachtschwärmer (Gast)


Lesenswert?

mal wieder die Nachtschwärmer unterwegs, was?

wärst mal lieber bei Windows geblieben, da gibt es gute, ausgereifte 
Oberflächen wie die MS Express Versionen; aber als Anfänger gibt es ja 
auch noch CodeBlocks oder wenn es nur C sein darf die schöne Oberfläche 
von Pelle www.smorgasbordet.com/pellesc/

das Ergebnis kannst ja dann auch unter Wine laufen lassen

im Übrigen scheint der Glaubenskrieg mal wieder voll entbrannt

mit java würd ich nix machen, gegen eine schön nativ compilerte exe oder 
wegen mir auch einen dot net msil code ist das doch gefühlsmässig lahm, 
bis es zur Ausführung kommt

so, jetzt geh ich in die Heia und zähl Codezeilen und bUgs bis ich 
einschlafe hehe

von Olli R. (omr) Benutzerseite


Lesenswert?

Nachtschwärmer wrote:
> mal wieder die Nachtschwärmer unterwegs, was?
>
> wärst mal lieber bei Windows geblieben, da gibt es gute, ausgereifte
> Oberflächen wie die MS Express Versionen;

Windows und ausgereift, das ist ein Widerspruch in sich.

Windows 95 bis Windows XP bestehen fast nur aus Hilfscode, um illegale 
Funktionsaufrufe von um die WinAPI herum programmierten Apllikationen 
abzufangen. Was meint ihr wohl, warum die Registry so anschwillt.

Und unter Windows Vista will keiner mehr Programmieren, da die gut 
funktionierende API durch den .NET-Mist mit einem Haufen von 
Pseudosprachen ersetzt wurde.

Warum bestehen wohl die Browser von MS bis heute nicht die ACID-Tests? 
Weil man auch in Redmond erkannt hat, dass der Trend zu Webapplikationen 
geht, bei denen es Wurst ist, welches OS auf dem Client laeuft. Und 
diesen Trend weg von nativen Apps will man dort nicht noch unbedingt b 
schleunigen.

von Paul H. (powl)


Lesenswert?

Bitte Leute, lasst diesen Thread nicht wieder in irgendwelchen 
ellenlangen Diskussionen ausarten wo niemand so richtig bescheid weiß 
aber trotzdem jeder irgendeine andere Halbwahrheit erzählt und das Thema 
des ersten Posts völlig untergeht.

Könnt ihr mir Python ans Herz legen? Geht das damit alles? 
Dateiverwaltung, GUI für Windoof und Linux, Serielle Schnittstelle,..

und das alles ohne so riesigen Aufwand wie bei C, C++, C#... ?

Ist Python denn nun eine Scriptsprache? Liegen die Programme als 
Scriptdateien vor und werden dann von einem Python-Interpreter 
ausgeführt?

Wie schnell ist es, wenn ich in echtzeit Graphen zeichnen möchte? (z.B. 
ein Oszilloskop das die Daten Seriell zugeschickt bekommt)

Weiß denn jemand von euch in wie fern C# dann nun mit Linux kompatibel 
ist? Wahrscheinlich trotz Mono nicht besonders, oder?

lg PoWl

von Sven P. (Gast)


Lesenswert?

tom wrote:
> Hallo Paul,
>
> Versuche es doch mal mit QT.
>
> Es ist mit den Strings wirklich einfach.
> Da kannst du Strings einfach addieren!
> Auch der Designer ist genial.
> QT ist auch Plattformübergreifend also Windows/Linux kein Problem.

Das geht mit jeder STANDARD-Template-Library (STL). Qt ist zwar hübsch, 
wenns läuft, aber wenns ums Programmieren damit geht, ist QT (m.A.n.) 
TOTALER MURKS. Da gibt es schon leistungsfähige Objektorientierung in 
C++, aber nein, QT muss natürlich noch Metaobjekte und den MOC 
einführen...

(Wenn man in QT eine "Fensterklasse" schreibt, dann erzeugt das 
mitgelieferte Tool MOC dadraus, also auf Quelltextebene, ein paar 
zusätzliche Quelldateien, die sog. Metaobjekte enthalten. Damit regelt 
QT dann seinen SIGNAL-Krempel.)

Dass es anders geht, wurde mit sig++ ja bereits gezeigt.

von Olli R. (omr) Benutzerseite


Lesenswert?

Paul Hamacher wrote:

> Könnt ihr mir Python ans Herz legen? Geht das damit alles?
> Dateiverwaltung, GUI für Windoof und Linux, Serielle Schnittstelle,..

Ja, geht alles.

> und das alles ohne so riesigen Aufwand wie bei C, C++, C#... ?

Wir haben hier einen Diplomanden, der unter Python ohne weitere 
Programmiererfahrung schon nach kurzer Zeit seriell mit seinem uC 
sprechen konnte. Das will was heissen :-)

Fuer die GUI gibt es wxwidgets.

> Ist Python denn nun eine Scriptsprache? Liegen die Programme als
> Scriptdateien vor und werden dann von einem Python-Interpreter
> ausgeführt?

Ja, die kann man aber auch vorkompilieren, so dass vom Laufzeitverhalten 
kein grosser Unterschied zu C# besteht.

> Wie schnell ist es, wenn ich in echtzeit Graphen zeichnen möchte? (z.B.
> ein Oszilloskop das die Daten Seriell zugeschickt bekommt)

Da ist die serielle Schnittstelle der begrenzende Faktor.

Olli

von Bartli (Gast)


Lesenswert?

>Ja, die kann man aber auch vorkompilieren, so dass vom Laufzeitverhalten
>kein grosser Unterschied zu C# besteht.

Naja...das einzige was da "kompiliert" wird, ist doch dass der 
Textbasierte Quellcode in Binäre Tokens umgewandelt wird, womit das 
natürlich schon relativ aufwändige Parsen entfällt. An C# insbesondere 
auf MS.NET (ja, das ist wirklich schnell) kommt das niemals ran.

File I/O, GUI etc, alles kein Problem mit Python, im Bereich File I/O 
sind die Libraries von Python und auch Ruby sowieso genial. Ärger 
kriegst du höchstens mit der seriellen, bzw. kann es da sein dass du für 
Linux und Win32 auch mal selber wieder ein bisschen hand anlegen musst.

Wenn du plattformunabhängige Utilities schreiben willst mit GUI etc, 
nimm Python oder Ruby. Willst du was wirklich universelles haben, lern C 
und C++, dann bist du auch im Embeddedbereich dabei.

von Paul H. (powl)


Lesenswert?

Ich glaube die Fährte führt mich immer mehr zu Python. Ich würde sagen, 
dass ich C++ dann eher irgendwann später mal lerne wenn ich auch Zeit 
dazu habe.

Dass ich mit C# jetzt angefangen hab ist halt unglücklich, da ich das 
ganze Wissen darüber wieder verwerfen muss.

lg PoWl

von Olli R. (omr) Benutzerseite


Lesenswert?

Paul Hamacher wrote:

> Dass ich mit C# jetzt angefangen hab ist halt unglücklich, da ich das
> ganze Wissen darüber wieder verwerfen muss.

Das wird Dir immer so ergehen, wenn du mit proprietaerer Software (gilt 
gleichfalls fuer Hardware) arbeitest. Irgendwann ist das erarbeitete 
Wissen im Gulli, wenn die Plattform nicht weiter entwickelt wird. Kann 
bei Open Source nicht passieren.

Olli

von Arc N. (arc)


Lesenswert?

> Warum bestehen wohl die Browser von MS bis heute nicht die ACID-Tests?

Warum sollten sie? Damit das im Vergleich zu nativen Applikation zu 
99.9% unbrauchbare AJAX-Gezappel überall läuft?

> Weil man auch in Redmond erkannt hat, dass der Trend zu Webapplikationen
> geht, bei denen es Wurst ist, welches OS auf dem Client laeuft. Und
> diesen Trend weg von nativen Apps will man dort nicht noch unbedingt b
> schleunigen.

Einfach mal versuchen über den Tellerrand zu schauen...

> Und unter Windows Vista will keiner mehr Programmieren, da die gut
> funktionierende API durch den .NET-Mist mit einem Haufen von
> Pseudosprachen ersetzt wurde.

> Das wird Dir immer so ergehen, wenn du mit proprietaerer Software (gilt
> gleichfalls fuer Hardware) arbeitest. Irgendwann ist das erarbeitete
> Wissen im Gulli, wenn die Plattform nicht weiter entwickelt wird. Kann
> bei Open Source nicht passieren.

Und bei solchen unqualifizierten Kommentaren erübrigt sich jede 
ernsthafte Diskussion.

Zur Frage des TOs:

Bleib entweder bei C# bzw. mach mal ein paar Sachen damit und teste die 
mit dem Mono Migration Analyzer (Moma) gegen eine aktuelle Mono-Version 
(>= 1.9). Der weitaus überwiegende Teil der Sachen wird problemlos 
laufen.
Statt WinForms, kann auch problemlos GTK# oder auch wxNET zum Erstellen 
des UI genutzt werden.
Oder eben Ruby oder Python, die es im übrigen auch mit Zugriff auf das 
gesamte Net Framework gibt: IronRuby bzw. IronPython.

von Paul H. (powl)


Lesenswert?

Ich mein es gibt ja auch so sonderfunktiönchen wie rahmenlose Windows, 
halbtransparente Böxchen die ich auf dem Desktop fixiere, die dann 
einblenden sobald ich mit der Maus drüberhovere. So nette gimmicks halt. 
Krig ich das über C# auch mit Linux hin?

Liege ich mit der Annahme, dass C# eher nur für den gebrauch mit Windows 
zu verwenden ist falsch? In .NET gibt es ja sicher n haufen Klassen für 
Windows Systemprogrammierung, bei Linux seh ich da wohl eher alt aus, 
oder?

lg PoWl

von Sven P. (Gast)


Lesenswert?

Paul Hamacher wrote:
> Ich mein es gibt ja auch so sonderfunktiönchen wie rahmenlose Windows,
> halbtransparente Böxchen die ich auf dem Desktop fixiere, die dann
> einblenden sobald ich mit der Maus drüberhovere. So nette gimmicks halt.
> Krig ich das über C# auch mit Linux hin?
Prinzipiell ja, prinzipiell nein. Bei Windows ist ja alles 
zusammengematscht, bei Linux kannste deine graphische Oberfläche dagegen 
leicht austauschen. Ob dein buntes Gezappel jetzt auch unter Linux 
funktioniert, hängt davon ab, ob diese austauschbare Oberfläche (KDE+QT, 
Gnome+GTK etc.) das unterstützt.
Dieses Transparenzgerümpel könnte man unter Linux z.B. mit Compiz 
realisieren.

> Liege ich mit der Annahme, dass C# eher nur für den gebrauch mit Windows
> zu verwenden ist falsch? In .NET gibt es ja sicher n haufen Klassen für
> Windows Systemprogrammierung, bei Linux seh ich da wohl eher alt aus,
> oder?
Irgendwo siehst du das schon richtig denk ich, die Frage ist halt, wie 
abstrakt deine .NET-Klassen gehalten sind und wie es dann um Mono steht. 
Auf der Mono-Seite muss halt erheblicher Mehraufwand getrieben werden. 
Während .NET für Windows eine Benutzeroberfläche malen können muss, muss 
Mono unter Linux mit allem Möglichen klarkommen (KDE, QT, Gnome, GTK, 
FVWM, X11 und was noch alles dazugehört).

von Olli R. (omr) Benutzerseite


Lesenswert?

Sorry, aber das wird mir hier zu bloed.

von Bartli (Gast)


Lesenswert?

Die Sonderfunktiönchen sind dann halt schon wieder OS-Abhängig. Auf X11 
musst du halt damit rechnen, dass ein Benutzer gar keinen Windowmanager 
installiert hat der sowas wie einen Desktop wo man Icons drauf speichern 
kann oder einen Taskbar hat.

>Liege ich mit der Annahme, dass C# eher nur für den gebrauch mit Windows
>zu verwenden ist falsch? In .NET gibt es ja sicher n haufen Klassen für
>Windows Systemprogrammierung, bei Linux seh ich da wohl eher alt aus,
>oder?

Das Problem hast du immer, mit .NET, mit Python, mit Ruby, mit C++, mit 
xyz. Du musst dir im Klaren sein welche OSe du unterstützen willst und 
dich entweder auf ein Featureset einschränken welche alle deine 
Zielsysteme anbieten (Tray-Icons gehören eher nicht dazu bzw. das 
Vorgehen um so ein Ding zu erstellen ist komplett verschieden. Mein 
Windowmanager hat jedenfalls keine Traybar), oder du bist dann halt 
plötzlich doch wieder nicht plattformunabhängig.

von Paul H. (powl)


Lesenswert?

Hm, alles kompliziert.

Wie gesagt ich möchte für Linux und Windows programmieren. Ja klar, 
Windows und Linux haben jeweils ihre eigenen features. Ich dachte mir 
blos, dass es da eventuell Überschneidungen gibt und irgendwelche 
Toolkits mir als einheitliche Schnittstelle dienen. Mir ist es auch 
recht, wenn ich für beide OS' verschiedene Teile des Programms separat 
bzw. zweimal programmieren muss. (Kann man im Programm eine Abfrage 
machen ob Windows oder Linux verwendet wird und dann zur Laufzeit die 
richtigen Funktionen aufrufen?)

Die Frage war eher auf C# und .NET bezogen. Das läuft ja alles auf eher 
hoher Ebene und nicht allzu nahe am Betriebsystem. Für Windows 
Systemprogrammierung gibt es da klassen, auf Linux ist .NET ja nun 
überhaupt nicht ausgelegt, demnach gibt es dafür keine Klassen. Wie komm 
ich dann aber überhaupt bei Linux ans System heran um so Spielereien wie 
Transparenz bla blub überhaupt zu ermöglichen?

Sollte ich da mal in nem Programmiererforum nachfragen?

lg PoWl

von Olli R. (omr) Benutzerseite


Lesenswert?

Es wurde dir hier schon mehrfach die Verwendung von wxwidgets als 
Toolkit empfohlen. Das gibt es fuer alle von dir genannten Plattformen, 
und es spielt mit Python, C++, C, GTK+, qt und was weiss ich nicht allem 
zusammmen.

Warum stellst du immer wieder dieselben Fragen?

Mach einfach!

von Helmut (Gast)


Angehängte Dateien:

Lesenswert?

LabVIEW-Progrogramm
-------------------

Ich möchte nicht in einen Sprachenstreit meine Zeit investieren, aber 
vielleicht ein kleines Beispiel.

Das LabVIEW-Programm im Anhang sendet einen String an die Serielle und 
ist ohne Einschränkung für Windows und Linux geeignet.

von Olli R. (omr) Benutzerseite


Lesenswert?

Labview ist keine Programmiersprache, eher eine Krankheit.

von Helmut (Gast)


Lesenswert?

warm nicht ?

von Arc N. (arc)


Lesenswert?

Paul Hamacher wrote:
> Hm, alles kompliziert.
>
> Wie gesagt ich möchte für Linux und Windows programmieren. Ja klar,
> Windows und Linux haben jeweils ihre eigenen features. Ich dachte mir
> blos, dass es da eventuell Überschneidungen gibt und irgendwelche
> Toolkits mir als einheitliche Schnittstelle dienen. Mir ist es auch
> recht, wenn ich für beide OS' verschiedene Teile des Programms separat
> bzw. zweimal programmieren muss. (Kann man im Programm eine Abfrage
> machen ob Windows oder Linux verwendet wird und dann zur Laufzeit die
> richtigen Funktionen aufrufen?)

http://www.mono-project.com/Gui_Toolkits#Alternative_Implementation_Approaches

if (Environment.OSVersion.Platform == PlatformID.Unix) {
}

> Die Frage war eher auf C# und .NET bezogen. Das läuft ja alles auf eher
> hoher Ebene und nicht allzu nahe am Betriebsystem. Für Windows
> Systemprogrammierung gibt es da klassen, auf Linux ist .NET ja nun
> überhaupt nicht ausgelegt, demnach gibt es dafür keine Klassen.

Da müsste man schon wissen, was genau gemacht werden soll.

> Wie komm
> ich dann aber überhaupt bei Linux ans System heran um so Spielereien wie
> Transparenz bla blub überhaupt zu ermöglichen?

"Mono's Winform implementation supports transparency on its windows as 
long as the underlying windowing system has support for it.

For Unix/X11 users this means that they must have the COMPOSITE 
extension enabled on their server, and they must be running a 
compositing manager, like xcompmgr. "
http://www.mono-project.com/FAQ:_Winforms#How_can_I_make_my_windows_alpha_blended.3F_.28transparent.29

> Sollte ich da mal in nem Programmiererforum nachfragen?
>
> lg PoWl

von Helmut (Gast)


Lesenswert?

@ paul

schreib doch genauer, weches Programm Du schreiben willst.

von Olli R. (omr) Benutzerseite


Lesenswert?

@Helmut: Thread lesen hilft. Dann waere Dir auch klar, warum LabVIEW 
fuer Pauls Ansinnen ungeeignet ist.

von Helmut (Gast)


Lesenswert?

Ich lese:

>>sind meine Anforderungen an die Programmierung nochmal:
>- Bin nur Gelegenheitsprogrammierer
>- Programme für Linux (Ubuntu) und Windows XP schreiben
>- Zugriff auf die serielle Schnittstelle
>- Schöne GUIs erstellen, auch mit Trayleiste usw. (und was es bei linux
>so gibt)
>- Ein bisschen Grafikprogrammierung um Statistiken usw. darstellen zu
>können

und Visualisierung bzw. Stringverarbeitung.

Aber vielleicht können wir eine genauere Spezifikation eines Problems 
erfahren.

von Olli R. (omr) Benutzerseite


Lesenswert?

Ich lese auch: "sonderfunktiönchen wie rahmenlose Windows,
halbtransparente Böxchen die ich auf dem Desktop fixiere, die dann
einblenden sobald ich mit der Maus drüberhovere. So nette gimmicks 
halt."

von Gelegenheitsprogrammierrer (Gast)


Lesenswert?

Paul lass dir als Einsteiger nicht irgendwelche Spezialsprachen oder 
Spezialtoolkits aufquatschen. Bleib weg von Sprachen, bei denen Klassen 
und abgeleitete Klassen im Spiel sind. Da wirst du nicht froh mit 
(erfordert viel Einarbeitungszeit). Bleib beim guten alten C, das ist 
eine einfache Syntax und schau nach wie weit du damit kommst. Für 
Windows braucht man erst mal nicht mehr, da gibt es immer noch den 
meisten Beispielcode und für Linux wird da auch was bei sein (GTK ..).

Und dann noch eins, Linux ist eine schöne Sache, aber wenn du nicht 
gerade schon lange und ausgiebig mit Linux arbeitest, dann bleib bei 
Windows. Da kennst du dich aus und dafür gibt es immer noch die meiste 
Software gerade auch im Bereich der Elektronik.

Bevor du dich ansonsten mit einer neuen, anderen Programmiersprache 
vertraut machen möchtest, schau dir vorher lieber genau die Syntax und 
Beispielcode an, ob dir das liegt. Programmieren wenn man es freiwillig 
macht, also nicht gezwungen ist, muss Spass machen (sonst siehst du kein 
Land). Ob dir da Python liegt, das will ich fast bezweifeln und Java 
würde ich gleich links liegen lassen. Warum? Ganz einfach, ich habe noch 
kein Java Programm jemals auf meinem Rechner gebraucht bzw. das was ich 
gesehen habe, hat immer erst einen unangenehm trägen Übersetzungsvorgang 
(JIT) gestartet. Sowas will ich nicht auf meinem Rechner sehen.

Auch wenn sich mir der Magen dabei umdreht, vielleicht hat Rufus sogar 
recht und RealBasic wäre was für dich (aber wie angedeutet, ich 
persönlich mag die Basic Dialekte nicht, es geht doch nichts über das 
gute alte C oder C++ ohne das dämliche objektorientierte Gedöns).

Ich glaube mit deinem selbst verkündeten \"Umstieg\" auf Linux legst du 
dir nur neue Steine in den Weg. Linux hab ich auch laufen (wie viele 
andere auch), aber mein Win würde ich dafür nicht aufgeben. Aber erst 
kommen die \"Auswanderer\" und dann irgendwann die \"Rückkehrer\" (wenn 
das Pendel wieder zurück schwingt).

von Gelegenheitsprogrammierer (Gast)


Lesenswert?

oops, jetzt ist der Nick richtig :)

von Helmut (Gast)


Lesenswert?

Also, jetzt muss man schon ehrlich sein.

"sonderfunktiönchen wie rahmenlose Windows,
halbtransparente Böxchen die ich auf dem Desktop fixiere, die dann
einblenden sobald ich mit der Maus drüberhovere. So nette gimmicks
halt."

...sind in Windows und Linux anders zu programmieren.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

> Bleib beim guten alten C, das ist eine einfache Syntax und
> schau nach wie weit du damit kommst.

Im Prinzip kein schlechter Rat. Das "bleib" ist hier natürlich falsch, 
der Threadstarter hat ja mit "C#" angefangen, und das hat mit C fast 
nichts mehr gemein.

> Für Windows braucht man erst mal nicht mehr

Wer Windows-Programme nur mit Win32-API in C schreibt, muss ernsthaft 
masochistisch veranlagt sein. Und den Petzold auswendig vor- und 
rückwärts aufsagen können ...

von Bartli (Gast)


Lesenswert?

> Bevor du dich ansonsten mit einer neuen, anderen Programmiersprache
> vertraut machen möchtest, schau dir vorher lieber genau die Syntax und
> Beispielcode an, ob dir das liegt.

Also es ist ja jetzt bei den meisten Sprachen nicht so, dass das ein 
allzugrosser Zeitaufwand ist...ne halbe bis ganze Stunde Ruby-Tutorial 
durcharbeiten dürfte z.B.  eigentlich genügen um zu entscheiden, ob man 
die Sprache mag oder nicht. Forth musste ich mir auch nur kurz (~2 min.) 
anschauen um zum Schluss zu kommen "genial einfach, aber so möchte ich 
eigentlich doch nicht Programmieren müssen".

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Gelegenheitsprogrammierrer wrote:
> Bleib beim guten alten C
...
> Programmieren wenn man es freiwillig
> macht, also nicht gezwungen ist, muss Spass machen

Na dann ist ja eine Sprache genau das richtige, in der sich sogar 
erfahrene Programmierer regelmaessig bei so einfachen Dingen wie dem 
Kopieren eines Strings den Fuss wegschiessen.

Wenn C# unter Linux gut laeuft (ausprobieren!), bleib einfach dabei. 
Ansonsten nimm Java/JRuby, das ist ausgereifter als Python+wx, und 
nirgendwo geht das Erstellen von wirklich portablen Programmen 
einfacher. Die paar Sekunden mehr Startzeit gegenueber einem 
kompilierten Programm tun nicht weh. C++ macht nur Sinn wenn du dich auf 
das Schreiben von Desktopsoftware spezialisieren willst.

von Gelegenheitsprogrammierer (Gast)


Lesenswert?

>> Bleib beim guten alten C, das ist eine einfache Syntax und
>> schau nach wie weit du damit kommst.

> Im Prinzip kein schlechter Rat. Das \"bleib\" ist hier natürlich falsch,
> der Threadstarter hat ja mit \"C#\" angefangen, und das hat mit C fast
> nichts mehr gemein.

Hab ich bewusst so formuliert. Hier bei uC dot net (welch schöne 
Assoziation zum \"Geraffel\" wie du, lieber Rufus, das Framework von MS 
doch gerne zu nennen pflegts :)) werden doch fleißig mit der 
Programmiersprache C AVRs anprogrammiert, deshalb das \"bleib\", soll 
heißen, bei den AVRs nutzt man C schließlich auch oder werden die 
neuerdings in Ruby programmiert (lerne immer gerne was dazu, also bitte 
umgehen mir sagen ;)).

>> Für Windows braucht man erst mal nicht mehr

> Wer Windows-Programme nur mit Win32-API in C schreibt, muss ernsthaft
> masochistisch veranlagt sein. Und den Petzold auswendig vor- und
> rückwärts aufsagen können ...

Ich bin dankbar Rufus, dass du diesen Begriff nennst. Der Petzold bietet 
nach meiner Erfahrung einen sehr gut verständlichen Einstieg in die 
Windows Programmierung. Eine unmittelbarere und direktere Methode kenne 
ich nicht und ich kenne sehr viele Bücher. Das soll natürlich nicht 
keißen, dass es nicht auch einfacher geht ein Fenster zu erzeugen. Das 
ist sogar mit QT banal, aber damit ist es halt auch nicht getan. Was die 
Schniistellen anbetrifft, da gibt es gute Möglichkeiten darauf 
zuzugreifen (war vor kurzem hier ein Thread mit Beispiel; oder es war 
sogar von dir, Rufus).

Nicht dass man mich falsch versteht, ich versuche mir auch achon die 
ganze Zeit QT, .NET und weiteres zu Gemüte zu führen (finde das alles 
hoch interessant). Wenn ich aber mal ein Progrämmchen wirklich brauche, 
dann lande ich irgendwie immer wieder beim altbekannten C. Meistens 
wird\'s ein Konsolenprogramm ohne GUI Elemente, aber es macht was es 
soll bzw. ist leicht debuggbar und kommt mir als Gelegenheitscoder halt 
zu pass.


> Andreas Schwarz wrote:
> Na dann ist ja eine Sprache genau das richtige, in der sich sogar
> erfahrene Programmierer regelmaessig bei so einfachen Dingen wie dem
> Kopieren eines Strings den Fuss wegschiessen.

Das passiert schon mal, aber man hat auch eine gewachsene 
Leidensfähigkeit (die übrigens mit jeder Linux-Installation oder 
Auffrischung um längen mehr gefordert ist als bei dem von dir genannten 
Beispiel ;)).

> Wenn C# unter Linux gut laeuft (ausprobieren!), bleib einfach dabei.

Zitat Paul H.

>> ein wenig C# gelernt und fühle mich vom Sprachkonzept erstmal
>> erschlagen

\"bleib\" ist gut :)

> Ansonsten nimm Java/JRuby, das ist ausgereifter als Python+wx, und
> nirgendwo geht das Erstellen von wirklich portablen Programmen
> einfacher. Die paar Sekunden mehr Startzeit gegenueber einem
> kompilierten Programm tun nicht weh.

Das sehe ich völlig anders. Das ist für mich ein absolutes KO-Kriterium. 
Nicht weil ich die Zeit nicht habe, sondern weil mir der just in time 
Übersetzungsvorgang einfach auf den Wecker fällt.

> C++ macht nur Sinn wenn du dich auf
> das Schreiben von Desktopsoftware spezialisieren willst.

Sehe ich ganz genauso. Gott bewahre uns davor einen Mikrocontroller mit 
abgeleiteten Klassen anprogrammieren zu müssen (um mal ein anderes 
Beispiel zu bringen). Ich weiß, die C++ Profis die es auch hier im Forum 
geben wird denken vermutlich nur noch in Objekten, deren Methoden und 
Eigenschaften, aber wem das nicht vertraut ist, der tut sich damit 
schwer.

> JRuby

Himmel hilf, jetzt ist wieder ein neuer Begriff für Paul gefallen

ich kenne auch noch einen

Jython oder besser gleich CPython ?

armer Paul !!

von Bartli (Gast)


Lesenswert?

> Na dann ist ja eine Sprache genau das richtige, in der sich sogar
> erfahrene Programmierer regelmaessig bei so einfachen Dingen wie dem
> Kopieren eines Strings den Fuss wegschiessen.

Der war gut.

Ansonsten: ich selber habe früher Ruby häufig für kleine 
Wegwerfprogramme benutzt, häufig als Teile von Buildprozessen (z.B. 
Fontkonverter und son Zeug). Davon bin ich ein bisschen weggekommen, C++ 
ist mein Allzwecktool geworden. Klar, mit GUI ist da zunächst einmal 
nichts, aber sonst? Zusammen mit boost habe ich also auch eine verdammt 
leistungsfähige Library zur Verfügung.

von Bartli (Gast)


Lesenswert?

>Ich weiß, die C++ Profis die es auch hier im Forum
>geben wird denken vermutlich nur noch in Objekten, deren Methoden und
>Eigenschaften, aber wem das nicht vertraut ist, der tut sich damit
>schwer.

Zu den C++ Profis gehörst du ja wohl nicht (ich auch nicht. Das hier ist 
einer: http://erdani.org). C++ drängt dir weder Klassen auf, noch ist es 
das einzige Feature was es von C abhebt...

von Gelegenheitsprogrammierer (Gast)


Lesenswert?

> Zusammen mit boost habe ich also auch eine verdammt
> leistungsfähige Library zur Verfügung.

Solche Tools gibt es doch wie Sand am Meer, nur ich frage mich, wie 
lange haben solche Libs eigentlich bestand? Irgendwie erinnere ich mich 
auch noch an sowas wie Objekt Windows, was mal ziemliche Popularität 
hatte zu Zeiten, als wir alle noch mit einem Windows 3x rumgegurkt sind. 
Wieviel von den heute gerade aktuellen Toolkits wird es in 5 bis 7 
Jahren noch geben? Oder schon in 3 Jahren? Ich hab das Gefühl ständig 
wird eine neue Sau durchs Dorf getrieben und keiner hat mehr den 
Überblick.

von Gelegenheitsprogrammierer (Gast)


Lesenswert?

> C++ drängt dir weder Klassen auf, noch ist es
> das einzige Feature was es von C abhebt...

sagt auch keiner, aber wenn es nur um ein aufgebohrtes C geht gerne, nur 
unter C++ verstehe ich was anderes

mal abgesehen davon, die Seite hilft dem Paul bestimmt nicht weiter

von Bartli (Gast)


Lesenswert?

> nur unter C++ verstehe ich was anderes

Achso, ja, böse, böse Klassen. OK.

von Gelegenheitsprogrammierer (Gast)


Lesenswert?

>> nur unter C++ verstehe ich was anderes

> Achso, ja, böse, böse Klassen. OK.

ich brauch sie jedenfalls nicht und hab sie auch noch nie vermisst

von Gerard C. (gerardchoinka)


Lesenswert?

Gelegenheitsprogrammierer wrote:
>>> nur unter C++ verstehe ich was anderes
>
>> Achso, ja, böse, böse Klassen. OK.
>
> ich brauch sie jedenfalls nicht und hab sie auch noch nie vermisst

aber du hast sicherlich schon mal fopen, fwrite, fprintf, fscanf usw. 
genutzt, findes du das desing schlecht?
natürlich wenn aus fprintf(datei, "..."); datei.fprintf("...") wird, ist 
alles viel schlechter :)
zusätlich bekommst du noch ein paar optionen die dir das leben leichter 
macht (z.b. ein autmatisches fclose)

von Daniel S. (theoretiker)


Lesenswert?

Zu sagen C++ wäre wie C nur mit Klassen wäre so ähnlich wie ..
ein Hochhaus ist wie eine Garage nur höher.

Um die Klassen sind zig Konzepte gestrickt worden.

von Gelegenheitsprogrammierer (Gast)


Lesenswert?

> Zu sagen C++ wäre wie C nur mit Klassen wäre so ähnlich wie ..

Und wer hat das gesagt? Braucht es wirklich solche Kommentare? ..

von Arc N. (arc)


Lesenswert?

> Ich weiß, die C++ Profis die es auch hier im Forum
> geben wird denken vermutlich nur noch in Objekten, deren Methoden und
> Eigenschaften, aber wem das nicht vertraut ist, der tut sich damit
> schwer.

Eigentlich ist jeder damit vertraut, nur wird manchem von zuviel 
imperativer Programmierung oder zuviel Theorie die Sicht verstellt, es 
ist die natürlichere Sichtweise...
Bsp: Man braucht ein paar Controller für das nächste Projekt
Also geht's auf zum (realen oder virtuellen) Laden (ein spezieller, d.h. 
abgeleitete Klasse, d.h. der Laden hat von seinen u.U. abstrakten Eltern 
gewisse Eigenschaften vererbt bekommen) und man übergibt diesem, wie 
auch immer, (Methode, Message) eine Liste (Datenstruktur) mit Bauteilen. 
Wie der Laden daran kommt oder der Distri oder wie und wo das Packaging 
stattfand/findet oder die Wafer hergestellt wurden oder wie/wo das 
Design der Controller stattfand, welche Personen (Vererbung) daran 
beteiligt waren, interessiert nicht (Kapselung). Dasselbe wenn man was 
zu essen braucht, zwar ein anderer Laden, der aber auch weiß, wie man 
bestimmte Teile besorgen kann, also gibt's so etwas wie eine, jetzt 
wird's komplizierter, entweder allgemeinere Klasse von Läden oder ein 
sogenanntes Interface, sprich eine Art Definition wie man mit bestimmten 
Objekten spricht. Oder so ähnlich...

Paket paket = Laden.besorgTeile(Liste teile);

von Paul H. (powl)


Lesenswert?

Wisst ihr was? Ich werde mich jetzt einfach mal mit Python beschäftigen, 
das artet hier ja schon wieder aus und jeder legt mir unbedingt 
irgendwas anderes ans herz. Irgendwann wenn ich dann in Python fit bin 
und der bedarf nach schnelleren und umfangreicheren Programmen aufkommt 
kann ich ja immernoch C++ lernen.

Kennt jemand geeignete Literatur zum Einstieg in Python oder soll ich 
mal wieder einen Schuss ins Blaue bei Amazon wagen, der ja nicht gerade 
das gelbe vom Ei war bei C#.

lg PoWl

von Daniel S. (theoretiker)


Lesenswert?

ich würde Dir erstmal empfehlen ein paar Tutorials
im Internet .. und wenn Dich danach die Lust überkommt
es in Paper zu haben, dann wirst Du schon selber
in der Lage sein die Bücher nach den Kriterien auswählen.

http://docs.python.org/tut/
und als pdf
http://www.cis.upenn.edu/~cis530_fall2001/materials/python-tutorial.pdf
http://diveintopython.org/

grüsse, daniel

von gutennacht (Gast)


Lesenswert?

Wenn du schon etwas Programmieren kannst
http://www.galileocomputing.de/openbook/python/index.htm
Schaue dir danach aber an was es für Änderung zu python 3.0 gibt.

von Olli R. (omr) Benutzerseite


Lesenswert?

Unter Windows ist die folgende Python-Distri zu empfehlen, da sind die 
meisten Pakete, die man sonst manuell nachinstallieren muss schon drin:

http://www.enthought.com/

Olli

von Olli R. (omr) Benutzerseite


Lesenswert?

gutennacht wrote:

> Schaue dir danach aber an was es für Änderung zu python 3.0 gibt.

Hm? Die aktuelle, stabile Version ist 2.5 Damit sollte er anfangen, 
nicht mit einer Beta.

von Tobi H. (tobi-) Benutzerseite


Lesenswert?

Gelegenheitsprogrammierer wrote:
>> Zusammen mit boost habe ich also auch eine verdammt
>> leistungsfähige Library zur Verfügung.
>
> Solche Tools gibt es doch wie Sand am Meer, nur ich frage mich, wie
> lange haben solche Libs eigentlich bestand?

Sehr lange, da große Teile der boost-lib in den neuen Standard für die 
kommenenden C++-Standard-Libs einfließen. Damit dürfte der Bestand für 
die nächsten 5-10 Jahre gesichert sein.

von Sven P. (Gast)


Lesenswert?

Tobi H. wrote:
> Gelegenheitsprogrammierer wrote:
>>> Zusammen mit boost habe ich also auch eine verdammt
>>> leistungsfähige Library zur Verfügung.
>>
>> Solche Tools gibt es doch wie Sand am Meer, nur ich frage mich, wie
>> lange haben solche Libs eigentlich bestand?
>
> Sehr lange, da große Teile der boost-lib in den neuen Standard für die
> kommenenden C++-Standard-Libs einfließen. Damit dürfte der Bestand für
> die nächsten 5-10 Jahre gesichert sein.

Was aber wiederum nicht für Qualität/Sinn spricht, weil BOOST auch viel 
Bockmist enthält, zumindest für diejenigen, die nicht uuuunbedigt direkt 
ihre EBNF-Grammatiken mit zehmal überladenen Operatoren direkt in C++ 
formulieren wollen :-)

von Maddin (Gast)


Lesenswert?

Hi.

Ich sag mal nicht was besser ist, sondern wie ich vor kurzem an die 
Sache herangegangen bin, da ich in einer ähnlichen Situation hänge bzw. 
gehangen habe.


Ich persönlich komme nicht so gut klar auf nicht native Anwendungen wie 
z.B. Java. Der Grund dafür war, das wenn ich ein Programm weitergebe 
unter Windows an einen Kollegen, dann möchte ich das es bei ihm läuft, 
ohne das er sicherst eine entsprechende Laufzeitumgebung (JRE) 
installieren muß. Denn nicht immer haben die Leute denen man sein 
Programm geben möchte vollen Zugriff auf ihr System (speziell in vielen 
großen Firmen so, das nur eingeschränkte Rechte vorhanden sind) um 
solche Umgebungen nachzuinstallieren. Deshalb viel für mich .NET und 
Java vorerst weg.

Nachdem ich mir dann einige Tutorials im Netz angeschaut hatte bin ich 
auf

C von A-Z von Jürgen Wolf gestoßen.
Hier das openbook dazu:
http://www.galileocomputing.de/openbook/c_von_a_bis_z/

Was ich dabei sehr super fand, das er wirklich bei den Grundlagen 
anfängt und immer wieder Unterschiede zwischen Windows und Linux genannt 
werden. Ich hasse es nämlich wie die Pest wenn gerade zum Erlernen einer 
Sprache "Sachen" allein geschehen. Deshalb fand ich es gerade als 
Elektroniker sehr angenehm das C nicht so abstrakt ist und man 
nachvollziehen kann was die eigenen Codezeilen + Includedateien bewegen. 
Als ich vor einigen Jahren mich mal an Java vesucht habe, da ist mir 
zuviel automatisch passiert (Im täglichen Leben mag einem das die Arbeit 
erleichtern, aber den Lernprozess stört es).

Was mich dann weiter dazu bewegt hat auf C zu setzen ist, das es so gut 
wie auf jeder Plattform läuft und es auch entsprechend viele freie 
Compiler und auch IDE`s gibt. Ich kann dadurch erstmal die Sprache am PC 
erlernen und kann dann die Grundlagen später wunderbar gut umsetzen für 
die µC Programmierung, da die auch neben Assembler (für zeitkritische 
Sachen) sehr viel in C stattfinden.

Das C sowohl unter Windows als auch unter Linux vernünftig läuft (beide 
Systeme werden damit in nicht unerheblichen Teilen erstellt).

Java und Perl habe ich für mich persönlich nicht verdrängt, es aber 
aufgrund oben angeführter Gründe nicht priorisiert für die erste zu 
erlernende Sprache. Sie sind für mich nach hinten geschoben, wenn es 
denn für mich daran geht Serverseitige Programme zu erstellen (Beispiel: 
Live-Video ins Internet streamen etc.).

.NET und alles andere proprietäre kommt bei mir im Regelfall nicht in 
die Tüte ((Zwangs-)Ausnahmen: Flash, Windows, Treiber und das eine oder 
andere Spiel).

Was ich ansonsten noch sehr interessant fand ist die Tatsache, das ich 
seit dem ich C lerne mir auch einen sehr guten Überblick darüber 
verschaffen kann was ein einfacher Quelltext einer anderen Sprache 
aussagen möchte, da ja C für vieles die Basis war/ist bzw. stark 
beeinflussend wirkt.

Was die Betriebssysteme angeht, so habe ich bei mir XP, Vista und 
Kubuntu Linux laufen, wobei ich jedoch hauptsächlich meine kleinen 
Programme unter Windows schreibe, da ich nicht nur für mich schreiben 
möchte, sondern meine Programme auch anderen zugänglich machen möchte. 
Und da sich nunmal (leider) die Anzahl der Linuxnutzer in meinem 
Bekannten- und Kollegenkreis auf 0 beläuft, würde die Leute mich immer 
nur fagend anschauen was ich ihnen da für eine komische Datei geschickt 
habe :).

Ich hoffe das ich Dir helfen konnte indem ich Dir meine Beweggründe und 
Überlegungen offen gelegt habe.

Gruss

Maddin

von Jupp (Gast)


Lesenswert?

>unglücklicherweise dazu entschieden auf Linux umzusteigen

Allerdings!! Geht mir nicht in die Birne, das Netz ist voll mit 
Berichten über die Katastrophe Frickelschrottung-OS.

von Paul H. (powl)


Lesenswert?

Hm, danke für die hilfreichen posts.

Ist die ganze Sache mit Python wirklich soviel einfacher? Ich bin wieder 
ins Zweifeln gekommen ob ich tatsächlich auf Linux umsteigen und mir den 
Stress geben soll oder ob ich bis auf weiteres bei Windoof XP bleiben 
soll womit alles läuft?

Dann könnte ich mit C# weiter machen, was mich daran jedoch noch 
beängstigt ist halt dass .NET halt proprietär und eignetlich nur für 
Windows zu gebrauchen ist.

Würde mir ein erfahrener Python Programmierer mal sagen, ob das alles 
was ich vor habe mit Python wirklich so einfach geht und ob die 
Ausführgeschwindigkeit von Python schnell genug ist, gegenüber anderen 
Sprachen wie C++, C#..

Java mag ich im Moment nicht. In C hab ich wohl recht viel Aufwand, 
natürlich ist da der Lerneffekt groß aber ich möchte nicht sooviel Zeit 
in Programmierung aufwänden. Zumindest nicht sehr viel mehr als eben 
wirklich nötig. Hab ja noch andere Dinge womit ich mich beschäftigen 
kann.

Klar, es wird wohl nicht bei einer Sprache bleiben, ich brauch aber 
irgendwas zum Anfangen womit ich weit komme. Ich denke da an Python, C, 
C++ oder C#. Nur was?

Ich sag euch mal was ich von folgenden Sprachen denke, bitte bekräftigt 
oder widerlegt meine Aussagen je nachdem:

C
- Ist alt und nicht OOP, schlimm oder nicht schlimm?
- Nach Beispielcode in Wiki und anderen Berichten ist es sehr 
kompliziert darin GUIs zu programmieren
+ Universell einsetzbar
+ Native Anwendungen

C++
- Schwierig und kompliziert, nicht zum Einstieg zu empfehlen?
+ Neuer, OOP
+ Sehr universell einsetzbar, alles möglich
+ Native Anwendungen

C#
- An .NET und somit ziemlich an MS Windoof gebunden
- Proprietär
- Braucht .NET als Basis
+ Durch .NET vieles einfacher
+ Einfache GUI-Programmierung

Python
+ Man kann Programme um einiges schneller als mit anderen Sprachen 
erstellen
+ Sehr einfache und praktische Sprache (nicht typenstreng, einfache 
Syntax)
+ Sehr einfache GUI-Programmierung
- benötigt Python Interpreter
+ Kann mit Interpreter zusammen in exe-file gepackt werden
- Langsam, da interpretierte Sprache

Was stimmt davon, was nicht? Hat Python wirklich solche Vorteile? Ist C# 
vielleicht doch das richtige und vor allem zukunftssicher? Lieber gleich 
in die harte C++ Welt einsteigen oder erst eine leichtere Sprache zum 
Einstieg lernen?

Wie gesagt ich möchte kein Programmierprofi werden, nur ein paar schöne 
GUI-Anwendungen programmieren mit denen ich mein Kram steuern kann.

lg PoWl

von Stefan B. (Gast)


Lesenswert?

Ich kenne Java und C seit längerer Zeit.
Ich habe vor 2 Monaten Python gelernt,
weil ich beruflich damit ein größeres Softwareprojekt umsetzen soll, das 
heißt ich habe jetzt 2 Monate lang den ganzen Tag Python programmiert 
und getestet.

Die Software die ich entwickele, muss mit größerern Datenmengen
(~40MB ASCII file input) klarkommen.

Ich war selber überrascht, wie schnell Python ist, ich hätte es 
langsamer eingeschätzt.
Was mir aber auch aufgefallen ist, ist die extrem kurze 
Entwicklungszeit.
Man hat in sehr kurzer Zeit brauchbare Ergebnisse. Das ist insbesondere 
in Firmen Geld wert, dürfte dich also nicht betreffen, schön ist es 
trotzdem :-)

Ich möchte inzwischen die vielen einfachen buildin funktionen nicht mehr 
missen, da es wirklich einfach geht.

Da du schon Programmieren kannst, kann ich dir Python empfehlen, jedem 
Programmieranfänger(also einer der noch gar kein Kontakt mit dem 
Programmieren hatte) möchte ich lieber eine streng typisierte Sprache 
ans Herz legen, weil man dann sauberer prgrammiert.

Gruss
Stefan

von Bartli (Gast)


Lesenswert?

Paul:
Probier doch einfach mal ein paar Dinge aus. So ein Aufwand ist das 
jetzt wirklich nicht. Die siehst dann schon schnell ob du lieber C#/.NET 
weiterbenutzt oder lieber Python lernst. Schnell ein GUI 
zusammengeklatscht hast du jedenfalls mit Python/TK definitiv schneller.

>Was aber wiederum nicht für Qualität/Sinn spricht, weil BOOST auch viel
>Bockmist enthält, zumindest für diejenigen, die nicht uuuunbedigt direkt
>ihre EBNF-Grammatiken mit zehmal überladenen Operatoren direkt in C++
>formulieren wollen

Kann ja jeder für sich entscheiden, welchen Bockmist von boost er 
benutzt und welchen Bockmist er sich anderweitig besorgt. Scanner/Parser 
mache ich auch lieber mit externen Tools, ist schon so.

Das ändert nichts an der Sache dass es
1) boost schon lange gibt
2) C++ noch länger
3) Teile von boost (interessanterweise die eher bekannteren Teile welche 
eher nicht als Bockmist bezeichnet werden) vermutlich in den C++ 
Standard aufgenommen werden
4) Das Ding Open Source Software ist und daher eher nicht einfach so 
plötzlich von der Bildfläche verschwinden wird.

Das ist ja das schöne an OSS: auch wenn sie niemand mehr wartet, an den 
Quellcode kommt man immer noch ran.

von Gelegenheitsprogrammierer (Gast)


Lesenswert?

@Maddin

Ich sehe das ähnlich wie du, wobei ich .NET in Kombination mit C# nicht 
beiseite wischen würde (mitsamt solcher Toolkits wie QT und was es noch 
vergleichbares gibt (gtk.. wx..)). Für mich ist C und die Win32 API die 
absolute Grundlage zusammen mit x86 Assembler. Schon die MFC geht mir 
auf den Geist (ich habe damit nicht das Gefühl, dass es einfacher wird 
und Programme vom Umfang eines OpenOffice werde ich eh nicht schreiben). 
Habe seinerzeit mit Pascal begonnen (das gute alte Borland TP) und bin 
dann zu Turbo C aus dem gleichen Hause gewechselt. Unter DOS ging das 
damals einfach klasse, wobei für mich das wichtigste Element der Borland 
IDE die gut ausgebaute Hilfefunktion mit den kurzen 
Programmcode-Beispielen war). Hätte im Prinzip auch bei Delphi landen 
können, ist aber irgendwie nicht geworden. Als ich C kennen lernte kam 
mir Pascal einfach als eine zu geschwätzige Sprache vor, mit dem ewigen 
Begin .. End. Die Klammern machten für mich die Quelltexte um einiges 
übersichtlicher. Zumal C universeller als Pascal und Delphi war und auf 
jeder Plattform verfügbar sich mindestens ein Compiler befand.

Python hab ich mir mal angesehen und muss sagen, da fühle ich mich 
eigentlich mit dem gewohnten C auf Anhieb auch ganz gut "zuhause". Es 
braucht halt einen Interpreter. Dadurch ergibt sich der Nachteil, dass 
mit 'mal eben ein Python Programm ausführen' auf Rechnern, die die 
Laufzeit Umgebung nicht installiert haben is nicht! Das ist auch der 
Nachteil bei .NET. Wenn das Programm auf älterer HW laufen soll (z.B. 
altes Notebook, Zweitrechner etc.) dann fangen die Probleme wieder an. 
Die neusten Laufzeitumgebungen laufen wieder nicht, weil dort vielleicht 
nur ein Windows 98 läuft und/oder es ist zuwenig Speicher vorhanden und 
das Programm wirkt dort träge etc. An solche Hindernisse wird meistens 
erst mal nicht gedacht, in der aktuellen Freude über die tollen bunten 
aber auch aufgeblähten 'Cross Plattform Application Toolkits' pipapo... 
Überhaupt würde ich raten als jemand der mit der GUI-Programmierung 
beginnt erstmal Abstand zu nehmen von tollen bunten 
Oberflächen-Schnörkeleien und erst mal mehr Gewicht in die Funktionaliät 
des eigenen Programms zu legen, als in das Aussehen. Lieber das 
versuchen was nötig d.h. unumgänglich erscheint, als das gleich haben 
wollen, was möglich ist, sonst legt man sich nur unnötig Steine in den 
Weg.

Mal ne Frage an die Python-Verwender. Mir ist aufgefallen, dass die 
Syntax (bis auf die Möglichkeit mit der Verwendung von OOP 
Sprachelementen) recht ähnlich mit der von C ist, nur dass anscheinend 
u.A. auf Klammern verzichtet wird. Jetzt hab ich aber auf genau dieser 
Seite

http://docs.python.org/dev/3.0/whatsnew/3.0.html

gesehen, dass sich das anscheinend gerade ändert. Siehe

Old: print "The answer is", 2*2
New: print("The answer is", 2*2)

Kann es sein, dass Python damit C noch ähnlicher wird? Ich meine das ist 
ja keine kleine Veränderung, wenn ich mir anschaue wie wenig sich über 
die vielen Jahre am "Kernighan und Ritchie C" geändert hat bzw. wieviele 
Jahre dazwischen die Sprache stabil blieb, dann kommt mir so eine 
Änderung wie oben aufgezeigt in einem Versionssprung doch nicht gerade 
klein vor. Auf was soll ich mich denn als Neuling dann bei Python schon 
wieder einstellen? Auf den 'old Style' oder besser gleich auf den 'New 
Style'? Ich frage das bewusst, weil mich ständig ein Gefühl begleitet, 
dass ich gar nicht so schnell mir eine Übersicht verschaffen kann (und 
damit eine neue Sprache mir aneignen kann), wie sich die Syntax der 
meisten Sprachen ratzfatz wieder ändert?!

Für den Originalposter sind hier nochmal (falls noch nicht bekannt) zwei 
sehr schöne Links für den allerersten Überblick über die jeweile Syntax 
eines 'Hallo, Welt' Programms. Damit kann man zumindest schnell 
herausfinden, was einem eher liegt, oder was einem spontan die 
Stirnfalten im Gesicht in Bewegung bringt.

"Liste von Hallo-Welt-Programmen/Programmiersprachen"

http://de.wikipedia.org/wiki/Liste_von_Hallo-Welt-Programmen/Programmiersprachen

"Liste von Hallo-Welt-Programmen/Sonstige"

http://de.wikipedia.org/wiki/Liste_von_Hallo-Welt-Programmen/Sonstige

von yalu (Gast)


Lesenswert?

@Gelegenheitsprogrammierer:

> Mal ne Frage an die Python-Verwender. Mir ist aufgefallen, dass die
> Syntax (bis auf die Möglichkeit mit der Verwendung von OOP
> Sprachelementen) recht ähnlich mit der von C ist, nur dass
> anscheinend u.A. auf Klammern verzichtet wird.

Naja, ein paar Operatoren (z.B. &, ==, +=) heißen gleich, ansonsten
hat Python mit C nicht viel mehr Gemeinsamkeiten als mit anderen
Sprachen.

> Jetzt hab ich aber auf genau dieser Seite
>
> http://docs.python.org/dev/3.0/whatsnew/3.0.html
>
> gesehen, dass sich das anscheinend gerade ändert. Siehe
>
> Old: print "The answer is", 2*2
> New: print("The answer is", 2*2)

Es ging hier nicht darum, mehr Klammern einzuführen, sondern aus der
bisherigen print-Anweisung eine print-Funktion zu machen. Dadurch wird
die Anzahl der Schlüsselwörter um 1 reduziert, und die Python-
Entwickler können künftig, ohne die Syntax zu ändern, print leichter
um neue Features erweitern.

> Kann es sein, dass Python damit C noch ähnlicher wird?

Es wird zumindest eine ähnliche Philosophie wie in C verfolgt, nämlich
den Sprachumfang klein zu halten und alles, was nicht unbedingt in die
Sprache aufgenommen werden muss (und damit deren Syntax und Compiler
komplexer macht) in Bibliotheksfunktionen auszulagern. Gerade die
Ein-/Ausgabe-Operationen hatten in den meisten älteren Sprachen (z.B.
Fortran, Basic, Pascal) eine spezielle Syntax, in C wurde daraus eine
ganz gewöhnliche Funktion, die damit die gleiche Syntax wie
mathematische oder benutzerdefinierte Funktionen hat.

> ... wenn ich mir anschaue wie wenig sich über die vielen Jahre am
> "Kernighan und Ritchie C" geändert hat bzw. wieviele Jahre
> dazwischen die Sprache stabil blieb, dann kommt mir so eine Änderung
> wie oben aufgezeigt in einem Versionssprung doch nicht gerade klein
> vor.

Python ändert sich im Vergleich zu vielen anderen Programmiersprachen
sehr schnell. Damit daraus kein unhandliches Monster ensteht, werden
nicht mehr benötigte alte Features nach einer gewissen Zeit auf Kosten
der Abwärtskompatibilität hinausgeschmissen. Damit man nicht bei jeder
neuen Python-Release seine Programme anpassen muss, werden ältere
Python-Releases nach Erscheinen des Nachfolgers noch eine Weile
weitergepflegt. Bspw. gab es für das Release 2.3, das schon 2004 von
2.4 und 2006 von 2.5 abgelöst wurde, erst vor Kurzem ein Bugfix-
Release. Teilweise werden auch Konvertierungstools angeboten, um den
Umstieg auf ein neues Release etwas erleichtern.

von Daniel S. (theoretiker)


Lesenswert?

python hat mit C nur oberflächlich eine Ähnlichkeit
python ist teilweise imperativ teilweise funktional geprägt
list comprehensions hat es von haskell übernommen
als paar Beispiele ...
map(lambda x: x^2, [cos(i) for i in range(10) if i!=5])
filter(str, [1,2,"string",{}])
p = lambda a,b,c: lambda x: a*x^2+b*x+c

wie in matlab gilt in python die regel, dass man
eingebaute funktionen benutzen sollte, anstatt
einer for oder while schleife. (map,filter)

man kann rechenintensiven code in c modul auslagern
und aus python aufrufen (vergleiche auch hier mit matlab)

von Gerard C. (gerardchoinka)


Lesenswert?

Paul Hamacher wrote:
> Hm, danke für die hilfreichen posts.
>
> Ist die ganze Sache mit Python wirklich soviel einfacher? Ich bin wieder
> ins Zweifeln gekommen ob ich tatsächlich auf Linux umsteigen und mir den
> Stress geben soll oder ob ich bis auf weiteres bei Windoof XP bleiben
> soll womit alles läuft?

Also der Umstieg ist nicht leicht, du kannst den Umstieg von Windows auf 
Linux etwas flüssiger gestalten,
mit hilfe von:
cygwin (portierung von linux programmen)
andLinux bzw. coLinux (Portierung des Linux Kernel)

Zum Thema auf Windows XP läuft alles:
Temp leeren, nicht aufhören wenn eine Datei blockiert ist:
rm  /tmp/* -rf
(Unter Windows darf man raten, in welchen Ordner sich die Datei 
befindet, die das Löschen abbricht).
Es gibt noch Tausende nützlicher Kommandos, für die man unter Windows 
entweder Shareware braucht oder man macht es per Hand.

Linux: mehrere Desktops, Fenster immer in Vordergrund, Tastenkombination 
für Programmfenster

Windows: man braucht Virenscanner und Desktop-Firewalls

Windows: man muss sich Unmengen Freeware/Shareware installieren (Packer, 
PDF Betrachter, Bildbetrachter, Musikplayer, Office usw.)

Linux: Copy&Past durch Markieren + 3te-Maustaste ist für einen 
Programmierer eine Wohltat.

Irgendwann war ist es leid, ständig mit den Unzulänglichkeiten zu leben.




> Dann könnte ich mit C# weiter machen, was mich daran jedoch noch
> beängstigt ist halt dass .NET halt proprietär und eignetlich nur für
> Windows zu gebrauchen ist.

.NET gibt es durch mono auch für Linux, sogar ein paar Standardprogramme 
sind in C# / gtk# geschrieben (gtk# ist ein WinForm Ersatz)
Problematisch sind bisher nur die WinForms.

> Würde mir ein erfahrener Python Programmierer mal sagen, ob das alles
> was ich vor habe mit Python wirklich so einfach geht und ob die
> Ausführgeschwindigkeit von Python schnell genug ist, gegenüber anderen
> Sprachen wie C++, C#..

Python ist wirklich schnell,
ich habe hier ein Python Programm das rekonstruiert 3D Volumen aus 
Röntgenbildern.
Die Koordination von Threads, eingaben, Parametern, Caches, Dateien ist 
direkt in Python geschrieben, die wirklich rohen Rechenaufgaben  macht 
ein Modul welches in C geschrieben wurde.
Das Programm rechnet aber auch 12h (99% der Zeit verbringt es im 
C-Modul), da lohnt es sich einige Module in C/C++ zu implementieren.

Ich wollte jetzt kein negativ Beispiel bringen, du kannst sehr gut 
Python und C/C++ kombinieren wo es sich lohnt.

Es lohnt nicht über Geschwindigkeit zu reden wenn ... beteiligt sind:
-Netzwerke
-Serielleschnittstellen
-Dateien
-Datenbanken
-interaktives Verhalten

Ich kann dir noch was sagen, ich arbeite zurzeit mit Oktave das dürfte 
ein Zacken langsamer sein als Python und c,
nun ist es aber so das Oktave eine schöne Lib hat und es ist damit viel 
leichter etwas zu programmieren als mit C.
Meine Programme in Oktave sind um den Faktor >1000 mal schneller (die 
Zahl habe ich mir nicht aus den Fingern gesogen) weil ich ein anderen 
Algorithmus benutzt habe, klar wenn ich den gleichen Algorithmus in C 
implementiere wird er schneller sein als in octave, aber darum gehts 
nicht in C wäre ich immer noch mit compilieren  und testen Beschäftigt.

Wir haben mal in Studium ein Modul für eine CD-Verwaltung schreiben 
müssen (in C). 3h Arbeit und 4 DIN A 4 Seiten Quelltext

In Python waren das 10 Zeilen.


> Java mag ich im Moment nicht. In C hab ich wohl recht viel Aufwand,
> natürlich ist da der Lerneffekt groß aber ich möchte nicht sooviel Zeit
> in Programmierung aufwänden. Zumindest nicht sehr viel mehr als eben
> wirklich nötig. Hab ja noch andere Dinge womit ich mich beschäftigen
> kann.
>
> Klar, es wird wohl nicht bei einer Sprache bleiben, ich brauch aber
> irgendwas zum Anfangen womit ich weit komme. Ich denke da an Python, C,
> C++ oder C#. Nur was?

Python oder C#



> Ich sag euch mal was ich von folgenden Sprachen denke, bitte bekräftigt
> oder widerlegt meine Aussagen je nachdem:
>
> C
> - Ist alt und nicht OOP, schlimm oder nicht schlimm?

Eine Sprache unterstützt OOP oder tut es nicht, man kann auch in C OOP 
Programmieren siehe: fopen, gtkmm
Die Sprachen C++, Python, Java, C# usw. unterstützen OOP Programmieren, 
man ist aber sehr wohl in der Lage nicht OOP zu programmieren.

> - Nach Beispielcode in Wiki und anderen Berichten ist es sehr
> kompliziert darin GUIs zu programmieren

Ja

> + Universell einsetzbar

Ja

> + Native Anwendungen

Ja


Den wichtigsten Punkt gegen C hast du vergessen: eine sehr beschränkte 
Standard Lib


> C++
> - Schwierig und kompliziert, nicht zum Einstieg zu empfehlen?

Schwieriger

> + Neuer, OOP
> + Sehr universell einsetzbar, alles möglich
> + Native Anwendungen
>
> C#
> - An .NET und somit ziemlich an MS Windoof gebunden
> - Proprietär
> - Braucht .NET als Basis

Es gib auch mono, leider bringt MS alle paar Jahre eine neue Version und 
mono ist immer ein Schritt zurück.

> + Durch .NET vieles einfacher

Die Python Lib macht genauso alle einfacher.

> + Einfache GUI-Programmierung

Ja

>
> Python
> + Man kann Programme um einiges schneller als mit anderen Sprachen
> erstellen
> + Sehr einfache und praktische Sprache (nicht typenstreng, einfache
> Syntax)
> + Sehr einfache GUI-Programmierung
> - benötigt Python Interpreter
> + Kann mit Interpreter zusammen in exe-file gepackt werden
> - Langsam, da interpretierte Sprache

Langsamer, man muss das immer relativ sehen.


> Hat Python wirklich solche Vorteile?

Gegen über was? und in welchen Zusammenhang?

> Ist C# vielleicht doch das richtige und vor allem zukunftssicher?

Zukunftssicher ist es sicherlich nicht, (man muss nicht weit in der 
Verganheit schauen)
-vb6.0 wurde eingestampft, der Konverter funktionierte nicht, Programme 
mussten umgeschrieben werden.
-spätesten mit Windows 7 wird es neue Funktionen geben, die man nicht in 
Windows XP benutzen kann

> Lieber gleich
> in die harte C++ Welt einsteigen oder erst eine leichtere Sprache zum
> Einstieg lernen?

Wenn du 3D Spiele programmieren, größere und schnelle Desktop Programme 
schreiben willst, alles was viel Performance braucht dann ja.

Wenn du mal vor hast dich in Richtung Linux zu bewegen, Python.

Mit C# wirst du wahrscheinlich schneller bei GUIs ankommen.

von Paul H. (powl)


Lesenswert?

So, vielen Dank! Ich habe mich soeben für meine Einstiegssprache zur 
PCprogrammierung für Python entschieden.

C, C++, C#, Java.. keine Ahnung, kann ich hinterher immernoch lernen :-) 
C# ist wohl darunter noch das einfachste, allerdings ist mir .NET ein 
Dorn im Auge.

lg PoWl

von Arc N. (arc)


Lesenswert?

> C
> - Ist alt und nicht OOP, schlimm oder nicht schlimm?

Hängt vom Anwendungsfall ab.
Persönlich benutze ich reines C nur noch für Embedded-Entwicklungen,
alles andere in "höheren" Sprachen.

> - Nach Beispielcode in Wiki und anderen Berichten ist es sehr
> kompliziert darin GUIs zu programmieren

Ohne entsprechende Bibliotheken, ja, deutlich aufwendiger.

> + Universell einsetzbar
> + Native Anwendungen

Abgesehen von einigen Ausnahmen erzeugen auch alle anderen Genannten 
nativen Code. Entweder kurz vor der Ausführung (JIT, Just In Time) oder 
z.B. bei der Installation, vor der ersten Ausführung (AOT, Ahead Of 
Time).
AOT kann man bei .NET entweder mit ngen bei der Installation machen oder 
man nimmt Tools wie Salamander und erzeugt Stand-Alone-Programme, die 
ohne installiertes Framework auskommen.

> C++
> - Schwierig und kompliziert, nicht zum Einstieg zu empfehlen?

Hängt von den Features ab, die man verwenden will

> + Neuer, OOP
"I invented the term Object-Oriented, and I can tell you I did not have 
C++ in mind." Alan Kay

> + Sehr universell einsetzbar, alles möglich

Sehr vieles, aber nicht alles möglich (u.a. richtige Introspektion, 
Reflexion, dynamische Typen, dynamische Codegenerierung etc.)

> C#
> - An .NET und somit ziemlich an MS Windoof gebunden
> - Proprietär

Einen ISO/ECMA-Standard würde ich nicht unbedingt als proprietär 
bezeichnen.

> - Braucht .NET als Basis

Brauchen tuts das nicht, man kann sich auch auf die standardisierten 
Klassen beschränken

> + Durch .NET vieles einfacher
> + Einfache GUI-Programmierung

Python
> + Man kann Programme um einiges schneller als mit anderen Sprachen
> erstellen

Hängt auch wieder vom zu lösenden Problem ab,

> + Sehr einfache und praktische Sprache (nicht typenstreng, einfache
> Syntax)
> + Sehr einfache GUI-Programmierung

Hängt vom verwendeten Toolkit ab, GTK, wxWidgets etc.

> Ist C# vielleicht doch das richtige und vor allem zukunftssicher?
> Zukunftssicher ist es sicherlich nicht, (man muss nicht weit in der
> Verganheit schauen)

Der Großteil der Entwicklung unter Windows wird Richtung C# + .NET gehen 
d.h. solange Windows einen Marktanteil >> 90% hat, wird sich daran auch 
nichts ändern. Auch wird sich das mono-Projekt nicht von heute auf 
morgen verabschieden.

> -vb6.0 wurde eingestampft, der Konverter funktionierte nicht, Programme
> mussten umgeschrieben werden.

Wer sich zehn Jahre lang nicht um die Weiterentwicklung der Anwendung 
kümmert, darf sich nicht wundern, wenn es irgendwann nicht mehr läuft.
Wenn man weiß, dass die Anwendung so lange unterstützt werden muss, hat 
man auch die zur Pflege notwendigen Entwicklungsumgebungen und 
Betriebssysteme etc. mit versioniert und kann bei Bedarf problemlos 
Änderungen durchführen...

> -spätesten mit Windows 7 wird es neue Funktionen geben, die man nicht in
> Windows XP benutzen kann

XP wird dann ca. acht bis zehn Jahre auf dem Markt sein -> Zeit genug 
sich darauf vorzubereiten.

von Daniel F. (df311)


Lesenswert?

Paul Hamacher wrote:
> So, vielen Dank! Ich habe mich soeben für meine Einstiegssprache zur
> PCprogrammierung für Python entschieden.
>

das wichtigste, das man lernt wenn man mit der programmierung beginnt, 
sind konzepte.
wenn man mal die grundlegenden konzepte der programmierung halbwegs 
verstanden hat, macht es keinen großen unterschied mehr, ob die sprache 
nun brainf*ck, taxi, prolog, ocaml, befunge, java2k, malbolge oder wie 
auch immer heißt. klar, die syntax ist nicht immer die gleiche und 
manche sprachen haben auch ein anderea programmierparadigma (funktional, 
prozedural, ...) aber im großen und ganzen haben alle sprachen 
ähnlichkeiten.

p.s.
ja ich weiß, prolog und ocaml sind nicht so esoterisch wie die anderen 
von mir genannten sprachen. aber ich ordne sie wegen einer persönlichen 
abneigung den esoterischen zu...

von Sven P. (Gast)


Lesenswert?

Soweit seh ich das auch so, nur einige kleinere Dinge sind mir da 
aufgestoßen

Arc Net wrote:
> Einen ISO/ECMA-Standard würde ich nicht unbedingt als proprietär
> bezeichnen.
WAS ist denn standardisiert? Die Sprache, oder auch all die Bibliotheken 
und Funktionen, die C# so attraktiv machen?

>> -vb6.0 wurde eingestampft, der Konverter funktionierte nicht, Programme
>> mussten umgeschrieben werden.
>
> Wer sich zehn Jahre lang nicht um die Weiterentwicklung der Anwendung
> kümmert, darf sich nicht wundern, wenn es irgendwann nicht mehr läuft.
> Wenn man weiß, dass die Anwendung so lange unterstützt werden muss, hat
> man auch die zur Pflege notwendigen Entwicklungsumgebungen und
> Betriebssysteme etc. mit versioniert und kann bei Bedarf problemlos
> Änderungen durchführen...
DAS ist so falsch. Als ich damals mit VB5.0 angefangen habe und nach 
VB6.0 umgestiegen ging, lief das bis auf einige Kleinigkeite prima. Aber 
schon den Umstieg von VB6.0 auf die "Nachfolgeversion" VB.NET habe ich 
sein gelassen. Da wäre mir einfach zu viel umzuschreiben gewesen; 
stattdessen hab ich einen Mehraufwand in Kauf genommen und mit 
C/C++/portables angefangen und muss mir keine Gedanken mehr machen, wann 
VB das nächste Mal derart umfangreiche Umgestaltungen erfahren wird.

Aber ansonsten: Volle Zustimmung -- gerade weil Py einen dazu zwingt, 
VERDAMMT NOCH MAL leserlichen Code zu schreiben :-D

von Gelegenheitsprogrammierer (Gast)


Lesenswert?

> das wichtigste, das man lernt wenn man mit der programmierung beginnt,
> sind konzepte.

Das wichtigste beim Programmieren nach meiner Erfahrung ist üben, üben, 
üben.

> wenn man mal die grundlegenden konzepte der programmierung halbwegs
> verstanden hat, macht es keinen großen unterschied mehr, ob die sprache
> nun brainf*ck, taxi, prolog, ocaml, befunge, java2k, malbolge oder wie
> auch immer heißt.

Eine Programmiersprache flüssig zu beherrschen ist ähnlich wie eine 
Fremdsprache zu beherrschen. Wenn du von etlichen Fremdsprachen ein 
bisschen was kannst, kannst du dich noch lange nicht in einer bestimmten 
Sprache gescheit ausdrücken (es bleibt Gestammel, du ringst um die 
entsprechenden Vokabeln). Es braucht lange sich in einer Sprache 
"heimisch" zu fühlen. Beherrscht man mal EINE, dann kann eine ähnlich 
klingende Sprache um einiges schneller gelernt werden. Das heißt aber 
noch lange nicht, dass man JEDE Sprache beliebig schnell intus hat und 
was man auch nicht vergessen sollte, man kann auch Sprachen wieder 
"verlernen". Was man länger nicht benutzt, das geht einem aus dem Sinn 
(zwar nicht vollständig, aber dennoch spürbar). Die Erfahrung haben 
bestimmt die meisten unter uns schon öfter gemacht.

von Sven P. (Gast)


Lesenswert?

Gelegenheitsprogrammierer wrote:
> Eine Programmiersprache flüssig zu beherrschen ist ähnlich wie eine
> Fremdsprache zu beherrschen.

Der Vergleich ist in der Tat astrein! Man könnte das sogar auf 
Sprachfamilien ausweiten; ich versuch einfach mal sowas:

Familie: OOP, graphisch
> Die Sprachen (vorallem BCB und Delphi) sind konzeptionell austauschbar
- Borland-C++ (=BCB)
- Delphi
- C++ mit MFC

Familie: puristisch...
- C(++)
- Pascal

Familie: Hochsprachen
> Interpretierte Sprachen mit Kernmerkmalen wie eingebaute Stringverarbeitung
- PHP
- C#
- Python
- Java

Familie: RAD, BASIC
> Sprachen, die auch "quick-and-dirty"-tauglich sind...
- QuickBasic
- VisualBasic (passt einfach nicht zu OOP/graphisch)
- Shell-Skripte (Bash-a-like)

Ohne Anspruch auf Gewähr oder Glaubenskrieg :-)

von Johnny (Gast)


Lesenswert?

Paul, Du wirst niemals eine Plattform und eine Programmiersprache 
finden, die für alles gleich gut geeignet ist.
In erster Linie sollte Deine Entscheidung davon abhängen, was Du genau 
realisieren willst.
Nur schon die Entscheidung, dass es kompatibel zu Windows und Linux sein 
soll, zieht mehr nach sich als Du vielleicht denkst. Windows ist nicht 
Windows (3.11, 95, 98, 2000, XP, Vista) und Linux ist nicht Linux (Suse, 
Red Hat, Ubuntu, FreeBSD, Unix, versch. Window Manager etc.) selbst 
Profis kriegen keine (aufwändigeren) Applikationen hin, die überall 
problemlos funktionieren, geschweige denn noch auf Windows und Linux.

Von da her überlege Dir, was Du überwiegend programmieren willst und 
wie/wo es vorallem eingesetzt werden soll.

Meine Favoriten für Windows:
GUI Applikation Windows 95 bis Vista: C# mit.NET oder Visual Basic mit 
.NET
Konsolenprogramm: C# mit.NET, C oder Python

Unixderivate wie FreeBSD, Linux, ... sehe ich eher als Arbeitstiere für 
Server, die meist ohne GUI zum Einsatz kommen:
z.B. Webapplikationen: PHP (normale Aufgaben), Python (komplexere 
aufgaben), C (wenn es sehr schnell sein muss)

Bei .NET musst Du bedenken, was da alles drin steckt! Eine unglaubliche 
Menge an Funktionalität ist bereits darin enthalten, die Du nicht mehr 
selber implementieren musst. Mit nur wenigen Zeilen Code kannst Du mit 
Dateien hantieren, Datenbanken ansprechen, Drucken, komplexe GUIs 
erstellen, Verschlüsseln, Daten per Netzwerk austauschen und und und; 
alles aus einem Guss.
Ich frage mich, warum das Rad immer neu erfinden wollen, denn die 
Lebenszeit ist beschränkt und vorallem die Freizeit.

von Paul H. (powl)


Lesenswert?

Hm das stimmt auch wieder, aber ich beschäftige mich erstmal mit Python, 
C# kann ich dann immernoch lernen :-)

Je nachdem ob ich Windoof oder Linux später mehr benutze. Weiß ich noch 
nicht.. ich hab mich aber gerade mehr oder weniger in Linux verliebt, 
muss nur noch die Oberfläche etwas anpassen so dass sie mir gefällt.

lg PoWl

von yxcv (Gast)


Lesenswert?

> Nur schon die Entscheidung, dass es kompatibel zu Windows und Linux sein
> soll, zieht mehr nach sich als Du vielleicht denkst.
Das stimmt definitv!
> Windows ist nicht Windows (3.11, 95, 98, 2000, XP, Vista)
Äh, ich bin wahrlich kein MS-Fan, aber wenn eins bei Redmonder Produkten 
stabil ist, dann die API. Eine 10 Jahre alte Borland-Version tut es auch 
heute noch.
Abgesehen davon, dass Nutzer von 3.11 und 9X wohl kaum den potentiellen 
Nutzerkreis darstellen werden. Mag sein, dass noch ein paar 9X-Nutzer 
auf diesem Erdenrund existieren, aber irgendwo fängt dann PAL 
(Problem-Anderer-Leute) einfach mal an. ;-)
> und Linux ist nicht Linux (Suse, Red Hat, Ubuntu, FreeBSD, Unix, versch.
> Window Manager etc.) selbst Profis kriegen keine (aufwändigeren)
> Applikationen hin, die überall problemlos funktionieren, geschweige denn
> noch auf Windows und Linux.
Du hast noch nie Linux benutzt, oder?
-VirtualBox
-KDE
-Opera-Webbrowser
-Mathematica
-Photoshop Album von Adobe
-MainActor des Unternehmens MainConcept
-Google Earth
-gnome
-the gimp
-inkscape
Sind alle mehr oder weniger aüfwändig und laufen auf diversen 
Linux-Distributionen, *BSDs und außer KDE/gnome auch auf Windows.

MfG

von Johnny (Gast)


Lesenswert?

Ja ok, dann ist es ja kein Problem!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.