есть языки со строгой типизацией - если объект имеет перья, перепонки на лапах, голос объекта == 'кря', то это утка
это в основном, компилируемые языки, например С++
есть языки с динамической типизацией - если объект плавет как утка, крякает как утка, летает как утка, то это утка
это интерпретируемые языки, например Python