В светлое Unicode будущие с Delphi XE

В прошлом месяце я стал счастливым обладателем лицензионной Delphi XE и вместе с ней был вынужден сделать шаг к Юникоду. Конечно переход на Юникод в Delphi продолжается уже несколько лет, но от этого он не стал менее болезненным. С такими вещами, как явное указание типов строк ShortString и AnsiString все более или менее понятно. Эти моменты разжевывались Embarcodero давно и подробно. Основная головная боль была с самодельным компонентом. Когда-то я придумал, что метод компонента будет возвращать значение, через изменяемый параметр функции, типа ShortString. Вот тут то я и попал, оказалось, что подобный параметр возвращает все, что угодно, кроме нужного результата. Выход конечно нашелся, но пришлось переделывать компонент, так что бы он возвращал результат в виде результата функции. Как не странно заработало, но три дня как не бывало.

Второй момент который меня существенно удивил, было отсутствие прямого и корректного преобразования переменной типа Char в переменную типа AnsiChar. Когда любой компонент из VCL возвращает нажатие клавиши, это буква помещается в Char, который по умолчанию (причем которое невозможно изменить) является символом Юникода. Мне же нужен был обычный символ в интервале от 0 до 255. Простое приведение

KeyA:=AnsiChar(Key)

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

var
  StA : AnsiString ;
  KeyA : AnsiChar ;
begin
  StA:=Key ;        // присваиваем Unicode символ строке AnsiString,
                    // при этом компилятор добавляет преобразование
                    // типа строки
  KeyA:=StA[1] ;    // берем 1-й символ получившейся строки
end ;

Стандартизация против оптимизации

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

Ярким примером того, что стандартизация побеждает является история программы «1С:Бухгалтерия». В свое время разработчиком был провозглашен лозунг «Методологичность выше технологичности». В результате этого программа работала временами медленно, но выполняла все операции требуемые бухгалтеру. Результат налицо. Программа является практическим монополистом рынка бухгалтерских программ.

Еще один яркий пример система «Экспресс». Это та система через которую продаются билеты на поезд. Первый вариант системы был создан еще в Советском Союзе. На весьма скромной аппаратной платформе система работала с огромной скоростью. Это достигалось благодаря программной оптимизации. При разработке системы не использовались стандартные СУБД, все было запрограммировано для достижения максимальной производительности. Во второй половине 90-х годов, когда настало время менять систему команда разработчиков была в восхищении от того, как оптимально все сделали их предшественники. Но к сожалению жизнь требовала использования стандартных СУБД и стандартных средств работы с ними. В итоге систему переписали заново, но для обеспечения такой же функциональности для новой системы потребовалось оборудование большей производительности и цены. Причем производительность нового оборудования была в сотни раз больше.

Поиск и полезность

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

В этом ответе меня смутила лишь одна вещь. Как бездушная машина может определить полезность информации. С уникальностью информации все просто. Если одно и то же повторяется на тысячах сайтов, то в принципе 1001 сайт можно не включать в индекс по причине не уникальности информации. А вот как определить полезность какой либо информации? Правильный ответ никак! Полезность той или иной вещи или информации полностью зависит от контекста или ситуации. Классический пример в сказке про царя Мидаса. Все к чему прикасался сей царь превращалось в золото. Первоначально царь считал золото крайне нужным и полезным, но затем ситуация изменилась. Царю захотелось кушать и то же самое золото стало крайне бесполезным, в отличии от той еды, которая в него превращалась.

Если вдуматься в ситуацию, то поисковая система Яндекс, в лице Платона Щукина,  крайне не осмотрительно рекомендует наполнять сайт полезной информацией, так как оценить информацию по критерию полезности принципиально невозможно в отрыве от контекста.

Вышла новая редакция Delphi XE Starter Edition.

В начале февраля вышла новая редакция Delphi XE Starter Edition. С выходом этой редакции у простых программистов наконец появилась возможность легально приобрести Delphi. До выхода SE минимальный порог вхождения был на уровне 1000$ , что для российских программистов явно много. За такие деньги можно было купить компьютер, и даже не один. Теперь начинающие и не только программисты могут себе позволить купить начальную редакцию Delphi. Порог вхождения опустился на уровень 200$, что вполне по карману простому программисту. Конечно в лицензионном соглашении написано, что как только программист заработает при помощи Delphi XE ту самую заветную 1000$, он должен немедленно поделиться (отдать) ею с Embarcadero купив профессиональную редакцию. Но в условиях нашей действительности доказать факт заработка именно при помощи Delphi практически невозможно, поэтому данной ложкой дегтя можно не огорчаться.

Продолжение проекта

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

1С рвется в облака.

На прошлой неделе, к сожалению с опозданием практически на год, я узнал интересный факт. В 1С:Предприятие версии 8.2 добавлена возможность работать с программой через обычный браузер. Это на первый взгляд скромное новшество на мой взгляд заслуживает самого пристального внимания.

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

Два альянса, что они нам несут. Альянс номер два.

Слияние BlackBerry и QNX Software Systems произошло менее заметно, чем первый альянс, но заслуживает не менее пристального внимания. Слияние одного из крупнейших производителей смартфонов. QNX Software Systems это компания со штатом 270 человек разрабатывающая ОС Neutrino для фабричных конвейеров, станций мониторинга АЭС, автомобильных компьютеров. Эта ОС обладает поистине уникальными качествами, которых нет не в одной операционной системе с открытым или закрытым кодом. Neutrino  отличают от конкурентов два ключевых момента : микроядро и мультиядерность. Микроядро — это минимальный код, необходимый для выполнения большинства функций операционной системы.  Компания QNX заявляет, что ядро Neutrino в сто раз меньше ядер привычных ОС типа Windows 7.

Это слияние еще один камешек в огород ОС со открытым кодом и альянса Nokia и Microsoft.

Два альянса, что они нам несут. Альянс номер один.

Объявление об альянсе между Microsoft и Nokia, на прошлой неделе буквально потрясло мир высоких технологий. Рынок отрицательно среагировал на решение Nokia отказаться от собственной ОС для коммуникаторов. Наверное недоумение инвесторов вызвал выбор в качестве партнера фирмы Microsoft. Если бы Nokia выбрала бы Google с ее открытой ОС Android, то реакция инвесторов скорее всего была бы более радужной и оптимистичной. В этом случае на Windows Phone смело можно было бы ставить крест. Теперь же сложилась уникальная ситуация альянса игрока номер один на рынке мобильных телефонов и игрока номер один на рынке программного обеспечения. Что нам в будущем принесет такой альянс покажет только время.

Дилема Microsoft.

На днях я изучал лицензионное соглашение Microsoft от Visual Studio и нашел в нем любопытный момент. Смысл этого пункта соглашения в том, что с помощью VS нельзя делать программы повторяющие в своей функциональности Word и Excel. И тут до меня дошло, перед какой огромной проблемой стоит Microsoft. Если выпустить удобное средство для разработки программ найдется куча желающих делать программы, которые будут конкурировать с пользовательскими программами самой Microsoft … Отсюда напрашивается вывод, надо ограничить пользователей Visual Studio причем не только лицензионным соглашением, но и качеством самой IDE. Мне сразу стало понятно, почему в Visual Studio крайне неудобно разрабатывать большие программы. Написать программу в пару тысяч строк, это пожалуйста, а дальше начинаются заметные трудности с удобством работы.

Когда появится Borland для web-разработчиков ?

Одна из революций в разработке программ произошла когда фирма Borland создала IDE. До этого программы писались в текстовом редакторе, а потом компилировались, транслировались и линковались из командной строки.  После создания IDE все эти операции стали выполняться нажатием одной клавиши. Вторую революцию фирма Borland совершила создав IDE для Windows под названием Delphi. До этого разработчикам приходилось изучать премудрости API Windows и практически в ручную рисовать окошки. С появлением Delphi все вызовы API были скрыты изящной оболочкой VCL, а рисование форм стало предельно простым благодаря визуальному конструктору форм.

Сейчас к сожалению фирмы Borland уже нет, а потребность в очередной революции сильна как никогда. Если взглянуть на разработку программ для Web, то видно, что инструментальные средства для этого находятся в зачаточном состоянии. На форумах новичкам по-прежнему советуют писать программы в Блокноте и уверяют, что больше ничего не надо. На крайний случай предлагают NetBeans или Eclipse, которые по существе остаются редакторами с подсветкой синтаксиса.

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

Программирование для Web. Первый шаг.

Программирование для Web  или мучительные поиски инструментов. Нынешняя логика развития информационных технологий упорно ведет к облачным вычислениям (coold computing), а значит настало время искать инструменты для этих целей. Как оказалось на практике поиски таких инструментов занятие не для слабонервных. Попробую коротко описать свои мытарства.

Первым делом я обратился к бесплатным инструментам в лице PHP. Сам PHP бесплатен, но к нему для эффективной работы требуется IDE (Integrated Development Environment, а по русски интегрированная среда разработки) . Теоретически можно воспользоваться Блокнотом, но этот подход годится только для маленьких программок на пару десятков строк. Родное IDE для PHP это Zend Studio, но оно далеко не бесплатное. Два приличных и бесплатных варианта Eclipse и NetBeans. Обе среды в принципе имеют схожие функциональные особенности. Мне больше понравился NetBeans, но это мое личное и субъективное мнение. Главная проблема оказалась в том, что обе среды не дотягивают до возможностей Delphi IDE и Visual Studio. Этот факт меня очень огорчил и я планирую написать об этом отдельный пост.

Диалектика жива.

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

Давайте на минуту вспомним с чего все начиналось. Все начиналось с огромных ЭВМ. Эти «монстры» занимали огромные машинные залы с системами кондиционирования, бесперебойного питания и тому подобными системами. К большим машинам подключались терминалы единственным назначением которых была передача данных от пользователя к ЭВМ и обратно.

Потом произошла революция персональных компьютеров и у каждого на столе (или под столом) появился ящик с процессором и жестким диском. Компьютер стал действительно персональным.

А теперь взглянем на сегодняшний «магистральный путь развития». Что нас ждет в ближайшем будущем? Наше светлое будущие — облачные вычисления (cloud computing). Где то в дата-центре (бывший зал большой ЭВМ) стоит кластер из сотен компьютеров (бывший мейнфрейм). К кластеру тянутся оптоволоконные каналы связи, переходящие в витую пару или 3G. У конечных пользователей могут быть самые разнообразные устройства, но все эти устройства объединяет одно — они передают информацию от пользователя в облако и обратно.

Ну и как вам диалектика? Отстой скажете вы, это ясно любому школьнику, автора «на мыло»! Но подождите кидать в автора гнилые помидоры. Что если попробовать сделать еще один шаг и заглянуть не в ближайшее светлое будущее, а немного дальше. Что будет после облачных вычислений?

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

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

На этом я все же заканчиваю пост, потому что в голове крутится цитата из Ильфа и Петрова : «Остапа понесло. Он почувствовал прилив новых сил и шахматных идей.»