La réponse courte est que les langues romanes ne sont pas venus directement du latin classique, il y a des étapes importantes entre les deux. « Sīc » (donc) était devenu un affirmatif familier populaire au fur et à mesure que le latin vulgaire se répandait en tant que basilecte latin vers 100 – 200 de notre ère et est devenu la façon générale de dire « oui » dans le langage courant comme dans la littérature.

Intéressant, « sīc » était également utilisé en latin préclassique pour signifier « oui », mais ce sens était rare en latin classique jusqu’à sa résurgence en latin tardif.

En revanche, « non » dérive du latin « nōn », qui signifiait « pas » en tant que négateur verbal. Le développement ici est assez simple si l’on considère que la façon classique la plus courante de dire « oui » ou « non » était de répéter le verbe :

« Vīdistīne illud ? ». – « Vous avez vu ça ? »

« Vīdī. » – « Oui, je l’ai vu. »

De même, la réponse négative serait:

« Nōn vīdī. » – « Non, je n’ai pas vu. »

Bien sûr, la répétitivité de cette méthode avec la réponse négative, où « nōn » indique déjà la négation, rend beaucoup plus simple l’omission du verbe ; ainsi:

« Vīdistīne illud ? » – « Vous avez vu ça ? »

« Nōn . » – « Non. »