jQuery-Code ist genauso Spaghetti wie anderer Code, das hängt vom Programmierer ab. Ein erfahrener Spaghetti-Programmierer produziert in jeder Sprache und mit jedem Toolset Spaghetti-Code. Und ein ordentlicher Programmierer produziert in jeder Sprache, die das nicht aktiv verhindert, ordentliche Programme.
Das glaube ich nicht, stehe ich vor einem Programmierproblem, entwickle ich ein mentales Modell dafür, das ich schrittweise in Code übersetze. Wenn die Programmierumgebung meinem mentalen Modell ähnelt, dann bringe ich recht expressiven Code zustande, wenn sie zu sehr davon abweicht, kommt da Spaghetti-Code raus. Eine kleine Analogie: Wenn mein Auftrag lautet ein Raumschiff zu zeichnen, kommt da auch meistens etwas raus, das dem Raumschiff, das ich vor meinem inneren Auge visualisiert habe, zumindest grob ähnelt, auch wenn meine Zeichentechnik unausgereift ist. Wenn mir jemand vorschreibt, ich solle das Bild wie ein Tintenstrahldrucker Linie für Linie zeichnen, dann kommt da höchstens Krikel Krakel bei rum.
John De Goes hat das eben bei Twitter sehr gut auf den Punkt gebracht:
Programming pain is caused by the irreversible loss of information that occurs as we translate high-level concepts into low-level language constructs.
The ultimate programming language would allow you to program losslessly at the higher level your brain wants to work at.
Interessanterweise funktioniert das auch in die Umkehrrichtung: Das Design einer Programmierumgebung kann durch wiederholte Anwendung Auswirkungen auf unsere Visualisierungsfähigkeit und unser abstraktes Denkvermögen nehmen. Das kann Schaden anrichten, als Programmieranfänger habe ich zu spüren bekommen, wie sehr das prozedurale Paradigma meine Lernfähigkeit und -bereitschaft für neue Denkmuster gemindert hat. Seitdem versuche ich regelmäßig andersgeartete Programmiersprachen zu lernen, um offen für alternative Lösungensverfahren zu bleiben (und natürlich weil ich Freude daran habe und meine Brötchen damit verdiene). Die Rückkopplung hat aber auch ein paar gute Seiten, zum Beispiel schöpfe ich heute aus einem großen Topf abstrakter Lösungsmuster, die ich mir selber hätte niemals ausdenken können, und die mir wohl ewig verborgen geblieben wären, hätte ich mich nicht intensiv mit funktionaler Programmierung beschäftigt.