amiga-news ENGLISH VERSION
.
Links| Forum| Kommentare| News melden
.
Chat| Umfragen| Newsticker| Archiv
.

amiga-news.de Forum > Programmierung > C oder C++? [ - Suche - Neue Beiträge - Registrieren - Login - ]

1 2 -3- 4 5 [ - Beitrag schreiben - ]

06.05.2010, 16:27 Uhr

Thore
Posts: 2266
Nutzer
Wieso sollte ein Programmierer einen Unterschied merken, ob er nun eine Funktion direkt nutzt oder über eine Lib?
Abgesehen davon, daß im AmigaOS die API Funktionen ebenfalls über Libs bereitgestellt werden, sogar exec ist als lib vorhanden....

Ok, VCL, CLX etc bedienen sich intern den WinAPI Routinen, falls nötig, aber sudeln auch gern selbst auf der Canvas rum, abhängig von der Komponente.

Es ging doch um die Bequemlichkeit beim Programmieren?
Direkte Änderungen an APIs machen ein Betriebssystem kaputt, bei Windows merkt mans langsam. Lauter Änderungen, die API ändert sich sogar von Service Pack zu Service Pack. Lauter Strukturen mit Endung "Ex" oder einfach durchnummeriert. (Drucker-Strukturen gehen sogar bis Nr 9 hoch), jedes Struct hat Attribute für n verschiedene Win Versionen, die Du abprüfen musst.
Also meiner Meinung nach ist sowas der falsche Weg (obwohls sicher auch so kompatibler gehen könnte), alles über API Funktionen zu versuchen. Eine Lib hingegen lässt sich auch auf einer neuen Amiga Version nutzen. Neue Libs müssten entsprechend abwärtskompatibel bleiben.

Für den Programmierer an sich spielt es aber keine Rolle, wo sein Aufruf versteckt ist (wenn er nach dem Blackbox Verfahren handelt).

Sicher hat beides Vor- und Nachteile. Aber hauptsache es funktioniert und man kann damit arbeiten, oder?
Bis die API geändert wird..... oder dann doch lieber ne Lib? :)

[ - Antworten - Zitieren - Direktlink - ]

06.05.2010, 16:47 Uhr

Der_Wanderer
Posts: 1229
Nutzer
@Thore:
Du würfelst da ein paar Sachen durcheinander.

Eine Library ist eine Ansammlung von Code, aufgeteilt in nach aussen gelegte Funktionen. Diese Funktionen zusammen betrachtet nennt man API.

Eine solche API wie ich beschrieben habe würde man natürlich in eine oder mehrer Libraries packen. Sie soll den ganzen Low-Level Dreck verstecken, also genau das was du bei der Win API mit "Ex" und hochzählen bemängelst soll es vermeiden, sowas gibts ja in AmigaOS mittlerweile (oder schon seit langem besser gesagt) auch, nur nicht so heftig weil sie einfach nicht so viel Entwicklung erfahren hat.

Beispiel:

Im Prinzip wollen ja alles Amiga Platformen das gleiche.
Z.b. besseren 24bit Support.
Da kam jemand auf die Idee des Penless Mode.
In OS3 gibt's das nicht, und in OS4 und MOS wurde das jeweils unterschiedlich implementiert und in AfA OS ist das ein böser Hack.
Resultat: eine Katastrophe für jeden Entwickler.

Was fehlt ist nun eben eine API die oben drauf kommt, die diese losen Enden wieder zusammenknüpft, sodass ich meine Linie mit

Line rastport,x1,y1,x2,y2,rgbvalue

zeichnen kann. Ganz entspannt, ohne Altlasten, einfach so und ohne 4 Fall Unterscheidungen.

Im Grund wurde aus dieser Idee heraus auch mein A/A++ Projekt geboren.
Nur wird bis zur Fertigstellung (wenn überhaupt) noch einige Zeit ins Land gehen, und ob das Akeptanz findet wage ich zu bezweifeln, wird also wieder nur eine individual Lösung für mich sein.



--
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de


[ - Antworten - Zitieren - Direktlink - ]

06.05.2010, 17:00 Uhr

Thore
Posts: 2266
Nutzer
Also nun doch eine Lib?

(Wie API Funktionen bereitgestellt werden kann durchaus varriieren, neben Libs gibts noch devices (auf Win auch virtuelle Treiber, ShellAPI, etc pp))

Aber darum gings nicht.
Es geht darum, ob es eine Lib geben soll mit den Funktionen die Du brauchst, wie Du sagtest, als Überbau zur unteren API, also ein Wrapper darstellt.
Das ist doch dann genau das gleiche was ich die ganze Zeit versuch zu sagen. Nur ob sie dann offiziell zum OS gehört oder nicht, das ist die Frage.

Im Grunde läufts aber aufs gleiche raus.

[ - Antworten - Zitieren - Direktlink - ]

06.05.2010, 17:16 Uhr

Der_Wanderer
Posts: 1229
Nutzer
Natürlich eine Lib, ich habe ja nie was anderes geschrieben, oder?

Es ist aber durchaus mehr als nur ein Wrapper oder Convinient Stub, und es darf auch nicht auf C/C++ beschränkt sein.

Z.b. würde man Resizing Code für Bilder hinzufügen, der das unabhängig vom verwendeten Datatype macht. Es können auch Loader hinzugefügt werden, die nicht über Datatypes laufen.
Z.b. um Bilder mit Alpha Channel zu laden unter OS3.
Oder um Icons zu laden via icon.library, so, als wären sie ein Bild.

--
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de


[ - Antworten - Zitieren - Direktlink - ]

06.05.2010, 18:48 Uhr

Thore
Posts: 2266
Nutzer
Ok so kommen wir doch noch zum gemeinsamen Nenner. So hatte ich mir das auch vorgestellt.

Allein für Linien zeichnen (Move und Line in eine Funktion) lohnt sichs sicher nicht, aber Bilder laden, mit BitMapScale skalieren und in einem anderen Format ausgeben wär sicher interessant als eine 1 bis 2 Funktionen API.

Gerade das BitMapScale ist für AmigaOS Neulinge erstmal etwas gewöhnungsbedürftig (wenn auch einfach wenn mans erstmal kapiert hat).

[ - Antworten - Zitieren - Direktlink - ]

06.05.2010, 21:09 Uhr

Der_Wanderer
Posts: 1229
Nutzer
@Thore:

> Allein für Linien zeichnen (Move und Line in eine Funktion) lohnt sichs sicher nicht,

Du hast aber gesehen, dass er in True Color zeichnet? Es ging mir dabei nicht darum, Move und Draw in eine Funktion zu bringen, das kann man von mir aus auch so lassen, obwohl sich dieses Konzept heute eigentlich auch überholt hat. Es ging mir darum, eine Funktion zu machen wie man sie heutzutage gerne haben würde.

BitMapScale ist auch ein Krampf, weil es Algorithmen-interne Probleme nach außen abwälzt, z.B. den Factor/Denominator Split. Das sollte man auf keinen Fall dem App Programmierer aufdrücken, der ist der letzte der weis wie man das am besten wählen sollte. Der App Programmierer will in der Regel die Zielgröße und optional die Qualität angeben, mehr nicht. Außerdem ist der Befehl nur für Echtzeit Einsatz geeignet, wenn man keine 3D HW hat. Fotos oder GUI Elemente sollte man damit tunlichst nicht skalieren.
Insgesamt sind die meisten der AmigaOS Funktionen extrem schwachbrüstig. Z.b. ReadPixelArray. Wenn die Quell Bitmap nicht Hi oder True Color ist, dann funktioniert es nicht. Wenn man also z.B. einen Screen Grabben will, muss man erstmal Fallunterscheidung machen. Bei 8 oder weniger Bit muss man dann ReadPixelArray8 machen, die Colormap aus dem Screen auslesen und das ganze in das gewünschte Ziel Pixelformat umwandeln.

Das wird dann aus einem einfachen ReadPixelArray schnell mal sowas:
code:
;///////////////////////////////////////////////////////////////////////////////
;/                                                                             /
;/ Syntax:  succ.l = image_CutRP{image.l,*rp.RastPort,@x.l,@y.l,@xs.l,@ys.l:: /
;/ ,@trgb.l,@tolerance.l,@dithermode.l,@colorMap.l}                            /
;/                                                                             /
;/ Description:                                                                /
;/ Creates an image object out of (a part of) the given Rastport.              /
;/ NOTE:  ideal for screen-grabbing.                                           /
;/                                                                             /
;/ Inputs:                                                                     /
;/ - image.l        : image object ID                                              /
;/ - *rp.RastPort   : Rastport where to fetch the data from                    /
;/ - trgb.l         : rgbvalue for the desired transparent color, e.g. $ff0000 f:: /
;/ or red, set it to -1 for no transparency                                    /
;/ - x.l,y.l        : optional: position from where to fetch                       /
;/ - xs.l,ys.l      : optional: width and height of the area to fetch              /
;/ - tolerance.l    : ???                                                      /
;/ - dithermode.l   : ???                                                     /
;/ - colorMap.l     : ???                                                       /
;/                                                                             /
;/ Result:                                                                     /
;/ - succ.l     : True if everything went well, False if it failed             /
;/                                                                             /
;///////////////////////////////////////////////////////////////////////////////
Function.l image_CutRP{image.l,*rp.RastPort,@x.l,@y.l,@xs.l,@ys.l,@trgb.l,@tolerance.l,@dithermode.l,@colorMap.l}
SHARED imagedat(),imageengine:USEPATH imagedat(image)
succ.l = False
If *rp
  If x<0 Then x=0
  If y<0 Then y=0
  If *rpLayer
    If xs<=0 Then xs=*rpLayerWidth  -x
    If ys<=0 Then ys=*rpLayerHeight -y
  Else
    If *rpBitMap
      If xs<=0 Then xs=GetBitMapAttr_(*rpBitMap,#BMA_WIDTH)  -x
      If ys<=0 Then ys=GetBitMapAttr_(*rpBitMap,#BMA_HEIGHT) -y
    End If
  End If

  If image_Create{image,xs,ys}
    d.l=GetBitMapAttr_(*rpBitMap,#BMA_DEPTH)
    If d>8 OR d<=0
      ReadPixelArray_ raw_ptr,0,0,bpr,*rp,x,y,xs,ys,#RECTFMT_ARGB
    Else
      *scr.Screen = Peek.l(Addr Screen (Used Screen))
      If *scr
        scr_depth.l = d ;*scrBitMapDepth
        CopyMem_ *rp,temprp.RastPort,SizeOf.RastPort
        temprpLayer = 0
        xsw.l = (((xs+15) LSR 4) LSL 4)
        temprpBitMap = AllocBitMap_ (xsw,1,8,0,0)
        temprpBitMapBytesPerRow = xsw LSR 3
        penArray8.l = tempbuffer_Get{xsw*ys*1}
        ReadPixelArray8_ *rp,x,y,x+xs-1,y+ys-1,penArray8,temprp
        FreeBitMap_ temprpBitMap

        lut.l = AllocVec_(256*4,#MEMF_CLEAR)

        If colorMap=-1
          For n.l=0 To 1 LSL scr_depth-1
            GetRGB32_ *scrViewPortColorMap,n,1,col.cmapitem
            R.l = colR LSR 24
            G.l = colG LSR 24
            B.l = colB LSR 24
            ARGB.l = (R LSL 16) | (G LSL 8)  | (B)
            Poke.l lut+n*4,ARGB
          Next
        Else
          For pen.l=0 To (1 LSL scr_depth)-1
            *CReg.ColorRegister = colorMap + 3*pen
            Poke.l lut + (pen LSL 2),((*CRegred&$00FF) LSL 16) | ((*CReggreen & $00FF) LSL 8)  | (*CRegblue & $FF)
          Next
        End If
        For y.l = 0 To ys-1
          For x.l = 0 To xs-1
            pen.l = Peek.b(penArray8+y*xsw+x) & $FF
            Poke.l raw_ptr+y*bpr+(x LSL 2),Peek.l(lut+(pen LSL 2))
          Next
        Next
        FreeVec_ lut
      End If
    End If
    If trgb><-1
      image_InitMask{image,trgb,tolerance.l}
    Else
      mask_trgb = -1
    End If
    succ.l = True
  End If
Else
  error{"\__THIS_FUNCTION: Uninitialized rastport!"}
End If
If succ=False Then image_Free{image}
Function Return succ
USELASTPATH
End Function


Absolut hirnrissig, warum jeder App Programmierer das aufs neue implementieren muss, wo jedesmal wieder Fehler gemacht werden können, oder die App ist dann True color only etc.


--
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de



[ Dieser Beitrag wurde von Der_Wanderer am 06.05.2010 um 21:16 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

06.05.2010, 22:37 Uhr

jolo
Posts: 110
Nutzer
Da dieser Thread zu lang geworden ist um auf alle Beiträge einzugehen, ich zudem gestern Skat-Abend hatte, hier nur kurz meine Gedanken.

Fakt ist, und da stimme ich whose uneingeschränkt zu, dass das Amiga Segment in unterschiedliche Lager aufgeteilt ist und die jeweiligen APIs immer weiter auseinanderdriften.
Fakt ist aber auch, dass dies ein natürlicher Prozess ist, der weder aufgehalten werden kann noch soll. Unsere eigene Existenz ist durch solche Abläufe bestimmt worden, ansonsten säßen wir nach wie vor als kleine Gruppe um ein Lagerfeuer herum (falls wir soweit wären, ein Feuer zu entfachen) und würden beten, dass uns bei Nacht nicht irgendein Tier auffrisst. :)
Fakt ist aber auch, und da stimme ich Der_Wanderer zu, dass es abstrakte APIs gibt, die es sehr erleichtern ein Programm auf einem völlig fremden Betriebssystem ohne irgendwelche Änderungen zu kompilieren und auszuführen, ohne dass irgendwelche Fehler auftreten.
Solange aber auf der MorphOS und AmigaOS4 Seite nicht die Version seitens der Kernentwickler bereitgestellt wird, die annähernd dem entspricht was sich diese Entwickler für das jeweilige Betriebssystem wünschen, solange wird kein (Hobby-) Programmierer sich die Mühe machen, eine API zu schreiben bzw. portieren, die losgelöst vom zugrunde liegenden Betriebssystem ist. Den kleinsten gemeinsamen Nenner den wir heutzutage haben, ist die POSIX-API. Damit kann man UNIX, BSD, Linux, QNX, MS-Windows (mit Einschränkungen) und viele andere Betriebssysteme auch, inklusive des AmigaOS (sowie Klone) (mit Einschränkungen) und das MorphOS-Betriebssystem (mit Einschränkungen) programmieren.
Der Nachteil an POSIX ist, dass es C zwingend voraussetz sowie auf spezielle Merkmale eines Betriebssystems nicht eingeht und zum Thema Benutzerschnittstelle nur die Konsole anbietet.

Zum Thema Datatypes kann ich nur anmerken, dass das Konzept veraltet ist, da es nicht die heutigen Belange abdeckt, und zwar das Laden und Speichern von Dateien, die im Netzwerk liegen, inklusive wahlweiser Abbruchmöglichkeit des jeweiligen Vorganges. Ach ja, das leidige Thema Netzwerk und Internet seitens des Amiga/MorphOS Betriebssystem... Hier besteht auch noch Nachholbedarf obwohl sich die Situation schon sehr gebessert hat.

Bezüglich IDE: Viele Programmierer benutzen keine IDE, sondern einen Texteditor nach Wahl und 'makefiles'. Es gibt aber sicherlich genauso viele Programmierer (wenn nicht sogar mehr), die eine IDE benutzen.
Mir persönlich bringt eine IDE auf dem Amiga (OS3) aber solange nichts, wie mir schneller als ich schauen kann das Betriebssystem unterm Hintern wegschmiert, und das nur bei kleinen Fehlern. Das Laden einer IDE unter AmigaOS3 dauert mir viel zu lange, da lobe ich mir schlanke Texteditoren, die es zu Hauf auf dem Amiga gibt.
Komischerweise nutze ich heute unter Windows auch keine IDE obschon MS Studio 2008 komplett vorhanden ist, sondern schreibe lieber 'makefiles' für 'nmake'. Geht sehr wahrscheinlich darauf zurück, dass mir Frank Wille 'makefiles' gemailt hatte, die selbst 'nmake' abdeckten, obwohl er nach eigenen Aussagen mit Windows nichts am Hut hat.
Von Profis kann einer wie ich viel lernen bzw. viel klauen... ;)

Ich habe zudem eine andere Ansicht als Der_Wanderer bezüglich "warum ein Betriebssystem ein Erfolg wird oder nicht".
Der Schlüssel zum Erfolg, meiner Meinung nach, ist das Marketing. IBM OS2 war zu jener Zeit in jeder Hinsicht besser als Windows, es wurde trotzdem kein Erfolg.
Ich behaupte mal, dass QNX Neutrino wesentlich besser als Linux ist - und es trotzdem kein Erfolg wurde.
Das kann man so weiterspinnen.
Ich glaube, wer gut täuscht, hat schon die halbe Miete gewonnen. :)
Nichtsdestotrotz ist jedes Betriebssystem für sich genommen ein Glanzstück an Programmierkunst. Man macht sich keine Gedanken, was die betreffenden Programmierer geleistet haben bzw. leisten, um aus einer Ansammlung von elektronischen Komponenten ein funktionierendes 'es' zu schaffen.
Demnach halte ich es wie whose: Ich bin mit dem zufrieden, was ich vorfinde, auch wenn es bedeutet, sehr viel Zeit in Funktionen zu stecken, die noch nicht im Betriebssystem verankert worden sind bzw. noch von keiner dritten Partei geschrieben wurden (Stichwort: Library).
Und ja, auch Der_Wanderer hat Recht: Je weniger Zeit man sich mit Low-Level-Funktionen rumplagen muss, desto schneller sieht man Ergebnisse. Nur, sind wir davon bei der Amiga/MorphOS-Programmierung weit entfernt. Aber, das macht auch einen Teil des Reizfaktors beim Programmieren aus - die Zusammenhänge zu verstehen und nicht nur etwas nutzen. Alle, die ausschließlich letzteres wollen, sollten einen Blick auf Hollywood werfen.


Grüße

[ - Antworten - Zitieren - Direktlink - ]

07.05.2010, 13:14 Uhr

Der_Wanderer
Posts: 1229
Nutzer
Ich glaube die "Zufriedenheit" mit der API so wie sie ist kommt daher, dass kaum jemand noch versucht was ernsthaftes damit zu entwickeln.
Den Amiga Proggern geht es wohl eher darum, sich mit dem OS als Selbstzweck zu beschäftigen als mit einer echten, nützlichen Applikation, die entstehen soll.

Es werden eher Mini-Projekte gemacht, die zum Experimentieren oder Lernen dienen, aber nicht als richtige Applikation released werden sollen, wo man auf Stabilität, GUI Richtlinien, Integration ins OS, Kompatibilität mit der Aussenwelt etc. wert legt.

Hollywood hat ja so etwas ähnliches vorgemacht, eine einfache, hoch angesiedelte API vorgegeben. Aber kaum jemand macht was damit. Viel mehr als ein Bildbetrachter oder Tic-Tac-Toe kam dabei ja nicht raus. Ich denke, dass nur ein kleiner Teil der Arbeit, die in Hollywood reingesteckt wurde, auch wieder herauskam. Will sagen, Hollywood wurde auch mehr oder weniger zum Selbstzweck entwickelt.
Die Gefahr sehe ich auch bei so etwas wie A/A++, obwohl es deutlich System-näher konzipiert ist.


--
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de


[ - Antworten - Zitieren - Direktlink - ]

07.05.2010, 14:16 Uhr

Thore
Posts: 2266
Nutzer
Das Hauptproblem liegt in der Zeit, die man zum Entwickeln hat.
Bei mir sind das ca 2 Std am Abend....

Die "alten Amiga-Hasen" kommen mit der API super zurecht, Neulinge müssen sich erst einfuchsen (andersrum von Amiga nach Win ist es übrigens das gleiche).
Hollywood ist ein Multimedia Layer und keine "echte" Programmiersprache an sich. Trotz einfacher Syntax verwendet man es nicht so groß wie C/C++, obwohl es auch Win-Versionen gibt. Dann kanns wohl nicht an der API/Befehlssatz liegen.

Das Problem ist wohl eher dieses: Man sieht auf Linux ein Programm, versucht es zu portieren. Es ist posix, benutzt vll noch fork/vfork und schon fängt das erste Problem an: Kein posix, kein fork.
Dann holt man sich ixemul, damit hat man schon etwas mehr Linux-Style. Jedoch immer noch kein fork.
Dann überlegt man sich, da ist eine GUI... QT, GTK, glib... auch portieren oder wrappen (z.B. nach MUI), lohnt der Aufwand? Oder doch was eigenes entwickeln?
Macht man sich als 1-Mann-Programmierer die Arbeit, die auf anderen Systemen zwischen 5 und 100 Leute gemacht haben?
Ich denke DAS ist vielmehr der Knackpunkt. Ein Ressourcen-Zeit-Problem.

AmigaBASIC hat auch einen einfacheren Befehlssatz wie C/C++, wird aber weniger verwendet (Liegt aber vermutlich eher in den Micro$oft Bugs *g*)

Ich empfehle dir (und anderen denen es interessiert) die DeveloperCD(2.1) falls Du diese noch nicht hast. Da sind die kompletten RKM Hardware/Libs/Includes/Autodocs enthalten, sowie StormC3 und viel nützliches Zeug.
Wenn du mal durch die RKM geblättert hast, wirst Du vieles verstehen, warum das alles so aussieht, wie es ist.

[ - Antworten - Zitieren - Direktlink - ]

07.05.2010, 14:29 Uhr

Andreas_Wolf
Posts: 2980
Nutzer
> Hollywood hat ja so etwas ähnliches vorgemacht, eine einfache, hoch
> angesiedelte API vorgegeben. Aber kaum jemand macht was damit. Viel
> mehr als ein Bildbetrachter oder Tic-Tac-Toe kam dabei ja nicht raus.

http://www.amiga-news.de/de/news/AN-2010-03-00017-DE.html
http://home.arcor.de/phoenixkonsole/ares/files/archive-28-march-2010.html
http://www.youtube.com/watch?v=xp30AuuuqrY

[ - Antworten - Zitieren - Direktlink - ]

07.05.2010, 14:34 Uhr

Der_Wanderer
Posts: 1229
Nutzer
> Bei mir sind das ca 2 Std am Abend....
Das ist schon so viel wie ich in einer Woche. Aber genau deshalb wäre ja mein Vorschlag einer höheren API gerade so wichtig.

Ich selbst kenne die AmigaOS API sehr gut, und habe logischerweise auch die Developer CD. Ich selbst habe ja so eine API wie ich sie vorschlage schon geschrieben, allerdings nur für Amiblitz3 und nicht allmächtig für alle Bereiche des Programmierens, sondern nur die, die ich selbst berührt habe. Das sind schon eine Menge aber es ist nicht erschöpfend und Aufgrund der langen Entwicklungszeitraum weit weg von Perfektion.

Aber ich bin nun immerhin in der Lage, wenn du mir jetzt sagst: "Programmiere ein Tool, wo ich ein Bild reinladen kann, die Schärfe und Farbraum anpassen, resizen und als JPEG, PNG, BMP oder IFF abspeichern."
Dann kann ich das in 2-3h erledigen, und zwar so dass es unter OS3, OS4 und MOS funtkioniert.
Mit der AmigaOS API direkt brauche ich dafür 20-30h, oder vermutlich noch wesentlich mehr wenn man die Saver und DSP Algorithmen noch entwickeln muss, und dannach auch noch Beta Testen auf den verschiedenen Plattformen.



--
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de


[ - Antworten - Zitieren - Direktlink - ]

07.05.2010, 14:43 Uhr

Der_Wanderer
Posts: 1229
Nutzer
> AmigaBASIC hat auch einen einfacheren Befehlssatz wie C/C++
Das kann man so nicht sagen.
C/C++ hat ja keinen Befehlssatz in dem Sinne, sondern verwendet (neben der Runtime natürlich) weitere Libraries. AmigaBASIC ist für jegliche Entwicklung, auch nur zum experimentieren, völlig out-dated und unbrauchbar.
Und eine GUI, ein Video Abspielen oder einen Emial Client lässt sich damit kein Stück einfacher machen als mit C++, im Gegenteil, das ist quasi unmöglich.

@Andreas Wolf
Ja, nett. Ich sage ja nicht dass Hollywood schlecht ist. Aber ich kann die Runtime nicht in C++ oder Amiblitz benutzen, das ist das Problem von Hollywood.
Es müsste etwas System näher sein und als Library daher kommen, und müsste noch einge weitere Bereiche abdecken. Z.b. glaube ich nicht, dass man sowas wie HD-Rec, YAM oder ArtEffect damit schreiben könnte.
Aber ich kenne Hollywood nicht so gut, evtl. irre ich mich.

--
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de


[ - Antworten - Zitieren - Direktlink - ]

07.05.2010, 14:49 Uhr

Andreas_Wolf
Posts: 2980
Nutzer
> Ich sage ja nicht dass Hollywood schlecht ist.

Und ich sage nicht, dass es gut ist ;-) ...sondern lediglich, dass da offenbar entgegen deiner Vermutung(?) doch jemand mit Hollywood an einer größeren Software arbeitet. Zumindest würde ich ein komplettes Media-Center in diesem Bereich ansiedeln, auch wenn beispielsweise für das Abspielen von A/V-Daten auf den MPlayer zurückgegriffen wird.

> Z.b. glaube ich nicht, dass man sowas wie HD-Rec, YAM oder ArtEffect damit
> schreiben könnte. Aber ich kenne Hollywood nicht so gut, evtl. irre ich mich.

Um das zu beurteilen, kenne auch ich Hollywood nicht gut genug.

[ Dieser Beitrag wurde von Andreas_Wolf am 07.05.2010 um 14:51 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

07.05.2010, 15:07 Uhr

Der_Wanderer
Posts: 1229
Nutzer
... wobei Hollywood ein geschlossenes System ist, soweit ich weis. Das geht für "richtige" Entwicklung natürlich nicht, weil man zu anderen Libs, Sprachen, CPUs etc. im Ernstfall offen sein muss. Ist aber für 100%ige X-Platform Entwicklung wiederum notwenig.

--
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de


[ - Antworten - Zitieren - Direktlink - ]

07.05.2010, 16:25 Uhr

Thore
Posts: 2266
Nutzer
Ich denke, mit OWB und Blender auf MorphOS, Timberwolf auf OS4 (und andere Programme) wird auch gezeigt, daß Großprojekte durchaus gemacht werden, und diese Leute Spaß dran haben.
Lob an jene Programmierer.

[ - Antworten - Zitieren - Direktlink - ]

07.05.2010, 16:57 Uhr

Der_Wanderer
Posts: 1229
Nutzer
@Thore:
OWB, Blender und Timberwolf sind alles Ports von Programmen, die auf Portierung bereits vorbereitet sind und keine Amiga Neuentwicklungen.
Da wäre eine High-Level API sogar eher störend als hilfreich, weil die Programme auch eher auf Low-Level Ebene arbeiten, und intern ihre eigene HighLevel API aufbauen, zwecks Portierbarkeit.
Aber das sind Grosse Projekte, die man alleine auf dem Amiga niemals stemmen könnte. Zumindest eben nicht mit der AmigaOS API.

--
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de


[ - Antworten - Zitieren - Direktlink - ]

07.05.2010, 17:41 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von jolo:
Bezüglich IDE: Viele Programmierer benutzen keine IDE, sondern einen Texteditor nach Wahl und 'makefiles'.

Das mag für C-Programmierer so sein, insbesondere, wenn die IDEs, die sie sich vorher angeschaut haben, tatsächlich nur umständlich zu bedienende makefile-Generatoren waren.
Wenn man erst mal mit anderen Programmiersprachen gearbeitet hat, kommt einem so etwas wie eine Rückkehr zur Steinzeit vor.
Zitat:
Mir persönlich bringt eine IDE auf dem Amiga (OS3) aber solange nichts, wie mir schneller als ich schauen kann das Betriebssystem unterm Hintern wegschmiert, und das nur bei kleinen Fehlern.
Ja, woran liegt das wohl...
Da spielt die Kombination aus Programmiersprache und API des Betriebssystems mit Sicherheit eine nicht zu unterschätzende Rolle.
Zitat:
Das Laden einer IDE unter AmigaOS3 dauert mir viel zu lange, da lobe ich mir schlanke Texteditoren, die es zu Hauf auf dem Amiga gibt.
Eine IDE muss ja nicht zwangsläufig langsamer als ein Texteditor starten.
Wir haben nur kein solches Werkzeug...
Zitat:
Ich habe zudem eine andere Ansicht als Der_Wanderer bezüglich "warum ein Betriebssystem ein Erfolg wird oder nicht".
Der Schlüssel zum Erfolg, meiner Meinung nach, ist das Marketing. [...]
Ich behaupte mal, dass QNX Neutrino wesentlich besser als Linux ist - und es trotzdem kein Erfolg wurde.

Und Du meinst "Linux" hat mehr Marketing betrieben als QNX?
Ich wäre auch, was die Bewertung des Erfolgs von QNX angeht, etwas vorsichtiger.
Zitat:
Und ja, auch Der_Wanderer hat Recht: Je weniger Zeit man sich mit Low-Level-Funktionen rumplagen muss, desto schneller sieht man Ergebnisse. Nur, sind wir davon bei der Amiga/MorphOS-Programmierung weit entfernt.
Eben.
Zitat:
Aber, das macht auch einen Teil des Reizfaktors beim Programmieren aus - die Zusammenhänge zu verstehen und nicht nur etwas nutzen. Alle, die ausschließlich letzteres wollen, sollten einen Blick auf Hollywood werfen.
Auch auf einer höheren Ebene bedeutet Programmieren, Zusammenhänge zu verstehen. Man hat allerdings die Gelegenheit, auch größere Zusammenhänge zu verstehen...
Zitat:
Original von Thore:
Hollywood ist ein Multimedia Layer und keine "echte" Programmiersprache an sich.

Das kann man so nicht sagen.
Zitat:
Trotz einfacher Syntax verwendet man es nicht so groß wie C/C++, obwohl es auch Win-Versionen gibt. Dann kanns wohl nicht an der API/Befehlssatz liegen.
Die Tatsache, dass es Geld kostet und es nicht mal eine Demoversion gibt, könnte auch eine Rolle spielen.

Andernfalls könntest Du Dich jetzt mal auf die Schnelle davon überzeugen, dass es durchaus eine Programmiersprache ist. Unabhängig von der Frage, ob Du es dann benutzen wirst.
Zitat:
Macht man sich als 1-Mann-Programmierer die Arbeit, die auf anderen Systemen zwischen 5 und 100 Leute gemacht haben?
Ich denke DAS ist vielmehr der Knackpunkt. Ein Ressourcen-Zeit-Problem.

Natürlich ist es ein Ressourcen/Zeit Problem. Deshalb kann sich Linux auch leisten, grottige APIs anzubieten und irgendwer baut dann schon bessere High-Level APIs drumherum, gerne auch zwei, drei verschiedene Parteien gleichzeitig, so entstehen Gnome und KDE, WebOS und ChromeOS und trotzdem bleiben noch Ressourcen übrig, um darauf aufsetzend auch noch nutzbare Anwendungen zu stricken.

Der Amiga hat solche Ressourcen nicht, und genau deswegen ist es umso wichtiger, die Ressourcen nutzbringend einzusetzen und nicht dafür zu verpulvern, zum hundertsten Mal den gleichen Workaround um eine unzureichende Funktion zu bauen.

Zitat:
AmigaBASIC hat auch einen einfacheren Befehlssatz wie C/C++, wird aber weniger verwendet (Liegt aber vermutlich eher in den Micro$oft Bugs *g*)
Der Befehlssatz von Basic ist größer als der von C. Die Funktionsbibliotheken sind dagegen dieselben Amiga-Libraries, womit man also nicht mehr und auch nicht weniger als mit C machen kann. Nur mit dem Unterschied, dass man für Basic auch noch die aktualisierten includes selber generieren müsste, während sie für C vom OS-Entwickler geliefert werden.
Und die fehlende 32Bit-Kompatibilität von AmigaBasic macht es natürlich komplett unbrauchbar. Von der Geschwindigkeit will man da gar nicht erst reden.
Zitat:
Original von Der_Wanderer:
... wobei Hollywood ein geschlossenes System ist, soweit ich weis. Das geht für "richtige" Entwicklung natürlich nicht, weil man zu anderen Libs, Sprachen, CPUs etc. im Ernstfall offen sein muss.

Na Hollywood kann offenbar schon für verschiedene CPUs eingesetzt werden.

Aber Hollywood ist voll allem ein kommerzielles System, von dem es noch nicht einmal eine Demoversion gibt. Das hat naturgemäß Schwierigkeiten, zu einer allgemeingültigen Schnittstelle zu werden.

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

07.05.2010, 18:15 Uhr

Der_Wanderer
Posts: 1229
Nutzer
@Holger

Vollste Zustimmung, hätte das nicht besser sagen können.

Eigentlich müssten sich alle verbleibenden Entwickler erstmal auf eine freie, offene high-level API für AmigaOS stürzen. Wenn das dann in einem Jahr fertig wäre, hätte man eine gute Basis für neue Projekte, nach einem weiteren Jahr hätte sich das mehr als amortisiert und dann *könnte* es aufwärts gehen. Vielleicht. Aber so wie jetzt geht es auf keinen Fall. Mit aufwärts meine ich nicht, dass AmigaOS irgendwann in reichweite von Windows, Mac oder Linux kommt. Aber vielleicht mehr User als jetzt, oder zumindest bessere Software Versorgung als jetzt.

Wie Holger geschrieben hat, verpuffen die meisten Anstrengungen da sie für andere Entwickler wenig Mehrwert bringen und schon hunderte Male implementiert wurden. Das ist so wie zu Fuss um die Welt laufen. Wenn man sich vorher ein Flugzeug baut, dann kostest das zwar erstmal Zeit, aber danach ist man mächtig. Wenn man einfach zu Fuss los läuft, dann ist die zweite Hälfte genauso schwer wie die erste, man hat also nichts gewonnen.
Die Entwicklung einer Library, die lediglich von Bild Fromat A nach B kopiert bringt fast gar nichts.
Es muss ein ganzes System aus Libraries sein, die hirarchisch aufgebaut sind und gegenseitig nutzen ziehen.
So wie eben die Amiblitz3 Runtime. Nur umfassender, sophistikateter und konsistent durchgestyled, sodass jemand der weis, wie man ein Bild lädt, auch sofort weis wie man einen Sound lädt.
Eine gute Basis dafür wäre wohl AROS, das wären die einzigen die sowas "offiziell" machen könnten, und vielleicht würde es dann auf den anderen Platformen akzeptiert.


--
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de



[ Dieser Beitrag wurde von Der_Wanderer am 07.05.2010 um 18:34 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

08.05.2010, 15:13 Uhr

Kaesebroetchen
Posts: 643
Nutzer
Zitat:
Original von Der_Wanderer:

Eine gute Basis dafür wäre wohl AROS, das wären die einzigen die sowas "offiziell" machen könnten, und vielleicht würde es dann auf den anderen Platformen akzeptiert.


Volle Zustimmung.

An Akzeptanz dürfte es kaum mangeln. Immerhin haben sich alle Parteien seit jeher kräftig bei den AROS Sourcen bedient (was die Lizenz ja auch vorsieht) von daher dürfte es da keine falsche Bescheidenheit geben, wenn es bei AROS eine moderne Multimedia API für Lau zu holen gibt.

Warum holst du dir nicht schon mal einen SVN Zugang ?

Das verpflichtet dich zu nichts und kannst einfach mal experimentieren was so geht.

Eine oft unterschlagene Tatsache ist, das man zum entwickeln nicht mehr zwangsläufig Linux braucht (auch wenn es nach wie vor das Beste ist) sondern auch unter Windows (Cygwin) arbeiten kann.
--
http://amidevcpp.amiga-world.de/

[ Dieser Beitrag wurde von Kaesebroetchen am 08.05.2010 um 15:14 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

08.05.2010, 15:30 Uhr

jolo
Posts: 110
Nutzer
@Der_Wanderer:

Zitat:
Ich glaube die "Zufriedenheit" mit der API so wie sie ist kommt daher, dass kaum jemand noch versucht was ernsthaftes damit zu entwickeln.
Den Amiga Proggern geht es wohl eher darum, sich mit dem OS als Selbstzweck zu beschäftigen als mit einer echten, nützlichen Applikation, die entstehen soll.


Würdest Du nur mich ansprechen, würde ich Dir zustimmen. Da ich Programmieren nur als Hobby betreibe, kann daran auch keiner etwa aussetzen. :)
Ich verlange kein Geld für meine Programme, dementsprechend brauche ich auch keine Rücksicht auf Anwender zu nehmen. Ich entwickle hauptsächlich Werkzeuge, die für mich interessant sind.

Ich kann Dir aber auch versichern, dass es professionelle Programmierer gibt, die nach wie vor versuchen ihre zig Mega-Bytes umfassende kommerzielle Anwendung AmigaOS/MorphOS tauglich zu halten, und ich meine diesmal nicht Hollywood.
Zudem sind sie trotz der deiner Meinung nach "Unzulänglichkeiten der Amiga/MorphOS Betriebssystemen" imstande, ihre Programme AmigaOS/MorphOS kompatibel zu halten, teilweise aber mit Abstrichen. Ob es sich für sie rechnet, wird die Zukunft zeigen.


Zitat:
Es werden eher Mini-Projekte gemacht, die zum Experimentieren oder Lernen dienen, aber nicht als richtige Applikation released werden sollen, wo man auf Stabilität, GUI Richtlinien, Integration ins OS, Kompatibilität mit der Aussenwelt etc. wert legt.

Falsch und richtig. Selbst *Mini-Projekte* werden garantiert nicht released, wenn es offensichtliche Fehler gibt.
Bei der GUI gibt es zudem kein falsch und richtig. Die einen benutzen MUI, die anderen Reaction, andere wiederum BOOPSI und die ganz Harten nach wie vor Intuition-Objekte als solche. Es gibt keine einheitliche GUI. Unter MorphOS sollte man MUI verwenden, unter AmigaOS4 Reaction, unter AROS Zune, aber unter OS3? Da bleibt es jedem selber überlassen.
Wenn man halbwegs Übertragbarkeit in Betracht zieht, muss man MUI verwenden, aber mit den Einschränkungen der jeweiligen Form für das zugrunde liegende System leben.

Integration ins OS sowie Kompatibilität mit der Außenwelt sind nur dann wirkliche Herausforderungen, wenn man ganz, ganz tief unten ansetzt beim Programmieren. Die meisten nehmen vorgefertigte Funktionen dafür, siehe Datatypes, und können somit sicherstellen, dass ihre Applikationen sich nahtlos ins System integrieren.


@Thore:
Zitat:
Das Problem ist wohl eher dieses: Man sieht auf Linux ein Programm, versucht es zu portieren. Es ist posix, benutzt vll noch fork/vfork und schon fängt das erste Problem an: Kein posix, kein fork.

Solange es die POSIX-API benutzt kann man es portieren, auch wenn einige POSIX-Funktionen in der entsprechenden Amiga-Implementierung nicht vorhanden sind. Es bedeutet aber einen Mehraufwand, weil man die fehlenden Funktionen nachbilden muss.
Bei fork() sieht es ähnlich aus aber man kann es leider nicht wirklich benutzen, weil es keine Benutzerrechte unter AmigaOS gibt.
Demnach, da hast Du Recht, ist es fast aussichtlos ein Programm zu portieren, dass fork() benutzt.
Für MorphOS/AmigaOS4 bin ich mir nicht sicher, ob es nicht doch möglich ist solch eine Funktion nachzubilden, weil beide versuchen, mehr POSIX-Style (Linux) Programmierung zu erlauben, bzw. die Low-Level-Funktionen die als Basis dafür dienen, anzubieten.
Da müsste man sich an die jeweiligen Entwickler wenden. Ich bin da überfragt. :)


@Der_Wanderer:
Zitat:
Aber ich bin nun immerhin in der Lage, wenn du mir jetzt sagst: "Programmiere ein Tool, wo ich ein Bild reinladen kann, die Schärfe und Farbraum anpassen, resizen und als JPEG, PNG, BMP oder IFF abspeichern."
Dann kann ich das in 2-3h erledigen, und zwar so dass es unter OS3, OS4 und MOS funtkioniert.
Mit der AmigaOS API direkt brauche ich dafür 20-30h, oder vermutlich noch wesentlich mehr wenn man die Saver und DSP Algorithmen noch entwickeln muss, und dannach auch noch Beta Testen auf den verschiedenen Plattformen.


Na, so schlimm ist es nun wieder auch nicht.
In 2004 habe ich innerhalb eines Nachmittages ein solches Beispiel programmiert, allerdings ohne Abspeicherungsmöglichkeit und Skalierung, jedoch mit der Möglichkeit zur freien Rotation unter Verwendung des Bilinear-Patches.
Die Möglichkeit zur Skalierung wurde nachträglich hinzugefügt (Eigenentwicklung, ca. 1 Stunde Aufwand). Der betreffende C-Quellcode des gesamten Beispiels dürfte noch in der entsprechenden Mailingliste (Yahoo) vorhanden sein.


@Holger:
Zitat:
Das mag für C-Programmierer so sein, insbesondere, wenn die IDEs, die sie sich vorher angeschaut haben, tatsächlich nur umständlich zu bedienende makefile-Generatoren waren.
Wenn man erst mal mit anderen Programmiersprachen gearbeitet hat, kommt einem so etwas wie eine Rückkehr zur Steinzeit vor.


Die wirklich erste gute IDE, abgesehen von Devpac 3, die ich verwendet habe, war die, die dem MaxonC++-Compiler spendiert wurde. Ausgeklügelt angelegt, bunt ( :) ), übersichtlich, intuitiv zu bedienen.
Die VC++ IDE unter Windows ist bestimmt nicht schlecht - und trotzdem komme ich mir nicht vor als wäre ich wieder im Steinzeitalter gelandet nur weil ich handverfasste 'makefiles' benutze.
Zudem glaube ich nicht, aber ich kann mich täuschen, dass ein Projekt mittels einer IDE erstellt, so ohne weiteres auf andere Systeme übertragbar ist. Demnach, falls meine Aussage richtig ist, muss man sich ohnehin mit 'makefiles' beschäftigen, wenn man denn etwas von einer anderen Plattform portieren möchte bzw. auf eine andere portieren möchte, jedenfalls für C/C++.

Da die Programmiersprachen, die ich momentan benutze als ausreichend für meine Belange erscheinen, sehe ich auch nicht die Notwendigkeit, eine IDE zu erlernen.
C und C++ sind relativ weit *unten*, Java und Co relativ weit *oben*, demnach denke ich, dass man bei höheren Programmiersprachen mehr Wert auf eine IDE legt, abgesehen vom persönlichen Geschmack.
Es gibt nämlich auch Assembler-Programmierer, die eine IDE verwenden. :)


Zitat:
Mir persönlich bringt eine IDE auf dem Amiga (OS3) aber solange nichts, wie mir schneller als ich schauen kann das Betriebssystem unterm Hintern wegschmiert, und das nur bei kleinen Fehlern.
Zitat:
Ja, woran liegt das wohl...
Da spielt die Kombination aus Programmiersprache und API des Betriebssystems mit Sicherheit eine nicht zu unterschätzende Rolle.



Nee, für Fehler zeichne ich mich alleine verantwortlich. :)
Es gibt Tage, da programmiere ich ohne einen einzigen Fehler im Quellcode zu haben, abgesehen von kleinen Unzulänglichkeiten. Es gibt aber auch Tage, da mache ich dermaßen viele Fehler an einem einzigen Tag, dass ich manchmal an mir selber zweifle. :)


Zitat:
Und Du meinst "Linux" hat mehr Marketing betrieben als QNX?

Ich gehe davon aus. Das Pinguin-Emblem findet man überall, anders als der goldene Stern.


Zitat:
Auch auf einer höheren Ebene bedeutet Programmieren, Zusammenhänge zu verstehen. Man hat allerdings die Gelegenheit, auch größere Zusammenhänge zu verstehen...

Was sind für Dich größere Zusammenhänge?


Zitat:
Natürlich ist es ein Ressourcen/Zeit Problem. Deshalb kann sich Linux auch leisten, grottige APIs anzubieten und irgendwer baut dann schon bessere High-Level APIs drumherum, gerne auch zwei, drei verschiedene Parteien gleichzeitig, so entstehen Gnome und KDE, WebOS und ChromeOS und trotzdem bleiben noch Ressourcen übrig, um darauf aufsetzend auch noch nutzbare Anwendungen zu stricken.

Der Amiga hat solche Ressourcen nicht, und genau deswegen ist es umso wichtiger, die Ressourcen nutzbringend einzusetzen und nicht dafür zu verpulvern, zum hundertsten Mal den gleichen Workaround um eine unzureichende Funktion zu bauen.


Obschon Du definitiv Recht hast, spielt es doch nur eine entscheidende Rolle für kommerzielle Projekte, die mal eben so auf die Schnelle portiert werden sollen. Gut, dem Der_Wanderer schwebt ein kommerzielles Produkt vor, da ist so etwas mehr als ärgerlich, auf der anderen Seite existieren aber (Hobby-) Programmierer, die mit solchen Zuständen auch gut leben können. Zudem sind, wie whose schon ausgeführt hat, die unterschiedlichen APIs seitens MorphOS/AmigaOS4 eine größere Belastung für jeden Programmierer, es sei denn, er legt sich auf ein System fest. Meiner Meinung nach gibt es "der Amiga" nicht mehr. Bis 1993 ja, danach teilte sich ja alles auf. Wir haben mittlereile fünf Systeme (sechs ?). Classic Amiga, PowerUp (?), WarpOS, AROS, MorphOS, AmigaOS4 (in order of appearance, AFAIR). Ich denke, wir können getrost davon sprechen, dass "der Amiga" als solches nicht mehr existiert.


@Der_Wanderer:
Zitat:
Eigentlich müssten sich alle verbleibenden Entwickler erstmal auf eine freie, offene high-level API für AmigaOS stürzen.

Wenn Du mehr als eine Personen in ein Boot steckst und keine klare Hierarchie besteht, wird nur Chaos dabei herauskommen.
Hat aber einer das letzte Wort, muss sichergestellt werden, dass diejenigen, die etwas ausarbeiten sollen, es auch tun, ohne wenn und aber. Üblicherweise spricht man dann von einem Angestelltenverhältnis. :)
Du weißt worauf ich hinaus will?

Habe ein wenig Geduld, irgendwann erfahren wir, ob MorphOS oder AmigaOS4 oder auch AROS das Zeug dazu haben, weiter zu bestehen. Für Dich, der etwas Kommerzielles vertreiben möchte, ist es bestimmt nicht der beste Rat, aber am Beispiel von Hollywood kann man erkennen, dass es jetzt auch schon möglich ist kommerzielle Wege zu beschreiten, allerdings dies mit Aufwand verbunden ist.
Ob Du dazu bereit bist, liegt einzig und alleine bei Dir.
Anbei, eine einheitliche API für die verschiedenen Systeme wird es meiner Meinung nach nie geben.


Grüße

[ - Antworten - Zitieren - Direktlink - ]

08.05.2010, 20:03 Uhr

Thore
Posts: 2266
Nutzer
@Holger
Ja ob was kommerziell ist oder nicht ist auch ein Faktor, den man nicht unterschlagen sollte. Allerdings ist Hollywood seinen Preis wert.

Ich sagte nicht daß AmigaBASIC einen kleineren Befehlsumfang hat sondern "einfacher". Wobei Du mit Deiner Kritik recht hattest, ich meinte nicht den Befehlssatz an sich sondern die Befehle und das Programmieren an sich (z.B. um ein Window zu öffnen braucht man hier nur eine Zeile Code, auf OS1.x und C geht es nur mit mehreren, ab OS2.x Dank TagLists in wenigen Zeilen aber immer noch mehr Schreibarbeit)
Daß C nur eine kleine Menge eigener Befehle mitbringt ist jedem C-Programmierer bekannt :)
Sorry, mein Fehler.

Wenn Hollywood seine Plugin-Schnittstelle bekommt, könnte man flexibler werden.

Auf anderen Systemen zahlen die Leute 6000 Euro für ein Programm, um Installations-Pakete zu erzeugen... Soviel zur Relation :)

Die Linux-Programme sind übrigens nicht "fürs Portieren" gemacht :)
Die Portabilität von Linux-Programmen ist eigentlich nur innerhalb der Linux-Welt zu verstehen. Alles was nach außen portiert wird, ist entweder zufällig gleich richtig oder muss kompatibel gemacht werden (z.B. mit Hilfe von GeekGadget, ixemul, cygwin,....)

Das MorphOS OWB und AmigaOS OWB benutzen nur den gleichen Kern. Alles andere außenrum ist eigenständig. Timberwolf benutzt als GUI übrigens Intuition und kein GTK-Ersatz. Also auch viel Handarbeit (sonst wärs ja easy, einfach compilieren...)

Eine zumindest teilweise einheitliche API wurde mit SDL schon versucht, das klappt auch soweit ganz gut :)

Also Leute, programmiert :) Es fehlt noch ein Office und ein gutes Chatprogramm :D

[ Dieser Beitrag wurde von Thore am 08.05.2010 um 20:04 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

09.05.2010, 15:00 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von jolo:
Die wirklich erste gute IDE, abgesehen von Devpac 3, ...

Ja, für damalige Verhältnisse war Devpac 3 schon ganz gut, insbesondere wenn man bedenkt, was Assembler-Programmierern sonst so zugemutet wurde.
Zitat:
... die ich verwendet habe, war die, die dem MaxonC++-Compiler spendiert wurde. Ausgeklügelt angelegt, bunt ( :) ), übersichtlich, intuitiv zu bedienen.
MaxonC++ war bunt? Kann ich mich gar nicht mehr erinnern. War das auch ein umgelabeltes HiSoft-Produkt?
Zitat:
Zudem glaube ich nicht, aber ich kann mich täuschen, dass ein Projekt mittels einer IDE erstellt, so ohne weiteres auf andere Systeme übertragbar ist. Demnach, falls meine Aussage richtig ist, muss man sich ohnehin mit 'makefiles' beschäftigen, wenn man denn etwas von einer anderen Plattform portieren möchte bzw. auf eine andere portieren möchte, jedenfalls für C/C++.
Ja, wie bereits gesagt, für C/C++-Programmierer sieht die Welt etwas anders aus...
Zitat:
Es gibt nämlich auch Assembler-Programmierer, die eine IDE verwenden. :)
Mindestens Dich und mich. ;)
Zitat:
Nee, für Fehler zeichne ich mich alleine verantwortlich. :)
Dass kleine Fehler nicht sofort bemerkt werden und später gleich zum Absturz führen, liegt nicht an Dir.

Zitat:
Zitat:
Und Du meinst "Linux" hat mehr Marketing betrieben als QNX?
Ich gehe davon aus. Das Pinguin-Emblem findet man überall, anders als der goldene Stern.
Du verwechselst Ursache und Wirkung.
Zitat:
Was sind für Dich größere Zusammenhänge?
Sich beispielsweise nicht mit drei verschiedenen Grafik-APIs herumschlagen zu müssen, wenn die Render-Engine eines Webbrowsers schon kompliziert genug ist. Nicht die Darstellung von Unicode von Hand implementieren zu müssen, wenn man Html parsen und Darstellen will.

Zitat:
Obschon Du definitiv Recht hast, spielt es doch nur eine entscheidende Rolle für kommerzielle Projekte, die mal eben so auf die Schnelle portiert werden sollen.
Es ging überhaupt nicht um den Portierungsauswand, sonst würde ich ja wohl sagen, her mit dem Posix-API, weg mit dem Amiga-spezifischen Zeug. Aber das sage ich ja wohl nicht, wenn ich bessere High-Level APIs fordere. Und Hobby-Programmierer habe auch nur begrenzte Ressourcen, sie sind sogar deutlich begrenzter als die von kommerziellen Entwicklern.

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

09.05.2010, 20:32 Uhr

Der_Wanderer
Posts: 1229
Nutzer
Also hier werden ein paar Dinge durcheinander geworfen.

1. Ich habe nicht vor, eine kommerzielle Software für den Amiga zu machen. Kommerziell und Amiga sind momentan zwei Widersprüche, da zu wenige potentielle Kunden. Hollywood und OS4 sind auch nur Hobby Projekte, für die eine Aufwandsentschädigung verlangt wird. Leben kann davon niemand.

2. Kommerzielle Entwickler haben mehr Zeit für die Entwicklung, und sind auf jeden Fall auch dafür ausgebildet. Da wäre eine alte/schlechte/low-level/schwache API noch eher verkraftbar als im Hobby Bereich, zumindest wenn es darum geht echte, nutzbare und stabile Software zu bauen.
(Experimente oder System Hacks sind natürlich wieder was anderes)

3. So eine High-Level API wie ich vorgeschlagen habe bringt für Portierungen nicht viel, weil die zu portierenden Programme diese API ja gar nicht nutzen. Im Gegenteil, wenn man eine fremde API nachbilden muss (beim Portieren), dann kommt einem eine Low-Level API eher entgegen. Zum Portieren, zumindest von der Linux Welt (wo ja viele der Open-Source Programme herkommen), wäre Posix wichtig, wenn auch nicht ausreichend. Posix ist low-level, und kümmert sich hauptsächlich um Dinge wie wir sie in der dos und exec.library finden, aber keine GUI Toolkits oder Multimedia Bibliotheken etc.
Aber Portieren kann nicht das vorrangige Ziel einer Plattform sein, denn damit kann man höchstens zweit-Bester sein, egal welche Kathegorie. Portieren macht nur Sinn um Löcher zu stopfen, die man selbst nicht besetzen will oder kann. Was benötigt wird sind "Only-Amiga-makes-it-possbile"-Apps. Z.b. werfe ich AmigaOS an, um ArtEffekt, HD-Rec, Amiblitz oder TuiTED zu nutzen, nicht um zu surfen oder Videos zu gucken. Das ist natürlich schön zu haben, aber nicht das Argument um AmigaOS zu installieren.

Die High-Level API wäre genau dafür, Entwicklungen auf dem Amiga, für den Amiga zu mahcen. Man könnte natürlich hergehen, und diese API für Win oder Linux portieren. Der Sinn wäre dann der Export von Amiga Apps, nicht der Import, das sind zwei ganz verschiedene Paar Schuhe.

Der Amiga ist was das Entwickeln angeht momentan ganz weit abgeschlagen, man entwickelt noch genauso wie vor 20 Jahren, evtl. ist das IDE besser geworden und die Auflösung, so dass mehr Text auf dem Screen passt. Die API, die man programmieren muss ist aber noch genauso, obwohl die Anforderungen anders sind und die Ansprüche/Erwartungshaltung beim User stark gestiegen.
Und nein, unter Windows (wenn man das denn als Vorbild überhaupt in betracht zieht) programmiert man nicht unbedingt die nackte Win32 API. Es gibt reichlich Auswahl an GUI Toolkits, Multimedia APIs etc.

Und ich denke das ist die mit Abstand lebenswichtigste und empfindlichste Stelle. Viel wichtiger als Ports von Browsern, SDL Games oder Blender. Die gibt es auch alle auf dem PC und "in besser", und sind z.B. auf einem WinUAE System eh nicht nötig.
WinUAE ist für mich momentan die einzige Alternative für AmigaOS, da ich nebenher Windows und Linux brauche und auf einen Laptop angewiesen bin (und mein Lieblings-IDE 68K Code erzeugt).

--
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de


[ Dieser Beitrag wurde von Der_Wanderer am 09.05.2010 um 21:41 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

23.05.2010, 14:30 Uhr

Reth
Posts: 1858
Nutzer
@Der_Wanderer:

Ohne den ganzen Thread gelesen zu haben, pflichte ich Dir hier 100% (oder mehr, je nachdem wieviel gewünscht ist) bei! Völlig korrekt erkannt! Ich spreche hier aus Erfahrung!

Das, was für mich die Programmierung des Amigas und des AmigaOS (bis 3.9 für 68k zumindest, das AOS4-API hab ich mir dahingehend noch nicht angeschaut) am schwierigsten gestaltet ist das API, mit dem ich zu kämpfen habe!

Allein der Aufwand, ein Fenster zu öffnen, das einige von mir benötigte Dinge mit sich bringt (Menü, entsprechende Verarbeitung diverser Ereignisse) sind dermaßen aufwendig im Vgl. z.B. zu denselben Dingen in Java, dass darin zu viel Zeit und Energie verschwindet! Auch im Rahmen von Windows ist das Programmieren mit dem API in Teilen deutlich einfacher!

Ich möchte nicht wissen, wie viele Amiga-Programmierer sich schon eigene "Frameworks" o.ä. gebastelt haben, um den Aufwand mit der API bei Wiederverwendung gleicher Konstrukte (z.B. GUI-Elementen) zu minimieren! Da wurde das Rad sicher 1000-fach neu erfunden!

Mich stört es enorm, wenn ich mich bei der Entwicklung nicht auf das Kernproblem konzentrieren kann (wenn dieses nicht das API oder die Programmierung damit/dafür selbst ist), da ich mich ewig mit den komplizierten Konstrukten der Betriebssystem-Programmierschnittstelle rumschlagen muss!

Besserung ist hier aber wohl nicht in Sicht! Bedeutet im Umkehrschluss, dass jeder, der sich neu mit der Amiga-Programmierung beschäftigen möchte vor einer enorm aufwändigen Einarbeitung in diese komplizierte API gestellt sieht, bevor er/sie überhaupt daran denken kann, mit der "eigentlichen" Entwicklung des gewünschten Programmes zu beginnen! Hier können die vielen guten Kurse, Foren und Bücher nur helfen, nicht bessern!

Ciao

[ - Antworten - Zitieren - Direktlink - ]

23.05.2010, 17:13 Uhr

whose
Posts: 2156
Nutzer
@Reth:

Du liebe Güte, hört das eigentlich nie auf? Ihr redet um den heißen Brei herum. Weder Java noch Windows hatten "von Geburt" an die "API", von denen ihr hier berichtet. Beide sind immer noch genau so "low level" wie AmigaOS. Der Knackpunkt sind die (mehr oder weniger) fehlenden Toolkits, Linker-Libraries, DLLs oder AmigaOS shared libraries für eure Zwecke, nicht das AmigaOS API an sich.

Blättert einfach mal durchs Aminet, wie viele Toolkits sich dort befinden, die keine S** (tschuldigung!) außer dem Entwickler selbst je benutzt hat. Es finden sich sogar mehrere Bibliotheken für OOP-Fans da. Wer hat die bisher genutzt? Und wenn die nicht genutzt wurden, aus welchen Gründen? Welche Ausrede findet ihr, um die auch nicht zu nutzen?

Ich kann diese "aber das API ist soooo schlecht"-Jammerei echt bald nicht mehr lesen. Nutzt endlich mal das, was zur Verfügung steht und verbessert es ggf., statt ständig nach neuen Toolkits zu brüllen, die dann doch wieder kein Mensch nutzt.

Oder macht die von Euch so dringend benötigten Toolkits selbst. Da zeigt sich dann auch ganz nebenbei, ob es wirklich sinnvoll ist, die von Euch bevorzugten API-Erweiterungen/-Vereinfachungen per Toolkit für AmigaOS zu benutzen. In den meisten Fällen dürfte auf Euch die eine oder andere nicht so positive Überraschung warten, was z.B. Performance angeht...

--
---

:boing: µA1 PPC 750GX-800
:boing: A4000 PPC 604e-233

[ - Antworten - Zitieren - Direktlink - ]

23.05.2010, 22:01 Uhr

Der_Wanderer
Posts: 1229
Nutzer
@whose:

> Ihr redet um den heißen Brei herum.
Nein, wir sprechen ganz genau den heißen Brei an.

> Weder Java noch Windows hatten "von Geburt" an die "API",
Das ist schon richtig, nur sind mittlerweile 20 oder mehr Jahre vergangen, und es gibt nun besseres. Ich entwickle momentan für Android, das ist so ziemlich die neueste API die es gibt an OS. Mag sein, dass ein "echter hardcore Programmierer" da die Nase rümpft, aber mit ein paar Klicks hat man eine funktionierende App gebastelt, sie sich systemkonform verhält. Sound abspielen? Bitteschön, Sound laden, Sound spielen, sind zwei intuitiv nachvollziehbare Methoden die man aufrufen muss, aufnehmen oder streamen genauso. Wenn ich daran denke was man bei AHI alles schlimmes tun muss, bis das funktioniert. Und AHI gehört ja noch zu den neueren APIs.

> Oder macht die von Euch so dringend benötigten Toolkits selbst.
Das habe ich ja alles schon gemacht. Hat tausende Stunden meiner Freizeit gekostet, in denen ich keine produktive App erstellt habe. Das ist ja genau der Kritikpunkt. Wenn du das einer Firma sagen würdest, die wirtschaftlich sein muss, dann würden sie diese Plattform nicht mal mit der Kneifzange anfassen.

Das Problem warum niemand diese Libraries oder Toolkits nutzt ist, dass keines wirklich umfassend und offiziell vom OS ist. Was ich sagen will sind zwei Dinge:

1. Wenn man sich abhängig macht von 3rd Party Software, dann muss man überzeugt sein, dass sie alles kann was man braucht, und sie sollte noch "am leben" sein falls unüberwindbare Bugs auftauchen. Das ist selten der Fall weil das meiste Hobby Sachen sind die nur die Bedürfnisse des Authors berücksichtigen. Und kaum ein OS ist so voll von "Individualisten" wie der Amiga.

2. Die APIs sind nicht koordiniert und unterstützen sich nicht gegenseitig. Es gibt z.B. IBrowse oder AWeb, aber sie stellen kein HTML View Widget für AmigaOS zur Verfügung. Also jeder bäckt seine eigenen Brötchen, die untereinander nicht zusammenpassen. Das verhindert jede Menge hochqualitative Entwicklungen, wie z.b. HTML Emails lesen, Online Hilfen mit schönem Layout und Bilder (AmigaGuide? Eeek!), besser noch gleich via Internet, so ist die Doku immer auf dem aktuellen Stand. Z.b. dem Android SDK liegt gar keine Doku direkt bei. Wenn man was anklickt kommt ein HTML View der sich die Doku als Website lädt.

Also wenn ich jetzt so eine API machen würde (vorausgesetzt ich hätte den Batzen Zeit, der dafür nötig wäre), dann würde das wohl kaum jemand nutzen weil das nicht offiziell ist und alle skeptisch wären und mir nicht zutrauen. Und mit Recht, denn ich bin ja nur ein Hobby Bastler mit ein bisschen Freizeit, so was "tolles" wie die Android API, an der zig Entwickler Vollzeit dran sitzen kann man da nicht leisten.

Es würde also Kooperation von Entwicklern und offizielle Integration ins AmigaOS vorraussetzen, um erfolgreich zu sein. Und das platform-übergreifend für OS3.x (oder OS4 für 68k), OS4 für PPC, MOS und AROS, weil das nunmal die jetzige Realität ist. Solange das nicht passiert, verpufft die meiste Entwickler Power und es entsteht kaum Mehrwert.

Nachtrag:
> In den meisten Fällen dürfte auf Euch die eine oder andere nicht so positive Überraschung warten, was z.B. Performance angeht...
HighLevel = langsamer als LowLevel ist heutzutage nicht mehr unbedingt zutreffend. Das war früher mal so, wo jeder CPU Cycle teuer war. Oftmals ist es gerade umgekehrt, dass durch weniger Wissen/Erfahrung die Low Level Library ineffizienter angewendet wird um das gleiche zu erreichen was der Higg-Level Call machen würde, vom Experten geschrieben. Wenn die High Level API gut designed ist, dann ist das in 90% der fälle sowieso genau das, was man sich durch Low-Level aufrufe zuammensuchen müsste.

Beispiel Grafikprogrammierung:
Früher hat man den Blitter direkt angesprochen, der Overhead via Treiber wäre sehr deutlich geworden.
Heute sind die Grakas vielfältiger und komplexer, keiner programmiert das mehr direkt. Er würde auch vermutlich was schlechteres produzieren als der Treiber vom Hersteller, weil die eben genau wissen wie man das am besten machen sollte.

--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de


[ Dieser Beitrag wurde von Der_Wanderer am 23.05.2010 um 22:19 Uhr geändert. ]

[ - Antworten - Zitieren - Direktlink - ]

24.05.2010, 11:44 Uhr

Thore
Posts: 2266
Nutzer
Wie ich schon öfters sagte. Nicht lange fackeln, handeln.
Eine Linklib könnte das Problem lösen :D Also ran an den Speck.

Ihr wisst ja was zu tun ist, wenn ich eure Beiträge so les. Hihi.

[ - Antworten - Zitieren - Direktlink - ]

25.05.2010, 19:24 Uhr

Holger
Posts: 8116
Nutzer
Zitat:
Original von whose:
Du liebe Güte, hört das eigentlich nie auf? Ihr redet um den heißen Brei herum.

Ich glaube, Du solltest die Bedeutung dieser Redewendung noch mal nachschlagen.
Zitat:
Weder Java noch Windows hatten "von Geburt" an die "API", von denen ihr hier berichtet. Beide sind immer noch genau so "low level" wie AmigaOS.
Ach so? Wäre mir neu, dass Java irgendwann mal komplizierte Verrenkungen benötigt hätte, wenn man mehr als 16 Fenster öffnen wollte. Dabei ist das noch gar nicht mal entscheidend, denn die meisten User mit Interesse an Software-Entwicklung scheitern ja schon an der Einrichtung einer funktionierenden Compiler-Umgebung, wenn man die Foren so verfolgt.
Zitat:
Blättert einfach mal durchs Aminet, wie viele Toolkits sich dort befinden, die keine S** (tschuldigung!) außer dem Entwickler selbst je benutzt hat.
Ja, GUI-Toolkits gibt es wie Sand am Meer.
Zitat:
Ich kann diese "aber das API ist soooo schlecht"-Jammerei echt bald nicht mehr lesen. Nutzt endlich mal das, was zur Verfügung steht und verbessert es ggf., ...
Das erlaubt der urheberrechtliche Status von AmigaOS nicht.
Zitat:
Oder macht die von Euch so dringend benötigten Toolkits selbst.
Ja woll, lasst uns noch ein paar Toolkits machen und ins Aminet stellen.
Zitat:
Da zeigt sich dann auch ganz nebenbei, ob es wirklich sinnvoll ist, die von Euch bevorzugten API-Erweiterungen/-Vereinfachungen per Toolkit für AmigaOS zu benutzen. In den meisten Fällen dürfte auf Euch die eine oder andere nicht so positive Überraschung warten, was z.B. Performance angeht...
Deine Logik ist ungemein bestechend. Wir sollen also die Performance bisher nicht existierender Toolkits mit der Performance von nicht existierender ... ja was eigentlich? vergleichen.

Software, die kein Toolkit verwendet (aber dieselbe Funktionalität implementiert)? Oder OSS-Ports, die OSS-Toolkits, die ursprünglich für ganz andere Systeme entworfen wurden, verwenden?

Dass die Toolkits hinterher keiner benutzt, liegt übrigens ganz einfach daran, dass die potentiellen Nutzer gerade damit beschäftigt sind, ihre eigenen Toolkits zu entwickeln.
Zitat:
Original von Thore:
Wie ich schon öfters sagte. Nicht lange fackeln, handeln.
Eine Linklib könnte das Problem lösen

Wie kommst Du darauf? Gibt es irgendeinen Beweis für Deine Behauptung, ausgerechnet eine Linklib könne das Problem lösen?

--
Good coders do not comment. What was hard to write should be hard to read too.

[ - Antworten - Zitieren - Direktlink - ]

25.05.2010, 19:40 Uhr

Der_Wanderer
Posts: 1229
Nutzer
> Wie ich schon öfters sagte. Nicht lange fackeln, handeln.
Eben nicht. Das ist ja genau das, was ich versucht habe zu veranschaulichen. Liest (und kognitiv verarbeitet) jemand (ausser Holger) mein Geschriebenes überhaupt?
Jeder für sich alleine kann nicht viel erreichen. Jede Lib oder Linkerlib wäre nur ein kleiner Baustein dessen was benötigt wird. Wenn die Bausteine nicht wie Lego aufeinander passen, wird ein Programm zur Flickschusterei mit viel fehleranfälligem Glue-Code und es gibt keine wiederkehrenden Mechanismen, die einem die Einarbeitung so sehr erleichtern.
Ausserdem ist es sehr gefährlich, wenn man 3rd Party Software (zumindest auf Binary Basis) einbindet, das ist wie ungeschützer Sex.
Die meisten Libs machen auf irgendeiner Plattform Zicken, alleine wegen dem wenigen Testen bei so vielen verschiedenen Libs.

Also der Weg zum Glück liegt selten auf dem gierigen Pfad.


--
--
Author of
HD-Rec, Sweeper, Samplemanager, ArTKanoid, Monkeyscript, Toadies, AsteroidsTR, TuiTED, PosTED, TKPlayer, AudioConverter, ScreenCam, PerlinFX, MapEdit, AB3 Includes und viele mehr...
Homepage: http://www.hd-rec.de


[ - Antworten - Zitieren - Direktlink - ]

25.05.2010, 20:08 Uhr

Thore
Posts: 2266
Nutzer
Doch wir lesen Deine Beiträge. Aber wir glauben nicht daß es hier was offizielles geben wird. Und gerade deshalb kannst Du hier wirklich nur mit Flickschusterei weiterkommen.
MUI war auch mal Flickschusterei, und inzwischen hats jeder. Wenn es wirklich nützlich ist, dann wird es sich auch durchsetzen.


[ - Antworten - Zitieren - Direktlink - ]


1 2 -3- 4 5 [ - Beitrag schreiben - ]


amiga-news.de Forum > Programmierung > C oder C++? [ - Suche - Neue Beiträge - Registrieren - Login - ]


.
Impressum | Datenschutzerklärung | Netiquette | Werbung | Kontakt
Copyright © 1998-2024 by amiga-news.de - alle Rechte vorbehalten.
.