Tuesday, December 14, 2010

Про динамическую типизацию. Особенно слабую.

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

Если прокрутить вниз до "Very Long Term History", можно наткнуться на замечательный факт: Objective C с 42го места в 2005 году поднялся до 8 места в 2010. Причина, естественно, не в том, что все резко поняли, какие они идиоты и осознали как прекрасен Objective C, а в том, что из-за iPhone/iPad он сейчас востребован.

Ситуация исключительно идиотская. Objective C - это полная хрень. Это такая лажа, что просто выворачивает. Если взять всё самое плохое из C и JavaScript, получится нечто получше Objective C - настолько он хреновый.

Я вообще о чём... А, вспомнил. Я вчера пытался отрефакторить свой хреновый код, написанный на JavaScript с использованием jQuery и понял несколько вещей:
1. JavaScript - это полнейший фуфел.
2. jQuery, из-за того что JavaScript, это тоже полнейший фуфел.
3. Динамическая типизация, а особенно слабая динамическая типизация - это жопа.
4. Буду в дальнейшем избегать динамической типизации при любой возможности.

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

Кто мне покажет прелести слабой динамической типизации? Вот прям какой-нибудь пример, чтоб я прозрел?

Monday, December 13, 2010

Немного про веб #2

Не так давно я написал про веб. С тех пор поковырялся ещё немного, отношение немного изменилось.

Ниже идут только эмоции, если вам хочется мыслей, этот пост не читайте.

Django
Django заканчивается там, где заканчивается их первый туториал. Вы ставите Django, начинаете читать введение. Там рассказывают как сделать блог. Пока вы делаете этот блог, всё исключительно позитивно. Там фактически нужно сделать 2 пустых файла и 3 команды в шелле выполнить и получается блог. Я, конечно, утрирую, но это довольно реалистичное описание. После этого хочется верить, что Django весь такой. Белый и пушистый, гибкий, универсальный и всё нахаляву.

На самом деле - нет. Единственное, что с помощью Django можно сделать легко - это блог. Ну и всё остальное, что хоть как-то похоже на блог. На этом халява заканчивается. Гибкость и универсальность исчезает. Остаётся недофреймворк, в котором для получения нужного поведения нужно половину реализовать руками. Я опять утрирую, но это близко к истине.

Например, как я понял, модель непосредственно завязана на sql. Причём завязана она непосредственно на select/insert/update/delete. А у вас хранимые процедуры? Ну... гугл, красные глаза, возможно что-то и выйдет.

Python
Питон нынче моден. Быстрое прототипирование, биндинги чуть ли не со всеми существующими библиотеками, и т.д. При этом при всём с ним что-то не то. Когда я изучал C#, было просто интересно. Т.е. он не напрягал, он заставлял решать маленькие задачки, которые действительно интересно было решать. Когда я изучал Java, там вообще смешно было. Java ничем не отличается от C#. И всё было как-то легко и непринуждённо. Любезный читатель может здесь указать на то, что все эти 3 языка совершенно одинаковые. Соглашусь.

А вот с питоном как-то не срослось. Как обычно, делал лабораторные, как обычно читал книжки и статьи, но почему-то не цепляет. Странный он. То ли это динамическая типизация, то ли ещё что-то. Короче, сильное ощущение дискомфорта.

JavaScript и jQuery
JavaScript ужасен сам по себе. jQuery интересен только пока смотришь короткие примеры. JavaScript - это такая жопа, самая большая жопа из всех популярных на сегодняшний день ЯП. Слабая динамическая типизация - это ужаснейшая идея. Это фишка, которая позволяет из простого hello world сделать такой ужас, что потом не разберёшь. jQuery интересен тем, что он есть и популярен - это единственная причина, по которой я решил его использовать (т.к. проект у меня сейчас учебный, делаю выбор в сторону попсы).

Так вот, если от Python можно отказаться и использовать что-нибудь другое, то от JavaScript уже не откажешься. Потому что альтернатив нет.

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

Любезный читатель может сказать, что у меня руки из жопы растут. Возможно. Речь не об этом. Речь о том, что нет удовольствия от веба.

Friday, December 10, 2010

Rework

Недавно купил на Озоне книжку Rework. Потому что модно. Вчера получил и прочитал. Книжка тонкая, буквы большие, поля большие, картинок бессмысленных много. Книжки делятся на те, из которых можно что-то узнать и те, которые можно прочитать. Rework относится ко вторым. Основные тезисы можно выделить так:

1. Думай меньше.
2. Слушай меньше.
3. Делай хоть что-то.

Сложилось впечатление, что книга держится исключительно на ЧСВ авторов: у них так работает, значит это хорошо и может заработать у кого-нибудь ещё. Книгу стоило бы назвать "Что 37signals думают о самих себе". Почти никакого анализа - просто факты.

Thursday, December 2, 2010

Про методы разработки

Обнаружил крайне интересную статью, рекомендую к прочтению.

Wednesday, December 1, 2010

Маразм

"26 ноября 2010 года программист из Магадана, автор бухгалтерской компьютерной программы "СЛВ-Зарплата" Жуков В.В. был осужден за защиту своих авторских прав.

Суд посчитал программу Жукова вредоносной (блокирующей информацию), поскольку по истечении срока лицензии программа перестает работать."

Если есть пара минут, сходите сюда и подпишитесь под обращением.

eBay

Оказывается, живя в Росии вполне можно покупать на eBay. Сегодня приехали 2 посылки - чай и рюкзак. Чай из Тайланда, рюкзак из Штатов. Теперь я могу положить чай в рюкзак. Чай из Тайланда в рюкзак из Штатов.

Болеро

Мне очень нравится интернет-магазин Болеро. Сегодня они прислали мне список новых книг. Это последовательная выборка из их списка:
1. К черту все! Берись и делай!. Издание 2
2. Клиенты на всю жизнь
3. Управление жизненным циклом корпорации
4. Годовой отчет - 2010 (комплект из 2 книг)
5. Правоохранительные органы Российской Федерации
6. История судебной системы в России. Издание 2
7. Комментарий к Уголовному кодексу Российской Федерации. Издание 7

Tuesday, November 30, 2010

Software Engineering

Несколько вещей по поводу инженерии ПО, которые я субъективно нахожу категорически интересными.

Первый интересный источник - книга Стива Макконнелла "Профессиональная разработка программного обеспечения". "Совершенный код" много кто читал, а "Профессиональная разработка", по-моему, не очень популярна. Там нет никаких практических советов типа "не делайте в цикле то, что можно сделать завтра". Там речь, в основном, идёт о самой отрасли - о специфике, о нюансах. Книга тонкая и очень интересная.

Ещё есть книжка "Программист-прагматик". В ней авторы рассказывают как не быть быдлом. Тоже тонкая и тоже интересная.

На сайте ACM есть страничка с "Кодексом программного инженера". Там есть 2 версии: покороче и подлиннее. О чём идёт речь - понятно из названия. Очень рекомендую прочитать хотя бы раз длинную версию и поделиться ссылкой с коллегами.

А сегодня в рассылке The Code Project обнаружилась исключительно интересная ссылка - Programmer Competency Matrix. Тоже рекомендую ознакомиться, очень демотивирует :-)

Thursday, November 18, 2010

Немного про веб

Так сложилось, что у меня исключительно разноплановые интересы.

"Профессиональным разработчиком" я стал в 2002ом году. Я тогда был то ли в 9ом, то ли в 10ом классе. У меня тогда уже был небольшой опыт разработки для веб. Помню, что написал счётчик посещений на Перле, и на нём же - ужасный движок форума. Потом что-то делал на PHP, не помню уже. И вот, на меня, уже снова не помню, откуда свалился фрилансовый проект. Я тогда не знал такое слово - фриланс. Но он на меня свалился. Что интересно, сумма была довольно интересная по тем временам - 5000 рублей.

Нужно было сделать сайт визитку для одного ИП, который продавал.. ну не важно. В общем, нужно было сделать что-то среднее между сайтом визиткой и простеньким интернет магазином. Нужно было сделать визарда, который позволял бы выбрать наименования, потом для каждого наименования - количества товара по каждому наименованию, а потом бы отправлял тому самому ИП письмо с этим заказом. Сделал, деньги получил, потом разругались, потому что ИП не хотел платить за сопровождение.

После этого я "устроился" (почему в кавычках - не скажу, но кавычки тут в тему) веб-разработчиком. Нужно было писать на PHP. Около года прозанимался этим, появилось дикое отвращение к вебу. Вообще ко всему вебу. Я тогда сказал себе - больше не буду заниматься вебом. С тех пор прошло 8 лет. Все эти 8 лет я почти никакого отношения к вебу не имел. Периодически почитывал статьи, слушал страшные слова типа ASP .NET, jQuery и т.д.

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

И вот посмотрев на код, чувство тошноты касательно веба немного отступило. Ну да, код ужасный, ну да сопровождать не очень удобно. Но.. оно похоже на программу.

Почти параллельно с этим возникла необходимость сделать простенькую фигню на Flash. Я помню в школе тоже как-то Flash поставил. Посмотрел - и сказал: ненене, Дэвид Блейн. Сейчас же, за несколько вечеров удалось более менее разобраться. Очень порадовало, что многое можно сделать вообще без мышки. Тупо на Action Script. А Action Script оказался не страшный, вполне себе такой.. странноватый, но ненапряжный. Сделал фигню.

Сейчас решил посмотреть как работает современный веб. Ковыряю Django, jQuery, Google Maps API. Собственно, ради чего я это всё пишу. Хочется просто сказать, что оно не такое уж и противное. Django/Python - исключительно позитивная вещь. Вдвойне позитивная после того, как я поставил Aptana Studio, у которой есть PyDev. Не противно! jQuery так вообще - ахтунг. Весёлая такая штука. У Google Maps API настолько хорошая документация и настолько много официальных примеров использования, что вообще вопросов не возникает.

Короче, вебом можно заниматься. Не так чтоб совсем, но можно.

Saturday, November 6, 2010

Про роботов

Это я к чему... А хз.