Che la nobiltà dell’Uomo, acquisita in cento secoli di prove e di errori, era consistita nel farsi signore della materia, e che io mi ero iscritto a Chimica perché a questa nobiltà mi volevo mantenere fedele. Che vincere la materia è comprenderla, e comprendere la materia è necessario per comprendere l’universo e noi stessi: e che quindi il Sistema Periodico di Mendeleev, che proprio in quelle settimane imparavamo laboriosamente a dipanare, era una poesia, più alta e più solenne di tutte le poesie digerite in liceo: a pensarci bene, aveva perfino le rime!
Primo Levi, Il sistema periodico
Il 6 Marzo del 1869 il chimico russo Dmitri Ivanovich Mendeleyev presento’ alla Societa’ di Chimica Russa, una comunicazione dal titolo La dipendenza delle proprieta’ degli elementi chimica dal peso atomico. In questa storica comunicazione, Mendeleev pesento’ una tabella in cui organizzava gli elementi chimici allora noti. Questa tabella segno’ anche la fama del suo autore poiche’ fu la prima versione della moderna tavola periodica degli elementi chimici.

Mendeleyev, preparando una seconda edizione del suo libro di chimica, stava cercando un modo per classificare gli elementi chimici allora conosciuti (53 ovvero meno della meta’ di quelli che conosciamo oggi) per fare chiarezza sulle loro proprieta’. In una nota, Mendeleyev racconta che l’ispirazione gli sia venuta in sogno (non e’ la prima volta che Orfeo suggerisce a chimici le loro grandi scoperte scientifici!) [2]:
I saw in a dream a table where all the elements fell into place as required. Awakening, I immediately wrote it down on a piece of paper.
Frutto di un sogno o di un profondo intuito chimico, Mendeleev aveva scoperto il modo di ordinare gli elementi in modo da evidenziare la sorpredente periodicita’ nelle loro proprieta’ chimiche. Infatti, se raggruppati in gruppi aventi la stessa valenza e disposti con massa atomica crescente in una tabella, gli elementi si dispongono lungo le colonne della tabella.
Sulla base di questa organizzazione periodica, Mendeleev riusci a predire l’esistenza di diversi elementi chimici non ancora isolati allo stato puro, quali, per esempio, il Germanio (chiamato inizialmente da Mendeleev ekaalyuminiy, che in russo significa “analogo (eka) all’Alluminio” ), il Gallio (eka-silicon, “analogo (eka) al Silicio”) and lo Scandio (ekabor,”analogo (eka) al Boro” ). Pochi anni dopo questi elementi furono scoperti ed isolati. Infatti, il Germanio fu scoperto da C. A. Winkler nel February 1886 Winkler nel minerale argyrodite. Nel 1875, P. E. L. de Boisbaudran riusci’ ad isolare con metodi elettrochimici il Gallio. Infine, lo Scandio fu isolato nel 1879 da F. Nilson da un campione impuro di Itterbio. Le proprieta’ chimiche dei nuovi elementi risultarono essere stupefacemente identiche a quelle predette da Mendeleev. Questo enorme successo consegno’ definitivamente alla storia il nome di questo sconosciuto chimico russo e la sua tavola degli elementi chimici. Nel seguente grafico di ricorrenza in Figura 1 sono mostrate le differenze temporali tra la scoperta di nuovi elementi. Il grafico mostra che la scoperta di nuovi elementi chimici si e’ susseguita ad un ritmo sorprendente arrivando in alcuni periodi a scoprire due o tre elementi ogni anno.

Nel 1955, l’elemento artificiale 101, preparato dal bombardamento dell’einstenium con l’elio da A. Ghiorso, G. Harvey, R. Choppin, S. G. Thompson and G. T. Seaborg presso il Berkeley Radiation Laboratory in USA, e’ stato chiamato Mendelevium in onore di Mendeleyev.
Quest’anno ricorre il 150 anniversario della tavola periodica degli elementi (TPE) che attualmente conta di 118 elementi, l’ultimo arrivato (il Tennesso) e’ stato scoperto 10 anni fa (2009), e come chimico sento il dovere di dare qualche piccolo contributo divulgativo per celebrare questo importante evento.
Curiose osservazioni sui nomi e simboli degli elementi
Sulla frequenza di lettere nei simboli chimici. L’istogramma nella Figura 2, rappresenta l’abbondanza delle lettere presenti nei simboli chimici. La lettera piu’ rappresentata e’ la C seguita a pari merito dalle lettere N, P, S, T.

La lunghezza mediana dei nomi in inglese degli elementi chimici e’ otto (vedi Figura 3). Si osserva una tendenza ad aumentare con il peso atomico. Inoltre e’ interessante notare che ci sono delle fluttuazioni regolari con gruppi di elementi contigui che mostrano oscillazioni rispetto al trend lineare.

Nella Figura 4, in onore di Mendeliev, e’ riportata anche la statistica per i nomi degli elementi chimici in caratteri cirillici. In questo caso, la lunghezza mediana e’ pari a sette. Anche in questo caso si osserva la tendenza ad un leggero aumento della lunghezza dei nomi con il numero atomico.

The Mendeleyev’s Dream: Un gioco didattico sulla tavola periodica in awk
Per i 150 anni della tavola periodica ho pensato di rispolverare un vecchio programma che realizzai tempo fa e che, in onore di Mendeleyev, ho deciso di chiamare “The Mandeleev’s Dream“. Il programma, riportato nell’appendice, e’ un semplice gioco educativo scritto nel linguaggio awk che puo’ aiutare, divertendosi, a memorizzare gli elementi nella tavola.
Il programma consiste nell’indovinare gli elementi nella tavola periodica sulla base di tre tipi di giochi a domande con scelte multiple. Il gioco ha un punteggio, con un minimo di zero e un massimo di 118. Il punteggio iniziale e’ parti a 59. Cambiando la variabli lang e’ possibili selezionare il linguaggio usato per indicare il nome degli elementi. (0: Inglese, 1: Italiano, 2: Tedesco).
Gioco 1


In questo gioco, occorre indovinare il nome dell’elemento nella posizione indicata dalla croce rossa. Vengono suggerite 5 possibili simboli o nomi di elementi. Sono consentiti 5 tentativi, ogni risposta negativa viene penalizzata di 0.1 punti, dopo 5 tentativi viene data comunque la risposta con una penalita’ totale pari a -0.5.
Gioco 2
In questo gioco, occorre indovinare la posizione dell’elemento indicato con il simbolo o con il nome. Vengono suggerite 5 possibili posizioni nella tabella periodica indicate da 1 a 5. Sono consentiti 5 tentativi, ogni risposta negativa viene penalizzata di 0.1 punti, dopo 5 tentativi viene data comunque la risposta con una penalita’ totale pari a -0.5.


Gioco 3
In questo gioco, occorre indovinare il nome dell’elemento indicato con un X nella tavola periodica. Il programma suggerisce con dei trattini le lettere contenute nel nome. Si hanno a disposizione 5 tentativi, se il nome proposto non e’ corretto, vengono comunque riportate nel suggerimento le lettere che coincidono con quelle del nome corretto. Dopo 5 tentativi viene data comunque la risposta corretta ma con una penalita’ totale pari a -0.5.

Letteratura
Molti libri sono stati scritti sulla tavola periodica degli elementi, la sua storia e quelle dei suoi elementi. Nella lista che segue riporto il riferimento ad articoli citati nel blog e ad alcuni libri sull’argomento che consiglio di leggere.
1. Mendeleev, D. “The natural system of elements and its application to the indication of the properties of undiscovered elements”. Journal of the Russian Chemical Society (in Russian). 3: 25–56, (1871).
2. Paul Strathern. Mendeleyev’s Dream: The Quest for the Elements. Penguin, (2001).
3. Primo Levi. The Periodic Table. Penguin Classics, (2000).
4. John Emsley. The Elements of Murder: A History of Poison. Oxford University Press, (2006).
5. John Emsley. Nature’s Building Blocks: An A-Z Guide to the Elements. OUP Oxford, (2011).
6. Hugh Aldersey-Williams. Periodic Tales: The Curious Lives of the Elements. Penguin, (2012).
7. Nick Mann and Theodore Gray. The Elements: A Visual Exploration of Every Known Atom in the Universe. Black Dog & Leventhal, (2011).
8. Vari. The Periodic Table Book: A Visual Encyclopedia of the Elements. DK, (2017).
Appendix
#======================================================================
# NAME: The mendeleev's Dream
# DESCRIPTION: This is a learning game to help memorize the periodic
# Table of Elements
#======================================================================
# DEVELOPED USING: gawk
#======================================================================
# Author: Danilo Roccatano <danilo.roccatano@gmail.com>
# Version: 0.1
# Copyright (C): 2019 Danilo Roccatano
#======================================================================
#
BEGIN {
srand()
score =59
#
# Language selection flag for element names
# 0: english
# 1: Italiano
# 2: German
lang =1
PeriodicTable(lang,En,Enam)
Setup()
xc="\033[1;31m X \033[0m"
cc=nel
while (cc >0) {
pa=SelectElement(pp)
at=0
check =0
pscore =0.5
if (cc>5) {
ng =int(1+rand()*3)
if (ng == 1) game1()
if (ng == 2) game2()
if (ng == 3) game3()
}
else {
game3()
}
cc--
}
system("clear")
PrintTable()
}
function game1() {
Eln[pp[pa]]="\033[5;31m X \033[0m"
ty=0
if (int(1+rand()*2)>1) ty=1
do {
system("clear")
PrintTable()
print "\033[1;32m GAME 1: Select the name of the atom in position indicated by the red cross: \033[0m"
printf "\033[1;33m Attempts left: %d Residual points: %3.1f\n \033[0m",5-at,pscore
for (j=0;j<5;j++) {
if (j<4) {
if (ty==0) {
printf "%d:%-2s | ",j+1,En[pp[j]]
} else {
printf "%d:%-10s | ",j+1,Enam[pp[j]]
}
} else {
if (ty==0) {
printf "%d:%-2s ? ",j+1,En[pp[j]]
} else {
printf "%d:%-10s ? ",j+1,Enam[pp[j]]
}
}
}
getline sel < "-"
CheckAnswer(pa,sel)
} while (check == 0)
eln=En[pp[pa]]
if (length(eln) == 1) eln=eln" "
Eln[pp[pa]]= "\033[1;34m"eln " \033[0m"
}
function game2() {
ty=0
if (int(1+rand()*2)>1) ty=1
for (j=0;j<5;j++) {
Eln[pp[j]]="\033[5;31m "j+1 " \033[0m"
}
do {
system("clear")
PrintTable()
if (ty==0) {
printf "\033[1;32m GAME 2: Select the number corresponding to the position of the element \033[1;31m %2s: \033[0m\n",En[pp[pa]]
} else {
printf "\033[1;32m GAME 2: Select the number corresponding to the position of the element \033[1;31m %10s: \033[0m\n",Enam[pp[pa]]
}
printf "\033[1;33m Attempts left: %d Residual points: %3.1f\n \033[0m",5-at,pscore
printf "--> ? "
getline sel < "-"
CheckAnswer(pa,sel)
} while (check == 0)
for (j=0;j<5;j++) {
Eln[pp[j]]=""
}
eln=En[pp[pa]]
if (length(eln) == 1) eln=eln" "
Eln[pp[pa]]= "\033[1;34m"eln " \033[0m"
}
function game3() {
Eln[pp[pa]]="\033[5;31m X \033[0m"
answ=toupper(Enam[pp[pa]])
tmp=answ
gsub(/[a-z|A-Z]/,"-",tmp)
pscore = 0.5
check =1
count=0
do {
system("clear")
PrintTable()
printf "\033[1;32m GAME 3: Enter the full name of the element \033[1;31m %2s: \033[0m\n",En[pp[pa]]
printf "\033[1;33m Attempts left: %d Residual points: %3.1f\n \033[0m",5-at,pscore
printf "\rSuggestion: %s\n",tmp
printf "--> ? "
getline sel < "-"
sel=toupper(sel)
tmp=checkword(check)
check = match(tmp,"-")
if (check !=0) {pscore -=0.1}
if (count > 5) {check =0; pscore =-0.5}
count++
} while (check >0)
score +=pscore
eln=En[pp[pa]]
if (length(eln) == 1) eln=eln" "
Eln[pp[pa]]= "\033[1;34m"eln " \033[0m"
}
function checkword(cn) {
tp=""
cn=length(answ)
if (sel != 0){
for (i=1;i<=length(answ);i++) {
c1=substr(answ,i,1)
c2=substr(tmp,i,1)
c3=substr(sel,i,1)
c0=c2
if ( c1 == c3) {
c0=c1
cn--
}
tp = tp c0
}
tmp=tp
}
return tmp
}
function rSpaces(){
for (ll=length(tt);ll>=1;ll--) {
if (substr(tt,ll,1) !=" ") { break }
}
tt= substr(tt,1,ll)
return tt
}
function CheckAnswer(pa,sel) {
#
# Check the answer and update the score
#
at++
if (sel == pa+1 ) {
check = 1
score +=pscore
}
if (sel != pa+1) {
pscore-=0.1
}
if (at >4) {
check =1
score -=0.5
}
}
function SelectElement(pp) {
n=int(1+rand()*cc)
# shorten the linked list
link[n]=link[cc]
pp[0]=n
pn=cc-1
# Extract other 4 random elements
for (j=1;j<=4;j++) {
n=int(1+rand()*pn)
link[n]=link[pn]
link[pn]=n
pp[j]=n
pn--
}
# Shuffle the the position of the winning element number
print pp[0],pp[1],pp[2],pp[3],pp[4]
pa=int(1+rand()*4)
tt=pp[pa]
pp[pa]=pp[0]
pp[0]=tt
print pp[0],pp[1],pp[2],pp[3],pp[4], pa
return pa
}
function Setup() {
row[1]= "////| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10| 11| 12| 13| 14| 15| 16| 17| 18|"
row[4]= " \033[4;35m|\033[0m---+---| THE PERIODIC TABLE OF ELEMENTS +---+---+---+---+---+---|"
row[6]= " \033[4;35m|\033[0m---+---| |---+---+---+---+---+---|"
row[8]= " \033[4;35m|\033[0m---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---|"
row[16]="\033[1;35m====|\033[0m=======================================================================|"
row[17]=" | CONGRATULATION! YOU SUCCEDED IN FILLING THE PERIODIC TABLE |"
row[18]=" \033[4;35m|\033[0m---+---+---+---+---+---+---+---+---+---+---+---+---+---+---|"
row[20]=" \033[4;35m|\033[0m---+---+---+---+---+---+---+---+---+---+---+---+---+---+---|"
row[23]="====|=======================================================================|"
prow[3]= "\033[6;35mI |\033[0m%-3s| \033[1;32m THE MENDELEEV'S DREAM \033[0m |%-3s|\n"
prow[5]= "\033[6;35mII |\033[0m%-3s|%-3s| \033[1;31m 150 ANNIVERSARY \033[0m |%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|\n"
prow[7]= "\033[6;35mIII |\033[0m%-3s|%-3s| by Danilo Roccatano |%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|\n"
prow[9]= "\033[6;35mIV |\033[0m%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|\n"
prow[11]="\033[6;35mV |\033[0m%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|\n"
prow[13]="\033[6;35mVII |\033[0m%-3s|%-3s| * |%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|\n"
prow[15]="\033[6;35mVIII|\033[0m%-3s|%-3s|** |%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|\n"
prow[19]="\033[6;35m * |\033[0m%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s| \033[1;36m Score \033[0m\n"
prow[21]="\033[6;35m ** |\033[0m%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s|%-3s| \033[1;36m %4.1f \033[0m\n"
#
# fill the linked list
#
for (i=1;i<=nel;i++) {
link[i]=i
}
}
function PrintTable() {
print "\033[4;35m \033[0m"
print "\033[4;35m"row[1]"\033[0m"
print
printf prow[3],Eln[1],Eln[2]
print row[4]
printf prow[5],Eln[3],Eln[4],Eln[5],Eln[6],Eln[7],Eln[8],Eln[9],Eln[10]
print row[6]
printf prow[7],Eln[11],Eln[12],Eln[13],Eln[14],Eln[15],Eln[16],Eln[17],Eln[18]
print row[8]
printf prow[9],Eln[19],Eln[20],Eln[21],Eln[22],Eln[23],Eln[24],Eln[25],Eln[26],Eln[27],Eln[28],Eln[29],Eln[30],Eln[31],Eln[32],Eln[33],Eln[34],Eln[35],Eln[36]
print row[8]
printf prow[11],Eln[37],Eln[38],Eln[39],Eln[40],Eln[41],Eln[42],Eln[43],Eln[44],Eln[45],Eln[46],Eln[47],Eln[48],Eln[49],Eln[50],Eln[51],Eln[52],Eln[53],Eln[54]
print row[8]
printf prow[13],Eln[55],Eln[56],Eln[72],Eln[73],Eln[74],Eln[75],Eln[76],Eln[77],Eln[78],Eln[79],Eln[80],Eln[81],Eln[82],Eln[83],Eln[84],Eln[85],Eln[86]
print row[8]
printf prow[15],Eln[87],Eln[88],Eln[104],Eln[105],Eln[106],Eln[107],Eln[108],Eln[109],Eln[110],Eln[111],Eln[112],Eln[113],Eln[114],Eln[115],Eln[116],Eln[117],Eln[118],Eln[119]
if (cc==0) {
print green(row[23])
print green(row[17])
print green(row[23])
} else {
print row[16]
}
printf prow[19],Eln[57],Eln[58],Eln[59],Eln[60],Eln[61],Eln[62],Eln[63],Eln[64],Eln[65],Eln[66],Eln[67],Eln[68],Eln[69],Eln[70],Eln[71]
print row[20]
printf prow[21],Eln[89],Eln[90],Eln[91],Eln[92],Eln[93],Eln[94],Eln[95],Eln[96],Eln[97],Eln[98],Eln[99],Eln[100],Eln[101],Eln[102],Eln[103], score
print row[20]
}
function PeriodicTable(lang,En,Enam) {
atnam= "H He Li Be B C N O F Ne Na Mg Al Si P S Cl Ar "
atnam= atnam "K Ca Sc Ti V Cr Mn Fe Co Ni Cu Zn Ga Ge As Se Br Kr "
atnam= atnam "Rb Sr Y Zr Nb Mo Tc Ru Rh Pd Ar Cd In Sn Sb Te I Xe "
atnam= atnam "Cs Ba La Ce Pr Nd Pm Sm Eu Gd Tb Dy Ho Er Tm Yb Lu Hf "
atnam= atnam "Ta W Re Os Ir Pt Au Hg Tl Pb Bi Po At Rn Fr Ra Ac Th "
atnam= atnam "Pa U Np Pu Am Cm Bk Cf Es Fm Md No Lr Rf Db Sg Bh Hs "
atnam= atnam "Mt Ds Rg Cn Nh Fl Mc Lv Ts Og"
if (lang == 0) {
EName= "Hydrogen Helium Lithium Beryllium Boron Carbon Nitrogen Oxygen Fluorine Neon"
EName= EName " Sodium Magnesium Aluminium Silicon Phosphorus Sulfur Chlorine Argon Potassium Calcium"
EName= EName " Scandium Titanium Vanadium Chromium Manganese Iron Cobalt Nickel Copper Zinc"
EName= EName " Gallium Germanium Arsenic Selenium Bromine Krypton Rubidium Strontium Yttrium Zirconium"
EName= EName " Niobium Molybdenum Technetium Ruthenium Rhodium Palladium Silver Cadmium Indium Tin"
EName= EName " Antimony Tellurium Iodine Xenon Caesium Barium Lanthanum Cerium Praseodymium Neodymium"
EName= EName " Promethium Samarium Europium Gadolinium Terbium Dysprosium Holmium Erbium Thulium Ytterbium"
EName= EName " Lutetium Hafnium Tantalum Tungsten Rhenium Osmium Iridium Platinum Gold Mercury"
EName= EName " Thallium Lead Bismuth Polonium Astatine Radon Francium Radium Actinium Thorium"
EName= EName " Protactinium Uranium Neptunium Plutonium Americium Curium Berkelium Californium Einsteinium Fermium"
EName= EName " Mendelevium Nobelium Lawrencium Rutherfordium Dubnium Seaborgium Bohrium Hassium Meitnerium Darmstadtium"
EName= EName " Roentgenium Copernicium Nihonium Flerovium Moscovium Livermorium Tennessine Oganesson"
}
else if (lang ==1) {
EName= " idrogeno elio litio berillio boro carbonio azoto ossigeno fluoro neo"
EName= EName " sodio magnesio alluminio silicio fosforo solfo cloro argo potassio calcio"
EName= EName " scandio titanio vanadio cromo manganese ferro cobalto nichel rame zinco"
EName= EName " gallio germanio arsenico selenio bromo cripto rubidio stronzio ittrio zirconio"
EName= EName " niobio molibdeno tecneto rutenio rodio palladio argento cadmio indio stagno"
EName= EName " antimonio tellurio iodio xeno cesio bario lantanio cerio praseodimio neodimio"
EName= EName " prometio samario europio gadolinio terbio disprosio olmio erbio tulio itterbio"
EName= EName " lutezio afnio tantalio tungsteno renio osmio iridio platino oro mercurio"
EName= EName " tallio piombo bismuto polonio astato radon francio radio attinio torio"
EName= EName " protoattinio uranio nettunio plutonio americio curio berkelio californio einsteinio fermio"
EName= EName " mendelevio nobelio lawrentio rutherfordio dubnio seaborgio bohrio hassio meitnerio Darmstadtio"
EName= EName " Roentgenio Copernicio Nihonio Flerovio Moscovio Livermorio Tennesso Oganesso"
}
else {
EName= " Wasserstoff Helium Lithium Beryllium Bor Kohlenstoff Stickstoff Sauerstoff Fluor Neon"
EName= EName " Natrium Magnesium Aluminium Silicium Phosphor Schwefel Chlor Argon Kalium Calcium"
EName= EName " Scandium Titan Vanadium Chrom Mangan Eisen Cobalt Nickel Kupfer Zink"
EName= EName " Gallium Germanium Arsen Selen brome Krypton Rubidium Strontium Yttrium Zirconium"
EName= EName " Niob Molybdän Technetium Ruthenium Rhodium Palladium Silber Cadmium Indium Zinn"
EName= EName " Antimon Tellur Iod Xenon Caesium Barium Lanthan Cer Praseodym Neodymi"
EName= EName " Promethium Samarium Europium Gadolinium Terbium Dysprosium Holmium Erbium Thulium Ytterbium"
EName= EName " Lutetium Hafnium Tantal Wolfram Rhenium Osmium Iridium Platin Gold Quecksilber"
EName= EName " Thallium Blei Bismut Polonium Astat Radon Francium Radium Actinium Thorium"
EName= EName " Protactinium Uran Neptunium Plutonium Americium Curium Berkelium Californium Einsteinium Fermium"
EName= EName " Mendelevium Nobelium Lawrencium Rutherfordium Dubnium Seaborgium Bohrium Hassium Meitnerium Darmstadtium"
EName= EName " Roentgenium Copernicium Nihonium Flerovium Moscovium Livermorium Tennessine Oganesson"
}
nel=split (atnam,En)
nna=split (EName,Enam)
return nel
}
function green(s) {
printf "\033[5;32m" s "\033[0m"
}