programmier-neuling hat keine ahnung aber idee

MahatmaGlück

Aktives Mitglied
Thread Starter
Dabei seit
21.10.2003
Beiträge
5.834
Reaktionspunkte
62
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:
 
"Cocoa Programming for MacOS X" von Aaron Hillegass ist echt gut für den Einstieg in Cocoa. Alias: Cocoa für Dummies.
 
Hi,

ich finde dieses Buch von O'Reilly sehr empfehlenswert:

Learning Cocoa with Objective-C


Gruß
/Martin
 
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
 
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)?
 
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.. :)
 
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.
 
Gibt es die Bücher auch in deutschen Übersetzungen? Was so konzentrationslastige Dinge angeht, bin ich mit dem Englischen nicht so fit... ;-)
 
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
 
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.
 
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.
 
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:
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
 
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.
 
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
 
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
 
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 ...
 
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.
 
Zurück
Oben Unten