metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-10-12 10:31 pm

Инструменты

http://theiced.livejournal.com/199627.html?thread=2403019#t2403019
Большинство реальных проблем вызывается криворукими мудаками, которые по служебной халатности руководителя проекта получили доступ к клавиатуре и репозиторию. Станут ли мудаки менее мудаками, если сменять рабочие инструменты? Нет, не станут.

п. 1: вреда от мудаков будет меньше. У них со статик типизацией код не соберется, а за несобираемый код в репозитории наказывают болью.

п. 2: если дать не-мудакам кривые инструменты - они хочешь-не хочешь, но будут писать мудацкий код. И на все вопросы "а чтойта в у вас нету контроля версий и юнит-тестов" будут просто посылать в известном направлении, т.к. с бинарными файлами скриптов, набираемыми из справочников в программе под дос и дублирующимися в файловой БД (реальная система, я с ней работал несколько лет, обслуживал) - никакой контроль-версий и прочее не работает.

Это, например, как делать ремонт в советском союзе - из подручного говна, палок и спизженных на работе инструментов и делать ремонт сейчас - через 45 минут в общественном транспорте доступен гипермаркет с доставкой и японскими школьницами на инфоцентрах.
В итоге: личные умения и опыт, конечно, решают, но инструменты соответствующие помогают работать аккуратно и не задолбавшись.

[identity profile] raisner.livejournal.com 2012-10-13 04:05 pm (UTC)(link)
- в чем неудобство nullable в рантайме? Надо в коде постоянно проверять, что аргумент не пустой? Так в любом случае какая-то логика будет, только проверкой типа HasValue.
- для всех методов библиотеки где можно было воткнуть дженерики это сделали. Странно если бы они убили старые методы, сломав совместимость. Ими же не заставляют пользоваться при наличии хорошей альтернативы.
- да, невозможность возвращать анонимные типы печальна, но как это сделать, сохранив строгую типизацию?
- тут согласен

Возможно я ничего слаще морковки не пробовал (только C\C++, C#, Java, JavaScript), поэтому мне шарп кажется весьма удачным языком на фоне всего остального. На что посмотреть для расширения кругозора (ну кроме академических хаскелей)?

[identity profile] jakobz.livejournal.com 2012-10-13 04:26 pm (UTC)(link)
- неудобство в том, что нельзя выразить на уровне системы типов что какое-то значение не может быть null. Соответственно компилятор не может проверить что мы передаем null туда куда нельзя, или без проверки используем nullable.

- мало где можно было уже поправить библиотеки на дженерики. Повсюду там NameValueCollection-ы всякие до сих пор.

- решаемо, но для этого нужен полноценный вывод типов

В контексте разговора static vs. dynamic можешь глянуть на новый этот MS-овский typescript. Там заход в типизацию со стороны динамических языков, выглядит красиво.

[identity profile] metaclass.livejournal.com 2012-10-13 06:47 pm (UTC)(link)
1) системы типов не дают сделать тип null и проверки не нужны. Например в F# чтобы тип мог быть null нужно это явно указать при объявлении типа
2) чтобы возвращать анонимные типы, нужно усилить выводилку типов. Т.е. чтобы вывод типов мог работать за границами отдельного метода.

Попробуйте F#, благо он в студии 2010 есть, а в 2008 ставится дополнительно. Там тайпчекер хоть и не такой мощный, как в хаскеле, но по крайне мере даст представление.