• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Programmieren als Physiker

Max87

Gast
Hallo,
Ich habe ein Anliegen, bei dem mir hoffentlich jemand weiterhelfen kann:
Ich bin Physikstudent und möchte programmieren lernen, da das als Physiker denke ich mal sehr nützlich ist und auch erwartet wird.
Okay, nun stellt sich für mich die Frage? Was ist am sinnvollsten, welche Sprache, welche Dinge usw.
Ich habe in den letzten Wochen eine C++-Einführung durchgearbeitet (falls es jemanden interessiert: C++-Tutorial ) und bin also etwas vertraut mit den Konzepten der objektorientierten Programmierung in C++ wie Klassen, Vererbung, Schablonen, virtuellen Funktionen usw..

Okay, das hab ich gemacht, nur waren das bisher immer reine Konsolenprogramme.
Jetzt möchte ich Programm mit grafischer Benutzeroberfläche erstellen und frage mich was am sinnvollsten ist.
Ich hab ein MacBook und möchte auch mit dem progammieren, daher liegt natürlich Cocoa und Objective-C nahe, allerdings möchte ich mein Wissen nicht nur zum privaten Spaß einsetzen sondern eventuell später auch im Beruf und daher ist es wahrscheinlich nicht sehr ratsam, sich voll und ganz auf den Mac zu fixieren, da der Großteil der Rechner ja nun mal auf Windows basiert.
Also ist meine Frage:
- Kann man Objective-C auch auf Windows nutzen oder ist es ratsamer, etwas anderes zu lernen?
- Ist Carbon im Prinzip dasselbe wie Cocoa nur für C++? Und ist es dann ratsamer, so etwas zu lernen?

Vielleicht gibt es unter euch ja auch Physiker, die mir weiterhelfen können, wie das ganze speziell für Physiker aussieht. Was wird sich später am meisten auszahlen, was benötigt man am meisten als Physiker?

Ja ich hoffe, mir kann jemand weiterhelfen. Danke schonmal für die Hilfe,
Gruß
Max

P.S.: Ich bin momentan zuhause und kann nicht an die Uni, also geht es momentan darum, das zuhause zu machen. ;)
 

below

Purpurroter Cousinot
Registriert
08.10.06
Beiträge
2.858
Jetzt möchte ich Programm mit grafischer Benutzeroberfläche erstellen und frage mich was am sinnvollsten ist.
...
Also ist meine Frage:
- Kann man Objective-C auch auf Windows nutzen oder ist es ratsamer, etwas anderes zu lernen?
- Ist Carbon im Prinzip dasselbe wie Cocoa nur für C++? Und ist es dann ratsamer, so etwas zu lernen?

Aaaaalso... Physiker sind ja extrem kluge Menschen, und deshalb traue ich Dir zu, dass Du durchaus Objective-C und noch etwas anderes lernen kannst.

Objective-C nützt Dir ausserhalb Mac OS X sehr wenig. Es gibt da Mittel und Wege, aber das ist eine Thread-Füllende Diskussion.

Gleichzeitig ist Objective-C/Cocoa die "schönste" Sprache für grafische Oberflächen auf OS X. Carbon ist eine Möglichkeit, aber das ist aus verschiedenen Gründen sehr, sehr zäh.

Du kannst einerseits deinen "Kerncode" problemlos in C++ machen, und dann ein Objective-C/Cocoa Frontend draufsetzen.

Oder Du nimmst eins von diesen (IMHO: schauderhaften) CrossPlatform Frameworks, wie z.B. Qt von Trolltech (wahrscheinlich das beste unter den schauderhaften Frameworks)

Die m.E. nach coolste Lösung für Dich als Physiker im Bezug auf Dein Studium ist aber vielleicht (wieder, meiner unbedeutenden Meinung nach), Dich mit dem X Window System (X11) zu beschäftigen.
Das wird Dir mit sehr grosser Sicherheit auf allen Rechnern, mit denen Du zu tun hast zur Verfügung stehen (EDIT: Natürlich auch auf OS X), und damit kannst Du dann auch mal grafische Simulationen auf irgendeinem Hochleistungsrechner Remote berechnen lassen.

Hinweis: Die o.g. Tips sind meine Empfehlung speziell für Physiker, nicht notwendigerweise für andere Anfänger

HTH

Alex
 

_ebm_

Gala
Registriert
30.03.08
Beiträge
53
Hi Alex, (ja ich treibe ab sofort auch hier mein Unwesen)

Du hast ihm eben nicht wirklich XLib/Motiv empfohlen? ;) Da bekomme ich das Schaudern! X11-Programmierung ist inzwischen komplett gekapselt (QT oder GTK+, letzteres gefällt mir wiederum besser).

Zu dir Max:
Ich kenne die Bedürfnisse in der Programmierung in der Physik nicht genau, denke aber, du bist mit C/C++ ganz gut bedient. Eure Messcomputer werden nahezu alle mit in diesem Programmiersprachen erstellten Programmen gefüttert und gesteuert (Abgesehen von ein paar mathematischen Modellen in Fortran). Damit gehst du schonmal einen richtigen Weg.

Objective-C ist mit Sicherheit die bevorzugte Programmiersprache für den Mac und OS X. Du hast Cocoa, du hast die Core-Libraries,... Auf anderen Systemen wirst du damit aber nicht glücklich werden. Es gibt ein paar Exoten, die den Objective-C-Compiler von GCC unter Linux benutzen, die Bibliotheken fehlen dir dann immernoch.

Was X11 angeht, ja - ein mächtiges grafisches Ausgabesystem aus der Urzeit von UNIX. Jedes eurer wissenschaftlichen Workstations wird das unterstützen. Ich habe die Programmierung dafür zu hassen gelernt. Wenn du anfängst, grafische Programme zu schreiben, schau dir QT, GTKMM oder (wenn es sehr einfach sein soll) TCL/TK an. Letzeres ist sowieso meine Empfehlung für kleine schlanke Tools, bei denen es nicht auf Performance ankommt. Es gibt dafür auch Anbindungen an C und C++, sodass der geschwindigkeitsabhänige Kern flott genug läuft..

Jedenfalls viel Spaß!

Gruss Carsten

Edit: Auch bei mir gilt: Das sind Tips für einen angehenden Physiker. Wissenschaftliche Programmierung hat andere Anforderungen als Tetris und Co. Und wer sich über das Aussehen von TK-Oberflächen beschwert..... *ggg*
 
Zuletzt bearbeitet:

zendo

Boskoop
Registriert
23.02.06
Beiträge
41
Hallo Max!

Also dann oute ich mich auch mal als Physiker. Habe während meiner UNI-Zeit auch viel programmiert. Vor allem Datenauswertungen natürlich. Das waren auch zumeist Konsolenprogramme. Erste GUI-Erfahrungen habe ich dann mit AppleScript-Studio gemacht und so um die Kommandozeilenprogs nette GUIs gestrickt. Das ging soweit ganz gut. Einige Sachen habe ich dann unter OS9 noch in C auch mit GUI geschrieben. Aber das Problem war natürlich die Portabilität.
Inzwischen bin ich bei Java gelandet, ist zwar auch nicht optimal, aber man kriegt doch recht ansehnliche Programme mit netter Oberfläche hin (wenn man sich etwas Mühe gibt). Gut, ist natürlich Lichtjahre hinter Cocoa hinterher, aber eben halt portabel alles und das mit sehr wenig Aufwand. Das ist mir äußerst wichtg. Zeit ist knapp und mit Insellösungen hab ich schlechte Erfahrungen...zum Beispiel haben die WinLinux Leute beim Newton-Programm (s. unten) 1200 mal zugeschlagen und nur etwa 1/10 davon die Mac-Fraktion.

Falls es interssiert, hier dann mal zwei, drei Links zu den Java-Programmen.
- http://newton2.slueck.de
- http://schule.slueck.de/projekte/LogGl.php
- http://schule.slueck.de/projekte/Magnetpendel.php

Vor allem das erste ist hinsichtlich GUI zu empfehlen (sieht fast, wie ein original OSX-Proggi aus).

Hoffe, ich konnte etwas weiterhelfen...wenn's Fragen gibt, immer heraus damit. :)

Gruß,

Stephan
 
  • Like
Reaktionen: Skeeve

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.059
Vielleicht gibt es unter euch ja auch Physiker, die mir weiterhelfen können, wie das ganze speziell für Physiker aussieht. Was wird sich später am meisten auszahlen, was benötigt man am meisten als Physiker?
Moderne Libraries für Physikprobleme sind fast ausschließlich in C++ geschrieben, ältere aussschließlich in Fortran. Die meisten Institute setzen auf Linux oder früher auf kommerzielle UNICES. GUIs braucht man für Simulationen nicht, da werden meist Programme auf Clustern ausgeführt und ein GUI stört da nur.

Für Meßaufbauten wir je nach Budget entsprechende Spezialsoftware (LabView o.ä.) oder was freies verwendet. GUIs solltest Du mit den üblichen Techniken umsetzen, die es unter Linux oder Windows gibt. MacOS X Cocoa ist eine reine Insellösung ohne jede Bedeutung auf anderen Plattformen, genauso sieht es mit Objective-C aus. Diese Sprache hat im kommerziellen Umfeld abseits der Mac-Programmierung keinerlei Bedeutung.
 

Max87

Gast
Also danke erstmal für Eure Antworten.

Für Meßaufbauten wir je nach Budget entsprechende Spezialsoftware (LabView o.ä.) oder was freies verwendet. GUIs solltest Du mit den üblichen Techniken umsetzen, die es unter Linux oder Windows gibt.

Was sind denn die "üblichen Techniken"? Also so etwas dieses X Window System oder was kann ich mir vorstellen?
 

tjp

Altgelds Küchenapfel
Registriert
07.07.04
Beiträge
4.059
X11 programmiert man in den seltesten Fällen direkt, da dies relativ aufwendig ist. Man wird irgend ein Framework nutzen, welches im Umfeld sich schon bewährt hat. Für UNIX ist das mittlerweile meisten Qt (KDE), GTK+(Gnome), aber es gibt noch eine ganze Reihe anderer Frameworks siehe hier.