Thursday, December 23, 2010

Year 2010

The last January I've posted my SDP (Self-development plan). Let's have fun.

1. Learn C++ and it's idioms, boost and stl
I've spent some time learning it. Despite I had no luck having C++ projects this year, I've been developing all these skills. Not to say I'm proud with my results, but there's a progress.

2. Learn C++0x. Read the Standard at least once.
I got an excellent excuse - there's no way I can read it. I don't want to use a laptop to read it. I don't have it printed. My chinese tablet is broken and even if it wasn't, it can be used to read .pdf. Is that great? More of that, nothing of the kind, I did nothing with 0x at all.

3. Get more than 4.5 in a C++ Brainbench assessment :-)
Looks like there were no free C++ BB assessments this year. I feel like I won't get 4.5 event if I had that free assessment.

4. Learn basic design patterns.
Yes! I've learned some of them. Mmm... how'd you call it... a singleton? Really, I've read a few books.

5. Re-read all books I have about software design.
I've been reading them, but not too actively. Now I think it's a waste of time.

7. Get introduced with Android, have some Hello Worlds done, learn Java to the level I know C#.

Yes. I have some experience with Android. I've made a small training task. I like Android. Both Java and C# are similar for me now. But it doesn't mean I have progress with Java. I just forgot C# :-)

7. Improve my English.
Don't know. Looks like I have a D+ :-)

8. Finish my compiler implementation. Make an Open Source project out of it.
No. In progress. No results.

9. Learn Python, start using it.
Yes. No pleasure. Learning it is inefficient. No results.

10. Get introduced with Django.
Got introduced, see previous post. No pleasure.

11. Figure out sound linux. Find out the software to make music.
Got it. It's possible to record guitar. It's possible to have real-time audio processing like Guitar Rig. And that's all. All this software is weird and unusable. Will wait for a couple of years.

12. Buy a new guitar and learn how to play it.
Yes. I spend for about 30 minutes almost every day.

13. Start riding my bike.
There was a couple of rides. I'm now 30 kg less.

14. Learn modern .NET and get certified.
No.

15. Start playing with ATMEGA32 again.
No.

16. Learn to get interesting projects.
No.

17. Learn software for software development: libraries, source control software, code-generators and so on.
I've spent a lot of time mergin the code with Araxis Merge. I had some experience with Subversion. I had some experience with TeamCity and even developed a plugin for it.

18. Learn multithreading.
No.

И снова JavaScript

Я сегодня понял 2 вещи.

Первая - нет в интернете такой статьи про JavaScript, читая которую периодически будешь повторять про себя: "Логично". ВСЕ статьи про JavaScript строятся в форме:
- Вы хотите X?
- Ну давайте попробуем вот так (далее идёт небольшой листинг, который хочется назвать "логичным")
- Не получилось? Потому что нужно вот так! (далее идёт, возможно, такой же по размеру листинг, только после предложенных правок логичным его точно не назовёшь. После листинга идёт не менее броузерной страницы чистого текста с попытками объяснить хитрожопость JavaScript).

Надо признать, что старость - не радость. Моё подростковое "со всем можно разобраться" становится всё слабее. С одной стороны хочется сказать, что время, которое я уже потратил на JS просто не окупается, а разобраться-то вообще можно, но нет. На самом деле ощущения сейчас идут больше в сторону "тошнит и не хочу". Я не в состоянии разобраться как писать нормальные программы на JS, потому что меня слишком сильно тошнит.

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

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