• Skip to primary navigation
  • Skip to main content
  • Skip to footer

Codemotion Magazine

We code the future. Together

  • Discover
    • Events
    • Community
    • Partners
    • Become a partner
    • Hackathons
  • Magazine
    • Backend
    • Dev community
    • Carriere tech
    • Intelligenza artificiale
    • Interviste
    • Frontend
    • DevOps/Cloud
    • Linguaggi di programmazione
    • Soft Skill
  • Talent
    • Discover Talent
    • Jobs
    • Manifesto
  • Companies
  • For Business
    • EN
    • IT
    • ES
  • Sign in
ads

Federico TrottaDicembre 14, 2023

Creative Coding: Come Creare Opere d’Arte Programmando

Backend
hybrid, remote working IT, developers, CTO
facebooktwitterlinkedinreddit

Generalmente, crediamo che scrivere codice sia qualcosa che gli sviluppatori fanno per creare software che “serva a qualcosa”.

Ciò che intendo è che le persone credono che gli sviluppatori utilizzino le loro capacità logiche per scrivere programmi che possano servire a “scopi pratici” come:

Recommended article
Giugno 3, 2025

La signature chain: garanzia di autenticità, integrità e sequenzialità nei documenti digitali

Antonio Musarra

Backend
  • Automatizzare attività giornaliere.
  • Creare bellissimi frontends.
  • Creare programmi per sistemi di pagamento.
  • Realizzare videogiochi.

Tanto per nominarne solo alcuni.

Anche se alcuni sviluppatori credono di essere degli artisti (scrivere codice pulito non è una vera e propria arte???), la verità è che esiste un movimento che si sforza di realizzare veri e propri pezzi creativi fuori con il codice.

Quindi, in questo articolo, parleremo di creative coding e faremo alcuni esempi in Python.

Cos’è il creative coding?

Il creative coding è una pratica che prevede di utilizzare i linguaggi di programmazione per creare arte, design o altre forme di espressione artistica e creativa, visivamente accattivanti, e talvolta anche interattive.

A differenza del coding tradizionale – che si concentra principalmente su scopi funzionali o utilitaristici, come abbiamo detto prima – il creative coding enfatizza gli aspetti estetici e artistici della programmazione. 

In particolare, implica sperimentare con il codice per generare risultati stimolanti, spingendo la ricerca fino ai confini tra tecnologia e arte.

Facciamo, però, subito chiarezza specificando che questo processo non coinvolge l’AI generativa.

Sappiamo, infatti, che grazie all’intelligenza artificiale generativa possiamo scrivere prompt e, poi, un modello di Deep Learning creerà un’immagine dal prompt, utilizzando il codice.

Questo non è ciò che intendiamo quando parliamo di creazione d’arte graie al codice.

Ciò che intendiamo è che il codice viene utilizato per generare direttamente, e senza l’uso di modelli di intelligenza artificiale, un output che può essere inteso come un’opera d’arte.


Lettura consigliata: Gemini AI vs ChatGPT: qual è il migliore?


Esempi di creative coding in Python

Dato che Python è uno dei linguaggi di programmazione più utilizzati, può essere impiegato anche per scopi legati al creative coding.

In precedenza abbiamo parlato della creazione di qualcosa che possa essere considerato arte in quanto risultato del codice.

Poiché molte attività sono considerate arte, di seguito forniremo alcuni esempi di ciò che riteniamo possano essere opere d’arte.

Creative coding: scrivere storie e favole in Python

La poesia, la narrazione e le fiabe sono tutte forme d’arte.

La domanda è: potremmo usare Python per creare una favola, magari guidando i lettori nella scelta tra alcune possibili risposte, per renderla interattiva?

Certo che potremmo!

Ecco un esempio:

import time

def intro():
    print("Welcome to the Adventure in the Enchanted Forest!")
    time.sleep(1)
    print("You find yourself at the entrance of a mysterious forest.")
    time.sleep(1)
    print("Your goal is to reach the magical clearing at the center.")
    time.sleep(1)
    print("Let the adventure begin!\n")

def choose_path():
    print("You stand at a crossroads. Do you go left or right?")
    choice = input().lower()

    if choice == "left":
        print("\nYou venture deeper into the forest.")
        time.sleep(1)
        encounter_wild_animal()
    elif choice == "right":
        print("\nYou follow a narrow path.")
        time.sleep(1)
        encounter_old_bridge()
    else:
        print("Invalid choice. Try again.")
        choose_path()

def encounter_wild_animal():
    print("\nAs you walk through the dense foliage, you encounter a wild animal.")
    time.sleep(1)
    print("It's a friendly fox! What do you do?")
    time.sleep(1)
    print("1. Approach the fox slowly.")
    print("2. Stay still and observe from a distance.")
    print("3. Run away in fear.")

    choice = input()

    if choice == "1":
        print("\nThe fox approaches you and guides you through a hidden shortcut.")
        time.sleep(1)
        reach_magical_clearing()
    elif choice == "2":
        print("\nThe fox acknowledges your respect and disappears into the forest.")
        time.sleep(1)
        choose_path()
    elif choice == "3":
        print("\nThe animal is startled, and you trip over a tree root while running.")
        time.sleep(1)
        print("You find yourself back at the crossroads.")
        time.sleep(1)
        choose_path()
    else:
        print("Invalid choice. Try again.")
        encounter_wild_animal()

def encounter_old_bridge():
    print("\nYou reach an old, creaky bridge over a rushing river.")
    time.sleep(1)
    print("What will you do?")
    time.sleep(1)
    print("1. Cross the bridge cautiously.")
    print("2. Look for another way around.")
    print("3. Yell for help.")

    choice = input()

    if choice == "1":
        print("\nYou carefully cross the bridge and continue your journey.")
        time.sleep(1)
        choose_path()
    elif choice == "2":
        print("\nYou explore the area and find a hidden path that leads to a mystical cave.")
        time.sleep(1)
        explore_mystical_cave()
    elif choice == "3":
        print("\nYour yell echoes through the forest, but no one responds.")
        time.sleep(1)
        print("You decide to cross the bridge quietly.")
        time.sleep(1)
        choose_path()
    else:
        print("Invalid choice. Try again.")
        encounter_old_bridge()

def explore_mystical_cave():
    print("\nYou enter the mystical cave and discover glowing crystals.")
    time.sleep(1)
    print("What do you want to do?")
    time.sleep(1)
    print("1. Collect some crystals.")
    print("2. Leave the cave and continue your journey.")

    choice = input()

    if choice == "1":
        print("\nYou carefully collect a few crystals, feeling their magical energy.")
        time.sleep(1)
        reach_magical_clearing()
    elif choice == "2":
        print("\nYou decide to leave the cave and continue your adventure.")
        time.sleep(1)
        choose_path()
    else:
        print("Invalid choice. Try again.")
        explore_mystical_cave()

def reach_magical_clearing():
    print("\nCongratulations! You reach the magical clearing at the center of the forest.")
    time.sleep(1)
    print("The clearing is bathed in a soft, otherworldly light.")
    time.sleep(1)
    print("You've completed your adventure in the enchanted forest. Well done!")

# Start the adventure
intro()
choose_path()
Code language: PHP (php)

Ecco un’immagine che mostra come funziona il programma:

Gli utenti seguono, quindi, un percorso narrativo che cambia a seconda della risposta che inseriscono, fino ad arrivare alla fine del racconto.

Poiché la poesia e i racconti sono un’opera d’arte, questo è un esempio di opera d’arte interattiva.

Infatti, dato che la Command Line Interface permette agli utenti di interagire con un programma, abbiamo creato una storia che viene in qualche modo modellata sulla base delle risposte scelte dal lettore.


Lettura consigliata: Come sviluppare il tuo Chatbot con Python e ChatterBot partendo da zero


Creative coding: utilizzare la matematica per creare opere d’arte

Ci sono molte persone (e io sono tra quelle!) che credono che la matematica sia in qualche modo un’arte.

Quindi, perché non realizzare creazioni artistiche utilizzando la matematica?

Ad esempio, sapevi che in matematica esiste una funzione chiamata “cardioide” che crea la forma del cuore?

Ecco come possiamo creare un cardioide in Python:

import numpy as np
import matplotlib.pyplot as plt

def create_cardioid():
    '''Creates the cardioid'''
    
    # Define radious (r) and angle (theta)
    theta = np.linspace(0, 2*np.pi, 1000)
    r = 1 - np.sin(theta)
    
    # Give carthesian coordinates
    x = r * np.cos(theta)
    y = r * np.sin(theta)

    return x, y

def plot_cardioid(x, y):
    '''Plots the cardioid'''
    
    fig, ax = plt.subplots()
    
    # Plot the cardioid
    ax.plot(x, y, label='Cardioid', color='blue')

    # Fill the inside of the cardioid in red
    ax.fill(x, y, color='red', alpha=0.5)

    # Set the aspect ratio to be equal
    ax.set_aspect('equal', adjustable='datalim')

    # Set axis labels
    ax.set_xlabel('X-axis')
    ax.set_ylabel('Y-axis')

    # Set the title
    ax.set_title('Cardioid with Coloring')

    # Display the legend
    ax.legend()

    # Show the plot
    plt.show()

if __name__ == "__main__":
    x, y = create_cardioid()
    plot_cardioid(x, y)
Code language: PHP (php)

Otteniamo:

Possiamo fare molto meglio che creare un cardioide, però.

Per esempio, possiamo utilizzare la libreria  matplotlib per creare un disegno artistico utilizzando forme matematiche come i cerchi:

import numpy as np
import matplotlib.pyplot as plt

def generate_art(num_circles=100):
    fig, ax = plt.subplots()

    for _ in range(num_circles):
        # Randomly generate circle parameters
        radius = np.random.uniform(0.1, 0.5)
        x_center = np.random.uniform(0, 1)
        y_center = np.random.uniform(0, 1)
        color = np.random.rand(3,)  # RGB values between 0 and 1

        # Plot the circle
        circle = plt.Circle((x_center, y_center), radius, color=color, alpha=0.7)
        ax.add_patch(circle)

    # Set the aspect ratio to be equal
    ax.set_aspect('equal', adjustable='datalim')

    # Set axis labels
    ax.set_xlabel('X-axis')
    ax.set_ylabel('Y-axis')

    # Set the title
    ax.set_title('Circles - Generative Art')

    # Show the plot
    plt.show()

if __name__ == "__main__":
    generate_art()
Code language: PHP (php)

Questo è quello che ho ottenuto io:

Si noti che, poiché i cerchi vengono creati in modo casuale nel programma che abbiamo scritto in Python, si ottiene un risultato diverso ogni volta che eseguiamo il programma.

Ora, cos’altro potremmo fare? Ebbene, le spirali, abbinate a colori psichedelici, vengono spesso utilizzate per creazioni artistiche.

Ecco come possiamo creare una spirale con colori psichedelici in Python:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib.cm as cm

def draw_psychedelic_spiral(num_spirals=10, num_points=1000):
    fig, ax = plt.subplots()

    for _ in range(num_spirals):
        # Generate points for the spiral
        theta = np.linspace(0, 10 * np.pi, num_points)
        radius = np.linspace(0, 1, num_points)

        # Convert polar coordinates to Cartesian coordinates
        x = radius * np.cos(theta)
        y = radius * np.sin(theta)

        # Define psychedelic colors using the 'hsv' colormap
        colors = cm.hsv(np.linspace(0, 1, num_points))

        # Plot the spiral with psychedelic colors
        for i in range(num_points - 1):
            ax.plot([x[i], x[i+1]], [y[i], y[i+1]], color=colors[i], linewidth=2, alpha=0.7)

    # Set the aspect ratio to be equal
    ax.set_aspect('equal', adjustable='datalim')

    # Set axis labels
    ax.set_xlabel('X-axis')
    ax.set_ylabel('Y-axis')

    # Set the title
    ax.set_title('Psychedelic Spirals')

    # Show the plot
    plt.show()

if __name__ == "__main__":
    draw_psychedelic_spiral()Code language: PHP (php)

E si ottiene:

Creative coding: la libreria Turtle 

Python ha un modulo integrato chiamato turtle che fornisce la possibilità di introdurre i concetti di programmazione ai principianti attraverso grafica e animazione.

Questo modulo consente agli utenti di disegnare forme e trame e persino di creare semplici giochi utilizzando la finestra grafica di turtle .

Ecco come possiamo usare turtle per creare alcuni cerchi artistici:

import turtle
import random

turtle.speed(0)
turtle.bgcolor("black")

# Function to draw colorful circles
def draw_circles():
    for _ in range(100):
        turtle.color(random.random(), random.random(), random.random())
        turtle.forward(100)
        turtle.right(45)

# Create multiple circles
for _ in range(10):
    draw_circles()

turtle.done()

Code language: CSS (css)

E si ottiene la seguente immagine:

Tieni presente che, poiché si tratta di una libreria integrata, una volta eseguito il codice si aprirà una nuova finestra come questa, che mostra i risultati del tuo codice.

Questo modulo, quindi, può essere utilizzato anche per creare immagini animate, migliorando l’esperienza artistica.

Conclusioni

In questo articolo abbiamo dimostrato che la codifica non è diretta solo verso software che può avere “scopi di produzione”.

Ci sono molte persone che si sforzano di creare creazioni artistiche partendo dal codice e, poiché l’arte non ha limiti, l’unico limite che hai è la tua fantasia.

Related Posts

VanillaCreamJS: JavaScript con i superpoteri

Riccardo Degni
Maggio 28, 2025

Come risolvere il dual write problem nei sistemi distribuiti

Codemotion
Maggio 22, 2025

Top 10 piattaforme online per fare pratica con Python

Lucilla Tomassi
Maggio 13, 2025

TechPills per tutti: Inizia a creare API REST con Django REST Framework

raffaelegrieco.it
Maggio 12, 2025
Share on:facebooktwitterlinkedinreddit

Tagged as:Python sviluppo software

Federico Trotta
Amo scrivere fin da quando ero un ragazzino che scriveva romanzi gialli come compiti in classe alle scuole medie. Grazie alla mia curiosità, ho scoperto la programmazione e l’Intelligenza Artificiale. Col tempo, sono riuscito ad unire la mia passione per la scrittura con la scoperta della programmazione e dell’IA, decidendo di cambiare carriera per diventare un Technical Writer. Il mio scopo è quello di aiutare le persone ad imparare la programmazione in Python, il Machine Learning, e la Data Science.
Prospettiva CTO:  Mauro Bennici CTO @Halery&Dikkinson
Previous Post
I 10 migliori tools per dev lanciati nel 2023
Next Post

Footer

Discover

  • Events
  • Community
  • Partners
  • Become a partner
  • Hackathons

Magazine

  • Tech articles

Talent

  • Discover talent
  • Jobs

Companies

  • Discover companies

For Business

  • Codemotion for companies

About

  • About us
  • Become a contributor
  • Work with us
  • Contact us

Follow Us

© Copyright Codemotion srl Via Marsala, 29/H, 00185 Roma P.IVA 12392791005 | Privacy policy | Terms and conditions