Блог

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

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

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

Отчет в 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 := 'Отчет';

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

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

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

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

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

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

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

if (Key>0) then
 exit;

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

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

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

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

Случайное везение из-за оптимизатора Delphi

Сейчас в ящик упало письмо, с просьбой помочь исправить косяк с выводом в StringGrid, У парня по щелчку в сетке StringGrid производились расчеты с выводом информации в сетку. Самая главная сложность у парня было вывести именно в сетку.

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

Новый компонент файлового навигатора для .NET

Вчера на сайте Heapar Software я выложил новый компонент для .NET программистов, и для работы с файловой системой: File Explorer Control .NET. Компонент позволяет просматривать файловую систему, ее директории и файлы, а так же запускать нужный файл.

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

Для России и стран СНГ данный продукт будет распространяться совместно с Essential Library .NET, поэтому ссылки на регистрацию у обоих продуктов на один и тот же сайт. Купив Essential Library .NET, ты получаешь File Explorer Control .NET и наоборот. Это так сказать цена на рекламный период. В будущем я возможно разделю проекты в регистрации и каждый из пакетов придется регистрировать по отдельности.

Как я отношусь к .NET

Когда .NET только анонсировали, то многие считали, что Microsoft просто придумывает альтернативу Java и хочет задавить конкурента непонятно зачем и почему. Я не увидел в этой разработки ничего гениального и удобного с точки разработки программ. Код, созданный в Visual Studio .NET выглядел не эстетично, и главной причиной было то, что все находилось в одном файле – сгенерированный дизайнером код и написанный программистом. Это было ужасно.

Первая версия .NET действительна была похожа на то, что ее делают ради кроссплатформы и Джоел на своем блоге даже написал знаменитую заметку о том, что Microsoft теряет контроль над самым главным своим состоянием – над API. В интернете быстро появился открытый проект Mono, который реализовал .NET для Linux. Если я не ошибаюсь, то первую версию он реализовал полностью. Сейчас я могу сказать, что Microsoft не потеряла контроля над API, а постепенно получает над ним контроль и компания не создала конкурента для Java, она создала хорошего помощника для неуправляемого кода, написанного на C++ или Delphi.

Разные подходы и языки программирования

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

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

Multi-touch технология с помощью Touchless SDK

Не смог удержаться и решил опубликовать эту новость и на блоге. На сайте Codeplex появился Touchless SDK, который позволяет разработчикам создавать и использовать multi-touch приложения. Данный проект был создан Mike Wasserman-ом как проект в университете Columbia University.

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

Читать полную новость Touchless SDK

О блоге

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

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

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

Пишите мне