Языки программирования cs.PL

3 статей

Языки программирования: их устройство, семантика и компиляция.

статей

Свойства как компас: точное программирование
Туман сгущается над строкой «def max(a: Int, b: Int): Int». Что она делает? Возвращает большее из двух чисел — но как это проверить? Можно написать десяток тестов с конкретными парами: max(2,3)=3, max(5,5)=5, max(-1,0)=0. И всё равно останется тревога: а вдруг для какого-нибудь миллиона и минус миллиона она сломается?
Компилируем один раз, дифференцируем везде
Переводчик сидит в зале совещаний и переводит каждое слово. Но вот он замечает, что его перевод можно улучшить, если он будет учиться на своих ошибках. Он начинает записывать, какие фразы вызвали непонимание, и корректирует их. Через час его перевод становится точнее, а совещание проходит быстрее.
Таможенный досмотр для кода: как гарантировать безошибочную оптимизацию детских программ
Ребёнок собирает в Scratch простую игру: персонаж появляется в центре и мгновенно перепрыгивает в угол. Первое перемещение пропадает между кадрами — его никто не видит. Убрать такую команду безопасно. Но как автоматический оптимизатор узнает об этом? Сегодня в репозитории Scratch десятки миллионов проектов, написанных юными авторами. Ошибка улучшателя способна незаметно исказить их замысел.