2010-08-20

metaclass: (Default)
2010-08-20 08:09 am
Entry tags:

Внимание, системы типов и базы данных - срач

Спор про F# (там рекаптча если шо)

Товарищ прицепился к тому, что в F# нельзя написать функцию, которая бы по индексу поля в кортеже возвращала бы значение поля.

Т.е. вообще-то ее написать можно, через Reflection, но 1) это все только благодаря дотнету, но никак не системе типов; 2) это противоречит духу статической типизации и является способом стрелять себе в ногу.

Никак не могу человеку объяснить разницу между статической типизацией и натягиванием совы на глобус реализацией динамической типизации поверх языка со статической, чем занимаются 90% либ доступа к БД (все эти ADO.NET, ODBC, JDBC, BDE и прочая).
metaclass: (Default)
2010-08-20 05:10 pm

О дизайне софта, линуксовый mv

А вот скажите мне, какие могут быть причины у того, что mv при отсутствии места на диске все равно пытается на него перенести файл?
Он переносит ровно столько сколько влазит на диск и после этого валится с ошибкой. Из-за этого при переносе файлов по маске создает множество файлов нулевого размера - для всех которые он попытался перенести после завершения места.

Т.е. ни проверки свободного места до, ни завершения работы по ошибке после не производится, зато выполняются заведомо ошибочные действия без их отката.

PS: В исходниках mv смесь табов и пробелов, писали какие-то укуренные люди.

а вот и место где оно не отваливается при ошибке:
for (i = 0; i < n_files; ++i)
  ok &= movefile (file[i], target_directory, true, &x);
}