Все записи с меткой 'thinking aloud'


Деградация и полный упадок


На RSDN-е эпический тред про то, как нарисовать рамочку для выделения ala MS Paint. Такого кретинизма я не видал, наверное, со времён чтения нам в институте курса по программированию под Windows (или как это там называлось). К слову, курсовой, по этому самому программированию под Windows, у меня был клон Paint-а, и рамочки там даже не думали тормозить и моргать. Да что там, у меня на 3-ем пне трёхмерный кубик на весь экран вертелся со скоростью под 30 кадров в секунду, а написан он был на голом GDI, без всяких извращений. А они на GDI+ рамочку без тормозов и морганий не могут вывести. Деградация и полный упадок, RSDN выродился окончательно и бесповоротно.

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

Про сервера для контроля версий


Странно, уже давно есть хорошие и удобные codeplex, bitbucket, github, есть в целом неплохой google code, а sourceforge, несмотря на то, что его уже несколько раз переделывали, как был редкостно неудобным отстоем, так им и остаётся. Вот почему бы им не посмотреть, как сделаны правильные сервера, и не перестать делать отстой, я не понимаю. Каждый раз, когда нужно что-нибудь взять с sourceforge-а, у меня возникает стойкое желание поубивать его создателей.

Twitter клиент


Хм, интересно, откуда у меня взялась эта странная идея - написать свой твиттер-клиент.
Twitter клиент

Silverlight и WPF


Эх, все таки Silverlight проигрывает WPF-у по удобству использования, столько ограничений, местами весьма бессмысленных. Когда же они доведут его до более менее близкого по эффективности к WPF-у продукта.

О системах контроля версий


Все таки у майкрософтов TFS, несмотря на все свои достоинства, достаточно неудобен, если для работы с ним используются инструменты, отличные от Visual Studio (ну и Expression Blend-а, который к 3-ей версии с горем пополам научился работать с этим самым TFS-ом). Тот факт, что для начала редактирования файла его сначала надо захватить на сервере, в корне убивает все прелести работы с ним. Особенно, когда сервер удалённый а интернет работает кое-как. Бывает файл минут по 10 захватывается. И главное пользы от этого ноль, ибо кому какое дело, кто ещё редактирует этот файл, кроме тебя. Все таки, когда просто берёшь и правишь файл, без всяких заморочек - гораздо более удобный вариант (как сделано в SVN-е или там в Mercurial-е,), ибо позволяет пользоваться любыми инструментами, без всякой мороки типа - открыл Visual Studio, захватил файл, открыл Blend, поправил файл и т.д. Просто берёшь и правишь, и никаких проблем.

Размер Thumb-а у ScrollBar-а


В общем и целом WPF мне нравится. Вещь замечательная, удобная и не имеющая аналогов. Из более менее близких можно назвать пожалуй Qt, благо после покупки Нокией он стал развиваться гораздо активней и в целом движется в относительно верном направлении. Ещё конечно можно назвать Htmlayout, но он все таки слегка из другой оперы, хоть на данный момент и является единственной возможностью создавать красивые нативные приложения под Windows (Qt я нативным не считаю, ибо это монстр ещё похлеще .Net). Так вот, WPF мне нравится, но иногда там встречаются настолько нетрадиционные решения, что волосы дыбом встают. Вот например есть скроллбар (ScrollBar) и мы хотим задать Thumb-у этого скроллбара некую минимальную высоту (или ширину в зависимости от того вертикальный ли это скроллбар или горизонтальный). Казалось бы что проще, ставишь MinHeight Thumb-а в нужное значение и наслаждаешься полученным результатом. А вот нет. Основной поведенческой логикой скроллбара заведует некий Track, который нисколько не волнуют всякие там MinHeight-ы и который тупо урезает Thumb до того размера, до которого сочтёт необходимым. После долгого ознакомления с MSDN-ом, выяснилось следующее: для минимального размера Thumb-а Track использует константу SystemParameters.VerticalScrollBarButtonHeightKey (точнее половину от значения этой константы), которая по умолчанию связана с дефолтным значением в Windows. И эту константу можно поменять в ресурсах Track-а примерно таким образом:
<Track.Resources>
  <sys:Double x:Key="{x:Static SystemParameters.VerticalScrollBarButtonHeightKey}">100</sys:Double>
</Track.Resources>
Век живи, век учись, так руки бы и оторвал тем индусам, которые такое наворотили.
К слову не могу не заметить, что ни в одном из видимых мною платных WPF-ных контролов, в котором был кастомный стиль на скроллбар, не было задано нужной минимальной высоты, поэтому во всех них наблюдались некоторые баги при достижении минимального значения. И это определённо свидетельствует о недостаточном качестве этих самых контролов. Вот посмотришь на чужие контролы и так и хочется заняться создание правильных контролов для WPF-а (и silverlight-а тоже), а то продаваемые сторонними конторами контролы в большинстве своём абсолютно никакие.

Создал тестовый проектик на XNA для Zune


Наваял тестовый проект на XNA под Zune, с ходящим роботом (гандамчег, с турбосквида скачал)
Создал тестовый проектик на XNA для Zune
Обнаружилась редкостная гадость: проклятая Zune понимает исключительно единственный формат картинки - 32-х битный, а учитывая 16-ти метровое ограничение на память это выглядит крайне печально, ибо только анимации хождения для робота весят 2,5 метра. Походу придётся придумывать, как использовать подгрузку данных с жесткого диска. Эх, нет чтоб поддерживать мой любимый l4a4.

Размышления на тему обучения программистов


Размышления на тему того, как надо правильно обучать программистов, навеяно комментариями к этому.
Итак, школьные годы:
1-4 классы: общее знакомство с компьютером, Windows там, MS-DOS (командную строку учить необязательно, а вот Norton Commander как минимум на уровне копирования файлов и запуска игр)
5-7 классы: знакомство с программированием, основы алгоритмизации, на примере какого-нибудь лого (кенгурёнка и прочих кукарач)
8-11 классы: алгоритмизация, лучше всего на Turbo Pascal 5, на крайний случай сойдёт и TP 7, главное никакого Delphi, иначе детей можно будет считать потерянными для мира программирования. Также можно использовать Basic (само собой под DOS), но паскаль в данном случае будет лучше
Институт:
1-ый курс: старый добрый C, основная цель курса обучить студента правильно работать с указателями и прочим стандартным вещам
2-ой курс: ООП, в основном теория, примеры на C++, но не забывая упоминать про прочие типа Smalltalk-а, Java, C# и т.д...
3-ий курс: обучение правильному построению архитектуры приложений, рефакторингу/отладке/тестированию/профайлингу и т.д. и т.п. Плюс основы функционального программирования. Факультативы по Java, C# и прочим(именно по языкам, никакого формошлепства и прочего визуального программирования). Также неплохо давать основы WinAPI, предпочтительно с какой-нибудь навороченной курсовой в конце семестра. Также как факультатив возможно введение в web-программирование, хотя это совсем не обязательно.
4-5 курсы: практика, практика, и ещё раз практика. Само собой в реальных проектах, в реальных фирмах, никакой теории уже не надо. С этого момента студенты должны учиться на своём опыте и на опыте старших коллег. Естественно это требует тесного взаимодействия ВУЗов и предприятий, чего сейчас нет и в помине.

Краткие примечания
- я считаю, что для обучения школьников наиболее подходящим языком будет Pascal (именно старый добрый процедурный паскаль, а ни в коем случае не жутчайшие Delphi или Object Pascal)
- основной недостаток паскалистов (большинства по крайне мере) - это абсолютное неумение работать с памятью, именно поэтому на первом курсе института этому должно уделяться особое внимание
- ни в коем случае нельзя использовать для обучения Deplhi(а также CBuilder, Visual C# и прочие IDE, где доминирует формошлепство), ибо как показывает практика большинство людей начавших с формошлепства так никуда и дальше и не продвигается, именно поэтому я считаю, что закупка в школы BDS`а приведёт к тому, что хороших программистов станет значительно меньше (впрочем их и так совсем немного), а вот всяких быдлокодеров, которые только и умеют, что раскидывать кнопки по форме, станет просто немерено (хотя их и так немало)
- по настоящему хороший программист без особых проблем сможет сменить язык программирования на другой(имеются ввиду естественно императивные языки, с функциональными есть своя специфика), конечно в каждом языке есть свои тонкости, но основа-то в конечном итоге у всех одна, поэтому не играет большой разницы C это, Pascal, Basic или что-то ещё.

PS. Всё это моё личное мнение, навеянное жизненным опытом, и совсем не претендующее на стопроцентную объективность.