Блог

Уметь использовать компоненты нужно еще уметь

Вчера получил письмо от читателя о том, что его обвиняют на форуме, что он умеет только компоненты расставлять. У меня сразу столько мыслей полетело на эту тему. Неужели это так позорно уметь расставлять компоненты? Неужели это плохо? А может так говорят те, кто не умеет расставлять компоненты? Компонентное программирование - это следующий шаг после объектного и он позволяет двигаться вперед быстрее и предоставлять продукт быстрее. А скорость разработки и время выхода на рынок очень важны в наше время. Я всегда использовал чужие разработки и буду использовать в будущем, потому что не стыжусь этого.

Использование чужих разработок позволяло мне создавать множество проектов в одиночку. Да, тогда я допустил ошибку - погнался за кучей зайцев одновременно и должным образом поймал только двоих (только две программы реально продавались). С другой стороны, всегда есть неудачные проекты и никогда не угадаешь, какой проект пойдет, а какой провалится. Если бы я все писал сам, то не смог бы написать и 20 процентов своих программ и не факт, что среди этих процентов оказалась бы успешная программа. На разработку ушло бы больше времени, а выход программиста одиночки на рынок последним равносилен самоубийству. Пока бы я писал весь код сам в одиночку, мой конкуренты убежали бы в будущее.

Как я узнаю коды клавиш

Сегодня меня спросили, какой код у клавиши со знаком ~. Вот чесно, я не знаю. Я вообще клавиши не запоминаю. Если нужен код клавиши, то создаю пустое приложение, создаю обработчик события OnKeyНужныйобработчик для формы и там пишу что-то типа:

if (Key>0) then
 exit;

Это нужно, чтобы оптимизатор не оптимизировал параметр, через который передается код клавиши. Или можно в свойствах проекта отключить оптимизацию. Теперь ставим точку останова, запускаем приложение и нажимаем кнопку, код которой нужно узнать. Наводим мышкой на переменную (или выделить ее и нажать Ctrl+F7) и смотрю ее значение.

Именование на русском

Я только недавно узнал, что в Visual Studio 2008 можно именовать переменные и имена методов кириллицей. Это произошло случайно, когда я писал очередную главу книги и назвал пункт меню по-русски и когда я создавал обработчик события для него, то заметил какое-то идиотское название метода создатьToolStripMenuItem_Click. Я до такой степени привык именовать переменные и методы английскими словами, что для меня это выглядело просто уродливо. Я даже представить себе не могу, как такой код читать и поддерживать.

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

Лично я никогда не буду именовать переменные на русском. Оказывается, Delphi 2007 вроде бы тоже можно писать на русском. Я сам не проверял, потому что у меня просто нет Delphi 2007.

Отчет в Excel или не проходит ответ

Или у меня дежавю, или мне уже приходило несколько писем от ikrik0719@mail.ru. Я пытаюсь ответить, но мне возвращаются ошибки о том, что письмо не доходит. Человек пишет, что я его игнорирую, но по почте я никого не игнорирую, я просто не могу ответить. Если неправильно введен ящик, то я не виноват. Раз другого варианта нет, то отвечу уважаемому ikrik0719 прямо через блог:

Уважаемый ikrik0719, твой пример с отчетом в Excel откомпилируется без проблем, а вот выполнится с ошибкой. Ты после создания коннекта с Excel сразу обращаешся к рабочей книге WorkBooks, но ее не существует. Нужно сначала создать рабочую книгу. Вот корректный пример создания коннекта к Excel из Delphi:

 XLApp := CreateOleObject('Excel.Application');
 XLApp.Visible := True;
 XLApp.WorkBooks.Add; // создание книги 
 XLApp.WorkBooks[1].WorkSheets[1].Name := 'Отчет';

Выделенной строки у тебя в коде нет, но без нее будет ошибка.

Будущее Delphi моими глазами

Меня очень часто спрашивают по почте, что я думаю о будущем среды разработки Delphi. Я ничего не думаю и не могу тут ничего предсказать, но могу сказать про настоящее - популярность Delphi падает и в нашей стране в том числе. В России/Украине позиции борландовских продуктов всегда были достаточно сильными, но все меняется.

Узнать популярность языка программирования сложно, но я сегодня нашел один способ. Он не точный, но очень показательный. Заходим на Ozon и бегом в раздел Языки и системы программирования. Сортируем результат по бестселлерам и получаем, что первая книга по Delphi будет моя Библия и она будет аж на 15-й позиции. Следующая книга по Delphi на 18-й позиции. Ты еще хочешь знать будущее Delphi? Это не очень точный метод, потому что тут скрыто очень много факторов, но пример очень показателен.

Какой язык программирования изучать?

Это достаточно интересный вопрос - какой же язык программирования изучать. Всегда говорил, что изучать нужно несколько языков. И это скажу вам не только я, потому что нельзя класть яйца в одну карзину. Я абсолютно не жалею, что когда-то изучал Delphi и если он будет набирать в популярности, я смогу найти себе работу. Я немного знаю Java, C++ и сейчас вплотную работаю с C#, потому что он на подъеме. Тут нужно задать себе вопрос - а для чего ты учишь язык программирования? Если для того, чтобы писать программы для себя, то ты сам себе хозяин и волен выбирать то, что тебе нравится. Если нравится Delphi, то используй его и не обращай ни на какие тесты внимания.

Популярность языка определяется теми, кто волен выбирать среду разработки и язык. Благодаря этим людям, Delphi, Java или любой другой может стать популярным, а может умереть не смотря на все свои преимущества. Если ты начальник ИТ отдела и тебе нужно выбрать язык, то выбирай то, что лучше знаешь или что лучше подходит для задачи, ведь задачи бывают разные. Да, нужно смотреть на перспективу и нужно быть уверенным, что язык программирования не умрет уже завтра. Но не стоит заглядывать слишком далеко, потому что в дальней перспективе может умереть все.

Когда-то был популярен язык С и никто не думал, что ему можно придумать замену. А она нашлась - С++. Уже долгое время С++ был стандартом в разработке пользовательского интерфейса, но на наших глазах все меняется. Для большинства задач все больше используют C# в связке с WinForms или WPF. При этом C++ постепенно будет сдавать позиции. Он не умрет, но будет сдавать. Не удивлюсь, если через 10 лет С++ заменит C# или F#, но это может быть (именно может, но не факт что будет) и только в отдаленной перспективе.

Российские программисты снова чемпионы

Буквально вчера мы говорили о гордости и сегодня прекрасный пример гордости для нашей страны в сфере ИТ. Команда из Санкт-Петербургского государственного университета информационных технологий, механики и оптики стала чемпионом по программированию. Ну разве не предмет для гордости? Для меня да, потому что это значит, что наше образование не на столько плохое. Это значит, что наши ребята еще не все наркоманы и алкоголики и способны выигрывать чемпионство. Наши команды заняли так же 3-е и 4-е места.

Я рад за ребят и поздравляю их с таким достижением. Я уверен, что эти ребята, когда закончат институт будут создавать программы, которыми можно будет гордится. Для кого будут создавать - это другой вопрос (их же могут забрать и в штаты). Но я надеюсь, что они найдут свое место в мире ИТ и может быть кто-то из них станет будущим Биллом.

Мои поздравления ребятам и удачи.

File Explorer Control .NET финальная версия

Уже прошло около полугода, как я выпустил первую версию компонента файлового браузера для .NET (File Explorer) в виде бета версии. За это время у меня уже появилось несколько человек, которым понравился компонент и они предложили свои услуги по тестированию, за что я отдал им бесплатное разрешение на использование компонентом. Самое интересное, что все они не из России, что странно, ведь я в основном пока рекламировал компонент только через свой блог.

Прошло пол года и я за это время просто молча обновлял компонент на сервере, но не обновлял версию, потому что это оставалась все еще бета версия. Вчера же я решил поставить первую точку в разработке пакета File Explorer Control .NET и выложил на сайт очередной апдейт, который назвал финальной первой версией. Информация на русском языке по компоненту доступна здесь: .NET компонент файлового браузера

Пакет состоит из двух компонентов FileExplorerControl и FileListView. Первый из них построен на базе пользовательского элемента управления, что позволяет создать уникальные возможности по рисованию элементов списка. Компонент FileListView построен на базе классического ListView, что придает ему классический вид и функционал. Данные компоненты будут очень удобны и полезны тем, кто программируте WinForms приложения.

Отделение логики, отображения и данных

Несколько лет назад я читал книгу "Совершенный код" и выразил свое несогласие с автором, когда он говорил, что нужно писать не на языке, а с использованием языка. Как пример автор приводил утверждение, что если в языке нет объектов, то их нужно изобрести и написать. Это слишком радикальный метод, который я не могу поддержать. В данном случае проще и эффективнее будет поменять язык на объектный. Такие языки, как Delphi и Java слишком разные, чтобы писать на них одинаково, потому что у языков слишком разная идеология.

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

Существует множество подходов к программированию, но мне кажется, что лучший вариант - это отделение логики, данных и представления. Такие походы, как MVC придуманы уже давно и до сих пор успешно используются во многих компаниях. Только используются далеко не всеми. Я практически не видел подходы с разделением в проектах на Delphi и это ужасно. Народ почему-то пишет логику прямо в модулях представления или перепрыгивает сразу на трехуровневое программирование, когда код логики (тут любят применять красивое выражение "бизнес логика") выносится на промежуточный уровень.

Привыкание к ASP.NET

В последнее время очень мало времени даже на программирование. Вчера вечером появилось немного времени, и я решил расширить возможности сайта моей жены. С ASP.NET я работаю не так давно, наверно с годик, может даже меньше, но вчера когда расширял возможности сайта жены я понял, что этот язык мне все больше нравится.

Где-то около года назад, когда я впервые встретился с этим языком, то он мне показался очень неудобным. Вроде бы все знакомо, уже известные мне операторы, вроде бы красивый и понятный синтаксис, но как-то все же неудобно. Я понимаю, что я очень долго писал на PHP и поэтому не особо был критичен в своих высказываниях в отношении ASP.NET. И не зря. Не знаю, когда это произошло, но прошел год, а я без проблем уже сроднился с технологией MS.

Когда мне нужно быстро набросать какой-то сайт, то я все же использую PHP, но и ASP.NET больше не пугаюсь. Не знаю почему, но на ASP.NET мне проще отделять логику от представления. За окном 2009-й год, а на PHP я до сих пор отделяю логику от представления с помощью include, а в .NET есть такие вещи как Master Page и темы.

О блоге

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

Обратная связь

Без проблем вступаю в неразборчивые разговоры по e-mail. Стараюсь отвечать на письма всех читателей вне зависимости от страны проживания, вероисповедания, на русском или английском языке.

Пишите мне