Apples neue Programmiersprache "Swift"
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
ahnung
auge
code
compiler
entwickler
entwicklung
erstellen
http
kapitel
konzept
lernen
leute
problem
programmiersprache
prozedur
reihenfolge
sagen
sprache
url
windows
-
Moin Leute,
ich bin gerade dabei mir Swift anzuschauen, berufstechnisch bedingt wird sicherlich irgendwann jemand auf mich zukommen und sagen "du hast Ahnung" und die erwartete Antwort ist nunmal "ich hab Ahnung".
Davon ab: Wie zum Teufel kamen die auf die Idee eine so komplexe Sprache zu entwickln? 0,0
Also, ich hab angefangen mir die Konzepte durchzulesen, und bin soweit eig überzeugt, dass die Sprache an sich ganz nett ist. Man kann damit sicherlich ganz gut was erreichen. Die gegebenen Werkzeuge scheinen relativ simple und man sollte damit durchaus auch Apps bauen können. Als ich das Kapitel über die Reihenfolge der Abarbeitung las, war ich allerdings ein bsischen schokiert... Bevor eine Prozedur endet wird bereits mit dem Wert der Rückgabe, sofern einer entsteht, außerhalb der Prozedur weitergearbeitet. Ist werden Arrays erst nach dem Call der Prozedur mit werten befüllt, wird diese Befüllung dann doch zuerst vorgenommen, und die Prozedur erst nachträglich ausgeführt. Die Reihenfolge von Wertzuweisungen und der Abarbeitung dieser Werte ist sehr.. Interessant. Es ist in meinen Augen (ohne jetzt super Erfahrung zu haben mit der Sprache) irgendwie schwer vorhersehbar, wann was genau ausgeführt wird.
Wenn ich das richtig verstanden hab wird erst eine KOMPLETTE befüllung aller möglichen Variablen vorgenommen, wenn dann die Bedingung einer Prozedur erfüllt ist, wird die auf einmal sofort ausgeführt, und die davon abhängigen Variablen befüllt, und die davon abhängenden Dinge dann weiter bearbeitet. Also irgendwie eine Art Kaskade. Kann das nicht eher zu Problemen beim Debuggen führen, wenn die Ausfühung ständig hin und her springt?
Die Sprache ist noch nicht fertig, dementsprechend sei ihr mal noch ein bisschen Arbeit gegönnt, aber in meinen Augen ist es schon ein bisschen gewagt, wie die Sprache ihre Abarbeitung gestalltet. Lässt man die Abarbeitung weg haben sie sonst vieles übernommen, was jüngere Sprachen an sich bieten, was dementsprechend wenig neu ist, aber doch ganz gut.
Und wenn ich das bisher richtig gesehen habe kann man an sich "nur" Konsolenapplikationen erstellen, ist das richtig? Oder habe ich die Ressourcen und Dokumentation für eine GUI Entwicklung einfach nur noch nicht gefunden?
Liebe Grüße -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Die spräche wird sich sicherlich nicht durchsetzen man es wird sicherlich nur einen Compiler für mac geben so das man für Linux und Windows keine Programme erstellen kann.
Der Markt ist mit Programmiersprachen überfüllt alle neue Programmiersprachen werden sich in den nächsten Jahren sicherlich nicht durchsetzen. -
Ich sehe das wie hpage, warum soll ich als Entwickler noch eine proprietäre Programmiersprache lernen, die nur mit Apple/Mac funktioniert?
Schade eigentlich, denn sie hat wirklich ein paar interessante Konzepte. Die Abarbeitungsreihenfolge habe ich aber auch noch nicht ganz verstanden.
Zur GUI-Entwicklung: Das ist natürlich möglich, siehe z. B. hier: https://www.youtube.com/watch?v=zlbrRlVxs38
Beitrag zuletzt geändert: 8.6.2014 13:31:46 von swm-test -
ggamee schrieb:
Als ich das Kapitel über die Reihenfolge der Abarbeitung las, war ich allerdings ein bsischen schokiert... Bevor eine Prozedur endet wird bereits mit dem Wert der Rückgabe, sofern einer entsteht, außerhalb der Prozedur weitergearbeitet. Ist werden Arrays erst nach dem Call der Prozedur mit werten befüllt, wird diese Befüllung dann doch zuerst vorgenommen, und die Prozedur erst nachträglich ausgeführt. Die Reihenfolge von Wertzuweisungen und der Abarbeitung dieser Werte ist sehr.. Interessant. Es ist in meinen Augen (ohne jetzt super Erfahrung zu haben mit der Sprache) irgendwie schwer vorhersehbar, wann was genau ausgeführt wird.
Wenn ich das richtig verstanden hab wird erst eine KOMPLETTE befüllung aller möglichen Variablen vorgenommen, wenn dann die Bedingung einer Prozedur erfüllt ist, wird die auf einmal sofort ausgeführt, und die davon abhängigen Variablen befüllt, und die davon abhängenden Dinge dann weiter bearbeitet. Also irgendwie eine Art Kaskade. Kann das nicht eher zu Problemen beim Debuggen führen, wenn die Ausfühung ständig hin und her springt?
Ich habe mich noch nicht im Detail mit der Sprache beschäftigt, aber generell ist es ja keine dumme Idee so viel wie möglich gleichzeitig zu berechnen. Wenn eine Berechnung A abhängig von den Ergebnissen der Berechnungen B und C ist, können B und C gleichzeitig berechnet werden.
Bei einigen Sprachen muss man dann explizit dafür sorgen, dass B und C gleichzeitig berechnet werden. Bei anderen Sprachen wie z.B. Haskell entscheidet der Compiler darüber, was gleichzeitig ausgeführt werden kann. Ob das bei Swift auch der Fall ist, weiß ich nicht und auf die Schnelle habe ich dazu auch nichts gefunden. Hast du vllt nen Link?
Prinzipiell ist es natürlich schön, wenn der Compiler für einen die Arbeit beim Parallelisieren übernimmt
aber in meinen Augen ist es schon ein bisschen gewagt, wie die Sprache ihre Abarbeitung gestalltet.
Wenn im mathematischen Sinne das gleiche rauskommt, wie wenn man alles sequenziell abarbeitet, sollte das ja kein Problem sein.
swm-test schrieb:
Ich sehe das wie hpage, warum soll ich als Entwickler noch eine proprietäre Programmiersprache lernen, die nur mit Apple/Mac funktioniert?
Das wird nicht das Problem sein. Es gibt genügend Leute, die Objective-C programmieren, obwohl man eigentlich nur unter MacOS/iOS wirklich etwas damit anfangen kann (1)
Und Objective-C ist jetzt keine besonders schöne Sprache. Wenn ich die Apple-Politik nicht ablehnen würde, wäre Swift für mich eine bessere Alternative zu Objective-C.
Schade eigentlich, denn sie hat wirklich ein paar interessante Konzepte. Die Abarbeitungsreihenfolge habe ich aber auch noch nicht ganz verstanden.
Swift ist keine besonders innovative Sprache. Und das ist auch kein Minuspunkt, denn es lohnt sich auf bewährte Konzepte zu setzen. Wenn dir Swift gefällt, kannst du dir auch die Sprachen anschauen, die als Inspiration gedient haben: http://nondot.org/sabre/ (Unterpunkt "Swift")
(1) GNUStep wird nicht sonderlich viel benutzt. -
Apple geht es mit Swift nicht um die Programmierer von heute, sondern um die von morgen. Jene, welche es gerade noch cool finden, Emojis in ihren Code zu packen. Jugendliche, die zufällig einen Apple-PC zu hause stehen haben und xcode zum ersten Mal öffnen. App-Entwickler, die durch Zufall in den Beruf rein rutschen (auch, wenn dies relativ selten passiert, aber die ersten Versionen MyMüsli-Seite wurde zum Beispiel von einem BWLer ohne Informatiker im Rücken entwickelt). Es geht um Informatik-Unterricht an Schulen, die mit Apple-Rechnern ausgestattet sind. Es geht um Leute, die ein kleines Spiel erstellen wollen, aber keine Ahnung von 3D-Grafik-Entwicklung haben.
Es geht kurz gesagt nicht um die Poweruser sondern um Präsenz bei den Einsteigern, die im besten Fall dazu führt dass diese bei Apple bleiben, selbst wenn sie später mit anderen Sprachen arbeiten (müssen). Das hilft auch dabei, den Appstore wieder etwas "innovativer" erscheinen zu lassen, weil durch die einfachere Sprache eine breitere Masse ihre Ideen verwirklichen kann. -
Mit dem Unterschied dass Swift auch unter Windows nutzbar ist, und als Skriptsprache nicht an XCode gebunden ist. Zwar unter Windows mehr gehackt als richtig hab ich das gefühl, aber es läuft. Man müsste guggen, ob man den Sourcecode auch unter Linux compilieren kann, da find ich aber nichts zu.
Der User Guide ist übrigens hier: http://swift-lang.org/guides/release-0.94/userguide/userguide.html, Kapitel ist "Ordering of Execution".
Prinzipiell, wo ich jetzt ne Weile drüber nachgedacht habe, ist der Ansatz schon sehr gut. Wenn man seine Code Struktur gut hält, kann man damit sehr schnelle programme schreiben.
So im nachhinein, wo ich jetzt ein bisschen was gelesen habe, und auch drüber nachgedacht habe, finde ich die Konzepte und Gedanken dahinter durchaus gut, also es ist nichts falsches.
Ich würd mal sagen, im gegensatz zu Objective-C ist das was total anderes, aber durchaus was besseres. Objective-C ist an sich auch eine relativ einfache Sprache, aber man ärgert sich ganzschön oft. Swift dürfte da Abhilfe schaffen.
Durch die Apache Lizence sehe ich aber zumindest die Chance, dass die Sprache eventuell nocht total verblockt wird von Apple, sondern vllt tatsächlich als Skriptsprache auch in anderen Gebieten einsatz findet.
Liebe Grüße
Beitrag zuletzt geändert: 8.6.2014 16:44:28 von ggamee -
ggamee schrieb:
Der User Guide ist übrigens hier: http://swift-lang.org/guides/release-0.94/userguide/userguide.html, Kapitel ist "Ordering of Execution".
Prinzipiell, wo ich jetzt ne Weile drüber nachgedacht habe, ist der Ansatz schon sehr gut. Wenn man seine Code Struktur gut hält, kann man damit sehr schnelle programme schreiben.
Anscheinend machen sie sich zunutze, dass LLVM eh mit SSA Werten arbeitet. Und alle Variablen sind dann Dataflow Variablen. Dann habe ich oben die richtigen Vermutungen aufgestellt.
Edit: Möglicherweise relevant in diesem Zusammenhang: http://stackoverflow.com/questions/24101718/swift-performance-sorting-arrays. Arrays überschreiben kann teuer sein in Swift.
Ich würd mal sagen, im gegensatz zu Objective-C ist das was total anderes, aber durchaus was besseres. Objective-C ist an sich auch eine relativ einfache Sprache, aber man ärgert sich ganzschön oft. Swift dürfte da Abhilfe schaffen.
Durch die Apache Lizence sehe ich aber zumindest die Chance, dass die Sprache eventuell nocht total verblockt wird von Apple, sondern vllt tatsächlich als Skriptsprache auch in anderen Gebieten einsatz findet.
Wenn die Sprache auch außerhalb des Apple-Universums etwas taugen sollte, wird sich wahrscheinlich eh jemand finden, der eine Linux-Version schreibt.
Beitrag zuletzt geändert: 8.6.2014 23:36:58 von bladehunter -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage