Czy Twój język jest idiot friendly?

Mamy sobotni wieczór, więc pora zrobić coś szalonego. Mimo że temat przyszedł mi do głowy gdy czytałem dokumentację vima, post odnosi się do szerokiej gamy innych języków programowania.

Zacznijmy od początku. Wpisując :help Dictionaries w vimie natrafimy na coś takiego:

A Dictionary is created with a comma separated list of entries in curly braces. Each entry has a key and a value, separated by a colon. Each key can only appear once.

Powtórzę jeszcze raz:

Each key can only appear once.

Dictionary to odpowiednik obiektu w javascripcie, hasha w ruby, a w pythonie nazywa się tak samo. Do tej pory nigdy nie próbowałem umieszczenia dwóch wartości o takim samym kluczu w jednej strukturze danych tego typu. Na pierwszy rzut oka wydaje się to bez sensu, ale… Czy Ty wiesz jak zachowa się Twój język gdy spróbujesz napisać coś takiego?

foo = {'bar': 100, 'bar': 200}

Śmiało, spróbujcie. Mimo że nie wpłynie to znacząco na Waszą znajomość danego języka, to zadajcie sobie następujące pytania: Jakiego zachowania w danym języku oczekuję? Jaki rezultat otrzymałem? Jaki powinien być wynik? Zresztą, nie ma co się ograniczać do jednego języka. Sprawdźcie jak podobny przykład zadziała to we wszystkich innych językach które znacie.

Osobiście skłoniło mnie to do fajnych rozwarzań na temat procesu projektowania języka programowania. Przyznam szczerze, że długi czas myślałem nad innymi przykładami, jednak nie znalazłem nic równie wymownego. Gdybyście wpadli na jakiś pomysł nie zapomnijcie podzielić się nim w komentarzu. Temat jest bardzo rozbudowany, liczę że wam się uda. W końcu co dwie głowy to nie jedna. Mi nie pozostaje nic innego jak trzymać za was kciuki. Bawcie się dobrze.