Un ladder diagram (in italiano diagramma a scala, ma è di uso generale la dizione inglese oppure la versione diagramma/programma a contatti) è un ausilio grafico per la programmazione dei controllori logici programmabili (PLC) di tipo discreto, divenuto ormai il linguaggio standard di programmazione, a fianco dei linguaggi di tipo assembler, ormai in via di abbandono.
La norma IEC 61131-3 definisce 5 tipi di linguaggio di programmazione per i PLC:
Il linguaggio ladder è stato il primo linguaggio utilizzato per la programmazione dei PLC, che inizialmente andavano a sostituire i normali quadri a logica cablata realizzati con tecnologia a relè. Nei casi più semplici, infatti, è facile convertire uno schema elettrico funzionale in un programma ladder. Al tempo stesso, la somiglianza con i diagrammi elettrici risultava più facilmente comprensibile agli operatori e manutentori che, nei primi anni 60, avevano spesso conoscenze in campo elettrico o elettromeccanico ma non sempre in ambito informatico o matematico.
Con questo linguaggio, il programma è scritto all'interno di 2 linee verticali che rappresentano l'alimentazione. Sono presenti inoltre delle righe orizzontali che congiungono queste verticali che vengono chiamate rung (letteralmente pioli, a causa del fatto che l'aspetto di questi programmi ricorda quello di una scala). Ogni rung è idealmente suddiviso in due parti. La parte di sinistra è detta zona di test, e contiene le variabili di ingresso o variabili interne. La zona di destra è detta zona di azione, e comprende le uscite esterne o interne nonché i blocchi di funzione avanzata. L'energia può fluire solo da sinistra verso destra.