programmier-neuling hat keine ahnung aber idee

MahatmaGlück

Aktives Mitglied
Thread Starter
Mitglied seit
21.10.2003
Beiträge
5.859
Hallo,

mir ist es heute zum wiederholten Mal mißfallen, daß ich keinerlei Ahnung von Programmiersprachen im allgemeinen und Sprachen unter OS X im speziellen habe.

Das soll sich ändern!

Ich habe mich ein bissel auf den Apple-Developer Seiten rumgetrieben und geschmökert, aber ich weiss nicht so recht, wo ich anfangen soll.
Ich bin naturwissenschaftlich tätig und mir schwant eine chemisch-biologische Analyse-Software (unter OS X) vor, die nach aussen offen für unterschiedliche Aufgaben bleiben soll.

Ein sehr blauäugiges Posting, ich weiß, aber ich habe so gar keinen Anhaltspunkt, wo ich beginnen könnte.
Benötige ich für sowas unterschiedliche Programmiersprachen oder kann sowas mit einer geschrieben werden? Welche?

Tutorials?
Bücher?
Links zu schon bestehenden Threads, die mir weiterhelfen? :p

Vielen Dank! :cool:
 

BenIrminger

Mitglied
Mitglied seit
23.12.2004
Beiträge
331
"Cocoa Programming for MacOS X" von Aaron Hillegass ist echt gut für den Einstieg in Cocoa. Alias: Cocoa für Dummies.
 

DerMartin

Neues Mitglied
Mitglied seit
10.06.2004
Beiträge
23
Hi,

ich finde dieses Buch von O'Reilly sehr empfehlenswert:

Learning Cocoa with Objective-C


Gruß
/Martin
 

der grimm

Mitglied
Mitglied seit
10.03.2004
Beiträge
481
Hi,

also wenn es eine richtig native Anwendung für Mac OS X werden soll, dann ist (wie indirekt schon gesagt) Objective-C mit Cocoa wohl die richtige Wahl.

Da du mit Programmieren noch überhaupt nichts zu tun hattest, wäre wohl erstmal das Buch "Programming in Objective-C" von Stephen G. Kochan und anschließend "Cocoa Programming for Mac OS X" von Aaron Hillegass empfehlenswert.

Du könntest die Anwendung aber auch so ziemlich plattformunabhängig entwickeln, so dass sie dann beispielsweise unter Mac OS X, Linux sowie Windows läuft. Dies ist mit QT von Trolltech möglich.

Aber ich könnte mir sehr gut vorstellen, dass du dich mit dem Vorhaben einer chemisch-biologische Analyse-Software übernimmst - bis du einigermaßen mit den programmier-technischen Dingen klar kommst, dürfte schon einiges an Zeit vergehen.. und dann fehlt dir noch eine einigermaßen solide "Programmiererfahrungsbasis"...
Solltest du das Ganze mit QT, statt ObjC + Cocoa machen, fändest du evtl. am ehesten weitere Anhänger für das Projekt..

Ciao
 

MahatmaGlück

Aktives Mitglied
Thread Starter
Mitglied seit
21.10.2003
Beiträge
5.859
Danke erstmal für die Tipps!

zeeke.
ist QT auch eine eigenständige sprache?

welche sprache verwendet man z.b. für audio-plugins (AU, VST)?
 

der grimm

Mitglied
Mitglied seit
10.03.2004
Beiträge
481
Oh, tut mir leid. Hätte dazu schreiben sollen, dass QT ein "Framework" für C++, womit du dich dann vorerst auch beschäftigen müsstest, ist..

Bezüglich der Audio-Plugins kann ich dir leider nicht weiter helfen.. :)
 

Bartleby

Mitglied
Mitglied seit
19.10.2004
Beiträge
809
Wenn es portabel sein soll, kannst du auch Java nehmen. Ist IMHO auch sehr leicht zu lernen und es gibt sehr gute Bücher, z.B. "Java ist auch eine Insel" von Galileo-Computing, das kannst du sogar hier online lesen.
 

Faser

Aktives Mitglied
Mitglied seit
20.08.2003
Beiträge
1.024
Gibt es die Bücher auch in deutschen Übersetzungen? Was so konzentrationslastige Dinge angeht, bin ich mit dem Englischen nicht so fit... ;-)
 

Nogger

Mitglied
Mitglied seit
03.08.2004
Beiträge
372
Da du noch nie programmiert hast, würde ich erstmal eine Sprache erlernen, die eine flache Lernkurve hat. Die schnelle Erfolgserlebnisse liefert. Dabei Grundlagen von Datentypen und Basisoperationen lernen, typische Methoden und Algorithmen zur Lösung von generischen Problemtypen. So findest du auch heraus, ob es wirklich etwas ist, in das du tiefer hineinsteigen willst.

Auch wenn verschiedene Sprachen an verschiedene Paradigmen anknüpfen, die "Gedankenwelt" dahinter ist immer ähnlich. Später die Syntax einer anderen Sprache zu erlernen ist nicht so das Problem.

Erst wenn du "prinzipiell" Programmieren kannst, würde ich mich an dein richtiges Projekt wagen. Wenn es halbwegs komplex ist, und du ohne jegliche Kenntnisse einsteigst, ist die Gefahr groß, daß es dich überfordert und frustriert und du komplett aufgibst.

Dann mal ein Buch über Methoden der Systementwicklung anschauen.

Dann würde ich mal schauen, WAS du genau machen willst, d.h. welche Funktionen und welche Methoden der realen Welt du unterstützen willst.

Dann überlegen, welche Art von Daten verarbeitet werden und welche Struktur diese haben, welche Operationen auf den Daten durchgeführt werden sollen und wie die Algorithmen aussehen.

Mit diesen Daten abschätzen, mit welchem Aufwand die bekannte Programmiersprache mit diesem Problem fertig werden kann, und welche Sprache besser geeignet ist, und wie hoch der Aufwand ist diese zu lernen.

Man kann jedes Problem mit jeder halbwegs kompletten Sprache lösen, der Aufwand kann sich aber beträchtlich unterscheiden.

Wenn ich Gebilden der Aussagenlogik verarbeiten möchte, dann kann ich das in C machen. Ist eine generische Sprache, aber man müßte wohl vom Fundament her anfangen.

Ich kann aber auch Prolog benutzen, welches explizit darauf ausgerichtet ist. Mit entsprechenden Datentypen und Methoden.

Im (fiktivem) Ergebniss stehen dann vielleicht 100.000 Zeilen C-Code 100 Zeilen Prolog-Code gegenüber.

Man kann aber auch eine Mischstrategie fahren. Die Oberfläche in Sprache X, Analysen in Sprache Y. Eine der Möglichkeiten zur Verbindung klappt immer. So nutzt man für jede Aufgabe eine geeignete Sprache.

Abschluß: Versuch es einfach mal mit einer einfachen Sprache um zu schauen, ob die Programmieren überhaupt Spaß macht und ob es dir liegt.

Meine Empfehlung: LOGO.
http://www.cs.berkeley.edu/~bh/

Auf der Seite findest du auch drei Bücher, die mit Logo die Grundlagen der Programmierung durchgehen. Wenn du die durchhast, hast du eine solide Basis an Wissen, die du auch bei anderen Programmiersprachen gültig ist.

Eine andere Oberfläche für Logo findest du auch unter http://www.btinternet.com/~alancsmith/logohome.html
 

Wikinator

Mitglied
Mitglied seit
16.10.2004
Beiträge
90
sehr gutes tutorial für java gibt es hier.
ich würde dir eigentlich nicht objective-c empfehlen, wenn du auch außerhalb von os x was machen will. es gibt zwar auch compiler für linux, windows, aber große und plattformunabhängige projekte lassen sich nur schwer mit objective-c verwirklichen, dafür sind imho eher c, c++, java geeignet.
 

jefferson__

Mitglied
Mitglied seit
30.08.2004
Beiträge
208
Hi!

Ich bin zwar kein neuer Programmierer mehr, aber neu auf dem Mac und etwas aus der Übung. Um meine Java Kentnisse aufzumöbeln und mal zu gucken, was auf dem Mac so geht, liegt hier das Buch "Java für Mac OS X", das mir sehr gut gefällt.

Es ist aber kein Einsteigerbuch für Java. Davon gibt es aber ja ettliche und ich würde eines aus der "... für Dummies" empfehlen, die ich sehr gut finden. Sind auch alle auf Deutsch verfügbar ;)

Java habe ich genommen, da dazu im Netz Berge an Infos zu finden sind ohne lange suchen zu müssen und es finden sich immer schneller Leute, die mit Java zu tun haben, als solche mit ObjC. ObjC klingt aber sehr interessant und vielleicht findet sich die Zeit, da auch mal reinzuschauen.

Kleiner Tipp: Das tolle ist, dass du bei der Wahl der Entwicklungsumgebung am Mac nicht lange überlegen und suchen brachst: Es ist alles dabei. :) Xcode nennt sich das und wird immer mitgeliefert. Ich finds gut. :)

Viele Grüße von mir und berichte mal, wie du dich entschieden hast und wie du loslegst.
 

seeas

Neues Mitglied
Mitglied seit
24.01.2005
Beiträge
43
Hallo

Ich will mal versuchen einige deiner Fragen zu beantworten.

Also zuerst müsste man genau wissen: Was für eine Software will du? Und wenn du das weist, schaust du nach ob es sie evtl schon gibt. Es gibt wirklich sehr viele Programme z.b. für Proteinanalyse etc. Vieles davon ist OpenSource also frei verfügbar. Gegebenfalls, könntest du auf so einem Programm aufbauen und das nach deinen Wünschen erweitern und anpassen.

Wenn du vorher noch nie programmiert hast, stell dich von Anfang an auf ein hohes Maß an Frustration ein. Am Anfang steht man meist von einem Berg und muss sehr viel lesen, viele Sachen 2-3 mal ehe man sie versteht.

Zuerst muss du dir genau überlegen, was soll das Programm machen. Mal es auf, sprich es mit Kollegen durch. Verbessere das Modell.

Wenn du eine Programmiersprache lernst, solltest du vorher überlegen, was muss die Sprache können für mein Programm. Im Allgemeinen empfiehlt sich die Verwendung von C, C++ oder Java. Ich persönlich würde dir raten mit C++ anzufagen. Vor allem in der Biofinformatik brauchst wirklich bei vielen Applikationen Leistung. Die bekommst du am besten durch C++. Java ist etwas langsamer. Wenn du keine Sprache kannst, lass dich nicht einlullen und lern erst mal C++. So viel einfacher ist Java auch nicht. Außerdem ist X-Code beim Mac OS X dabei, und damit kannst du neben Objective C und Java eben auch C++ programmieren. Du hast also schon mal ein gutes Programm dafür.

Leider schreibst du nicht in welcher Diziplin du forscht. Ich kann deshalb schlecht einschätzen in wie weit du mit Programmen wie Blast etc vertraut bist. Ein sehr gutes Buch das eine allgemeine Einführung in die Bioinformatik gibt, ist von Arthur M. Lesk BIOINFORMATIK -Eine Einführung erschienen im Spektrumverlag. Solle bei euch in der Uni-Bibliothek vorhanden sein. Schau da mal rein, lies es. Schreib dir Sachen raus die für dein Projekt / Programm relevant sein könnten.

Letzten Endes musst du auch gut in Mathematik sein (ja, es muss sein). Frische deine Mathematikkenntnisse gegebenenfalls auf. Ich empfehle dir hierfür ANALYSIS I + II von Neunzert / Eschmann aus dem Springer Verlag. Ein gutes Standartwerk, der Kauf lohnt sich, alternativ kannst du es dir erst mal leihen aus der Bibliothek. Des weiteren solltest du dir eine gute Formelsammlung zulegen für Naturwissenschaftler und Ingenieure; der genaue Titel ist mir leider gerade entfallen; einfach bei Amazon suchen.

So damit wärst du schon mal halbwegs gerüstet. Rechne je nach zur Verfügung stehender Zeit 6-12 Wochen um zu diesem Punkt zu kommen. Nun kannst du anfangen zu Programmieren. Kauf dir ein Buch oder such dir eine Online-Einführung zur C++. Ich empfehle dir hier C++ Made Simple, den Verlag hab gerade vergessen suche es bei Amazon du wirst es finden. Arbeite das Buch durch. Arbeite das Buch nochmal durch. Hol nun deinen Zettel raus vom Anfang und streiche alle Features, von denen du nun weisst, das du sie in der nächsten Zeit kaum impelmentieren werden kannst weil es zu komplex ist. Zerleg das Problem in kleinere Probleme. Überlege dir wie du diese mathematisch löst. Versuche nun eins nach dem anderen zu programmieren. Setz alles zusammen, ärger dich das es nicht läuft. Poste in diversen Foren und hoffe auf Hilfe. Berate dich mit deinen Kollegen aus der Informatik. Wenn es läuft, verbessere das Programm und teste es ausgiebig.

Alles in Allem ein langer und steiniger Weg. Die Alternative dazu: Stelle einen Diplom-Bioinformatiker(FH) ein. In ca 5 Jahren steh ich gern zur Verfügung. :D


Ich hoffe das hat dir ein bisschen weiter geholfen. Du kannst mir gern mailen falls du noch Fragen haben solltest. Das Thema ist durchaus noch etwas umfangreicher, aber anhand deiner leider etwas knappen Beschreibung, macht es wenig Sinn weiter auf Details einzugehen.

Schönen Abend noch

Gruss aus Würzburg
 
Zuletzt bearbeitet:

Capricorna

Mitglied
Mitglied seit
09.01.2005
Beiträge
84
Hallo,

Nogger schrieb:
Da du noch nie programmiert hast, würde ich erstmal eine Sprache erlernen, die eine flache Lernkurve hat. Die schnelle Erfolgserlebnisse liefert. Dabei Grundlagen von Datentypen und Basisoperationen lernen, typische Methoden und Algorithmen zur Lösung von generischen Problemtypen. So findest du auch heraus, ob es wirklich etwas ist, in das du tiefer hineinsteigen willst.
Gut geeignet find ich dafür auch Python. Ich hab nicht die Bohne Ahnung vom Programmieren gehabt, und wollte auch mal reinschnuppern (damit ich besser verstehe, wovon mein Süßer so redet... ;)

Mit diesem Tutorial und den grundlegenden Infos von Python.org habe ich dann sehr schnelle Erfolgserlebnisse gehabt. Nicht, dass ich jetzt irgendwas selbst programmieren könnte, aber ich verstehe die Prinzipien, und die sind afaik gut übertragbar auf die meisten anderen Programmiersprachen. Das find ich einen guten Weg, um erstmal rauszufinden, ob man überhaupt einen Draht dazu bekommt :)

Viel Spaß dabei :)
Kerstin
 

maceis

Aktives Mitglied
Mitglied seit
24.09.2003
Beiträge
16.871
ZoopCube schrieb:
...
Ich bin naturwissenschaftlich tätig und mir schwant eine chemisch-biologische Analyse-Software (unter OS X) vor, die nach aussen offen für unterschiedliche Aufgaben bleiben soll.
...
Analyse Software ist erklärungsbedürftig.
Was soll den die Software können?
Danach würde ich entscheiden, welches Werkzeug zu benutzen ist.
 

MahatmaGlück

Aktives Mitglied
Thread Starter
Mitglied seit
21.10.2003
Beiträge
5.859
Wow! 1000 Dank für die Antworten.

Also ich habe mich schon darauf eingestellt, dass es nicht einfach sein würde und habe auch nix dagegen erstmal etwas einfaches zu probieren.
Ich bin Dipl. Chemiker - mit "Analysesoftware" meinte ich ein Programm, das zum Steuern verschiedener (optischer?) Geräte verwendet werden kann, aber auch gleich eine Software zur Auswertung darstellt.
Es soll offen für unterschiedliche "Probenformate" sein - offen für Geräte unterschiedlicher Hersteller - Rechnen können - und verschiedene Output-Möglichkeiten haben) - ich dachte dabei weniger an den ganzen DNA-Kram.
Sozusagen eine All-in-one Lösung für spektroskopische Untersuchungen
 

seeas

Neues Mitglied
Mitglied seit
24.01.2005
Beiträge
43
Hm das könnte schwierig werden.

Zum einen musst du dich zusätzlich in Regeltechnik einarbeiten um die Geräte Korrekt ansprechen zu können.

Zum anderen wissen die meisten Hersteller schon ganz genau warum sie bestimmte technische Details nicht offen legen und für ihre Systeme eigene propietäre Software anbieten. Wir benutzen hier unter anderem Bruker Spektrometer zusammen mit ParaVision und Xwinnmr. Ein Traum...
Mit dem Support wollen die Firmen auch noch mal zusätzlich Geld machen.

Als nächstes stellt sich die Frage, was passiert mit der Garantie wenn du vom Hersteller nicht zertifizierte Software verwendest. Angenommen deine Software beschädigt ein Gerät, wer haftet dann.

Wenn du eine Software schreibst mit der unterschiedliche Geräte angesteuert werden können musst du auch sicher stellen das nur autorisierte User das Gerät welches gerade angeschlossen ist, bedienen können. Nicht das Gerät A dran hängt und der User das Programm aber im Modus für Gerät B betreibt.

Es stellt sich auch die Frage ob die Hersteller gewillt wären, dir die notwendigen technischen Informationen zu überlassen. Ähnliche Probleme haben die Linuxleute. Das bestimmt Hardware nicht unterstützt wird liegt nicht an inkompetenten Programmierern sondern meist leider daran das der Hersteller die Spezifikationen nicht rausrückt.

Vielleicht probierst du es erst mal mit einem Programm das deine Daten einließt, verarbeitet und dann so ausgibt wie du es haben willst.

gruss

s
 

MahatmaGlück

Aktives Mitglied
Thread Starter
Mitglied seit
21.10.2003
Beiträge
5.859
seeas schrieb:
Hm das könnte schwierig werden.

Zum einen musst du dich zusätzlich in Regeltechnik einarbeiten um die Geräte Korrekt ansprechen zu können.

Zum anderen wissen die meisten Hersteller schon ganz genau warum sie bestimmte technische Details nicht offen legen und für ihre Systeme eigene propietäre Software anbieten. Wir benutzen hier unter anderem Bruker Spektrometer zusammen mit ParaVision und Xwinnmr. Ein Traum...
Mit dem Support wollen die Firmen auch noch mal zusätzlich Geld machen.

Als nächstes stellt sich die Frage, was passiert mit der Garantie wenn du vom Hersteller nicht zertifizierte Software verwendest. Angenommen deine Software beschädigt ein Gerät, wer haftet dann.

Wenn du eine Software schreibst mit der unterschiedliche Geräte angesteuert werden können musst du auch sicher stellen das nur autorisierte User das Gerät welches gerade angeschlossen ist, bedienen können. Nicht das Gerät A dran hängt und der User das Programm aber im Modus für Gerät B betreibt.

Es stellt sich auch die Frage ob die Hersteller gewillt wären, dir die notwendigen technischen Informationen zu überlassen. Ähnliche Probleme haben die Linuxleute. Das bestimmt Hardware nicht unterstützt wird liegt nicht an inkompetenten Programmierern sondern meist leider daran das der Hersteller die Spezifikationen nicht rausrückt.

Vielleicht probierst du es erst mal mit einem Programm das deine Daten einließt, verarbeitet und dann so ausgibt wie du es haben willst.
Im NMR Bereich gibt es hervorragende Lösungen, da hast Du Recht. Allerdings steht das auch ein Stück ausserhalb der optischen Meßmethoden.

Was das Gesetzliche und den pot. Widerwillen zu techn. Informationen betrifft, hast Du natürlich Recht. Könnte man aber umgehen, indem man den Import bestimmter Datenformate berücksichtigt.

Nja wie gesagt. Mir ist klar, dass ich vor einem ziemlich großen Berg stehe, aber ich möchte mich halt einarbeiten ...
 

joe.dante

Neues Mitglied
Mitglied seit
21.01.2005
Beiträge
12
ZoopCube schrieb:
Nja wie gesagt. Mir ist klar, dass ich vor einem ziemlich großen Berg stehe, aber ich möchte mich halt einarbeiten ...
Also das kannste ganz schnell vergessen wenn du keine Spezifiaktionen oder Biblitheken vom Hersteller hast wie du die Geräte ansteuerst.

Mach dich da erst mal schlau bei den Herstellern. danach kannst du darüber nachdenken ob du dein Programm schreibst.

Je nachdem was für Bibliotheken vorhanden sind, danach wählst du deine Sprache aus. Dass es offene Dokumentation gibt glaube ich kaum, man lässt sich da nicht gerne in die Karten schauen und der Hersteller will nochmal extra kassieren.

Du kannst zwar sowas reverse engineeren aber das scheidet in deinem Fall auch aus, da du zu wenig Ahnung hast.

Ich glaube das ganze wird nix werden, weil so ziemlich alle Hersteller keine Infos rausrücken.