Инструменты
http://theiced.livejournal.com/199627.html?thread=2403019#t2403019
Большинство реальных проблем вызывается криворукими мудаками, которые по служебной халатности руководителя проекта получили доступ к клавиатуре и репозиторию. Станут ли мудаки менее мудаками, если сменять рабочие инструменты? Нет, не станут.
п. 1: вреда от мудаков будет меньше. У них со статик типизацией код не соберется, а за несобираемый код в репозитории наказывают болью.
п. 2: если дать не-мудакам кривые инструменты - они хочешь-не хочешь, но будут писать мудацкий код. И на все вопросы "а чтойта в у вас нету контроля версий и юнит-тестов" будут просто посылать в известном направлении, т.к. с бинарными файлами скриптов, набираемыми из справочников в программе под дос и дублирующимися в файловой БД (реальная система, я с ней работал несколько лет, обслуживал) - никакой контроль-версий и прочее не работает.
Это, например, как делать ремонт в советском союзе - из подручного говна, палок и спизженных на работе инструментов и делать ремонт сейчас - через 45 минут в общественном транспорте доступен гипермаркет с доставкой ияпонскими школьницами на инфоцентрах.
В итоге: личные умения и опыт, конечно, решают, но инструменты соответствующие помогают работать аккуратно и не задолбавшись.
Большинство реальных проблем вызывается криворукими мудаками, которые по служебной халатности руководителя проекта получили доступ к клавиатуре и репозиторию. Станут ли мудаки менее мудаками, если сменять рабочие инструменты? Нет, не станут.
п. 1: вреда от мудаков будет меньше. У них со статик типизацией код не соберется, а за несобираемый код в репозитории наказывают болью.
п. 2: если дать не-мудакам кривые инструменты - они хочешь-не хочешь, но будут писать мудацкий код. И на все вопросы "а чтойта в у вас нету контроля версий и юнит-тестов" будут просто посылать в известном направлении, т.к. с бинарными файлами скриптов, набираемыми из справочников в программе под дос и дублирующимися в файловой БД (реальная система, я с ней работал несколько лет, обслуживал) - никакой контроль-версий и прочее не работает.
Это, например, как делать ремонт в советском союзе - из подручного говна, палок и спизженных на работе инструментов и делать ремонт сейчас - через 45 минут в общественном транспорте доступен гипермаркет с доставкой и
В итоге: личные умения и опыт, конечно, решают, но инструменты соответствующие помогают работать аккуратно и не задолбавшись.
no subject
Но движуха идет и все у нас будет. К старости. Typescript вон - ничо так инициатива.
no subject
no subject
no subject
- все reference-типы - nullable, через что имеем кучу гемора и проблем в рантайме, тогда как все это прекрасно можно было решить системой типов
- дженерики появились только во втором .net, через это библиотека загажена нетипизированными коллекциями вдоль и поперек
- тяжеловесный синтаксис для классов. В 4-м можно лепить анонимные типы, но вернуть их из метода нельзя
- очень слабый вывод типов
Короче C# постоянно ставит палки в колеса и заставляет писать кучу кода на пустом месте. Хотя в C# еще все относительно неплохо, у многих хуже.
no subject
- для всех методов библиотеки где можно было воткнуть дженерики это сделали. Странно если бы они убили старые методы, сломав совместимость. Ими же не заставляют пользоваться при наличии хорошей альтернативы.
- да, невозможность возвращать анонимные типы печальна, но как это сделать, сохранив строгую типизацию?
- тут согласен
Возможно я ничего слаще морковки не пробовал (только C\C++, C#, Java, JavaScript), поэтому мне шарп кажется весьма удачным языком на фоне всего остального. На что посмотреть для расширения кругозора (ну кроме академических хаскелей)?
no subject
- мало где можно было уже поправить библиотеки на дженерики. Повсюду там NameValueCollection-ы всякие до сих пор.
- решаемо, но для этого нужен полноценный вывод типов
В контексте разговора static vs. dynamic можешь глянуть на новый этот MS-овский typescript. Там заход в типизацию со стороны динамических языков, выглядит красиво.
no subject
2) чтобы возвращать анонимные типы, нужно усилить выводилку типов. Т.е. чтобы вывод типов мог работать за границами отдельного метода.
Попробуйте F#, благо он в студии 2010 есть, а в 2008 ставится дополнительно. Там тайпчекер хоть и не такой мощный, как в хаскеле, но по крайне мере даст представление.