Dziwne Języki

Sierpień 2021

Kiedy ludzie mówią, że ich zdaniem wszystkie języki programowania są w zasadzie równoważne, wypowiadają się nie o językach, ale o rodzaju programowania, które wykonywali.

99,5% programowania polega na łączeniu wywołań funkcji bibliotecznych. Wszystkie popularne języki są do tego równie dobre. Można więc z łatwością spędzić całą karierę, działając na przecięciu popularnych języków programowania.

Ale pozostałe 0,5% programowania jest nieproporcjonalnie interesujące. Jeśli chcesz się dowiedzieć, na czym polega, dziwność dziwnych języków jest dobrą wskazówką.

Dziwne języki nie są dziwne przez przypadek. Przynajmniej te dobre. Dziwność dobrych zazwyczaj implikuje istnienie jakiejś formy programowania, która nie jest tylko zwykłym łączeniem wywołań bibliotecznych.

Konkretny przykład: makra Lispa. Makra Lispa wydają się dziwne nawet wielu programistom Lispa. Nie tylko nie znajdują się na przecięciu popularnych języków, ale z natury rzeczy trudno byłoby je poprawnie zaimplementować w języku bez przekształcania go w dialekt Lispa. A makra są zdecydowanie dowodem na techniki wykraczające poza programowanie klejące. Na przykład rozwiązywanie problemów poprzez napisanie najpierw języka dla problemów tego typu, a następnie napisanie w nim konkretnej aplikacji. To nie wszystko, co można zrobić z makrami; to tylko jeden z obszarów w przestrzeni technik manipulowania programami, która nawet teraz jest daleka od pełnego zbadania.

Jeśli więc chcesz poszerzyć swoje pojęcie o tym, czym może być programowanie, jednym ze sposobów jest nauka dziwnych języków. Wybierz język, który większość programistów uważa za dziwny, ale którego przeciętny użytkownik jest inteligentny, a następnie skup się na różnicach między tym językiem a przecięciem popularnych języków. Co można powiedzieć w tym języku, co byłoby niewyobrażalnie niewygodne do powiedzenia w innych? Ucząc się mówić rzeczy, których wcześniej nie można było powiedzieć, prawdopodobnie nauczysz się myśleć rzeczy, których wcześniej nie można było myśleć.

Dzięki Trevorowi Blackwellowi, Patrickowi Collisonowi, Danielowi Gackle, Amjadowi Masadowi i Robertowi Morrisowi za przeczytanie wersji roboczych tego tekstu.