← All posts tagged programming

demiazz

Жуйк. Я вот чего-то подумал тут. @umputun как то в одном из выпусков Radio-T негодовал, мол культ вокруг Фаулера с рефакторингом возвели. Ну и чего то начал замечать, что для многих рефакторинг при выборе инструмента стоит на первых местах.

Не кажется ли тебе, Жуйк, что вокруг рефакторинга правда возводят культ? Не. Ну я понимаю, если проект старый, переписывать с нуля не кошерно, и лучший выход — рефакторинг кода. Но когда начинают новый проект, и сразу о рефакторинге думают...

Если проект только начинают, то какой рефакторинг может быть, когда проект становится только на путь роста, или вообще готовят только первую версию, на опробовать, чтобы написать потом с нуля и очень хорошо. Культом попахивает все это дело ._. И тесты сразу увязывают в первую очередь к рефакторингу. Будто тесты больше ни на что не нужны, кроме как ради рефакторить код.

demiazz

Прорабатываю идею сервиса агрегатора. Давно в голове крутилась идея, но как то на задний план откладывал. Идея очень большая, и очень простая с другой стороны, и очень web 2.0-ная. Интересно будет, что получится из всего этого. ) Надо бы поработать и посмотреть.

demiazz

Чего-то я все чаще, натыкаюсь на следующее противопоставление многих императивных языков (в моем случае Python/Ruby), и функциональных (не важно, пусть будут ML-подобные). Заявление туманное, но все же. Мол программа четко ограничена, сокращенно количество ошибок, не нужны тесты. Конечно, я понимаю. В случае к примеру того же Python/Ruby — более тщательное тестирование может быть некоторой платой за гибкость в императивном подходе.

Но неужели функциональные языки, статическая типизация с выведением типов настолько защищают правильность программы, что тесты не нужны? Или это я встречаю обобщенное высказывание.

Предупреждение: пост не холивара ради. должен признать, что опыта именно функционального программирования мало, но вот эти заявления пока слабо оседают в голове. поэтому и хочу прояснить ситуацию, насколько полно мне принимать и понимать "ненужность тестов" в данном случае.

demiazz

Вот осилив Дейта, пусть частично, но кругозор и мышление расширяется таки. Почему то в мозгу родилась такая мысль. Вот Дейт, очень яро отстаивает реляционную теорию, и очень критикует SQL. Да он — математик, это его право и как бы так сказать — его хлеб.

Но вот, что меня навело на некоторые размышления. Вот есть реляционная теория. Этакий идеальный эталон. Отношения, в виде множеств, состоящих из кортежей. На деле, SQL подразумевает таблицы, в которых есть определенный порядок строк (кортежей), что просто ломает все определение отношения, так как множество не имеет порядка элементов по определению. Оно просто само по себе не имеет никакого порядка, как его не изображай.

Но на деле. Как работать с множеством, когда мы имеем дело с весьма детерменированной системой? Как бы работалось, если бы в SQL убрали GROUP BY, или ORDER BY. Что, если нужно упорядочить элементы (а это обычное дело при работе с базами данных).

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

Математическая модель идеальна. А ПО описывает модель реального мира, который далеко не идеален, и при написании кода, алгоритмов и ПО, можно все уложить в идеальную математическую модель, но насколько это может усложнить жизнь, разработку, понимание и сопровождение системы.

И исходя из этого, я немного переношусь на языки программирования. Вот есть Python, Ruby, C++, Java, Javascript к примеру. Эти языки очень сильно критикуют со всех сторон, и как только можно. Но они чертовски популярны, и очень прагматичны в своих областях.

А есть Haskell к примеру. Я снимаю шляпу перед Haskell, ML, Lisp и прочими. Но почему они не завоевали популярность (Lisp не в счет частично)? Они идеальны во многих отношениях, их концепции лежат на непоколебимых математических основах. Они позволяют добиться идеального кода. Но почему же тогда, их так мало используют?

Вот мне почему то кажется, что они просто сильно идеализированы. Человеку легче понять код на Python или Java (или другом), на языке который более человечным, и не математическим, более формальным (хотя и не без доли математической основы) языком позволяет описать реальный мир. Нужна ли вообще настолько идеальная математическая модель для большинства ПО, и насколько правда оправданы возможности Haskell или ML для ежедневного использования, даже если предположить, что писать и понимать их не сложнее Python или Basic.

Вот такие воспаленно больные бредовые мысли перед сном. ))) надо завязывать с матанозадротничеством :D

demiazz

Тимлид на работе второй день работает стоя ) мне аж не привычно сидеть, но с некоторой долей зависти посматриваю на его выдержку, ибо сам бегаю то покурить, то за кофе, то просто по офису шляюсь, ибо задница форму кресла принимает через некоторое время )

demiazz

Блять. ненавижу таких людей. Постучался, помоги. Вот админ, начальство потребовало чтобы я внутреннюю веб-страничку сделал. тянуть инфу с пары баз. PHP не хочу, а Python я читал — помоги. Хрен с тобой золотая рыбка. Кидаю ссыль на Flask, все объясняю. Уже неделю не может ничего сделать, и на любой чих "давай я тебе скрипт пришлю". Документация, которую надо в музей за качество ставить, фреймворк в котором дедсадовец разберется, а он блять сесть и почитать не может. Сраную опечатку в функции когда я написал, до него не доперло что tempate — это опечатка в template. Ну это просто аминь и пиздец. Неделю вместо "сесть и почитать" он мне ебет мозгн "не работает, посмотри скрипт, поправь скрипт". Я блять что, оутсорс бюро, или что? не можешь сказать начальству что ты не программист, и не хватает мозгов разобраться в простейшей функции — чего ж ты мне мозг ебешь то T_T

demiazz

Сижу читаю код на C++. Пытаюсь писать. Давно это делал. И в голове один вопрос: "Как на этом пишут?"... Видимо таки динамические языки меня развратили, но блин. Имея три числа, надо создать строку и вставить их в определенные места. Столько геммора. Строку создай, размер или через string, смотри чтобы там было то-то и то-то. А не просто:
"Some string %s" % (some_number) или "Some string #{some_number}" и все.
Читаешь хабр где нить про плюсы. Там хитро выебанный код, и говорят об изящности. Вспоминаешь о динамической типизации, о родных Python и Ruby... Так на душе становится тепло, и реально пытаешься понять людей: а в чем собственно красота-то?

Как бы мне теперь эту развращенность убрать обратно, и приучаться писать не только на динамических, но иногда и JUST FOR FUN на статических?

demiazz

Заметил за собой, что боюсь осваивать некоторый софт. Однако, если осваиваю аналог софтины, то начинаю и начальную довольно легко использовать. К примеру, никогда не пользовался virtualenv, и вообще боялся его трогать. Когда занялся Ruby, то познакомился с RVM, и теперь не просто не могу смотреть на голый virtualenv, но обязательно юзаю virtualenvwrapper, причем вникание во все это произошло практически за минут 5. Вспоминается по школе, когда меня учили на VB, я многих концепций не понимал, но хотел большего и купил книгу по Delphi, в котором вообще ничего не смог. После первой вводной пары по Pascal в универе, я буквально на лету освоил всю книгу по Delphi слету просто. Интересно, это у меня психология такая, или особенность мышления? SCRATCH

demiazz

Один любитель С и асма, настаивает что надо выкинуть Java, и писать вместо нее на C. Доводы, про написанный код, софт и вложенные деньги, превосходство инфраструктуры ява для тырпрайза над си — пролетают мимо. Да. Фанатизм — все таки, как ни крути основная болезнь всех айтишников. В той или иной мере. )))

demiazz

Жуйк. Какова вероятность того, что на запущенном сложном проекте, в процессе его улучшения, и попытки довести до ума, привьется чувство прекрасного, стремления к правильному подходу и отвращение к говнокоду, и при этом будет повышение скиллов?

demiazz

Жуйк. Представь ситуацию. Ты пришел в новую компанию. Твоя задача: помогать поддерживать проект, который внутри очень сложен, ну или тебе так кажется. Ты находишь (по крайней мере со своей точки зрения много ошибок в нем и так далее, в том числе и архитектурных). Это нормально хотеть его переписать заново, или таки все таки показатель "неопытности"? SCRATCH

demiazz

Все таки сделать свой DSL или API, которое будет удобным и приятным — это чертовски сложно. На собеседование на вакансию прислали задание, написать удобную модель, для хранения настроек сайта. Задача простая и тривиальная, просили лишь сделать удобный и простой способ работы с моделью. А вот тут и понеслась фантазия :D

demiazz

Да уж. Все таки продуктивность и правда зависит от инструментов и их удобства (а это зачастую очень личная характеристика). Я до последнего откладывал рисование диаграмм для диплома, и думал как бы их меньше рисовать. Причиной было всего лишь дикое нежелание связываться с Dia. Нашел удобненькую тулзу для UML с просто тонной типов диаграмм, приятным интерфейсом, ну и вообще короче дико удобную. Теперь сижу, и расписываю каждую диаграмму, да поподробнее >_>