Snap! – Die Programmiersprache, die Kinder und Erwachsene gleichermaßen begeistert
Λ Snap – An inviting programming language for kids and adults for CS study

Snap! ist eine visuelle Programmiersprache, die von UC Berkeley und SAP entwickelt wurde. Sie richtet sich an Kinder und Erwachsene und dient als Plattform für ernsthafte Informatikstudien. Mit Blöcken können eigene Blöcke erstellt werden, und die Sprache bietet eine niedrige Einstiegsschwelle, breite Anwendungsmöglichkeiten und keine Obergrenze. Die Community teilt Projekte in Bereichen wie Spiele, Animationen und Simulationen. Snap! wird auch in der Lehre eingesetzt, beispielsweise im AP CSP-Kurs.
Snap! ist eine breit gefächerte, einladende Programmiersprache für Kinder und Erwachsene, die zugleich eine Plattform für ernsthafte Informatikstudien ist.
- aspizu
Scratch war der Weg, wie ich zum ersten Mal Programmieren gelernt habe. Ich habe damit immer ehrgeizigere Projekte gebaut, und irgendwann wurde der Editor selbst zur Hauptsache, gegen die ich ankämpfte. Sobald ein Projekt etwa 10.000 Blöcke erreichte, konnte es schmerzhaft laggy werden, und ich verbrachte viel Zeit damit, um die Grenzen von Scratch herumzuentwickeln.
Das führte schließlich dazu, dass ich goboscript gebaut habe: https://github.com/aspizu/goboscript
Ich bin einer der Programmierer, die ihre Karriere Scratch verdanken; dieses Jahr bin ich als Software Engineer bei https://ente.com eingestiegen. Scratch hat mir das Programmieren beigebracht und indirekt vielleicht auch ein bisschen echte Ingenieursarbeit.
- sinuhe69
Snap ist darauf ausgelegt, ausdrucksstärker und mächtiger als Scratch zu sein. Aber ich finde das Debuggen sehr schmerzhaft. Wenn man zum Beispiel den Namen einer Variable oder eines Blocks ändert, können an den Aufrufstellen „Löcher“ entstehen, aber das System kann einen Fehler melden oder auch nicht und schlägt still fehl. Snap ist meiner Meinung nach instabiler, und das Team scheint eifriger darin, Features hinzuzufügen, als die bestehenden zu polieren oder das System robuster und stabiler zu machen.
- andrewla
Ich mag grafische Programmierumgebungen wie diese und Scratch nicht besonders, und ich kann nicht genau festmachen, warum ich sie so unattraktiv finde.
Ein großer Teil davon ist, dass man bis zu einem gewissen Grad Programmieren damit lernen kann. Aber Software Engineering kann man damit absolut nicht lernen.
- Dwedit
Jeder Name, den man nicht tippen kann, wird zum Problem.
- brian_harvey
Ein Hinweis an die Kommentatoren, die sich beschweren, dass visuelles Programmieren nicht dabei hilft, Software Engineering zu lernen:
Richtig, ihr seid nicht unsere Zielgruppe. Wir zielen auf die Leute, die im College nicht Informatik studieren werden, aber neugierig sind, worum es bei dem ganzen Wirbel geht. Sie hatten Algebra in der High School, wissen also, was eine Variable und was eine Funktion ist. (Sie müssen nicht wissen, dass Funktionen Daten sein können, aber wir hoffen, ihnen das beizubringen.) Heutzutage haben sie wahrscheinlich in der Grundschule Scratch benutzt, also müssen wir ihnen nicht die Syntax von Blöcken beibringen oder was ein Sprite ist usw.
Niemand wird direkt aus unserem Kurs in einen Software-Engineering-Job kommen. Sie werden später reichlich Gelegenheit haben, das zu lernen, vorausgesetzt, dass sie (wie es erfreulich oft passiert) wegen unseres Kurses ihre Meinung ändern, was sie im College studieren wollen.
Sie sind (oder zumindest noch nicht) keine Hacker im Sinne von Leuten, deren Instinkt beim Treffen einer Maschine ist, sie auseinanderzunehmen.
Ach ja, P.S.: In einer Hinsicht sind Block-Sprachen besser für Software Engineering: Man kann beliebig lange Namen für Dinge haben (einschließlich Leerzeichen zwischen Wörtern), weil man den Namen nur einmal tippen muss. So kann man seinen Prozeduren selbstdokumentierende Namen wie „convert upper case to lower case letters“ geben statt hässlicher Namen wie „convUcLc“.
- thrtythreeforty
Ich finde, HN sollte in diesem Fall „λ“ nicht automatisch großschreiben. Eine anonyme Funktion ist ein λ, nicht ein Λ.
- pamelafox
Ich bin generell kein großer Fan von blockbasierter Programmierung, aber ich habe mit den Snap-Leuten gearbeitet, als ich an der UC Berkeley war, und sie liefern ein sehr überzeugendes Argument sowohl für blockbasierte Programmierung als auch für ihren Functions-first-Ansatz.
Während ich dort war, habe ich geholfen, diesen Mittelstufen-Lehrplan für Snap zu entwickeln:
https://bjc.berkeley.edu/bjc-r/course/sparks.html
Es war wirklich interessant, einen Functions-first-Ansatz zu versuchen, der trotzdem Spaß machte – am Ende habe ich ähnliche Projekte auch für einen Functions-first-Python-Kurs neu erstellt.
- stymaar
Für diejenigen, die sich fragen, was der Unterschied zu Scratch ist: Er steht auf der About-Seite:
> Über Snap!
> Snap! (früher BYOB) ist eine visuelle Drag-and-Drop-Programmiersprache. Es ist eine erweiterte Neuimplementierung von Scratch (einem Projekt der Lifelong Kindergarten Group am MIT Media Lab), mit der man seine eigenen Blöcke bauen kann. Es bietet außerdem First-Class-Listen[1], First-Class-Prozeduren und First-Class-Continuations[2]. Diese zusätzlichen Fähigkeiten machen es für eine ernsthafte Einführung in die Informatik für High-School- oder College-Studenten geeignet.